Binary files /tmp/1I1fCpeMl4/fotoxx-15.08/data/images/F-menu.jpg and /tmp/x6bldCBcrv/fotoxx-15.09/data/images/F-menu.jpg differ Binary files /tmp/1I1fCpeMl4/fotoxx-15.08/data/images/G-menu.jpg and /tmp/x6bldCBcrv/fotoxx-15.09/data/images/G-menu.jpg differ Binary files /tmp/1I1fCpeMl4/fotoxx-15.08/data/images/printer-calibration.jpg and /tmp/x6bldCBcrv/fotoxx-15.09/data/images/printer-calibration.jpg differ Binary files /tmp/1I1fCpeMl4/fotoxx-15.08/data/images/user-options.jpg and /tmp/x6bldCBcrv/fotoxx-15.09/data/images/user-options.jpg differ Binary files /tmp/1I1fCpeMl4/fotoxx-15.08/data/images/W-menu.jpg and /tmp/x6bldCBcrv/fotoxx-15.09/data/images/W-menu.jpg differ diff -Nru fotoxx-15.08/data/userguide-en.html fotoxx-15.09/data/userguide-en.html --- fotoxx-15.08/data/userguide-en.html 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/data/userguide-en.html 2015-08-31 10:21:01.000000000 +0000 @@ -1,8 +1,20 @@ + + + + + + + + + + + + Fotoxx User Guide Fotoxx - User Guide  v.15.08 + User Guide  v.15.09
  
   @@ -17,7 +29,8 @@ license, downloads, capabilities - How to Use Fotoxx + Fotoxx Usage
+ initialization, navigation, menus, general procedures @@ -31,7 +44,7 @@ edit tags, geotags, ratings, captions ... search images - Select Area Menu + Area Menu select image objects or areas for separate editing, copy, paste @@ -75,6 +88,12 @@ + Batch Menu
+ + batch tools for file conversion, metadata, RAW import ...
+ + + Help Menu quick start, user guide, translations guide, change log ... @@ -235,14 +254,13 @@ Translations
Translations of the user interface are complete for German, Spanish, Catalan, and Portuguese.
Incomplete translations are available for French, Italian, Dutch, and Russian.
-If you can help with translations, review the topic Translations.
+If you can help with translations, review the topic Translations.
 
- +
- How - to Use Fotoxx
+ Fotoxx Usage

Quick Start
@@ -280,7 +298,7 @@ appropriate package first: packages. This may work with one click.
If not, you must install from - source code. Instructions are here: tarballs.
+ source code. This is not difficult. Instructions are here: tarballs.

Initialization @@ -429,7 +447,7 @@ show popup menus which are used to modify the image or perform utility functions.
-
+
 
@@ -526,7 +544,7 @@ the most recently viewed images, or a gallery of the newest images added to the image collection.
-
+
 
There are several types @@ -611,7 +629,7 @@ red dots can be clicked to show a gallery view of the corresponding images.
-
+
 
@@ -893,8 +911,8 @@ click: remove the image from the list, if present.
  +  Shift + left click: add all images from the last image added to - the clicked image.
-  
+ the clicked image.
  +
Menu Shortcuts
The Fotoxx menus are large. You @@ -2223,7 +2241,7 @@ and press [Save]. The metadata is updated. You may enter the key name in lower case and with or without spaces between the words, e.g. "Bits per Sample" and "bitspersample" will both work. To see all present keys - and data, use View Metadata (long).
+ and data, use View Metadata (long).
  @@ -2299,7 +2317,7 @@ revisions. You can add new metadata, revise existing metadata, and delete metadata. Use the [select files] button to open a gallery window with thumbnail images from which you can select the image files to be -processed (link). +processed (link). Enter metadata key names and values to be assigned, or leave the value blank to delete this key, if present. Press [apply]. You will get a confirmation dialog (above right) and you can proceed or cancel at this @@ -2717,7 +2735,7 @@

- Select Area + Area Menu
 
@@ -3207,7 +3225,17 @@ Unselect

Permanently discard the current - area. This is also available as a button in the Select Area dialog.
  + area. This is also available as a button in the Select Area dialog.

+
+Area Copy and Paste
+A selected area can be saved to a cache file using the menu Select > +Copy Area. This area can be pasted into the same or another image using +Select > Paste Area. Click and drag to position the +area. The dialog controls can be used to resize, rotate, and change the +brightness of the pasted area. The edge blend control allows you to +blend the area edges into the background image if wanted.


@@ -6165,7 +6193,7 @@  

- Tools Menu (File view)
+ Tools Menu

 
@@ -6238,9 +6266,9 @@ They are also saved in the file /home/<user>/.fotoxx/parameters.
-
-   -
+
+ 
+
@@ -6293,6 +6321,12 @@ + + + +
 Dialog font
+
The font name and size to use in all menus and dialogs (Bold, Italic, etc. are ignored).
+
 Image Pan/Scroll
@@ -6675,7 +6709,127 @@ This function lists all missing translations to a popup window. Translations left as English are not reported, since this is often deliberate, e.g. words like "font" or - "icon".
+ "icon".
+
+
+Printer Color Calibration
This utility may be able to improve the color accuracy of printed images.
+
+How It Works
+A chart of known colors is printed on the target printer. The print +will have some false colors caused by the printer. This print is +scanned into a file, and the colors in this file are compared to the +original colors that were sent to the printer. Any differences are +errors that are now known. When an image file is printed, these errors +are subtracted from the image colors before printing. The printer adds +the errors back, leaving a result that is theoretically correct (practice may be otherwise).
+
+Perform the following steps in sequence, as listed by the function dialog.
+Each step has instructions to perform the step.
+
    +
  1. Generate and print a color chart on the printer to be calibrated.
  2. +
  3. Scan the printed chart into a PNG file (scanchart.png).
  4. +
  5. Edit the PNG image to trim off margins left by the scanner.
  6. +
  7. Process the chart to create a color map file (colormap.dat).
  8. +
  9. To print a color-adjusted image, apply the color map prior to printing.
  10. +
+Once you have made the color map, you can print any image using step 5 only.
+
+Hopeful Assumptions
+
    +
  • Your scanner produces accurate colors. Scanners are generally better than printers.
    +
  • +
  • The color chart was accurately trimmed (no color tiles were cut short or left with margins).
  • + + +
  • The printer color errors are small enough that negating them +before printing will cancel
    +most of the error. This works best when the errors are small.
    +
  • + +
  • The limited set of colors in the chart (4913) can correctly calculate all in-between colors.
    +(each RGB color adjustment is interpolated from the nearest 27 chart values (3x3x3).)
  • + +
+Precautions For Best Results
+
    + + + +
  • Use a large paper size for printing the chart (A4 or US Letter) to make the color tiles as big as possible.
  • + +
  • Clean the scanner glass before scanning the color chart.
    +Dirt spots or smudges will falsify the colors.
    +
  • +
  • Scan with a high DPI setting (300+) to make a large chart file.
    +This will make the next step more accurate.
    +
  • +
  • Use the black squares +in the image corners as alignment guides: cut off these squares +exactly. +Accurately +trimming +the margins is critical. The tile positions +are calculated from the image dimensions, assuming 58 equal columns and +85 equal rows. If some edge tiles are cut short, or if margins are +left, then the calculated tile positions will be offset, and the +measured colors will be wrong. A small error of 1-2 pixels is +tolerated, because the outer 20% of each tile is not used to read the +tile color. After trimming the margins, inspect the chart corners at 2x +size to be sure none of tiles have been cut off or left with extra +margins (more than 2 pixels).
    +
  • + + +
  • Scanners may skew the scanned image into a non-rectangular form. If +this happens, you will notice it when trying to trim off the margins: the alignment markers will not align +perfectly to the trim rectangle, even after turning the image for best fit. If this happens, +use fix perspective to square the image first, then trim the margins. Use the black square markers for the rectangle corners.
    +
  • +
  • The output color map file can be used only for the paper, inks, +and printer settings used during the calibration. Any other combination +needs its own calibration and color map file. You can change the +default name of the color map file to include more information, e.g. +colormap-photopaper2.dat.
  • +
+Results (my Canon printer)
+    
+ + + + + + +
A color chart was photographed and printed on photo paper. The left +print +had no adjustments. The right print was adjusted. The printer did +a fairly good job by itself, but the adjusted print is slightly better. +
+ +  
+ + Improved colors:
+(1,0) orange
+(1,1) blue
+(1,3) dark violet
+(1,5) yellow-orange
+(2,2) yellow
+(2,4) green
+(2,5) dark blue
+   +
+
A few colors might be a little worse.
+
+

+You may be able to find a real ICC color profile +for your printer and its proprietary inks and photo paper. Using this +would most likely produce better results. Check the installation CD supplied with +your printer, and also the manufacturer's web site. There are also +professional services to generate an ICC color profile. The procedure +is similar to the one described above: you print a color chart supplied +by the service, send the printed paper back to them (along with some +money), and receive an ICC profile, a file which you can install. +Perform a web search for "icc profile service".
 
@@ -6702,911 +6856,1014 @@     MB: total allocated memory at this time in megabytes
 
 
-   -
- + 

+
+ + Help Menu
+  
+ + Quick Guide
- - - - - - -

- Bookmarks
+ This is a 1-page introductory + document with Fotoxx essentials.
-  
+
+ + User + Guide  (key F1)
-Assign names - ("bookmarks") to - chosen gallery locations (directory and image file), keep in a list, - and use the list to select a name and go instantly to the - associated gallery position. There are two - parts: an edit dialog to build the list of bookmarks, and a [GoTo] - button in the gallery view to show the bookmarks and select a location - to go to. To assign new bookmarks, press the [GoTo] button and then - select [Edit Bookmarks] in the dialog that follows. The Edit Bookmarks - dialog is started. Click on a gallery thumbnail to add this location to - the bookmark list. The assigned bookmark name will default to the file - name. This name appears in an edit field where you can assign a - better name. If you select an existing bookmark with a mouse click, its - name is shown in the input field. You can change the name or press - [delete] to remove the bookmark. New bookmarks are inserted at the last - bookmark location selected. To go to a bookmark, press the [GoTo] - button. The list of bookmarks is shown. Click on an entry to go there.


-  
+ The user guide (this document) + is displayed (created using the WYSIWYG HTML editor Kompozer).
-
+
+ + User + Guide Changes
-Tools Menu
(Gallery view)
-  
- -
+ This is a summary of recent + changes in the User Guide. The intent is to enable you to survey the + changes without reading the whole document.
+
+ + Edit + Functions Summary
+ A one-page "quick reference" + summary of the image edit functions is displayed.
- Batch Convert - Files

+
+ + README +
+ Displays the README file + distributed with Fotoxx, which may contain new information about + installation or dependencies. When you install a new release of Fotoxx, + you should look at README and the Change Log to check if there is + anything special you need to be aware of.
+
+ + Change + Log
- This function is used to rename, - convert, resize, upright and move multiple image files at once.
+ Displays the change log file + distributed with Fotoxx, containing details about functional changes, + additions, or bug fixes for the current and previous releases.
+
+ + Translations
+ Displays a short text file which + explains how to make a new translation or change an existing one.
-
+
+ + Home Page
+ Shows the Fotoxx home page from + the Internet. Look here for program updates (the page named "recent + changes"). This page is published via RSS and you can subscribe to get + timely notification of changes.
+
+ + About +
+ This displays a short message + about the Fotoxx version number, license, credits, and contact address.
+   +

+  
+
- - +
+ + Sync Gallery 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select Files
+Replace the current gallery (recent files, search results ...) with the +directory of the current image file: the image shown in the File View +window. Click on any thumbnail in the gallery to set the current image +from that thumbnail, then select the Sync Gallery menu (button) to set +the directory and generate a new gallery from that directory.
+  
-
Select files to convert - from a gallery window (link).
+  

  +
-
New Name
+
+ + Albums + Menu
-
Optional new name with # - characters to be replaced with - sequence numbers.
+    
-
base, adder
+ +
+ -
Starting sequence number - and adder for each output file.
+ Manage + Albums
-
New - Location
+ An album is an arbitrary + sequence of images that is manually assembled from existing images. + This is one method to make groups of associated images. An image + album is simply a list of the member image files. The image files + themselves are not copied or changed. A given image file can be a member of + multiple albums, or may be present more than once within an + album. Albums can be used to group images with some shared attributes, + such as photos from a vacation trip, photos of a given + person taken at different times or events, a "best photos" collection, + etc. You can add and remove images in an album and rearrange the + order of the images. Once an album is made, you can call it up by + name and it becomes a gallery. This gallery works like any other: you + can scroll through the gallery, step through the images with the + [Prev/Next] button, or edit the images. Keep in mind that editing an + image in an album will edit the unique image file, so any other way + to view this image will show the same image.
+  +
+ -
Optional new directory - location for the converted files.
+ Image Cache
-
new - file type
+ This is an intermediate storage + area used to hold selected images for later insertion into an + album. In general, you select image files from gallery windows and + add them to the cache, then you make a new album with images from + the cache, or you add the cached images to an existing album at a + chosen position within the album.
+  
-
File type for converted - images, or "no change".
+ + + - - + - - + Specify + an album name, or use the [browse] button to select an existing + album to be replaced. Select one of the three options. Option 1 + creates the album with no images. Option 2 fills the album + from cached images, if any. Option 3 creates the album from the + current gallery. This may be a directory, the output of an image + search, or an album.
+ - - + +
max. - width, height
- +
+ Manage + Albums Dialog
+ New: + Start a new album or replace an existing one. The dialog shown + immediately below is started.
-
Output images will fit - within these dimensions (ratio is not changed).
+ Choose: Choose an + album to view or edit. The gallery window will show its current + images. Use the thumbnail popup menu (below) to add or remove images.
+ 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 can also use Search + Images to create a + gallery for selecting images, or choose an album gallery. Selected + images are added to the image cache. The cached images can now be added + to an album using the popup menu (below).
+ Clear: + Discard all images in the + image cache.
+ Delete: + Select an album to + delete. Image files are not deleted.
+  
+ New Album dialog
-
delete - originals
+
+  
+ + Right-click + Popup Menu
-
Delete the input files - after successful conversion.
+
-
copy metadata
+ 
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Copy to Image Cache
+
Add the clicked image to the image cache.
Cut to Image Cache
+
Remove the image from the album and add it + to the image cache.
Copy to Clipboard
+
Copy the image to the clipboard (for other apps to paste).
+
Paste Image Cache Here (keep) 
+
Insert all cached images at the clicked position. + Click roughly between two thumbnails where the images will be inserted.
Paste Image Cache Here (clear) 
+
Same as above, but the cache is cleared.
+
Paste Current Image File Here
+
Inserts the current image file at the clicked position.
Remove from Album
+
Remove the clicked image from the album
Popup Image
+
Pop-up a large resizeable window for the image. Replace previous popup window.
+
Popup Image (add)
+
Same as above, but keep previous popup window and create a new one.
+
View Metadata
+
Metadata short report for clicked image file.
+
-
Copy all EXIF and IPTC - metadata to the output files.
+  
+ + Drag and Drop
-
upright
+ You can rearrange images + within an album by dragging thumbnails with the mouse. Drag the + thumbnail until the mouse cursor changes to a small image of the + thumbnail. Continue dragging this image to the position where it should + be inserted, and release the mouse button. Position the mouse roughly + between the images where the dragged image is to be inserted. If the + drag approaches the top or bottom edge of the window, the gallery will + scroll to bring more images into view.
-
If an image is rotated - 90\B0/180\B0, upright it (status known from EXIF).
+
+ -
sharpen
+ Summary
-
Sharpen output images - using the two supplied parameters
+ +
    +
  • Make a new album: Use the [New] button and provide a name.
    +
  • Add images to an existing album: Use the [Choose] button and + select an album. Use the [Images] button to select images from any + gallery. After closing this dialog, the gallery reverts to the chosen + album. Right-click an album thumbnail and select one of the + Paste menus to insert the selected images. You can also choose another + album and insert the images if you did not clear the cache.
    +
  • Remove images from an album: Right-click each thumbnail, then + select the Remove menu.
  • Move images within an album: Use the Cut or Copy menu and the + Paste menu to move multiple images. To move one image at a time within + a single album, you can use mouse drag and drop.
  • +
+  
-
+
+ + Slide Show
-
-If New Location is missing or unchanged, delete originals is ignored.
+ With this function you can show + a pre-selected sequence of images in full-screen mode.
+ There are three dialogs used to define and customize a slide show.
- If an output file already - exists, the input file is not converted.
- For an explanation of the sharpen parameters, see the Sharpen - function.
+
-
+ Use + the Manage + Albums function to assemble + the images for + a slide show as an album with an assigned name. This allows you to + collect images from anywhere in your image database and order them as + desired. In the slide show dialog, press [Select] and + choose an album + from the list provided. Press the Proceed button to start the slide show with + the first image (or the current image, if a member of the slide show + album). Use the escape key + or F11 to exit the slide show + and return to the dialog.
- Albums

+
- If image files are renamed or moved using Batch Convert, and if - deletion of the original image files was also specified, then all - albums containing any of the input files are updated to reflect - the new names and locations.
-
+ The spacebar can be + used to pause and resume between slides. The B-key can + be used to blank the + screen and pause the show. Press again to restore the current image, or + press the spacebar to resume with the next image. You can use the left + and right arrow keys to go + back and forth within the sequence of images. You can interrupt the + slide show by pressing the ESC + key for a gallery view. Click on a thumbnail + image, and + this will be the next image to show. This allows you to skip around + more easily than stopping and starting the show each time. The M-key + can be used (whenever the + slide show is paused) to start the magnify function to view selected + parts of the image at higher size.
+
- Upload Photos - to a Website

+Dialog Controls:
+ + + Seconds: The standard time each image is shown.
+This can be + modified per image with the Images Preferences dialog.
+ - Most photo websites have the - ability to upload multiple image files from a single directory, using - only a web browser. Use the above Fotoxx function to select, resize, - and export image files to the desktop or any other directory. From - there, use the photo website's native browser interface to upload the - image files.
+ Clip Limit
: Images are scaled + to fit the window. If the image and window aspect ratios are different, + this will create black margins above and below or left and right of the + image. You can optionally make the images expand to fill these margins + and cut off the opposite sides of the image (e.g. if the margins are on + the left and right, the image is expanded to fill these margins and cut + off the top and bottom equally). You control how much of this is + allowed with the Clip Limit, which is the percent difference in aspect + ratios above which expansion and clipping will not be done. Zero means + no + clipping is done, 10% means that images with 10% or less difference in + aspect ratio will be expanded and clipped.
+ -  
+ Music + File
: An optional music file or playlist that will start when + the slide show is started.
+ + Full + Screen: If checked, images + are shown full-screen without menu, title bar, etc.
+ + Auto-replay: if checked, the + slide show will start over after reaching the end.
-
+
- Batch Upright
-
-
This function works like Batch Convert Files but only does the -upright function. It uprights image files rotated 90 degrees. It -depends on EXIF data to know if a file is rotated. It is much faster -than Batch Convert Files. You can simply select all candidate files and -let it find the ones that are rotated. The search speed is about 3000 -image files per minute on a strong PC. There are two options to specify -the files to search. Select Files leads to a gallery file selection dialog (link). Survey all files will check all image files in your database and upright those that are rotated.
- - + Press + [transitions] to start a dialog + to select and customize the transitions between images. These include + instant replacement, fade-out / fade-in, and many animated methods of + image replacement (e.g. the new image expands from the center to + replace the old image). Select the transitions to be used and whether + they are used randomly or in sequence. The slowdown + parameters can be used to + slow transitions that may operate too fast on some PCs (some may + be too slow on slow PCs, but this cannot be helped). The preference + parameters specify a + relative preference which will influence how frequently the transition + type is used when random sequence is selected. The random method avoids + using a transition that was used shortly before, and will only work if + 5 or more transitions are selected.
-   -
- +
- - - - - -

+ Press [image + files] to start a dialog for image + preferences. These are optional. An image is selected for customizing + by clicking its thumbnail (press the [gallery] button or G-key to show + thumbnails). The dialog is filled-in with default settings or the + previous settings for this image. Enter revisions and press [done], or + click on the next image to be customized. If Play + Tone is selected, a tone is played when + the image appears during the slide show. The Show Caption / + Show Comments times + determine how long the image caption and comments will be shown above + the image. After this time they disappear. Captions and comments are + edited with Edit Metadata. + The Wait times determine how + long the + image will wait before and after the optional zoom, before moving on + to the next image. These are always used, even if there is no zoom. Zoom type selects zoom-in (image approaches) or zoom-out (image recedes). Zoom + size controls how much the + image will be zoomed and Steps + determines how many steps are made during the zoom. 1.0 means no zoom, + and 3.0 is the maximum zoom (image is 3x larger). Use at least 300 + steps for a smooth zoom, and more than this if you want it to zoom + more slowly. Zoom location + determines the center of the zoom, expressed as a percent of the + image width and height (50/50 is the center of the image). These are + set by mouse-clicking the thumbnail image at the desired zoom + center. Transition is used to select a transition type + to be used from this image to the next image. If transition type "next" is selected, then the normal + transition sequence is used, as specified in the Transitions dialog.
- Batch Delete/Trash

+   +
- Select files from a gallery (link).
-Select the option to delete or move to trash.
-[Proceed]
-

+ Sequence of slide show events for + each image:
+   +  + play the tone if specified
- -
+   +  show + the + caption and comments for the specified times (may be zero)
- Batch RAW - (DCraw)

+   +  wait for the + first interval (may be zero)
- Batch RAW (Raw Therapee)

-
+   +  perform + the zoom (if the zoom size is > 1)
+   +  wait + for + the 2nd interval (may be zero)
- These functions convert selected - RAW image files to JPEG, PNG-8, PNG-16, TIFF-8 or TIFF-16 format, using - the program DCraw or Raw Therapee. The PNG and TIFF formats have either - 8 or 16 bits per color. RAW files generally have 10-12 bits per color, - and noise beyond that. Therefore use a 16 bit format to keep all of the - data available from a RAW file. The difference between 8 and 16 bit - color is rarely visible, but a higher color depth provides a greater - margin for retouch functions that can radically shift the brightness - distribution, causing a problem known as "banding" or "posterization".
-
+   +  wait + for + the standard interval specified in the Slide Show dialog
- Use the [Select Files] button to choose one or more RAW image files - from a gallery window (link). - Choose one of the output formats. Choose one of the downsize options if - wanted, and set the auto sharpen parameters if wanted. See the Sharpen function - for an - explanation of these parameters.
+   +  do the transition to the next image
+  
- The remaining parameter options (white balance etc.) apply only to - DCraw - they are not shown if Raw Therapee is used, because parameter - settings for batch operation are not available (defaults are used). The - default settings for DCraw generally work well and you probably will - not need to change them. The parameters for DCraw are documented in the man page ($ man dcraw).
+
+ + Set Desktop Image
-
- The image files are converted one at a time and displayed in the main - window. Depending on the number of files, this can take a long time (a - strong PC does about 40 files per minute for most RAW file types and - TIFF-16 output). PNG-16 produces much smaller files than TIFF-16 - because the files are compressed (with no data loss). This also needs - more time to do the compression work.
+ The desktop background image is set from the current Fotoxx + image file. No inputs are required. Note: + this function works only for + the Gnome window manager (including Ubuntu Unity). + Other window managers will not work.
-  +  
+ +
+ + + Cycle Desktop Image
+ + - - +
- +  
+ + Note: + this function works only for + the Gnome window manager (including Ubuntu Unity).
+ +

+
The desktop + background image is changed at regular intervals, using a Fotoxx album + as the list of images to show. Fotoxx runs in the background without + a window or GUI interface. It has no effect on normal interactive use of Fotoxx.
+
+ How to cycle the desktop image: +
  • Create an alternative name for the fotoxx executable (e.g. + fotoxx-dt):
    +    $ + sudo link + /usr/bin/fotoxx /usr/bin/fotoxx-dt   (needs to be done only once)
    +
  • Start  fotoxx-dt, passing the album name and the time + interval in seconds:
    +    $ + nohup fotoxx-dt + -cycledesktop albumName seconds >/dev/null &
    - Find Duplicate Images
    +
  • To stop the background process:  $ + pkill + fotoxx-dt
+ Seconds must be at least 10 and there is no upper limit. The nohup + command runs the command + detached from the terminal, so that the terminal can be closed without + killing the process. The character  &  +is + added after a command to make it run in the background without + blocking the terminal or shell script from which it was started.
+  
+ To make a permanent process that persists after a reboot or new + logon, put the + following command into your startup list:   fotoxx-dt +-cycledesktop +albumName + 3600 &
+This example changes the desktop background image every hour. To change +the desktop only for each new login, use a time value >1 day: 86400.
- This -function is used to find duplicated image files anywhere within your -image database. A duplicate image file can be an image file that -exactly duplicates another image file, or an image file that "almost" -duplicates another. For the sake of speed, thumbnail images are -compared in memory. Hence it is possible that identical thumbnails are -found for which the main images have some minor (likely invisible) -differences that do not show up in the thumbnails. An image copy that -was reduced to 1/2 size is likely be classified as a duplicate. The -thumbnail size can be set from 32 to 256 pixels (max. width or height). -A larger size reduces the probability of false positives. The thumbnail -size greatly affects the amount of main memory required - e.g. for 100K -images, size 32 needs 220 MB, whereas size 64 needs 880 MB. The memory -required is roughly size x size x 0.75 x 3 x (image count). Two -parameters are used to set the sensitivity for detection of identical -or nearly identical images: pixel difference is the RGB value -difference below which pixels are considered equal. Set to 1 to detect -any pixel difference. pixel count is the number of different pixels -below which two images are classified as duplicates. Example: if pixel -difference = 3 and pixel count = 100, then images are classified as -duplicates if fewer than 100 pixels are different by less than 3. The -output is a gallery view, showing each set of duplicate images. -Screening 8K images needs about 16 seconds on a strong PC.
- - -   

+  
+ -
+ + + + + + +

+ Bookmarks
+  
- Burn - Images to CD / DVD
+Assign names + ("bookmarks") to + chosen gallery locations (directory and image file), keep in a list, + and use the list to select a name and go instantly to the + associated gallery position. There are two + parts: an edit dialog to build the list of bookmarks, and a [GoTo] + button in the gallery view to show the bookmarks and select a location + to go to. To assign new bookmarks, press the [GoTo] button and then + select [Edit Bookmarks] in the dialog that follows. The Edit Bookmarks + dialog is started. Click on a gallery thumbnail to add this location to + the bookmark list. The assigned bookmark name will default to the file + name. This name appears in an edit field where you can assign a + better name. If you select an existing bookmark with a mouse click, its + name is shown in the input field. You can change the name or press + [delete] to remove the bookmark. New bookmarks are inserted at the last + bookmark location selected. To go to a bookmark, press the [GoTo] + button. The list of bookmarks is shown. Click on an entry to go there.

- This function enables you to - choose image files and burn them into a CD or DVD or BlueRay disc. When - the function starts, an image gallery window is displayed from which - you can select the image files to burn (link). -When done, the list of image files is sent to Brasero to burn the disc. -Note that the CD/DVD/BlueRay disc must be unformatted, and Brasero -supports only one burn session on a disc. Leftover space on the disc -cannot be used later to add more images.


+
+
+ +Sort Gallery
+Sort the gallery thumbnails in an alternative sequence. You can sort by +file name (default), Photo date/time (from EXIF data), or file +modification date/time (file creation or last modification date/time). +The sequence may be ascending or descending.
+  +
 
+  

-
-
- Help Menu
-  
- Quick Guide
- This is a 1-page introductory - document with Fotoxx essentials.
-
- User - Guide  (key F1)
- The user guide (this document) - is displayed (created using the WYSIWYG HTML editor Kompozer).
-
- User - Guide Changes
- This is a summary of recent - changes in the User Guide. The intent is to enable you to survey the - changes without reading the whole document.
-
- Edit - Functions Summary
- A one-page "quick reference" - summary of the image edit functions is displayed.
-
- README -
- Displays the README file - distributed with Fotoxx, which may contain new information about - installation or dependencies. When you install a new release of Fotoxx, - you should look at README and the Change Log to check if there is - anything special you need to be aware of.
-
- Change - Log
- Displays the change log file - distributed with Fotoxx, containing details about functional changes, - additions, or bug fixes for the current and previous releases.
-
- Translations
- Displays a short text file which - explains how to make a new translation or change an existing one.
-
- Home Page
- Shows the Fotoxx home page from - the Internet. Look here for program updates (the page named "recent - changes"). This page is published via RSS and you can subscribe to get - timely notification of changes.
-
- About -
- This displays a short message - about the Fotoxx version number, license, credits, and contact address. -
-   -


-
+
-
+
Batch Menu
+  
+ +
- Sync Gallery 
-Replace the current gallery (recent files, search results ...) with the -directory of the current image file: the image shown in the File View -window. Click on any thumbnail in the gallery to set the current image -from that thumbnail, then select the Sync Gallery menu (button) to set -the directory and generate a new gallery from that directory.
-  
-  
  -
-   -
+ Batch Convert + Files

-
- Albums - Menu
-    
+ This function is used to rename, + convert, resize, upright and move multiple image files at once.
- -
- Manage - Albums
- An album is an arbitrary - sequence of images that is manually assembled from existing images. - This is one method to make groups of associated images. An image - album is simply a list of the member image files. The image files - themselves are not copied or changed. A given image file can be a member of - multiple albums, or may be present more than once within an - album. Albums can be used to group images with some shared attributes, - such as photos from a vacation trip, photos of a given - person taken at different times or events, a "best photos" collection, - etc. You can add and remove images in an album and rearrange the - order of the images. Once an album is made, you can call it up by - name and it becomes a gallery. This gallery works like any other: you - can scroll through the gallery, step through the images with the - [Prev/Next] button, or edit the images. Keep in mind that editing an - image in an album will edit the unique image file, so any other way - to view this image will show the same image.
  +
-
- Image Cache
- This is an intermediate storage - area used to hold selected images for later insertion into an - album. In general, you select image files from gallery windows and - add them to the cache, then you make a new album with images from - the cache, or you add the cached images to an existing album at a - chosen position within the album.
  
+
+ + - - +
+ + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -
- Manage - Albums Dialog
- New: - Start a new album or replace an existing one. The dialog shown - immediately below is started.
+
Select Files
- Choose: Choose an - album to view or edit. The gallery window will show its current - images. Use the thumbnail popup menu (below) to add or remove images.
- 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 can also use Search - Images to create a - gallery for selecting images, or choose an album gallery. Selected - images are added to the image cache. The cached images can now be added - to an album using the popup menu (below).
- Clear: - Discard all images in the - image cache.
- Delete: - Select an album to - delete. Image files are not deleted.
-  
- New Album dialog
+
Select files to convert + from a gallery window (link).
- Specify - an album name, or use the [browse] button to select an existing - album to be replaced. Select one of the three options. Option 1 - creates the album with no images. Option 2 fills the album - from cached images, if any. Option 3 creates the album from the - current gallery. This may be a directory, the output of an image - search, or an album.
-
New Name
+ + +
Optional new name with # + characters to be replaced with + sequence numbers.
+ + +
base, adder
+ + +
Starting sequence number + and adder for each output file.
+ + +
New + Location
+ + +
Optional new directory + location for the converted files.
+ + +
new + file type
+ + +
File type for converted + images, or "no change".
+ + +
max. + width, height
+ + +
Output images will fit + within these dimensions (ratio is not changed).
+ + +
delete + originals
+ + +
Delete the input files + after successful conversion.
+ + +
copy metadata
+ + +
Copy all EXIF and IPTC + metadata to the output files.
+ + +
upright
+ + +
If an image is rotated + 90\B0/180\B0, upright it (status known from EXIF).
+ + +
sharpen
+ + +
Sharpen output images + using the two supplied parameters
+ + +
  
- - Right-click - Popup Menu
+
+ + + +
+If New Location is missing or unchanged, delete originals is ignored.
+ + + + If an output file already + exists, the input file is not converted.
+ + For an explanation of the sharpen parameters, see the Sharpen + function.
+ +
+ + + + Albums
+ + If image files are renamed or moved using Batch Convert, and if + deletion of the original image files was also specified, then all + albums containing any of the input files are updated to reflect + the new names and locations.
+ +
+ + + + Upload Photos + to a Website
+ + + + Most photo websites have the + ability to upload multiple image files from a single directory, using + only a web browser. Use the above Fotoxx function to select, resize, + and export image files to the desktop or any other directory. From + there, use the photo website's native browser interface to upload the + image files.
+ +  
+ + + +
+ + + + Batch Upright
+
+
This function works like Batch Convert Files but only does the +upright function. It uprights image files rotated 90 degrees. It +depends on EXIF data to know if a file is rotated. It is much faster +than Batch Convert Files. You can simply select all candidate files and +let it find the ones that are rotated. The search speed is about 3000 +image files per minute on a strong PC. There are two options to specify +the files to search. Select Files leads to a gallery file selection dialog (link). Survey all files will check all image files in your database and upright those that are rotated.
+ + + +   +
+ + -
- 
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Copy to Image Cache
-
Add the clicked image to the image cache.
Cut to Image Cache
-
Remove the image from the album and add it - to the image cache.
Copy to Clipboard
-
Copy the image to the clipboard (for other apps to paste).
-
Paste Image Cache Here (keep) 
-
Insert all cached images at the clicked position. - Click roughly between two thumbnails where the images will be inserted.
Paste Image Cache Here (clear) 
-
Same as above, but the cache is cleared.
-
Paste Current Image File Here
-
Inserts the current image file at the clicked position.
Remove from Album
-
Remove the clicked image from the album
Popup Image
-
Pop-up a large resizeable window for the image. Replace previous popup window.
-
Popup Image (add)
-
Same as above, but keep previous popup window and create a new one.
-
View Metadata
-
Metadata short report for clicked image file.
-
-  
+
- Drag and Drop
- You can rearrange images - within an album by dragging thumbnails with the mouse. Drag the - thumbnail until the mouse cursor changes to a small image of the - thumbnail. Continue dragging this image to the position where it should - be inserted, and release the mouse button. Position the mouse roughly - between the images where the dragged image is to be inserted. If the - drag approaches the top or bottom edge of the window, the gallery will - scroll to bring more images into view.
-
+ Batch Delete/Trash
- Summary

+ Select files from a gallery (link).
+Select the option to delete or move to trash.
+[Proceed]
+ + + + - -
    -
  • Make a new album: Use the [New] button and provide a name.
    -
  • Add images to an existing album: Use the [Choose] button and - select an album. Use the [Images] button to select images from any - gallery. After closing this dialog, the gallery reverts to the chosen - album. Right-click an album thumbnail and select one of the - Paste menus to insert the selected images. You can also choose another - album and insert the images if you did not clear the cache.
    -
  • Remove images from an album: Right-click each thumbnail, then - select the Remove menu.
  • Move images within an album: Use the Cut or Copy menu and the - Paste menu to move multiple images. To move one image at a time within - a single album, you can use mouse drag and drop.
  • -
  

-
- Slide Show
- With this function you can show - a pre-selected sequence of images in full-screen mode.
+ +
- There are three dialogs used to define and customize a slide show.
-
- Use - the Manage - Albums function to assemble - the images for - a slide show as an album with an assigned name. This allows you to - collect images from anywhere in your image database and order them as - desired. In the slide show dialog, press [Select] and - choose an album - from the list provided. Press the Proceed button to start the slide show with - the first image (or the current image, if a member of the slide show - album). Use the escape key - or F11 to exit the slide show - and return to the dialog.
+ Batch RAW + (DCraw)

-
+ Batch RAW (Raw Therapee)

- The spacebar can be - used to pause and resume between slides. The B-key can - be used to blank the - screen and pause the show. Press again to restore the current image, or - press the spacebar to resume with the next image. You can use the left - and right arrow keys to go - back and forth within the sequence of images. You can interrupt the - slide show by pressing the ESC - key for a gallery view. Click on a thumbnail - image, and - this will be the next image to show. This allows you to skip around - more easily than stopping and starting the show each time. The M-key - can be used (whenever the - slide show is paused) to start the magnify function to view selected - parts of the image at higher size.
+
-
-Dialog Controls:
- - Seconds: The standard time each image is shown.
-This can be - modified per image with the Images Preferences dialog.
- Clip Limit: Images are scaled - to fit the window. If the image and window aspect ratios are different, - this will create black margins above and below or left and right of the - image. You can optionally make the images expand to fill these margins - and cut off the opposite sides of the image (e.g. if the margins are on - the left and right, the image is expanded to fill these margins and cut - off the top and bottom equally). You control how much of this is - allowed with the Clip Limit, which is the percent difference in aspect - ratios above which expansion and clipping will not be done. Zero means - no - clipping is done, 10% means that images with 10% or less difference in - aspect ratio will be expanded and clipped.
+ These functions convert selected + RAW image files to JPEG, PNG-8, PNG-16, TIFF-8 or TIFF-16 format, using + the program DCraw or Raw Therapee. The PNG and TIFF formats have either + 8 or 16 bits per color. RAW files generally have 10-12 bits per color, + and noise beyond that. Therefore use a 16 bit format to keep all of the + data available from a RAW file. The difference between 8 and 16 bit + color is rarely visible, but a higher color depth provides a greater + margin for retouch functions that can radically shift the brightness + distribution, causing a problem known as "banding" or "posterization".
- Music - File
: An optional music file or playlist that will start when - the slide show is started.
+
- Full - Screen
: If checked, images - are shown full-screen without menu, title bar, etc.
+ Use the [Select Files] button to choose one or more RAW image files + from a gallery window (link). + Choose one of the output formats. Choose one of the downsize options if + wanted, and set the auto sharpen parameters if wanted. See the Sharpen function + for an + explanation of these parameters.
- Auto-replay
: if checked, the - slide show will start over after reaching the end.
-
- Press - [transitions] to start a dialog - to select and customize the transitions between images. These include - instant replacement, fade-out / fade-in, and many animated methods of - image replacement (e.g. the new image expands from the center to - replace the old image). Select the transitions to be used and whether - they are used randomly or in sequence. The slowdown - parameters can be used to - slow transitions that may operate too fast on some PCs (some may - be too slow on slow PCs, but this cannot be helped). The preference - parameters specify a - relative preference which will influence how frequently the transition - type is used when random sequence is selected. The random method avoids - using a transition that was used shortly before, and will only work if - 5 or more transitions are selected.
+
-
+ The remaining parameter options (white balance etc.) apply only to + DCraw - they are not shown if Raw Therapee is used, because parameter + settings for batch operation are not available (defaults are used). The + default settings for DCraw generally work well and you probably will + not need to change them. The parameters for DCraw are documented in the man page ($ man dcraw).
- Press [image - files] to start a dialog for image - preferences. These are optional. An image is selected for customizing - by clicking its thumbnail (press the [gallery] button or G-key to show - thumbnails). The dialog is filled-in with default settings or the - previous settings for this image. Enter revisions and press [done], or - click on the next image to be customized. If Play - Tone is selected, a tone is played when - the image appears during the slide show. The Show Caption / - Show Comments times - determine how long the image caption and comments will be shown above - the image. After this time they disappear. Captions and comments are - edited with Edit Metadata. - The Wait times determine how - long the - image will wait before and after the optional zoom, before moving on - to the next image. These are always used, even if there is no zoom. Zoom type selects zoom-in (image approaches) or zoom-out (image recedes). Zoom - size controls how much the - image will be zoomed and Steps - determines how many steps are made during the zoom. 1.0 means no zoom, - and 3.0 is the maximum zoom (image is 3x larger). Use at least 300 - steps for a smooth zoom, and more than this if you want it to zoom - more slowly. Zoom location - determines the center of the zoom, expressed as a percent of the - image width and height (50/50 is the center of the image). These are - set by mouse-clicking the thumbnail image at the desired zoom - center. Transition is used to select a transition type - to be used from this image to the next image. If transition type "next" is selected, then the normal - transition sequence is used, as specified in the Transitions dialog.
-   -
- Sequence of slide show events for - each image:
+
-   +  - play the tone if specified
+ The image files are converted one at a time and displayed in the main + window. Depending on the number of files, this can take a long time (a + strong PC does about 40 files per minute for most RAW file types and + TIFF-16 output). PNG-16 produces much smaller files than TIFF-16 + because the files are compressed (with no data loss). This also needs + more time to do the compression work.
-   +  show - the - caption and comments for the specified times (may be zero)
-   +  wait for the - first interval (may be zero)
+   +
-   +  perform - the zoom (if the zoom size is > 1)
-   +  wait - for - the 2nd interval (may be zero)
-   +  wait - for - the standard interval specified in the Slide Show dialog
-   +  do the transition to the next image
+
+ -   -
-
- Set Desktop Image
+ Burn + Images to CD / DVD

- The desktop background image is set from the current Fotoxx - image file. No inputs are required. Note: - this function works only for - the Gnome window manager (including Ubuntu Unity). - Other window managers will not work.
-   -
-
- Cycle Desktop Image
+ This function enables you to + choose image files and burn them into a CD or DVD or BlueRay disc. When + the function starts, an image gallery window is displayed from which + you can select the image files to burn (link). +When done, the list of image files is sent to Brasero to burn the disc. +Note that the CD/DVD/BlueRay disc must be unformatted, and Brasero +supports only one burn session on a disc. Leftover space on the disc +cannot be used later to add more images.

- +
- - - + + + This +function is used to find duplicated image files anywhere within your +image database. A duplicate image file can be an image file that +exactly duplicates another image file, or an image file that "almost" +duplicates another. For the sake of speed, thumbnail images are +compared in memory. Hence it is possible that identical thumbnails are +found for which the main images have some minor (likely invisible) +differences that do not show up in the thumbnails. An image copy that +was reduced to 1/2 size is likely be classified as a duplicate. The +thumbnail size can be set from 32 to 256 pixels (max. width or height). +A larger size reduces the probability of false positives. The thumbnail +size greatly affects the amount of main memory required - e.g. for 100K +images, size 32 needs 220 MB, whereas size 64 needs 880 MB. The memory +required is roughly size x size x 0.75 x 3 x (image count). Two +parameters are used to set the sensitivity for detection of identical +or nearly identical images: pixel difference is the RGB value +difference below which pixels are considered equal. Set to 1 to detect +any pixel difference. pixel count is the number of different pixels +below which two images are classified as duplicates. Example: if pixel +difference = 3 and pixel count = 100, then images are classified as +duplicates if fewer than 100 pixels are different by less than 3. The +output is a gallery view, showing each set of duplicate images. +Screening 8K images needs about 16 seconds on a strong PC.
The desktop - background image is changed at regular intervals, using a Fotoxx album - as the list of images to show. Fotoxx runs in the background without - a window or GUI interface. It has no effect on normal interactive use of Fotoxx.
-
- How to cycle the desktop image: -
  • Create an alternative name for the fotoxx executable (e.g. - fotoxx-dt):
    -    $ - sudo link - /usr/bin/fotoxx /usr/bin/fotoxx-dt   (needs to be done only once)
    -
  • Start  fotoxx-dt, passing the album name and the time - interval in seconds:
    -    $ - nohup fotoxx-dt - -cycledesktop albumName seconds >/dev/null &
    -
  • To stop the background process:  $ - pkill - fotoxx-dt
- Seconds must be at least 10 and there is no upper limit. The nohup - command runs the command - detached from the terminal, so that the terminal can be closed without - killing the process. The character  &  -is - added after a command to make it run in the background without - blocking the terminal or shell script from which it was started.
-  
- To make a permanent process that persists after a reboot or new - logon, put the - following command into your startup list:   fotoxx-dt --cycledesktop -albumName - 3600 &
-This example changes the desktop background image every hour. To change -the desktop only for each new login, use a time value >1 day: 86400.
-  
+

- Note: - this function works only for - the Gnome window manager (including Ubuntu Unity).
+ Find Duplicate Images
-
-  


-
-
-Sort Gallery
-Sort the gallery thumbnails in an alternative sequence. You can sort by -file name (default), Photo date/time (from EXIF data), or file -modification date/time (file creation or last modification date/time). -The sequence may be ascending or descending.
-

-  
+ +   

+Batch and search functions in the Metadata menu are duplicated here in the Batch menu.
+  
  +
+ +  

@@ -7749,15 +8006,15 @@ Images for Efficient Searching

 
The goal is to find all images - for a given set of criteria, e.g. photos of a given person in a given - place and time frame, or all photos of a given person at any time, or - photos from specified locations, etc. There are several ways to + for a given set of criteria, e.g. photos of a given person at a given + place and time range, or all photos of a given person, or + photos from a specified location or event, etc. There are several ways to organize an image collection to accomplish this, with advantages and disadvantages you need to understand. These methods may be used in any combination (I use all of them). Keep in mind that if you want to user other programs for searching images, you need to pay attention to which methods are compatible. Fotoxx is standards-compliant to avoid lock-in, - but some other applications use unique methods.
  + but some other applications use proprietary methods (e.g. for storing metadata).
 
Fotoxx can search using the following image attributes: photo date, rating (0-5 stars), tags @@ -7767,10 +8024,10 @@ Metadata, Edit Geotags, and Search Images topics. In addition, any metadata can be searched, although not nearly as fast as the previously listed - items, which are kept in a special index file for fast + items, which are duplicated in a special index file for fast searching. The Index Image Files function establishes this index and - updates it when new image files are added or their locations are + updates it when new image files are added or their file locations are changed from outside Fotoxx.
 
The following is an attempt to @@ -7778,16 +8035,16 @@
Physical Organization
- Directory and file names can be - used as a basic organization that will enable you to find images even - if more elaborate organizations (tags, albums, captions) are not - used. The highest physical organization should be by time. This will - also naturally group photos together that were made for an event, - vacation, etc. I suggest using one subdirectory per year - named 2001, 2002, etc. This will also prevent any one subdirectory from - getting too big. The image files may further be organized in time - sequence by using MM.DD as the start of the file name. The rest of the - name can be a topic or event, and a sequence number.
+Directory and file names can be used as a basic organization that will +enable you to find images even if more elaborate organizations (tags, +albums, captions) are not used. The highest physical organization +should be by time. This will also naturally group photos together that +were made for an event, travel location, etc. I suggest using one +subdirectory per year named 2001, 2002, etc. This will also prevent any +one subdirectory from getting too big. Optionally, image files may be +further organized in time sequence by using MM.DD as the start of the +file name. The rest of the name can be a topic or event, and a sequence +number.
    Example: /images/2011/08.20 Spitzbergen 23
This very basic organization @@ -7795,7 +8052,7 @@ example, a search for "spitzbergen" or even "spitz" will produce all the images of Spitzbergen. The function Tools > Batch Convert lets you rename a whole batch of photos taken on one day at one location or - event by selecting the files (link) and specifying a template name like "08.20 + event by selecting the files (link) and then specifying a template name like "08.20 Spitzbergen ##". The sequence numbers are automatic, replacing ##.
 
Captions and @@ -7827,11 +8084,10 @@ comments, location, others). Tagging is generally fast, needing a few seconds per image. Fotoxx has two methods of adding tags, a "managed" system and a "random" system. In the managed system, you define tag -category names and the tags or types of tags that will be created -within each category. When adding tags to images, you can point and +category names and the tags to be defined within each category. When adding tags to images, you can point and click from a list of tags organized by category and alphabetically -within category. This list should be small enough to be practical for -visually locating tags (<500 tags). In the random system, you simply +within category. This list should be small enough (<500?) to be practical for +visually locating tags to click on. In the random system, you simply create tags as needed while you tag your images, following no particular system and without categories. After you have entered the first few characers of a tag, existing tags that match these characters @@ -7843,7 +8099,7 @@ process. There is also a batch function for adding the same tags to many images that you select by clicking thumbnails (link). Note that images downloaded from the Internet may have many tags adhering to no system. You will - need to clean these out or redo them.
  + need to clean these out or redo them (if not, these tags are added to your list of defined tags).
 
Geotags
Use geotags to assign a city (or @@ -8128,19 +8384,19 @@ 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).
+missing or non-matching format codes, quote marks, etc.).

Whenever fotoxx is started from a terminal, missing translations are listed in the terminal window.

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 +"Rückgängig machen" in German), and this can cause a confusing appearance in the GUI layouts. Therefore try to make dialog labels and buttons short, and look closely at the resulting GUI layout.

User Guide translation
-The user guide is normally found here:
-  /usr/share/fotoxx/data/userguide-xx.html  (or -xx_XX.html)
+The English user guide is normally found here:
+  /usr/share/fotoxx/data/userguide-en.html
The file is a text HTML file, which may be edited with any HTML editor. This is a large document, so expect a week or more of work to translate it. If you make a new or revised translation, please send it to  kornelix@posteo.de  so it can be included in future releases.
@@ -8155,16 +8411,30 @@ This section is provided to help you quickly review the changes without reading the whole manual.
- Fotoxx version numbers correspond to year and month of release.
  + Fotoxx version numbers correspond to year and month of release.
+
+v.15.09 (this release)
+
    + +
  • Area Copy and Paste: this function +was restored after being removed in 15.08. Save Area File and Open Area +File can be used to do the same thing, but this method is faster and +easier in the common case where an area is copied and pasted and does not need to be saved in a file for later usage.
    +
  • +
  • User Options: the font and size used in menus and dialogs can be set by the user.
  • +
  • Calibrate Printer:  new tool to improve the color accuracy of printed images.
    +
  • + -
    -v.15.08 (this release)
    +
+ +v.15.08
  • Adjust Brightness Distribution: Functionality was extended and the UI changed.
  • Batch Add/Change Metadata: new function to revise any metadata for multiple image files.
  • Edit Metadata and Search Images: tag pick-list shows all tags or only a selected category.
  • -
  • Select Area: save and open cutout areas as PNG files with transparency data.
    +
  • Open and Save Area File: save and open cutout areas as PNG files with transparency data.
  • AddText has new functionality to rapidly add the same text to multiple image files.
  • Paint Transparency: new function to paint transparent areas onto an image.
    @@ -9541,4 +9811,5 @@ - + + \ No newline at end of file diff -Nru fotoxx-15.08/debian/changelog fotoxx-15.09/debian/changelog --- fotoxx-15.08/debian/changelog 2015-08-02 04:00:33.000000000 +0000 +++ fotoxx-15.09/debian/changelog 2015-09-02 13:10:48.000000000 +0000 @@ -1,3 +1,19 @@ +fotoxx (15.09-1dhor~trusty) trusty; urgency=medium + + * Program code was revised for latest GTK API breakage (in Ubuntu 15.10). + * The font size used in menus and dialogs can now be set by the user. + * Panorama: about 20% faster (3 images x 7 megapixels, 2 GHz CPU, 18 secs). + * Paint Transparency: response lag with large images was eliminated. + * Area Copy and Paste was reinstated (faster and easier than file save and open). + * Use of alpha channel for vacated margins was extended to all bend functions. + * New: Calibrate Printer: tool to improve image print color accuracy. + * Bugfix: crash in Flatten Book Page while marking page edges. + * Bugfix: Slide Show failure if translated transition names contain blanks. + * Bugfix: Leverage Edit: use of contrast as edit lever was broken. + * Seven other minor improvements and fixes. + + -- Dariusz Duma Wed, 02 Sep 2015 15:09:57 +0200 + fotoxx (15.08-1dhor~trusty) trusty; urgency=medium * The brightness distribution for an image can be reshaped by using slider controls and watching the image or graph. The distribution can be clipped at either end, or stretched or flattened in different zones. diff -Nru fotoxx-15.08/debian-control fotoxx-15.09/debian-control --- fotoxx-15.08/debian-control 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/debian-control 2015-08-31 10:21:01.000000000 +0000 @@ -1,5 +1,5 @@ Package: fotoxx -Version: 15.08 +Version: 15.09 Architecture: amd64 Section: graphics Installed-Size: 8948 @@ -7,7 +7,7 @@ Maintainer: Mike Cornelison Priority: optional Homepage: http://kornelix.com/fotoxx -Depends: libc6, binutils, xdg-utils, libimage-exiftool-perl, dcraw, ufraw +Depends: libc6, binutils, xdg-utils, libimage-exiftool-perl, dcraw 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, diff -Nru fotoxx-15.08/doc/changelog fotoxx-15.09/doc/changelog --- fotoxx-15.08/doc/changelog 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/doc/changelog 2015-08-31 10:21:01.000000000 +0000 @@ -1,27 +1,38 @@ Fotoxx Change Log http://www.kornelix.com/fotoxx ================= +2015 Sep 01 v.15.09 ++ Program code was revised for latest GTK API breakage (Ubuntu 15.10). ++ The font size used in menus and dialogs can now be set by the user. ++ Panorama: about 20% faster (3 x 7 megapixels, 2 GHz CPU --> 18 secs). ++ Paint Transparency: response lag with large images was eliminated. ++ Area Copy and Paste was reinstated (easier than file save and open). ++ Use of alpha channel for vacated margins extended to all bend functions. ++ New: Calibrate Printer: tool to improve image print color accuracy. ++ Bugfix: crash in Flatten Book Page while marking page edges. ++ Bugfix: Slide Show fails if translated transition names contain blanks. ++ Bugfux: Leverage Edit: use of contrast as edit lever was broken. ++ Seven other minor improvements and fixes. + 2015 Aug 01 v.15.08 -+ The brightness distribution for an image can be reshaped using slider - controls and watching the image or graph. The distribution can be ++ The brightness distribution for an image can be reshaped by using slider + controls and watching the image and/or graph. The distribution can be clipped at either end, or stretched or flattened in different zones. -+ Editing and searching image tags have an additional tool to better deal - with a huge list of defined tags. The tag pick-list can be all tags, or - only those for a tag category chosen from a category pick-list. -+ Select Area: an area cutout can be saved as a PNG or TIF file with a - transparency map (alpha channel). Such files can be opened and pasted - into other images, with transparency working as it should. -+ Image edits: image transparency works as it should. Partly or fully - transparent areas can be painted-on or unpainted using the mouse. ++ Editing and searching image tags have an additional tool to deal with a + huge list of defined tags. The tag pick-list can be all tags, or only + those for a category chosen from a category pick-list. ++ Select Area: open/save area cutout as PNG file with transparency data. ++ Image edits: image transparency data is now utilized and retained. ++ Paint Transparency: new: paint [semi-] transparent areas on an image. + Mashup: transparency data in overlay images is utilized and editable. + New batch tool: add/change/delete any metadata for selected image files. -+ Add Text: quickly add the same text at same position to multiple images. ++ Add Text: quickly add same text at same position to multiple image files. + Gallery thumbnail memory cache is self-limiting to 1 GB main memory. -+ Several small improvements in the user interface and diagnostic messages. ++ Several small improvements in the user interface and error messages. + Bugfix: gallery sort by file modification date used incorrect date/time. -+ Bugfix: possible crash in leverage edits if edit function is cancelled. ++ Bugfix: possible crash in leverage edits if edit function cancelled. + Bugfix: Select Area: draw/replace area edge did not work properly for - areas previously selected by mouse painting or areas previously finished. + areas selected by mouse painting or areas previously finished. 2015 Jul 01 v.15.07 + Menus were reorganized. User Guide was revised to match. diff -Nru fotoxx-15.08/f.albums.cc fotoxx-15.09/f.albums.cc --- fotoxx-15.08/f.albums.cc 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/f.albums.cc 2015-08-31 10:21:01.000000000 +0000 @@ -1056,19 +1056,19 @@ { // name enab slow pref function // (enabled, slowdowns, equal preference) { "instant", 1, 0, 10, ss_instant }, // slowdowns scaled for Intel integrated GPU { "fade-in", 1, 6, 10, ss_fadein }, - { "roll-right", 1, 3, 10, ss_rollright }, // NO BLANKS IN TRANSITION NAMES - { "roll-down", 1, 3, 10, ss_rolldown }, - { "venetian", 1, 1, 10, ss_venetian }, - { "grate", 1, 1, 10, ss_grate }, + { "roll-right", 1, 4, 10, ss_rollright }, // NO BLANKS IN TRANSITION NAMES + { "roll-down", 1, 4, 10, ss_rolldown }, + { "venetian", 1, 2, 10, ss_venetian }, + { "grate", 1, 2, 10, ss_grate }, { "rectangle", 1, 2, 10, ss_rectangle }, - { "implode", 1, 8, 10, ss_implode }, - { "explode", 1, 4, 10, ss_explode }, - { "radar", 1, 1, 10, ss_radar }, + { "implode", 1, 10, 10, ss_implode }, + { "explode", 1, 10, 10, ss_explode }, + { "radar", 1, 2, 10, ss_radar }, { "Japanese-fan", 1, 2, 10, ss_japfan }, - { "jaws", 1, 3, 10, ss_jaws }, - { "ellipse", 1, 5, 10, ss_ellipse }, + { "jaws", 1, 4, 10, ss_jaws }, + { "ellipse", 1, 10, 10, ss_ellipse }, { "raindrops", 1, 3, 10, ss_raindrops }, - { "doubledoor", 1, 10, 10, ss_doubledoor }, + { "doubledoor", 1, 12, 10, ss_doubledoor }, { "rotate", 1, 6, 10, ss_rotate }, { "fallover", 1, 5, 10, ss_fallover } }; @@ -1098,27 +1098,26 @@ char countmess[50], *pp; cchar *esc_message = ZTX("Press ESC to exit slide show"); - strncpy0(ss_trantab_default[0].tranname,ZTX("instant"),32); // get translations into the .po file - strncpy0(ss_trantab_default[1].tranname,ZTX("fade-in"),32); - strncpy0(ss_trantab_default[2].tranname,ZTX("roll-right"),32); - strncpy0(ss_trantab_default[3].tranname,ZTX("roll-down"),32); - strncpy0(ss_trantab_default[4].tranname,ZTX("venetian"),32); - strncpy0(ss_trantab_default[5].tranname,ZTX("grate"),32); - strncpy0(ss_trantab_default[6].tranname,ZTX("rectangle"),32); - strncpy0(ss_trantab_default[7].tranname,ZTX("implode"),32); - strncpy0(ss_trantab_default[8].tranname,ZTX("explode"),32); - strncpy0(ss_trantab_default[9].tranname,ZTX("radar"),32); - strncpy0(ss_trantab_default[10].tranname,ZTX("Japanese-fan"),32); - strncpy0(ss_trantab_default[11].tranname,ZTX("jaws"),32); - strncpy0(ss_trantab_default[12].tranname,ZTX("ellipse"),32); - strncpy0(ss_trantab_default[13].tranname,ZTX("raindrops"),32); - strncpy0(ss_trantab_default[14].tranname,ZTX("doubledoor"),32); - strncpy0(ss_trantab_default[15].tranname,ZTX("rotate"),32); - strncpy0(ss_trantab_default[16].tranname,ZTX("fallover"),32); + ZTX("instant"); // add translations to .po file 15.09 + ZTX("fade-in"); + ZTX("roll-right"); + ZTX("roll-down"); + ZTX("venetian"); + ZTX("grate"); + ZTX("rectangle"); + ZTX("implode"); + ZTX("explode"); + ZTX("radar"); + ZTX("Japanese-fan"); + ZTX("jaws"); + ZTX("ellipse"); + ZTX("raindrops"); + ZTX("doubledoor"); + ZTX("rotate"); + ZTX("fallover"); F1_help_topic = "slide_show"; if (checkpend("all")) return; // check nothing pending - Fblock = 1; /*** _____________________________________________________ @@ -1188,14 +1187,12 @@ if (zstat != 1) { // cancel zdialog_free(zd); - Fblock = 0; return; } if (! ss_Nfiles) { // no selection zmessageACK(Mwin,ZTX("invalid album")); zdialog_free(zd); - Fblock = 0; return; } @@ -1375,7 +1372,7 @@ zdialog_add_widget(zd,"check",enabii,"vb2",0,"size=3"); zdialog_add_widget(zd,"spin",slowii,"vb3","0|99|1|1","size=3"); zdialog_add_widget(zd,"spin",prefii,"vb4","0|99|1|10","size=3"); - zdialog_stuff(zd,nameii,ss_trantab[ii].tranname); // stuff current transition prefs + zdialog_stuff(zd,nameii,ZTX(ss_trantab[ii].tranname)); // stuff current transition prefs 15.09 zdialog_stuff(zd,enabii,ss_trantab[ii].enabled); zdialog_stuff(zd,slowii,ss_trantab[ii].slowdown); zdialog_stuff(zd,prefii,ss_trantab[ii].preference); @@ -1520,10 +1517,10 @@ zdialog_add_widget(zd,"label","labtr","hbtrn",ZTX("Transition to next image"),"space=3"); zdialog_add_widget(zd,"combo","tranname","hbtrn"); - zdialog_cb_app(zd,"tranname",Bnext); // default transition + zdialog_cb_app(zd,"tranname",ZTX("next")); // default transition 15.09 for (ii = 0; ii < SSNF; ii++) // add all transitions to dropdown list - zdialog_cb_app(zd,"tranname",ss_trantab[ii].tranname); + zdialog_cb_app(zd,"tranname",ZTX(ss_trantab[ii].tranname)); // 15.09 if (curr_file) { // set to curr. file for (ii = 0; ii < ss_Nfiles; ii++) // if member of album @@ -1539,14 +1536,14 @@ zdialog_stuff(zd,"caption",ss_imagetab[ii].capsecs); zdialog_stuff(zd,"comments",ss_imagetab[ii].commsecs); zdialog_stuff(zd,"wait1",ss_imagetab[ii].wait1); - ztypN[4] = ss_imagetab[ii].zoomtype + '0'; // zoomtype 15.07 + ztypN[4] = ss_imagetab[ii].zoomtype + '0'; zdialog_stuff(zd,ztypN,1); zdialog_stuff(zd,"zoomsize",ss_imagetab[ii].zoomsize); zdialog_stuff(zd,"zoomsteps",ss_imagetab[ii].zoomsteps); zdialog_stuff(zd,"zoomlocx",ss_imagetab[ii].zoomlocx); zdialog_stuff(zd,"zoomlocy",ss_imagetab[ii].zoomlocy); zdialog_stuff(zd,"wait2",ss_imagetab[ii].wait2); - zdialog_stuff(zd,"tranname",ss_imagetab[ii].tranname); + zdialog_stuff(zd,"tranname",ZTX(ss_imagetab[ii].tranname)); // 15.09 zdialog_run(zd,ss_imageprefs_dialog_event); zdialog_wait(zd); @@ -1622,12 +1619,13 @@ if (strmatch(event,"tranname")) { zdialog_fetch(zd,"tranname",tranname,32); - if (! strmatch(tranname,"next")) { + if (! strmatch(tranname,ZTX("next"))) { // 15.09 for (jj = 0; jj < SSNF; jj++) - if (strmatch(tranname,ss_trantab[jj].tranname)) break; + if (strmatch(tranname,ZTX(ss_trantab[jj].tranname))) break; if (jj == SSNF) return 1; + strncpy0(ss_imagetab[ii].tranname,ss_trantab[jj].tranname,32); } - strncpy0(ss_imagetab[ii].tranname,tranname,32); + else strncpy0(ss_imagetab[ii].tranname,"next",32); } return 1; @@ -1668,14 +1666,14 @@ zdialog_stuff(zd,"caption",ss_imagetab[ii].capsecs); zdialog_stuff(zd,"comments",ss_imagetab[ii].commsecs); zdialog_stuff(zd,"wait1",ss_imagetab[ii].wait1); - ztypN[4] = '0' + ss_imagetab[ii].zoomtype; // zoom type 15.07 + ztypN[4] = '0' + ss_imagetab[ii].zoomtype; zdialog_stuff(zd,ztypN,1); zdialog_stuff(zd,"zoomsize",ss_imagetab[ii].zoomsize); zdialog_stuff(zd,"zoomsteps",ss_imagetab[ii].zoomsteps); zdialog_stuff(zd,"zoomlocx",ss_imagetab[ii].zoomlocx); zdialog_stuff(zd,"zoomlocy",ss_imagetab[ii].zoomlocy); zdialog_stuff(zd,"wait2",ss_imagetab[ii].wait2); - zdialog_stuff(zd,"tranname",ss_imagetab[ii].tranname); + zdialog_stuff(zd,"tranname",ZTX(ss_imagetab[ii].tranname)); // 15.09 return; } @@ -2147,7 +2145,6 @@ win_unfullscreen(); // restore old window size, menu etc. ss_fullscreen = 0; Fslideshow = 0; // reset flags - Fblock = 0; Fblowup = 0; ss_escape = 0; file = ss_imagetab[ii].imagefile; // last file shown --> current file 15.04 diff -Nru fotoxx-15.08/f.area.cc fotoxx-15.09/f.area.cc --- fotoxx-15.08/f.area.cc 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/f.area.cc 2015-08-31 10:21:01.000000000 +0000 @@ -57,8 +57,8 @@ sa_unselect delete area callable function sa_edgecalc calculate area edge distances sa_edgecreep adjust area edges +-1 pixel - m_select_open_png open PNG file and make a select area - m_select_save_png save area to PNG file with alpha channel + m_select_open open PNG file and make a select area + m_select_save save area to PNG file with alpha channel select_paste paste area in memory onto image ***************************************************************************/ @@ -156,13 +156,13 @@ zdialog_add_widget(zd,"button","creep+","hbm5"," + ","space=3"); zdialog_add_widget(zd,"button","creep-","hbm5"," ‒ ","space=3"); - zdialog_add_widget(zd,"hbox","hbm5","dialog"); // 15.07 + zdialog_add_widget(zd,"hbox","hbm5","dialog"); // 15.09 zdialog_add_widget(zd,"label","labcolor","hbm5",ZTX("Line Color:"),"space=5"); - zdialog_add_widget(zd,"button","red","hbm5",Bred,"space=5"); - zdialog_add_widget(zd,"button","green","hbm5",Bgreen,"space=5"); - zdialog_add_widget(zd,"button","blue","hbm5",Bblue,"space=5"); - zdialog_add_widget(zd,"button","black","hbm5",Bblack,"space=5"); - zdialog_add_widget(zd,"button","white","hbm5",Bwhite,"space=5"); + zdialog_add_widget(zd,"imagebutt","red","hbm5","redball.png","size=15|space=5"); + zdialog_add_widget(zd,"imagebutt","green","hbm5","greenball.png","size=15|space=5"); + zdialog_add_widget(zd,"imagebutt","blue","hbm5","blueball.png","size=15|space=5"); + zdialog_add_widget(zd,"imagebutt","black","hbm5","blackball.png","size=15|space=5"); + zdialog_add_widget(zd,"imagebutt","white","hbm5","whiteball.png","size=15|space=5"); zdialog_add_widget(zd,"hsep","hsep3","dialog",0,"space=4"); zdialog_add_widget(zd,"hbox","hbb2","dialog",0,"space=2"); @@ -196,8 +196,8 @@ zdialog_stuff(zd,"ckallcolors",0); zdialog_run(zd,select_dialog_event,"save"); // run dialog - parallel - if (sa_stat) sa_show(1); // show existing area, if any + return; } @@ -220,8 +220,6 @@ return 0; } - if (strmatch(event,"focus")) return 0; // keep mouse ownership - if (CEF && CEF->Fpreview && CEF->zd) // use full-size image zdialog_send_event(CEF->zd,"fullsize"); @@ -456,7 +454,7 @@ void sa_draw_mousefunc() { void sa_follow_edge(int mx1, int my1, int &mx2, int &my2); - void sa_draw_replace(int mx1, int my1, int mx2, int my2); + void sa_redraw(int mx1, int my1, int mx2, int my2); int mx1, my1, mx2, my2; int ii, npdist, npx, npy; @@ -571,7 +569,7 @@ if (sa_mode == mode_draw) sa_draw_line(mx1,my1,mx2,my2); // draw line from end pixel to mouse if (sa_mode == mode_follow) sa_follow_edge(mx1,my1,mx2,my2); // follow edge from end pixel to mouse - if (sa_mode == mode_replace) sa_draw_replace(mx1,my1,mx2,my2); // tweak end pixel to mouse + if (sa_mode == mode_replace) sa_redraw(mx1,my1,mx2,my2); // tweak end pixel to mouse sa_endpx[sa_currseq] = mx2; // set end pixel for this sequence sa_endpy[sa_currseq] = my2; @@ -782,7 +780,7 @@ // freehand draw while erasing nearby pixels, effectively replacing them -void sa_draw_replace(int mx1, int my1, int mx2, int my2) +void sa_redraw(int mx1, int my1, int mx2, int my2) { int ii, npx, npy; int thresh, npdist, d1, d2; @@ -858,17 +856,17 @@ void sa_mouse_select2(int select); int newdrag, crflag = 0; - static int cc, mxdown, mydown, dragseq; + static int pxcc, mxdown, mydown, dragseq; if (sa_stat != 1) return; // area gone? if (sa_mode == mode_allcolors && ! sa_pixselc) { // allocate memory for this mode - cc = Fpxb->ww * Fpxb->hh; - sa_stackdirec = (char *) zmalloc(cc); - sa_stackii = (int *) zmalloc(4*cc); - sa_maxstack = cc; + pxcc = Fpxb->ww * Fpxb->hh; + sa_stackdirec = (char *) zmalloc(pxcc); + sa_stackii = (int *) zmalloc(4*pxcc); + sa_maxstack = pxcc; sa_Nstack = 0; - sa_pixselc = (char *) zmalloc(cc); + sa_pixselc = (char *) zmalloc(pxcc); } if (sa_mode != mode_allcolors && sa_pixselc) { // free memory otherwise @@ -880,7 +878,7 @@ sa_pixselc = 0; } - if (sa_pixselc) memset(sa_pixselc,0,cc); // do always + if (sa_pixselc) memset(sa_pixselc,0,pxcc); // do always if (! mwcr) { mwcr = gdk_cairo_create(gdkwin); // create cairo context if not already @@ -935,6 +933,7 @@ sa_mouse_select1(2,0); else sa_mouse_select2(0); + sa_map_pixels(); // re-establish area edge } } @@ -950,7 +949,7 @@ // Left click - set one color to match from pixel at mouse position. -// Drag - select or unselect matching pixels within mouse radius. +// Left/right drag - select/unselect matching pixels within mouse radius. void sa_mouse_select1(int mode, int select) { @@ -1018,8 +1017,8 @@ if (rad2 > mrad2) continue; // outside radius px = sa_mousex + rx; py = sa_mousey + ry; - if (px < 0 || px > Fpxb->ww-1) continue; // off the image edge - if (py < 0 || py > Fpxb->hh-1) continue; + if (px < 0 || px >= Fpxb->ww) continue; // off the image edge + if (py < 0 || py >= Fpxb->hh) continue; pix1 = PXBpix(Fpxb,px,py); // pixel to test match2 = RGBMATCH(red,green,blue,pix1[0],pix1[1],pix1[2]); // 0..1 = zero..perfect match @@ -1048,8 +1047,6 @@ } } - if (! select) sa_map_pixels(); // re-establish edge - Fpaint4(xlo,ylo,xhi-xlo+1,yhi-ylo+1); // repaint changed area return; } @@ -1095,8 +1092,8 @@ if (rad2 > mrad2) continue; // outside radius px = sa_mousex + rx; py = sa_mousey + ry; - if (px < 0 || px > Fpxb->ww-1) continue; // off the image edge - if (py < 0 || py > Fpxb->hh-1) continue; + if (px < 0 || px >= Fpxb->ww) continue; // off the image edge + if (py < 0 || py >= Fpxb->hh) continue; ii = Fpxb->ww * py + px; @@ -1105,10 +1102,7 @@ sa_pixmap[ii] = sa_currseq; // map pixel to current sequence sa_Ncurrseq++; // current sequence pixel count } - else { // unselect - if (! sa_pixmap[ii]) continue; - sa_pixmap[ii] = 0; - } + else sa_pixmap[ii] = 0; // unselect } if (sa_mode == mode_mouse) { // no color matching, done @@ -1291,9 +1285,7 @@ sa_stackdirec[kk] = 'a'; // direction = ahead } - if (! select) sa_map_pixels(); // re-establish edge Fpaint4(xlo,ylo,xhi-xlo+1,yhi-ylo+1); // repaint changed area - return; } @@ -1439,9 +1431,8 @@ zdialog_stuff(safinzd,"statmess",ZTX("searching")); - start_detached_thread(sa_finish_thread,0); // use thread - - while (sa_Nstack) zsleep(0.1); + start_detached_thread(sa_finish_thread,0); // start pixel search thread + while (sa_Nstack) zsleep(0.1); // wait for completion if (sa_fincancel) { // user cancel sa_finhole = sa_finOK = 0; @@ -1454,7 +1445,7 @@ crflag = 1; } - npaint = 3.0 / Mscale + 1; // area fill, transparent + npaint = 2.0 / Mscale + 1; // area fill, sparse for (py = 0; py < Fpxb->hh; py += npaint) // mark pixels inside area for (px = 0; px < Fpxb->ww; px += npaint) @@ -1485,7 +1476,7 @@ void * sa_finish_thread(void *) // thread function { - int px, py, ii, kk; + int px, py, ii, jj, kk; int ppx, ppy, npx, npy; char direc; @@ -1512,10 +1503,10 @@ } if (sa_Nstack > 1) { - ii = sa_Nstack - 2; // get prior pixel in stack - ii = sa_stackii[ii]; - ppy = ii / Fpxb->ww; - ppx = ii - ppy * Fpxb->ww; + jj = sa_Nstack - 2; // get prior pixel in stack + jj = sa_stackii[jj]; + ppy = jj / Fpxb->ww; + ppx = jj - ppy * Fpxb->ww; } else { ppx = px - 1; // if only one, assume prior = left @@ -1540,15 +1531,24 @@ sa_stackdirec[kk] = 'x'; } - if (npx < 0 || npx > Fpxb->ww-1) continue; // next pixel off the image edge - if (npy < 0 || npy > Fpxb->hh-1) continue; // bugfix + if (npx < 0 || npx >= Fpxb->ww || npy < 0 || npy >= Fpxb->hh) { // next pixel off image edge 15.09 + sa_pixmap[ii] = 1; // this pixel is edge pixel + continue; + } - ii = npy * Fpxb->ww + npx; - if (sa_pixmap[ii]) continue; // pixel already mapped + jj = npy * Fpxb->ww + npx; - sa_pixmap[ii] = 2; // map the pixel, inside area + if (Fpxb->nc > 3 && PXBpix(Fpxb,npx,npy)[3] < 254) { // next pixel in transparent area 15.09 + sa_pixmap[ii] = 1; // this pixel is edge pixel + sa_pixmap[jj] = 1; // next pixel is edge pixel + continue; + } + + if (sa_pixmap[jj]) continue; // next pixel already mapped + + sa_pixmap[jj] = 2; // map next pixel, inside area kk = sa_Nstack++; // put pixel into stack - sa_stackii[kk] = ii; + sa_stackii[kk] = jj; sa_stackdirec[kk] = 'a'; // direction = ahead } @@ -1677,27 +1677,30 @@ sa_maxy = 0; npix = 0; - for (ii = 0; ii < Fpxb->ww * Fpxb->hh; ii++) // get enclosing rectangle - { // for selected area - if (! sa_pixmap[ii]) continue; - npix++; // count pixels + for (ii = 0; ii < Fpxb->ww * Fpxb->hh; ii++) + { + if (! sa_pixmap[ii]) continue; // outside area + npix++; // count pixels inside area py = ii / Fpxb->ww; // simplify px = ii - Fpxb->ww * py; - if (px >= sa_maxx) sa_maxx = px+1; // like Fww, sa_maxx = last + 1 - if (px < sa_minx) sa_minx = px; + if (px >= sa_maxx) sa_maxx = px+1; // get enclosing rectangle + if (px < sa_minx) sa_minx = px; // (sa_maxx = last pixel + 1) if (py >= sa_maxy) sa_maxy = py+1; if (py < sa_miny) sa_miny = py; - if (px == 0 || px == Fpxb->ww-1 || py == 0 || py == Fpxb->hh-1) - goto edgepix; // edge of image + if (px == 0 || px == Fpxb->ww-1 || py == 0 || py == Fpxb->hh-1) // image edge + goto edgepix; + if (Fpxb->nc > 3 && PXBpix(Fpxb,px,py)[3] < 254) // transparency edge 15.09 + goto edgepix; + if (! sa_pixmap[ii-1] || ! sa_pixmap[ii+1]) goto edgepix; // check 8 neighbor pixels kk = ii - Fpxb->ww; - if (! sa_pixmap[kk] || ! sa_pixmap[kk-1] || ! sa_pixmap[kk+1]) goto edgepix; + if (! sa_pixmap[kk-1] || ! sa_pixmap[kk] || ! sa_pixmap[kk+1]) goto edgepix; kk = ii + Fpxb->ww; - if (! sa_pixmap[kk] || ! sa_pixmap[kk-1] || ! sa_pixmap[kk+1]) goto edgepix; + if (! sa_pixmap[kk-1] || ! sa_pixmap[kk] || ! sa_pixmap[kk+1]) goto edgepix; sa_pixmap[ii] = 2; // interior pixel continue; @@ -1773,7 +1776,8 @@ // show or hide outline of select area -// also called from Fpaint*() if Fshowarea = 1 +// also called from Fpaint() if Fshowarea = 1 +// edges are detected independently of sa_pixmap[] void sa_show(int flag) { @@ -1796,8 +1800,6 @@ crflag = 1; } - cairo_set_line_width(mwcr,1); - for (ii = 0; ii < Fpxb->ww * Fpxb->hh; ii++) { if (! sa_pixmap[ii]) continue; @@ -1805,8 +1807,11 @@ py = ii / Fpxb->ww; px = ii - Fpxb->ww * py; - if (px == 0 || px == Fpxb->ww-1 || py == 0 || py == Fpxb->hh-1) - goto edgepix; // edge of image + if (px == 0 || px == Fpxb->ww-1 || py == 0 || py == Fpxb->hh-1) // edge of image + continue; + + if (Fpxb->nc > 3 && PXBpix(Fpxb,px,py)[3] < 254) // transparency edge 15.09 + continue; if (! sa_pixmap[ii-1] || ! sa_pixmap[ii+1]) goto edgepix; // check 8 neighbor pixels kk = ii - Fpxb->ww; @@ -1830,7 +1835,7 @@ // Show the area outline only within a rectangular section. // Improve responsiveness during user mouse-driven updates. -// Also called by Fpaint3() after a sectional edit is applied. +// Also called by Fpaint4() after a sectional edit is applied. void sa_show_rect(int px1, int py1, int ww, int hh) { @@ -1855,8 +1860,11 @@ ii = Fpxb->ww * py + px; if (! sa_pixmap[ii]) continue; - if (px == 0 || px == Fpxb->ww-1 || py == 0 || py == Fpxb->hh-1) - goto edgepix; // edge of image + if (px == 0 || px == Fpxb->ww-1 || py == 0 || py == Fpxb->hh-1) // edge of image + continue; + + if (Fpxb->nc > 3 && PXBpix(Fpxb,px,py)[3] < 254) // transparency edge 15.09 + continue; if (! sa_pixmap[ii-1] || ! sa_pixmap[ii+1]) goto edgepix; // check 8 neighbor pixels kk = ii - Fpxb->ww; @@ -1956,6 +1964,11 @@ return; } + sa_minx = Fpxb->ww; // get new enclosing rectangle + sa_maxx = 0; + sa_miny = Fpxb->hh; + sa_maxy = 0; + npix = 0; for (py = 0; py < Fpxb->hh; py++) // loop all pixels @@ -1964,44 +1977,34 @@ ii = py * Fpxb->ww + px; jj = sa_pixmap[ii]; // 0/1/2+ = outside/edge/inside - if (px == 0 || px == Fpxb->ww-1 || py == 0 || py == Fpxb->hh-1) - { // pixel on image edge - if (jj == 0) { - sa_pixmap[ii] = 1; // outside pixel >> edge pixel - npix++; // count - } - else sa_pixmap[ii] = 0; // edge pixel >> outside + if (jj > 1) { // inside pixel (2+) + sa_pixmap[ii] = 0; // is now outside (0) continue; } - if (jj > 1) sa_pixmap[ii] = 0; // inside pixel (2+) >> outside (0) - else { - sa_pixmap[ii] = 2 - jj; // edge/outside (1/0) >> edge/inside (1/2) - npix++; // count - } - } - - sa_stat = 3; // if disabled, now finished - sa_Npixel = npix; // new select area pixel count - sa_calced = sa_blend = 0; // edge calculation missing - if (zdsela) zdialog_stuff(zdsela,"blendwidth",0); // reset blend width - - sa_minx = Fpxb->ww; // get new enclosing rectangle - sa_maxx = 0; - sa_miny = Fpxb->hh; - sa_maxy = 0; + sa_pixmap[ii] = 2 - jj; // edge/outside (1/0) >> edge/inside (1/2) + npix++; // count - for (ii = 0; ii < Fpxb->ww * Fpxb->hh; ii++) - { - if (! sa_pixmap[ii]) continue; - py = ii / Fpxb->ww; - px = ii - Fpxb->ww * py; if (px >= sa_maxx) sa_maxx = px + 1; if (px < sa_minx) sa_minx = px; if (py >= sa_maxy) sa_maxy = py + 1; if (py < sa_miny) sa_miny = py; } + sa_minx -= 10; // add margins where possible 15.09 + if (sa_minx < 0) sa_minx = 0; + sa_maxx += 10; + if (sa_maxx > Fpxb->ww) sa_maxx = Fpxb->ww; + sa_miny -= 10; + if (sa_miny < 0) sa_miny = 0; + sa_maxy += 10; + if (sa_maxy > Fpxb->hh) sa_maxy = Fpxb->hh; + + sa_stat = 3; // if disabled, now finished + sa_Npixel = npix; // new select area pixel count + sa_calced = sa_blend = 0; // edge calculation missing + if (zdsela) zdialog_stuff(zdsela,"blendwidth",0); // reset blend width + sa_show(1); return; } @@ -2075,10 +2078,25 @@ for (ii = nn = 0; ii < Fpxb->ww * Fpxb->hh; ii++) // build list of edge pixels { if (sa_pixmap[ii] != 1) continue; + py = ii / Fpxb->ww; px = ii - py * Fpxb->ww; - if (px < 3 || px > Fpxb->ww-4) continue; // omit pixels < 3 from image edge - if (py < 3 || py > Fpxb->hh-4) continue; + + if (px == 0 || px == Fpxb->ww-1) continue; // omit edge pixels + if (py == 0 || py == Fpxb->hh-1) continue; + + if (Fpxb->nc > 3) { // omit pixels at transparency edge 15.09 + if (PXBpix(Fpxb,px-1,py)[3] < 254) continue; + if (PXBpix(Fpxb,px, py)[3] < 254) continue; + if (PXBpix(Fpxb,px+1,py)[3] < 254) continue; + if (PXBpix(Fpxb,px-1,py-1)[3] < 254) continue; + if (PXBpix(Fpxb,px, py-1)[3] < 254) continue; + if (PXBpix(Fpxb,px+1,py-1)[3] < 254) continue; + if (PXBpix(Fpxb,px-1,py+1)[3] < 254) continue; + if (PXBpix(Fpxb,px, py+1)[3] < 254) continue; + if (PXBpix(Fpxb,px+1,py+1)[3] < 254) continue; + } + sa_edgepx[nn] = px; sa_edgepy[nn] = py; nn++; @@ -2104,7 +2122,7 @@ else { for (ii = 0; ii < Fpxb->ww * Fpxb->hh; ii++) { // copy sa_edgedist[] to sa_pixmap[] - if (sa_pixmap[ii] < 2) continue; // skip outside and edge pixels + if (sa_pixmap[ii] <= 1) continue; // skip outside and edge pixels sa_pixmap[ii] = sa_edgedist[ii]; // interior pixel edge distance } sa_calced = 1; // edge calculation available @@ -2270,7 +2288,7 @@ if (px == 0 || px == Fpxb->ww-1 || py == 0 || py == Fpxb->hh-1) // edge of image, no change continue; - if (kk < 0) { // contract area + if (kk < 0) { // shrink area sa_pixmap[ii] = 0; continue; } @@ -2294,10 +2312,10 @@ /************************************************************************** - select area open and save functions - select area <--> disk file + select area copy/paste and open/save - select area <--> disk file ***************************************************************************/ -namespace sa_open_save +namespace sa_diskfile { PXM *sacp_pxm = 0; // select area pixmap image int sacp_ww, sacp_hh; // original dimensions @@ -2317,11 +2335,117 @@ } +// copy the current select area for later paste + +void m_select_copy(GtkWidget *, cchar *) // 15.09 +{ + using namespace sa_diskfile; + + int ii, px1, py1, px2, py2, dist; + int nc = 4, pcc = nc * sizeof(float); + float *pix1, *pix2; + char filename[100]; + + F1_help_topic = "area_copy_paste"; + + if (! sa_stat) return; // no selected area + if (sa_mode == mode_image) return; // a whole image area + if (sa_stat < 3) { + zmessageACK(Mwin,ZTX("the area is not finished")); + return; + } + + if (! E0pxm) { // get poss. 16-bit image + if (! resource_lock(Fpaintlock)) return; // 15.02 + E0pxm = PXM_load(curr_file,1); + resource_unlock(Fpaintlock); + if (! E0pxm) return; + } + + PXM_free(sacp_pxm); // free prior if any + PXM_free(sacpR_pxm); + + sacp_ww = sa_maxx - sa_minx + 1; // new area image PXM + sacp_hh = sa_maxy - sa_miny + 1; + sacp_pxm = PXM_make(sacp_ww,sacp_hh,nc); + + for (py2 = 0; py2 < sacp_hh; py2++) + for (px2 = 0; px2 < sacp_ww; px2++) + { + px1 = px2 + sa_minx; + py1 = py2 + sa_miny; + pix1 = PXMpix(E0pxm,px1,py1); // copy area pixels into area PXM + pix2 = PXMpix(sacp_pxm,px2,py2); + memcpy(pix2,pix1,pcc); // copy RGB data to pix2[0] [1] [2] + + ii = py1 * Fpxb->ww + px1; + dist = sa_pixmap[ii]; // 0/1/2+ = outside/edge/inside distance + if (dist == 0) pix2[3] = 0; // outside pixel, transparent + else if (dist == 1) pix2[3] = 128; // edge pixel, opacity = 50% + else pix2[3] = 255; // inside pixel, opacity = 100% + } + + snprintf(filename,100,"%s/copied_area.png",saved_areas_dirk); + PXM_PNG_save(sacp_pxm,filename,16); + + return; +} + + +// paste the area last copied on to the current image + +void m_select_paste(GtkWidget *, cchar *) // 15.09 +{ + using namespace sa_diskfile; + + void select_paste(GtkWidget *, cchar *); + + PXM *pxmtemp; + char filename[100]; + float *pix1, *pix2; + int px, py, nc, pcc; + + F1_help_topic = "area_copy_paste"; + + PXM_free(sacp_pxm); // free prior if any + PXM_free(sacpR_pxm); + + snprintf(filename,100,"%s/copied_area.png",saved_areas_dirk); + + pxmtemp = ANY_PXM_load(filename); // load image file + if (! pxmtemp) { + if (*file_errmess) zmessageACK(Mwin,file_errmess); + return; + } + + sacp_ww = pxmtemp->ww; // image dimensiona + sacp_hh = pxmtemp->hh; + + sacp_pxm = PXM_make(sacp_ww,sacp_hh,5); // make PXM with 2 extra channels + + nc = pxmtemp->nc; + pcc = nc * sizeof(float); // 3 or 4 channels, RGB or RGBA + + for (py = 0; py < sacp_hh; py++) + for (px = 0; px < sacp_ww; px++) + { + pix1 = PXMpix(pxmtemp,px,py); + pix2 = PXMpix(sacp_pxm,px,py); + memcpy(pix2,pix1,pcc); // copy all channels + if (nc == 3) pix2[3] = 255; // if no alpha channel, all pixels opaque + } + + PXM_free(pxmtemp); + select_paste(0,0); // interactive move/resize area image + return; +} + + // Read a select area from a disk PNG file. void m_select_open(GtkWidget *, cchar *) // 15.08 { - using namespace sa_open_save; + using namespace sa_diskfile; void select_paste(GtkWidget *, cchar *); @@ -2372,7 +2496,7 @@ void m_select_save(GtkWidget *, cchar *) // 15.08 { - using namespace sa_open_save; + using namespace sa_diskfile; int ii, px1, py1, px2, py2, dist; int nc = 4, pcc = nc * sizeof(float); @@ -2437,7 +2561,7 @@ void select_paste(GtkWidget *, cchar *) { - using namespace sa_open_save; + using namespace sa_diskfile; void select_paste_image(); void select_paste_makearea(); @@ -2527,14 +2651,14 @@ } -// Dialog event and completion callback function +// Dialog event and completion callback function. // Get dialog values and convert image. When done, commit edited image // (with pasted area) and set up a new select area for the pasted area, // allowing further editing of the area. int select_paste_dialog_event(zdialog *zd, cchar *event) { - using namespace sa_open_save; + using namespace sa_diskfile; void select_paste_mousefunc(); void select_paste_image(); @@ -2616,7 +2740,7 @@ void select_paste_mousefunc() { - using namespace sa_open_save; + using namespace sa_diskfile; void select_paste_image(); @@ -2665,7 +2789,7 @@ void select_paste_image() { - using namespace sa_open_save; + using namespace sa_diskfile; int px1, py1, px2, py2, nc, pcc; float *pix1, *pix2, *pix3; @@ -2755,7 +2879,7 @@ void select_paste_makearea() { - using namespace sa_open_save; + using namespace sa_diskfile; int cc, ii; int px1, py1, px2, py2; diff -Nru fotoxx-15.08/f.batch.cc fotoxx-15.09/f.batch.cc --- fotoxx-15.08/f.batch.cc 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/f.batch.cc 2015-08-31 10:21:01.000000000 +0000 @@ -30,6 +30,7 @@ m_batch_dcraw convert RAW files using DCraw m_batch_rawtherapee convert RAW files using Raw Therapee m_burn burn images to DVD/Blue-Ray disc + m_duplicates find all duplicated images ***************************************************************************/ @@ -1938,4 +1939,262 @@ } +/**************************************************************************/ + +// find all duplicated files and create corresponding gallery of duplicates + +void m_duplicates(GtkWidget *, const char *) +{ + int duplicates_dialog_event(zdialog *zd, cchar *event); + + PIXBUF *pxb; + GError *gerror; + FILE *fid = 0; + int Nfiles = 0, Ndups = 0; // image file and duplicate counts + char **files = 0; // image file list + char **thumbs = 0; // 64x64 thumbnail images + int *tcc = 0; // thumbnail actual width x height + uint8 *pix; + zdialog *zd; + int thumbsize, pixdiff, pixcount; + char text[100], gfile[100], *pp; + int zstat, ii, jj, kk, cc, err, ww, hh, ndup; + int m1, m2, sum, diff; + + F1_help_topic = "find_duplicates"; + + if (checkpend("all")) return; // check nothing pending + Fblock = 1; + +/*** + _________________________________________ + | Find Duplicate Images | + | | + | thumbnail size [ 64 |-+] | + | pixel difference [ 2 |-+] | + | pixel count [ 2 |-+] | + | Images: nnnnnn Duplicates: nnn | + | /topdirk/subdirk1/subdirk2/... | + | imagefile.jpg | + | [proceed] [cancel] | + |_________________________________________| + +***/ + + zd = zdialog_new(ZTX("Find Duplicate Images"),Mwin,Bproceed,Bcancel,null); + zdialog_add_widget(zd,"hbox","hbthumb","dialog"); + zdialog_add_widget(zd,"label","labthumb","hbthumb",ZTX("Thumbnail size")); + zdialog_add_widget(zd,"spin","thumbsize","hbthumb","32|256|32|64","space=3"); + zdialog_add_widget(zd,"hbox","hbdiff","dialog"); + zdialog_add_widget(zd,"label","labdiff","hbdiff",ZTX("pixel difference")); + zdialog_add_widget(zd,"spin","pixdiff","hbdiff","1|20|1|2","space=3"); + zdialog_add_widget(zd,"hbox","hbsum","dialog"); + zdialog_add_widget(zd,"label","labsum","hbsum",ZTX("pixel count")); + zdialog_add_widget(zd,"spin","pixcount","hbsum","1|999|1|10","space=3"); + zdialog_add_widget(zd,"hbox","hbcount","dialog",0,"space=5"); + zdialog_add_widget(zd,"label","labcount1","hbcount",ZTX("Images:")); + zdialog_add_widget(zd,"label","labcount2","hbcount",ZTX("searching ...")); + zdialog_add_widget(zd,"label","space","hbcount",0,"space=5"); + zdialog_add_widget(zd,"label","labdup1","hbcount",ZTX("Duplicates:")); + zdialog_add_widget(zd,"label","labdup2","hbcount","0"); + zdialog_add_widget(zd,"hbox","hbdirk","dialog",0,"space=3"); + zdialog_add_widget(zd,"label","labdirk","hbdirk"," ","space=5"); + zdialog_add_widget(zd,"hbox","hbfile","dialog"); + zdialog_add_widget(zd,"label","labfile","hbfile"," ","space=5"); + + zdialog_restore_inputs(zd); + zdialog_resize(zd,300,0); + zdialog_run(zd,duplicates_dialog_event); + + err = find_imagefiles(thumbdirk,files,Nfiles,1); // get all thumbnail files + if (err) { + zmessageACK(Mwin,strerror(errno)); + goto cleanup; + } + + if (Nfiles < 10) { + zmessageACK(Mwin,ZTX("only %d image thumbnails found"),Nfiles); + goto cleanup; + } + + snprintf(text,100,"%d",Nfiles); // stuff thumbnail count in dialog + zdialog_stuff(zd,"labcount2",text); + + zstat = zdialog_wait(zd); // wait for user inputs + if (zstat != 1) goto cleanup; + + zdialog_fetch(zd,"thumbsize",thumbsize); // thumbnail size to use + zdialog_fetch(zd,"pixdiff",pixdiff); // pixel difference threshold + zdialog_fetch(zd,"pixcount",pixcount); // pixel count threshold + + cc = Nfiles * sizeof(uint8 *); + thumbs = (char **) zmalloc(cc); + memset(thumbs,0,cc); + + cc = Nfiles * sizeof(int); + tcc = (int *) zmalloc(cc); + + Ffuncbusy = 1; + + for (ii = 0; ii < Nfiles; ii++) // screen out thumbnails not 15.02 + { // within top image directories + pp = thumb2imagefile(files[ii]); + if (! pp) { + zfree(files[ii]); + files[ii] = 0; + continue; + } + + for (kk = 0; kk < Ntopdirks; kk++) + { + cc = strlen(topdirks[kk]); + if (pp[cc] != '/') continue; + if (strmatchN(pp,topdirks[kk],cc)) break; + } + + zfree(pp); + if (kk < Ntopdirks) continue; + zfree(files[ii]); + files[ii] = 0; + } + + for (ii = 0; ii < Nfiles; ii++) // get thumbnails in memory + { + if (! files[ii]) continue; + if (Fkillfunc) goto cleanup; + + kk = thumbsize; + gerror = 0; + pxb = gdk_pixbuf_new_from_file_at_size(files[ii],kk,kk,&gerror); + if (! pxb) { + printz("file: %s \n %s",files[ii],gerror->message); + zfree(files[ii]); + files[ii] = 0; + continue; + } + + ww = gdk_pixbuf_get_width(pxb); // actual thumbnail dimensions + hh = gdk_pixbuf_get_height(pxb); // ( <= 64x64) + pix = gdk_pixbuf_get_pixels(pxb); + + cc = ww * hh * 3; + thumbs[ii] = (char *) zmalloc(cc); + memcpy(thumbs[ii],pix,cc); + tcc[ii] = cc; + g_object_unref(pxb); + zmainloop(10); // keep GTK alive + } + + for (ii = 0; ii < Nfiles; ii++) // replace thumbnail filespecs + { // with corresp. image filespecs + if (! files[ii]) continue; + pp = thumb2imagefile(files[ii]); + zfree(files[ii]); + files[ii] = pp; + } + + snprintf(gfile,100,"%s/search_results",tempdir); // open file for gallery output + fid = fopen(gfile,"w"); + if (! fid) goto filerror; + + Fbusy_goal = Nfiles; // set up progress monitor + Fbusy_done = 0; + + for (ii = 0; ii < Nfiles; ii++) // loop all thumbnails + { + if (Fkillfunc) goto cleanup; + Fbusy_done++; + + if (! files[ii]) continue; + pp = strrchr(files[ii],'/'); + if (! pp) continue; + *pp = 0; + zdialog_stuff(zd,"labdirk",files[ii]); // update directory and file name + zdialog_stuff(zd,"labfile",pp+1); // in dialog + *pp = '/'; + zmainloop(10); // keep GTK alive + zsleep(0.001); + + for (jj = ndup = 0; jj < Nfiles; jj++) // loop all thumbnails + { + if (jj == ii) continue; + if (! files[jj]) continue; + if (tcc[ii] != tcc[jj]) continue; // look for matching thumbnails + + for (kk = sum = 0; kk < tcc[ii]; kk++) + { + m1 = thumbs[ii][kk]; + m2 = thumbs[jj][kk]; + diff = abs(m1 - m2); + if (diff < pixdiff) continue; + if (++sum > pixcount) break; + } + + if (kk < tcc[ii]) continue; // no match + + gerror = 0; // thumbnails match + pxb = gdk_pixbuf_new_from_file_at_size(files[jj],64,64,&gerror); // check image is readable + if (pxb) g_object_unref(pxb); + if (! pxb || gerror) { // no, ignore matching + zfree(files[jj]); // "broken file" thumbnails + files[jj] = 0; + continue; + } + + if (ndup == 0) fprintf(fid,"%s\n",files[ii]); // first duplicate, output file name + fprintf(fid,"%s\n",files[jj]); // output duplicate image file name + zfree(files[jj]); + files[jj] = 0; + ndup++; + + Ndups++; + snprintf(text,100,"%d",Ndups); // update duplicates found in dialog + zdialog_stuff(zd,"labdup2",text); + } + } + + fclose(fid); + fid = 0; + + free_resources(); + navi::gallerytype = 2; // generate gallery of duplicate images + gallery(gfile,"initF"); + m_viewmode(0,"G"); + gallery(0,"paint",0); // position at top + +cleanup: + zdialog_free(zd); + if (fid) fclose(fid); + for (ii = 0; ii < Nfiles; ii++) + if (files[ii]) zfree(files[ii]); + if (thumbs) + for (ii = 0; ii < Nfiles; ii++) + if (thumbs[ii]) zfree(thumbs[ii]); + if (files) zfree(files); + if (thumbs) zfree(thumbs); + if (tcc) zfree(tcc); + fid = 0; + Fbusy_goal = 0; + Ffuncbusy = 0; + Fkillfunc = 0; + Fblock = 0; + return; + +filerror: + zmessLogACK(Mwin,"file error: %s",strerror(errno)); + goto cleanup; +} + + +// dialog event and completion function + +int duplicates_dialog_event(zdialog *zd, cchar *event) +{ + if (strmatch(event,"escape")) zd->zstat = 2; // escape = cancel 15.07 + if (! zd->zstat) return 1; // wait for user input + if (zd->zstat != 1) Fkillfunc = 1; // [cancel] or [x] + return 1; // [proceed] +} + + diff -Nru fotoxx-15.08/f.bend.cc fotoxx-15.09/f.bend.cc --- fotoxx-15.08/f.bend.cc 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/f.bend.cc 2015-08-31 10:21:01.000000000 +0000 @@ -65,6 +65,10 @@ EFunbend.threadfunc = unbend_thread; // thread function EFunbend.mousefunc = unbend_mousefunc; // mouse function if (! edit_setup(EFunbend)) return; // setup edit + + PXM_addalpha(E0pxm); // 15.09 + PXM_addalpha(E1pxm); + PXM_addalpha(E3pxm); /*** ___________________________________ | | @@ -127,6 +131,8 @@ if (zd->zstat) // dialog complete { + currgrid = 0; // restore normal grid settings 15.09 + if (zd->zstat == 1) { // done CEF->Fmods = 0; @@ -140,8 +146,6 @@ edit_done(0); // commit edit } else edit_cancel(0); // discard edit - - currgrid = 0; // restore normal grid settings draw_toplines(2); // erase axes-lines return 1; } @@ -371,6 +375,10 @@ EFperspective.mousefunc = mousefunc; // mouse function if (! edit_setup(EFperspective)) return; // setup edit + PXM_addalpha(E0pxm); // 15.09 + PXM_addalpha(E1pxm); + PXM_addalpha(E3pxm); + PSP_npix = 0; // no pixels yet zdialog *zd = zdialog_new(ZTX("Perspective Correction"),Mwin,Bapply,Breset,Bdone,null); @@ -1132,6 +1140,10 @@ EFwarpC.mousefunc = WarpC_mousefunc; // mouse function if (! edit_setup(EFwarpC)) return; // setup edit + PXM_addalpha(E0pxm); // 15.09 + PXM_addalpha(E1pxm); + PXM_addalpha(E3pxm); + zdialog *zd = zdialog_new(ZTX("Warp curved"),Mwin,Bdone,Bcancel,null); EFwarpC.zd = zd; @@ -1442,6 +1454,10 @@ EFwarpL.mousefunc = WarpL_mousefunc; // mouse function if (! edit_setup(EFwarpL)) return; // setup edit + PXM_addalpha(E0pxm); // 15.09 + PXM_addalpha(E1pxm); + PXM_addalpha(E3pxm); + zdialog *zd = zdialog_new(ZTX("Warp linear"),Mwin,Bdone,Bcancel,null); EFwarpL.zd = zd; @@ -1769,6 +1785,10 @@ EFwarpF.mousefunc = WarpF_mousefunc; // mouse function if (! edit_setup(EFwarpF)) return; // setup edit + PXM_addalpha(E0pxm); // 15.09 + PXM_addalpha(E1pxm); + PXM_addalpha(E3pxm); + zdialog *zd = zdialog_new(ZTX("Warp affine"),Mwin,Bdone,Bcancel,null); EFwarpF.zd = zd; @@ -2403,7 +2423,7 @@ for (px = 0; px < ww; px++) { // draw top curve over image py = Tfy[px] + Tbase; - if (py < 0) continue; + if (py < 0 || py > hh-1) continue; // bugfix 15.09 ppix3 = PXMpix(E3pxm,px,py); ppix3[0] = LINE_COLOR[0]; ppix3[1] = LINE_COLOR[1]; @@ -2431,7 +2451,7 @@ for (px = 0; px < ww; px++) { // draw bottom curve over image py = Bfy[px] + Bbase; - if (py > hh-1) continue; + if (py < 0 || py > hh-1) continue; // 15.09 ppix3 = PXMpix(E3pxm,px,py); ppix3[0] = LINE_COLOR[0]; ppix3[1] = LINE_COLOR[1]; @@ -2475,13 +2495,13 @@ Tslope = fabs(Tfy[px] - Tfy[px-1]); // slope of top function Bslope = fabs(Bfy[px] - Bfy[px-1]); // slope of bottom function - slope = 0.5 * (Tslope + Bslope) * Tstretch; // mean slope, stretched + slope = Tslope * Tstretch; // mean slope, stretched 15.09 slope = cos(atan(slope)); Tfx[px] = Tfx[px-1] + slope; // resulting pixel x-shift - slope = (Tslope + Bslope) * Bstretch; + slope = Bslope * Bstretch; slope = cos(atan(slope)); - Bfx[px] = Bfx[px-1] + slope; // resulting pixel x-shift + Bfx[px] = Bfx[px-1] + slope; } Rt = (ww-1) / Tfx[ww-1]; // make overall width the same diff -Nru fotoxx-15.08/f.combine.cc fotoxx-15.09/f.combine.cc --- fotoxx-15.08/f.combine.cc 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/f.combine.cc 2015-08-31 10:21:01.000000000 +0000 @@ -66,7 +66,7 @@ }; cimoffs cimOffs[10]; // image alignment data in E3 output image -int pixcc = 3 * sizeof(float); // RGB pixels, no alpha +int pixcc = 4 * sizeof(float); // RGB pixel cc with alpha channel 15.09 float cimScale; // alignment image size relative to full image float cimBlend; // image blend width at overlap, pixels (pano) @@ -125,8 +125,8 @@ PXM_free(cimPXMf[imx]); pxm = PXM_load(cimFile[imx],1); // ACK errors if (! pxm) return 0; + PXM_addalpha(pxm); // 15.09 cimPXMf[imx] = pxm; - PXM_fixblue(pxm); // blue=0 >> blue=1 for vpixel() } return 1; @@ -281,12 +281,13 @@ for (px1 = cimOv1xlo; px1 < cimOv1xhi; px1++) // loop overlapped columns { pix1 = PXMpix(pxm1,px1,py1); // image1 pixel - if (! pix1[2]) continue; // ignore void pixels + if (pix1[3] < 254) continue; // ignore void pixels 15.09 px2 = costf * (px1 - xoff) + sintf * (py1 - yoff); // corresponding image2 pixel py2 = costf * (py1 - yoff) - sintf * (px1 - xoff); vstat2 = vpixel(pxm2,px2,py2,vpix2); if (! vstat2) continue; // does not exist + if (vpix2[3] < 254) continue; // ignore void pixels 15.09 ++npix; // count overlapping pixels @@ -436,8 +437,6 @@ blue = blue * ff; } - if (! blue) blue = 1; // avoid 0 - pix[0] = red; pix[1] = green; pix[2] = blue; @@ -517,8 +516,6 @@ blue2 = blue2 * f1; } - if (! blue2) blue2 = 1; // avoid 0 - pix[0] = red2; pix[1] = green2; pix[2] = blue2; @@ -597,8 +594,6 @@ blue2 = blue2 * f1; } - if (! blue2) blue2 = 1; // avoid 0 - pix[0] = red2; pix[1] = green2; pix[2] = blue2; @@ -664,14 +659,14 @@ if (px < 8 || px > ww-9) continue; pix1 = PXMpix(pxm,px,py-6); // verify not near void areas - if (! pix1[2]) continue; + if (pix1[3] < 254) continue; // avoid void pixels 15.09 pix1 = PXMpix(pxm,px+6,py); - if (! pix1[2]) continue; + if (pix1[3] < 254) continue; pix1 = PXMpix(pxm,px,py+6); - if (! pix1[2]) continue; + if (pix1[3] < 254) continue; pix1 = PXMpix(pxm,px-6,py); - if (! pix1[2]) continue; - + if (pix1[3] < 254) continue; + pix1 = PXMpix(pxm,px,py); // candidate red pixel pix2 = PXMpix(pxm,px+2,py); // 2 pixels to right Hcon[ii] = 255 * (1.0 - PIXMATCH(pix1,pix2)); // horz. contrast 0-255 @@ -776,7 +771,7 @@ if (ww > hh) F = F / S * ww; else F = F / S * hh; - pxmout = PXM_make(ww,hh,3); // temp. output PXM + pxmout = PXM_make(ww,hh,4); // temp. output PXM for (py = 0; py < hh; py++) // cylindrical projection for (px = 0; px < ww; px++) @@ -792,7 +787,7 @@ vstat = vpixel(pxmin,dx,dy,vpix); // input virtual pixel pix = PXMpix(pxmout,px,py); // output real pixel if (vstat) memcpy(pix,vpix,pixcc); - else memset(pix,0,pixcc); // voided pixels are (0,0,0) + else memset(pix,0,pixcc); // voided pixels are (0,0,0,0) } PXM_free(pxmin); // replace input with output PXM @@ -822,7 +817,7 @@ ww = E3pxm->ww; hh = E3pxm->hh; - pxmout = PXM_make(1.4*ww,hh,3); + pxmout = PXM_make(1.4*ww,hh,4); for (ry = 0; ry < hh; ry++) for (rx = 0; rx < ww; rx++) @@ -840,7 +835,7 @@ ww = E3pxm->ww; hh = E3pxm->hh; - pxmout = PXM_make(ww,hh,3); + pxmout = PXM_make(ww,hh,4); ww2 = ww/2; hh2 = hh/2; @@ -894,7 +889,7 @@ if (ww > hh) F = F / S * ww; else F = F / S * hh; - pxmout = PXM_make(ww,hh,3); + pxmout = PXM_make(ww,hh,4); for (py = 0; py < hh; py++) for (px = 0; px < ww; px++) @@ -910,7 +905,7 @@ vstat = vpixel(pxmin,dx,dy,vpix); pix = PXMpix(pxmout,px,py); if (vstat) memcpy(pix,vpix,pixcc); - else memset(pix,0,pixcc); + else memset(pix,0,pixcc); // voided pixel } PXM_free(pxmin); @@ -1006,7 +1001,6 @@ vstat = vpixel(pxmin,px,py,vpix); // input virtual pixel pixm = PXMpix(pxmout,pxm,pym); // output real pixel - if (vstat) memcpy(pixm,vpix,pixcc); else memset(pixm,0,pixcc); // voided pixel } @@ -1087,7 +1081,6 @@ } vstat = vpixel(pxmin,pxs,pys,vpix); // input virtual pixel - if (vstat) memcpy(pixm,vpix,pixcc); else memset(pixm,0,pixcc); // voided pixel } @@ -1162,7 +1155,6 @@ } vstat = vpixel(pxmin,pxs,pys,vpix); // input virtual pixel - if (vstat) memcpy(pixm,vpix,pixcc); else memset(pixm,0,pixcc); // voided pixel } @@ -1240,9 +1232,6 @@ else cim_warp_image(im2); } - if (cimPanoV) cim_show_Vimages(0,0); // show images - else cim_show_images(0,0); - if (cim_manualwarp) continue; // skip auto warp // warp corners and search for best match @@ -1300,9 +1289,6 @@ if (cimPano) cim_warp_image_pano(im2,1); // apply corner warps else if (cimPanoV) cim_warp_image_Vpano(im2,1); else cim_warp_image(im2); - - if (cimPanoV) cim_show_Vimages(0,0); // show images - else cim_show_images(0,0); } } @@ -1377,7 +1363,7 @@ if (! cimRedpix[ii]) continue; pix1 = PXMpix(pxm1,px1,py1); // image1 pixel - if (! pix1[2]) continue; // ignore void pixels + if (pix1[3] < 254) continue; // ignore void pixels 15.09 px2 = costf * (px1 - xoff) + sintf * (py1 - yoff); // corresponding image2 pixel py2 = costf * (py1 - yoff) - sintf * (px1 - xoff); @@ -1421,7 +1407,7 @@ if (! cimRedpix[ii]) continue; pix1 = PXMpix(pxm1,px1,py1); // image1 pixel - if (! pix1[2]) continue; // ignore void pixels + if (pix1[3] < 254) continue; // ignore void pixels 15.09 px2 = costf * (px1 - xoff) + sintf * (py1 - yoff); // corresponding image2 pixel py2 = costf * (py1 - yoff) - sintf * (px1 - xoff); @@ -1465,8 +1451,8 @@ if (! cimRedpix[ii]) continue; pix1 = PXMpix(pxm1,px1,py1); // image1 pixel - if (! pix1[2]) continue; // ignore void pixels - + if (pix1[3] < 254) continue; // ignore void pixels 15.09 + px2 = costf * (px1 - xoff) + sintf * (py1 - yoff); // corresponding image2 pixel py2 = costf * (py1 - yoff) - sintf * (px1 - xoff); @@ -1593,13 +1579,7 @@ hhmax += 20; } - if (cimPanoV) { - for (imx = im1; imx <= im2; imx += iminc) // deliberate margins - cimOffs[imx].xf += 10; - wwmax += 20; - } - - E3pxm = PXM_make(wwmax,hhmax,3); // allocate output image + E3pxm = PXM_make(wwmax,hhmax,4); // allocate output image E3pxm->ww = wwmax; E3pxm->hh = hhmax; } @@ -1646,7 +1626,7 @@ if (px3 < 0 || px3 > E3pxm->ww-1) continue; // off top/bottom edge if (py3 < 0 || py3 > E3pxm->hh-1) continue; pix3 = PXMpix(E3pxm,px3,py3); - pix3[0] = 255; pix3[1] = pix3[2] = 1; + pix3[0] = 255; pix3[1] = pix3[2] = 0; } } } @@ -1665,9 +1645,9 @@ int imx, imy; int px3, py3; int vstat, vstat1, vstat2; - int red1, green1, blue1; - int red2, green2, blue2; - int red3, green3, blue3; + float red1, green1, blue1; // float 15.09 + float red2, green2, blue2; + float red3, green3, blue3, alpha3; float f1, f2, px, py; float vpix[4], *pix3; @@ -1687,6 +1667,7 @@ py = costf[imx] * (py3 - cimOffs[imx].yf) - sintf[imx] * (px3 - cimOffs[imx].xf); vstat = vpixel(cimPXMw[imx],px,py,vpix); if (! vstat) continue; + if (vpix[3] < 254) continue; // voided pixel 15.09 if (! vstat1) { // first overlapping image vstat1 = 1; @@ -1719,19 +1700,21 @@ f1 = f1 / (f1 + f2); f2 = 1.0 - f1; } - red3 = f1 * red1 + f2 * red2 + 0.5; - green3 = f1 * green1 + f2 * green2 + 0.5; - blue3 = f1 * blue1 + f2 * blue2 + 0.5; + red3 = f1 * red1 + f2 * red2; + green3 = f1 * green1 + f2 * green2; + blue3 = f1 * blue1 + f2 * blue2; } - if (! blue3) blue3 = 1; // blue = 0 reserved for void pixels + + alpha3 = 255; } - else red3 = green3 = blue3 = 0; // no overlapping image, pixel void + else red3 = green3 = blue3 = alpha3 = 0; // no overlapping image, pixel void pix3 = PXMpix(E3pxm,px3,py3); // output pixel pix3[0] = red3; pix3[1] = green3; pix3[2] = blue3; + pix3[3] = alpha3; } exit_wthread(); @@ -1801,7 +1784,7 @@ cimOffs[imx].xf += 10; wwmax += 20; - E3pxm = PXM_make(wwmax,hhmax,3); // allocate output image + E3pxm = PXM_make(wwmax,hhmax,4); // allocate output image E3pxm->ww = wwmax; E3pxm->hh = hhmax; } @@ -1847,7 +1830,7 @@ py3 = cimOffs[imx].yf + pyr * costf[imx] + pxr * sintf[imx] + 0.5; if (px3 < 0 || px3 > E3pxm->ww-1) continue; // off left/right edge pix3 = PXMpix(E3pxm,px3,py3); - pix3[0] = 255; pix3[1] = pix3[2] = 1; + pix3[0] = 255; pix3[1] = pix3[2] = 0; } } } @@ -1867,13 +1850,14 @@ int imx, imy; int px3, py3; int vstat, vstat1, vstat2; - int red1, green1, blue1; - int red2, green2, blue2; - int red3, green3, blue3; + float red1, green1, blue1, alpha1; // float 15.09 + float red2, green2, blue2, alpha2; + float red3, green3, blue3, alpha3; float f1, f2, px, py; float vpix[4], *pix3; red1 = green1 = blue1 = 0; + alpha1 = 255; // alpha 15.09 f1 = f2 = 0.5; // to use if no fblend flag @@ -1889,6 +1873,7 @@ py = costf[imx] * (py3 - cimOffs[imx].yf) - sintf[imx] * (px3 - cimOffs[imx].xf); vstat = vpixel(cimPXMw[imx],px,py,vpix); if (! vstat) continue; + if (vpix[3] < 254) continue; // voided pixel 15.09 if (! vstat1) { // first overlapping image vstat1 = 1; @@ -1896,12 +1881,14 @@ red1 = vpix[0]; green1 = vpix[1]; blue1 = vpix[2]; + alpha1 = vpix[3]; } else { // second image vstat2 = 1; red2 = vpix[0]; green2 = vpix[1]; blue2 = vpix[2]; + alpha2 = vpix[3]; break; } } @@ -1913,6 +1900,7 @@ red3 = red1; // use image1 pixel green3 = green1; blue3 = blue1; + alpha3 = alpha1; } else { // use blended image1 + image2 pixels if (fblendd) { @@ -1921,19 +1909,20 @@ f1 = f1 / (f1 + f2); f2 = 1.0 - f1; } - red3 = f1 * red1 + f2 * red2 + 0.5; - green3 = f1 * green1 + f2 * green2 + 0.5; - blue3 = f1 * blue1 + f2 * blue2 + 0.5; + red3 = f1 * red1 + f2 * red2; + green3 = f1 * green1 + f2 * green2; + blue3 = f1 * blue1 + f2 * blue2; + alpha3 = f1 * alpha1 + f2 * alpha2; } - if (! blue3) blue3 = 1; // blue = 0 reserved for void pixels } - else red3 = green3 = blue3 = 0; // no overlapping image, voided pixel + else red3 = green3 = blue3 = alpha3 = 0; // no overlapping image, voided pixel pix3 = PXMpix(E3pxm,px3,py3); // output pixel pix3[0] = red3; pix3[1] = green3; pix3[2] = blue3; + pix3[3] = alpha3; } exit_wthread(); @@ -2011,7 +2000,7 @@ if (ww < 0.7 * E3pxm->ww) return; // sanity check if (hh < 0.7 * E3pxm->hh) return; - E9pxm = PXM_make(ww,hh,3); + E9pxm = PXM_make(ww,hh,4); for (py3 = hhmin; py3 < hhmax; py3++) // E9 = trimmed E3 for (px3 = wwmin; px3 < wwmax; px3++) @@ -2277,14 +2266,14 @@ cim_warp_image(im1); // make warped images to show cim_warp_image(im2); + cim_get_overlap(im1,im2,cimPXMs); // get overlap area + cim_get_redpix(im1); // get high-contrast pixels + cimShowIm1 = im1; // show two images with 50/50 blend cimShowIm2 = im2; cimShowAll = 0; cim_show_images(1,0); // (x/y offsets can change) - cim_get_overlap(im1,im2,cimPXMs); // get overlap area - cim_get_redpix(im1); // get high-contrast pixels - cim_align_image(im1,im2); // align im2 to im1 zfree(cimRedpix); // clear red pixels @@ -2440,7 +2429,7 @@ if (! vstat) { // pixel outside some image pix3 = PXMpix(E3pxm,px3,py3); // output pixel = black - pix3[0] = pix3[1] = pix3[2] = 0; + pix3[0] = pix3[1] = pix3[2] = pix3[3] = 0; // alpha = 0 15.09 kk = py3 * ww + px3; HDRbright[kk] = 0; continue; @@ -2601,7 +2590,7 @@ if (xval < xlo || xval > xhi) continue; // no influence for brightness level kk = 1000 * xval; yval = sd->yval[imx][kk]; - HDR_respfac[imx][ii] = yval; // = contribution of this input image + HDR_respfac[imx][ii] = yval; // contribution of this input image } } @@ -2874,14 +2863,14 @@ cim_warp_image(im1); // warp images for show cim_warp_image(im2); + cim_get_overlap(im1,im2,cimPXMs); // get overlap area + cim_get_redpix(im1); // get high-contrast pixels + cimShowIm1 = im1; // show these two images cimShowIm2 = im2; // with 50/50 blend cimShowAll = 0; cim_show_images(1,0); // (y offset can change) - cim_get_overlap(im1,im2,cimPXMs); // get overlap area - cim_get_redpix(im1); // get high-contrast pixels - cim_align_image(im1,im2); // align im2 to im1 zfree(cimRedpix); // clear red pixels @@ -3284,8 +3273,8 @@ void * HDF_combine_wthread(void *arg) // worker thread { int index = *((int *) (arg)); // no more paint and warp modes - int px3, py3, vstat1; - int imx, red, green, blue; + int px3, py3, vstat1, imx; + float red, green, blue; // float 15.09 float px, py; float xoff, yoff, sintf[10], costf[10]; float vpix1[4], *pix3; @@ -3530,14 +3519,14 @@ cim_warp_image(im1); // warp images for show cim_warp_image(im2); + cim_get_overlap(im1,im2,cimPXMs); // get overlap area + cim_get_redpix(im1); // get high-contrast pixels + cimShowIm1 = im1; // show these two images cimShowIm2 = im2; // with 50/50 blend cimShowAll = 0; cim_show_images(1,0); // (x/y offsets can change) - cim_get_overlap(im1,im2,cimPXMs); // get overlap area - cim_get_redpix(im1); // get high-contrast pixels - cim_align_image(im1,im2); // align im2 to im1 zfree(cimRedpix); // clear red pixels @@ -3817,8 +3806,8 @@ void * STP_combine_wthread(void *arg) // worker thread { int index = *((int *) (arg)); - int px3, py3, vstat1; - int imx, red, green, blue; + int px3, py3, vstat1, imx; + float red, green, blue; // float 15.09 float px, py; float xoff, yoff, sintf[10], costf[10]; float vpix1[4], *pix3; @@ -4058,14 +4047,14 @@ cim_warp_image(im1); // warp images for show cim_warp_image(im2); + cim_get_overlap(im1,im2,cimPXMs); // get overlap area + cim_get_redpix(im1); // get high-contrast pixels + cimShowIm1 = im1; // show these two images cimShowIm2 = im2; // with 50/50 blend cimShowAll = 0; cim_show_images(1,0); // (x/y offsets can change) - cim_get_overlap(im1,im2,cimPXMs); // get overlap area - cim_get_redpix(im1); // get high-contrast pixels - cim_align_image(im1,im2); // align im2 to im1 zfree(cimRedpix); // clear red pixels @@ -4222,7 +4211,7 @@ { int index = *((int *) arg); int imx, vstat, px3, py3; - int red, green, blue; + float red, green, blue; // float 15.09 int ii, ns, ns1, ns2; int Rlist[10], Glist[10], Blist[10]; float px, py; @@ -4776,10 +4765,10 @@ xoff = cimOffs[imm].xf; yoff = cimOffs[imm].yf; - cim_show_images(0,0); // show combined images - mx0 = mx; // next drag origin = current mouse my0 = my; + + cim_show_images(0,0); // show combined images } } @@ -5021,8 +5010,11 @@ zmessageACK(Mwin,ZTX("Too little overlap, cannot align")); goto fail; } + cim_get_redpix(im1); // get high-contrast pixels + cim_show_images(0,0); // show with 50/50 blend in overlaps + cim_align_image(im1,im2); // search for best offsets and warps zfree(cimRedpix); // clear red pixels @@ -5270,7 +5262,6 @@ R1 = R * pixel[0]; // apply color factors G1 = G * pixel[1]; B1 = B * pixel[2]; - if (! B1) continue; if (R1 > 255.9 || G1 > 255.9 || B1 > 255.9) { bright = R1; // avoid overflow @@ -5282,8 +5273,6 @@ B1 = B1 * bright; } - if (B1 < 1) B1 = 1; // avoid 0 - pixel[0] = R1; pixel[1] = G1; pixel[2] = B1; @@ -5823,7 +5812,6 @@ { mx = Mxdrag; // mouse position in image my = Mydrag; -// Mxdrag = Mydrag = 0; // 15.01 if (! mx0 && ! my0) // new drag { @@ -6129,6 +6117,8 @@ cim_get_redpix(im1); // get high-contrast pixels + cim_show_Vimages(0,0); // show with 50/50 blend in overlaps + cim_align_image(im1,im2); // search for best offsets and warps zfree(cimRedpix); // clear red pixels @@ -6372,7 +6362,6 @@ R1 = R * pixel[0]; // apply color factors G1 = G * pixel[1]; B1 = B * pixel[2]; - if (! B1) continue; if (R1 > 255.9 || G1 > 255.9 || B1 > 255.9) { bright = R1; // avoid overflow @@ -6384,8 +6373,6 @@ B1 = B1 * bright; } - if (B1 < 1) B1 = 1; // avoid 0 - pixel[0] = R1; pixel[1] = G1; pixel[2] = B1; diff -Nru fotoxx-15.08/f.edit.cc fotoxx-15.09/f.edit.cc --- fotoxx-15.08/f.edit.cc 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/f.edit.cc 2015-08-31 10:21:01.000000000 +0000 @@ -106,6 +106,10 @@ EFtrimrotate.Frestart = 1; // allow restart EFtrimrotate.mousefunc = mousefunc; if (! edit_setup(EFtrimrotate)) return; // setup edit + + PXM_addalpha(E0pxm); // 15.09 + PXM_addalpha(E1pxm); + PXM_addalpha(E3pxm); E0ww = E0pxm->ww; // full-size image dimensions E0hh = E0pxm->hh; @@ -113,7 +117,7 @@ E3hh = E3pxm->hh; FPR = 1.0 * (E0ww + E0hh) / (E3ww + E3hh); // full image / preview ratio - if (menu && strmatch(menu,"autotrim")) { // autotrim: keep preset trim rectangle + if (menu && strmatch(menu,"keep")) { // keep preset trim rectangle trimsize[0] = trimrect[2] - trimrect[0]; // (full image scale) trimsize[1] = trimrect[3] - trimrect[1]; trimR = 1.0 * trimsize[0] / trimsize[1]; // trim ratio = width/height @@ -235,7 +239,8 @@ Fmax = 0; zdialog_send_event(zd,"max"); } - + + zdialog_wait(zd); return; } @@ -277,8 +282,8 @@ if (zd->zstat == 3) { // [done] trim_fullsize(); CEF->Fmods++; + currgrid = 0; // restore normal grid settings 15.09 edit_done(0); - currgrid = 0; // restore normal grid settings return 1; } @@ -515,13 +520,16 @@ return 1; } - if (strmatch(event,"auto")) + if (strmatch(event,"auto")) // 15.09 { - draw_toplines(2); // erase trim rectangle 15.06 - erase_topcircles(); // and target circle - edit_cancel(0); // cancel edit + if (CEF->Fmods) { + dialog_event(zd,"max"); + trim_fullsize(); + edit_done(0); // complete edit + } + else edit_cancel(0); autotrim(); - m_trimrotate(0,"autotrim"); // restart edit + m_trimrotate(0,"keep"); // restart edit return 1; } @@ -1008,7 +1016,7 @@ } else memcpy(pix3,pix1,pcc); } - + Fpaint3(ox1,oy1,ox2-ox1,ny1-oy1); // 4 updated rectangles Fpaint3(nx2,oy1,ox2-nx2,oy2-oy1); Fpaint3(ox1,ny2,ox2-ox1,oy2-ny2); @@ -1094,7 +1102,7 @@ zdialog *zd = EFtrimrotate.zd; int nc = E3pxm->nc, pcc = nc * sizeof(float); - zmainloop(); // updates before big CPU time + ///zmainloop(); // bugfix 15.09 if (! resource_lock(Fpaintlock)) return; // 15.02 @@ -1175,7 +1183,8 @@ ptrimrect[1] = 0; ptrimrect[2] = E3ww; // = 100% of image ptrimrect[3] = E3hh; - + + CEF->Fmods++; return; } @@ -1268,29 +1277,32 @@ } -// auto-trim image - set trim rectangle to exclude black margins +// auto-trim image - set trim rectangle to exclude transparent regions void trimrotate::autotrim() // 15.06 { using namespace trimrotate; + PXM *pxm = 0; int px1, py1, px2, py2; int qx1, qy1, qx2, qy2; int qx, qy, step1, step2; int area1, area2, Fgrow = 0; float *ppix; - Ffuncbusy++; - - px1 = 0.4 * Fpxb->ww; // select small rectangle in the middle - py1 = 0.4 * Fpxb->hh; - px2 = 0.6 * Fpxb->ww; - py2 = 0.6 * Fpxb->hh; + if (! E0pxm) return; // no edit image + pxm = E0pxm; + if (pxm->nc < 4) return; // no alpha channel + + px1 = 0.4 * pxm->ww; // select small rectangle in the middle + py1 = 0.4 * pxm->hh; + px2 = 0.6 * pxm->ww; + py2 = 0.6 * pxm->hh; - step1 = 0.02 * (Fpxb->ww + Fpxb->hh); // start with big search steps + step1 = 0.02 * (pxm->ww + pxm->hh); // start with big search steps step2 = 0.2 * step1; if (step2 < 1) step2 = 1; - + while (true) { while (true) @@ -1307,38 +1319,38 @@ { if (qx1 < 0) continue; // check image limits if (qy1 < 0) continue; - if (qx1 > 0.5 * Fpxb->ww) continue; - if (qy1 > 0.5 * Fpxb->hh) continue; - if (qx2 > Fpxb->ww-1) continue; - if (qy2 > Fpxb->hh-1) continue; - if (qx2 < 0.5 * Fpxb->ww) continue; - if (qy2 < 0.5 * Fpxb->hh) continue; - - ppix = PXMpix(E0pxm,qx1,qy1); // check 4 corners are not - if (ppix[0] < 1 && ppix[1] < 1 && ppix[2] < 1) continue; // in the black margin zones - ppix = PXMpix(E0pxm,qx2,qy1); - if (ppix[0] < 1 && ppix[1] < 1 && ppix[2] < 1) continue; // check all colors - ppix = PXMpix(E0pxm,qx2,qy2); - if (ppix[0] < 1 && ppix[1] < 1 && ppix[2] < 1) continue; - ppix = PXMpix(E0pxm,qx1,qy2); - if (ppix[0] < 1 && ppix[1] < 1 && ppix[2] < 1) continue; + if (qx1 > 0.5 * pxm->ww) continue; + if (qy1 > 0.5 * pxm->hh) continue; + if (qx2 > pxm->ww-1) continue; + if (qy2 > pxm->hh-1) continue; + if (qx2 < 0.5 * pxm->ww) continue; + if (qy2 < 0.5 * pxm->hh) continue; + + ppix = PXMpix(pxm,qx1,qy1); // check 4 corners are not + if (ppix[3] < 1) continue; // in transparent zones 15.09 + ppix = PXMpix(pxm,qx2,qy1); + if (ppix[3] < 1) continue; + ppix = PXMpix(pxm,qx2,qy2); + if (ppix[3] < 1) continue; + ppix = PXMpix(pxm,qx1,qy2); + if (ppix[3] < 1) continue; area2 = (qx2 - qx1) * (qy2 - qy1); // look for larger enclosed area if (area2 <= area1) continue; - for (qx = qx1; qx < qx2; qx++) { // check top/bottom sides don't intersect - ppix = PXMpix(E0pxm,qx,qy1); // the black margin zones - if (ppix[0] < 1 && ppix[1] < 1 && ppix[2] < 1) break; - ppix = PXMpix(E0pxm,qx,qy2); - if (ppix[0] < 1 && ppix[1] < 1 && ppix[2] < 1) break; + for (qx = qx1; qx < qx2; qx++) { // check top/bottom sides not intersect + ppix = PXMpix(pxm,qx,qy1); // transparent zones 15.09 + if (ppix[3] < 1) break; + ppix = PXMpix(pxm,qx,qy2); + if (ppix[3] < 1) break; } if (qx < qx2) continue; for (qy = qy1; qy < qy2; qy++) { // also left/right sides - ppix = PXMpix(E0pxm,qx1,qy); - if (ppix[0] < 1 && ppix[1] < 1 && ppix[2] < 1) break; - ppix = PXMpix(E0pxm,qx2,qy); - if (ppix[0] < 1 && ppix[1] < 1 && ppix[2] < 1) break; + ppix = PXMpix(pxm,qx1,qy); + if (ppix[3] < 1) break; + ppix = PXMpix(pxm,qx2,qy); + if (ppix[3] < 1) break; } if (qy < qy2) continue; @@ -1368,7 +1380,6 @@ trimrect[1] = py1; trimrect[3] = py2; - Ffuncbusy--; return; } @@ -5546,7 +5557,7 @@ using namespace writeline; float *pix1, *pix3; - uint8 *pixl1; ///, *pixl2; + uint8 *pixl1; int px1, py1, px3, py3, done; float e3part; int nc = E1pxm->nc, pcc = nc * sizeof(float); @@ -6259,7 +6270,7 @@ int leveds_event(zdialog *zd, cchar *event) { - int ii, kk, pixdist, rowcc; + int ii, kk, pixdist; float px, py, xval, yval, lever; float *pixel0, *pixel1, *pixel2, *pixel3, *pixel4; spldat *sd = leveds_curve; @@ -6325,13 +6336,11 @@ else if (leveds_type == 2) // lever type = contrast { - rowcc = E1pxm->ww * 3; // image row span - - pixel1 = pixel0 + 3; // 4 pixels right, left, down, up - pixel2 = pixel0 - 3; - pixel3 = pixel0 + rowcc; - pixel4 = pixel0 - rowcc; - + pixel1 = PXMpix(E1pxm,ipx-1,ipy); // 15.09 + pixel2 = PXMpix(E1pxm,ipx+1,ipy); + pixel3 = PXMpix(E1pxm,ipx,ipy-1); + pixel4 = PXMpix(E1pxm,ipx,ipy+1); + if (leveds_color == 1) // use all colors { lever = fabsf(pixel0[0] - pixel1[0]) + fabsf(pixel0[0] - pixel2[0]) diff -Nru fotoxx-15.08/f.effects.cc fotoxx-15.09/f.effects.cc --- fotoxx-15.08/f.effects.cc 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/f.effects.cc 2015-08-31 10:21:01.000000000 +0000 @@ -809,6 +809,7 @@ float red3h, red3v, green3h, green3v, blue3h, blue3v; float *pix8, *pix9; float *pixa, *pixb, *pixc, *pixd, *pixe, *pixf, *pixg, *pixh; + int nc = E1pxm->nc; while (true) { @@ -835,14 +836,14 @@ pix8 = PXMpix(E8pxm,px,py); // input pixel pix9 = PXMpix(E9pxm,px,py); // output pixel - pixa = pix8-3*ww-3; // 8 neighboring pixels are used - pixb = pix8-3*ww; // to get edge brightness using - pixc = pix8-3*ww+3; // a Sobel filter - pixd = pix8-3; - pixe = pix8+3; - pixf = pix8+3*ww-3; - pixg = pix8+3*ww; - pixh = pix8+3*ww+3; + pixa = pix8-nc*ww-nc; // 8 neighboring pixels are used 15.09 + pixb = pix8-nc*ww; // to get edge brightness using + pixc = pix8-nc*ww+nc; // a Sobel filter + pixd = pix8-nc; + pixe = pix8+nc; + pixf = pix8+nc*ww-nc; + pixg = pix8+nc*ww; + pixh = pix8+nc*ww+nc; red3h = -pixa[0] - 2 * pixb[0] - pixc[0] + pixf[0] + 2 * pixg[0] + pixh[0]; red3v = -pixa[0] - 2 * pixd[0] - pixf[0] + pixc[0] + 2 * pixe[0] + pixh[0]; @@ -1603,6 +1604,7 @@ int rgb, dx, dy, rad; float *pix1, *pix3, *pixN; float sumpix, kern, dold, dnew; + int nc = E1pxm->nc; if (sa_stat == 3) { // select area active ii = py * E3pxm->ww + px; @@ -1627,7 +1629,7 @@ for (dy = -rad; dy <= rad; dy++) // loop surrounding block of pixels for (dx = -rad; dx <= rad; dx++) { - pixN = pix1 + (dy * E1pxm->ww + dx) * 3; + pixN = pix1 + (dy * E1pxm->ww + dx) * nc; // 15.09 kern = emboss_kernel[dx+rad][dy+rad]; sumpix += kern * pixN[rgb]; @@ -1654,7 +1656,7 @@ for (dy = -rad; dy <= rad; dy++) // loop surrounding block of pixels for (dx = -rad; dx <= rad; dx++) { - pixN = pix1 + (dy * E1pxm->ww + dx) * 3; + pixN = pix1 + (dy * E1pxm->ww + dx) * nc; // 15.09 kern = emboss_kernel[dx+rad][dy+rad]; sumpix += kern * (pixN[0] + pixN[1] + pixN[2]); } @@ -1981,7 +1983,7 @@ void * dots_thread(void *) { - int ds, cc, ii, sumpix; + int ds, ii, sumpix; int dist, shift1, shift2; int px, py, px1, px2, py1, py2; int qx, qy, qx1, qx2, qy1, qy2; @@ -1990,6 +1992,7 @@ float relmax, radius, radius2a, radius2b, f1, f2; float fpi = 1.0 / 3.14159; float dcx, dcy, qcx, qcy, qdist2; + int nc = E3pxm->nc; while (true) { @@ -1998,9 +2001,12 @@ if (! resource_lock(Fpaintlock)) continue; // 15.02 ds = dot_size; // dot size and tile size - - cc = E3pxm->ww * E3pxm->hh * 3 * sizeof(float); // clear output image to black - memset(E3pxm->pixels,0,cc); + + for (py = 0; py < E3pxm->hh; py++) // set image to black + for (px = 0; px < E3pxm->ww; px++) { // not alpha channel 15.09 + pix3 = PXMpix(E3pxm,px,py); + pix3[0] = pix3[1] = pix3[2] = 0; + } px1 = 0; // limits for tiles px2 = E3pxm->ww - ds; @@ -2090,7 +2096,8 @@ for (ii = 0; ii < E3pxm->ww * E3pxm->hh; ii++) // loop all pixels { dist = sa_pixmap[ii]; - if (dist == 0) memmove(pix3,pix1,3*sizeof(float)); // pixel outside area, output pixel = input + if (dist == 0) // outside area + memmove(pix3,pix1,3*sizeof(float)); else if (dist < sa_blend) { f1 = 1.0 * dist / sa_blend; // pixel in blend region f2 = 1.0 - f1; @@ -2098,8 +2105,8 @@ pix3[1] = f1 * pix3[1] + f2 * pix1[1]; pix3[2] = f1 * pix3[2] + f2 * pix1[2]; } - pix1 += 3; - pix3 += 3; + pix1 += nc; // 15.09 + pix3 += nc; } } @@ -2461,7 +2468,7 @@ if (! sa_pixmap[kk]) continue; // pixel outside area if (pixgroup[kk] == group) continue; // already in same group - pixN = PXMpix(E3pxm,npx,npy); // match color of group neighbor to color of group + pixN = PXMpix(E3pxm,npx,npy); // match group neighbor color to group color match = PIXMATCH(pix3,pixN); // 0..1 = zero..perfect match if (match < color_match) continue; @@ -4355,8 +4362,6 @@ } } - ///zdialog_restore_inputs(zd); // preload prior user inputs 15.05 - zdialog_fetch(zd,"kernsize",kernsize2); if (kernsize2 != kernsize) { // kernel size is different kernsize = kernsize2; // restart with correct kernel size diff -Nru fotoxx-15.08/f.file.cc fotoxx-15.09/f.file.cc --- fotoxx-15.08/f.file.cc 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/f.file.cc 2015-08-31 10:21:01.000000000 +0000 @@ -49,6 +49,7 @@ m_copyto_clip copy clicked file or current file to the clipboard m_quit menu quit quitxx callable quit + m_help help menu f_preload preload image files ahead of need f_open open and display an image file f_open_saved open the last image file saved @@ -348,7 +349,7 @@ F1_help_topic = "prev_next"; if (busy) return; // avoid "function busy" 15.05 - if (! CEF && checkpend("all")) return; // 15.04 + if (! CEF && checkpend("all")) return; // CEF allowed if no mods 15.04 busy = 1; pfile = gallery_getnext(index,Flastversion); // get prev/next file (last version) @@ -903,19 +904,22 @@ add_recent_file(newfile); // first in recent files list - zfree(newfile); - zfree(rename_file); - rename_file = 0; - if (navi::gallerytype == 1) { // refresh gallery list 15.03 gallery(0,"init"); gallery(0,"paint",-1); } - if (nextfile) { // F view: open next 15.03 - f_open(nextfile); - zfree(nextfile); + if (FGW == 'F') { + if (nextfile) { // F view: open next 15.03 + f_open(nextfile); + zfree(nextfile); + } + else f_open(newfile); // no next, open renamed file 15.09 } + + zfree(newfile); + zfree(rename_file); + rename_file = 0; return 1; } @@ -1809,6 +1813,50 @@ /**************************************************************************/ +// help menu function + +void m_help(GtkWidget *, cchar *menu) +{ + if (strmatch(menu,ZTX("Quick Start"))) + showz_html(quickstart_file); + + if (strmatch(menu,ZTX("User Guide"))) + showz_userguide(); + + if (strmatch(menu,ZTX("User Guide Changes"))) + showz_userguide("recent_changes"); + + if (strmatch(menu,ZTX("README"))) + showz_textfile("doc","README"); + + if (strmatch(menu,ZTX("Edit Functions Summary"))) + showz_textfile("data","edit-menus"); + + if (strmatch(menu,ZTX("Change Log"))) + showz_textfile("doc","changelog"); + + if (strmatch(menu,ZTX("Log File"))) + showz_logfile(); + + if (strmatch(menu,ZTX("Translations"))) + showz_userguide("translations"); + + if (strmatch(menu,ZTX("Home Page"))) + showz_html(Fhomepage); + + if (strmatch(menu,ZTX("About"))) + zmessageACK(Mwin,"%s\n %s\n %s\n %s\n %s\n %s\n", + Frelease,Flicense,Fhomepage,Fsoftware,Fcontact,Ftranslators); + + if (strmatch(menu,ZTX("Help"))) // menu button + showz_userguide(F1_help_topic); // show topic if there, or page 1 + + return; +} + + +/**************************************************************************/ + // Function to preload image files hopefully ahead of need. // Usage: f_preload(next) // next = -1 / +1 to read previous / next image file in curr. gallery @@ -1884,12 +1932,14 @@ void (*menufunc)(GtkWidget *, cchar *); STATB statb; + if (Freent++) { // stop re-entry + printz("f_open() re-entry \n"); + goto ret1; + } + if (clicked_file) zfree(clicked_file); clicked_file = 0; - if (Freent) goto ret1; // stop re-entry - Freent++; - if (CEF && ! CEF->Frestart) goto ret1; // edit function not restartable if (Fthreadbusy) goto ret1; // do not interrupt thread @@ -2063,6 +2113,9 @@ int fmodified, fcopy; void (*menufunc)(GtkWidget *, cchar *); STATB fstat; + + cchar *warnalphamess = ZTX("Transparency map will be lost.\n" + "save to PNG file to retain."); if (! curr_file) return 1; if (Fthreadbusy) return 1; // poss. edit thread running @@ -2136,7 +2189,17 @@ else if (strmatch(outype,"png")) // save as png file (bpc = 8 or 16) err = PXM_PNG_save(E0pxm,tempfile,outbpc); - else { // save as .bmp .jpg + else { // save as .bmp .jpg (no alpha channel) + if (Fwarnalpha && E0pxm->nc > 3) { + ii = zdialog_choose(Mwin,warnalphamess,Bsave,Bcancel,null); // 15.09 + if (ii != 1) { + remove(tempfile); // NO + zfree(tempfile); + zfree(outfile); + Ffuncbusy = 0; + return 1; + } + } err = PXM_ANY_save(E0pxm,tempfile); // (bpc = 8 always) outbpc = 8; } @@ -3455,7 +3518,7 @@ png_init_io(pngstruct,fid); // initz. for writing file - png_set_compression_level(pngstruct,4); // 1...9 = faster...smaller size + png_set_compression_level(pngstruct,1); // 15.09 if (ac) png_set_IHDR(pngstruct,pnginfo,ww,hh,bpc,PNG_COLOR_TYPE_RGB_ALPHA,0,0,0); @@ -3745,8 +3808,8 @@ pext = strrchr(pext,'.'); if (! pext) pext = ""; - if (strstr(".png .PNG",pext)) - pxbstat = gdk_pixbuf_save(pixbuf,file,"png",&gerror,"compression","4",null); + if (strstr(".png .PNG",pext)) // compression level 15.09 + pxbstat = gdk_pixbuf_save(pixbuf,file,"png",&gerror,"compression","1",null); else if (strstr(".bmp .BMP",pext)) pxbstat = gdk_pixbuf_save(pixbuf,file,"bmp",&gerror,null); @@ -3823,3 +3886,4 @@ } + diff -Nru fotoxx-15.08/f.gallery.cc fotoxx-15.09/f.gallery.cc --- fotoxx-15.08/f.gallery.cc 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/f.gallery.cc 2015-08-31 10:21:01.000000000 +0000 @@ -119,6 +119,9 @@ int KBrelease(GtkWidget *, GdkEventKey *, void *); // gallery window key release event } +using namespace zfuncs; +using namespace navi; + /************************************************************************** @@ -163,8 +166,6 @@ char * gallery(cchar *filez, cchar *action, int Nth) // overhauled { - using namespace navi; - int nth = Nth; zthreadcrash(); // thread usage not allowed @@ -225,8 +226,6 @@ char * navi::navigate(cchar *filez, cchar *action, int Nth) { - using namespace navi; - char *file, *findname; cchar *findcommand = "find -L \"%s\" -maxdepth 1"; char *pp, *file2, fdate[16], pdate[16], size[16]; @@ -510,8 +509,6 @@ int navi::gallery_paint(GtkWidget *drwin, cairo_t *cr) { - using namespace navi; - PIXBUF *pxbT; double x1, y1, x2, y2; int ii, jj, nrows, row, col; @@ -676,8 +673,6 @@ int navi::gallery_paintmeta(GtkWidget *drwin, cairo_t *cr) { - using namespace navi; - PIXBUF *pxbT; double x1, y1, x2, y2; int ii, nrows, row, col; @@ -804,7 +799,6 @@ gallerypath[ii] = (char *) zmalloc(cc); strncpy0(gallerypath[ii],pp1+1,cc); // bbbbbb gallerybutt[ii] = gtk_button_new_with_label(gallerypath[ii]); - gtk_widget_override_font(gallerybutt[ii],panelfont); gtk_box_pack_start(GTK_BOX(Gpanel),gallerybutt[ii],0,0,3); G_SIGNAL(gallerybutt[ii],"clicked",navibutt_clicked,&Nval[ii]); pp1 = pp1 + cc; // next directory level /cccccc @@ -876,8 +870,6 @@ void navi::draw_text(cairo_t *cr, char *text, int px, int py, int ww) { - using namespace navi; - static PangoFontDescription *pfont = 0; static PangoLayout *playout = 0; @@ -911,8 +903,6 @@ void navi::menufuncx(GtkWidget *, cchar *menu) { - using namespace navi; - int ii, scroll1, scroll2; char *file; @@ -1030,8 +1020,6 @@ void navi::gallery_scroll(int position, int speed) { - using namespace navi; - if (position < 0) { // stop scrolling gallery_scrollgoal = -1; gallery_scrollspeed = 0; @@ -1056,8 +1044,6 @@ int navi::gallery_scrollfunc(void *) { - using namespace navi; - static float cumscroll = 0; if (gallery_scrollgoal < 0) { // stop scrolling @@ -1337,8 +1323,6 @@ void navi::mouse_event(GtkWidget *widget, GdkEvent *event, void *) { - using namespace navi; - GdkEventButton *eventB; PIXBUF *pxbT; GdkWindow *gdkwin; @@ -1517,8 +1501,6 @@ int navi::KBrelease(GtkWidget *win, GdkEventKey *event, void *) { - using namespace navi; - int KBkey; KBkey = event->keyval; @@ -1550,8 +1532,6 @@ void set_gwin_title() { - using namespace navi; - char *pp, title[200]; int gtype; @@ -1593,8 +1573,6 @@ char * gallery_getnext(int index, int lastver) { - using namespace navi; - int cc, Nth, loNth, hiNth, ftype; char *pp, *nfile = 0, *pfile = 0; @@ -1663,8 +1641,6 @@ int gallery_position(cchar *file, int Nth) { - using namespace navi; - int ii; if (! nfiles) return -1; @@ -1693,8 +1669,6 @@ int image_file_type(cchar *file) { - using namespace navi; - int err, xcc, tcc; static int ftf = 1, tdcc = 0; cchar *ppx; @@ -2135,8 +2109,6 @@ void gallery_monitor(cchar *action) { - using namespace navi; - void gallery_changed(void *, GFile *, void *, GFileMonitorEvent); static GFile *gfile_gallery = 0; // directory being monitored @@ -2168,8 +2140,6 @@ void gallery_changed(void *, GFile *, void *, GFileMonitorEvent event) { - using namespace navi; - if (gallerytype != 1) { // precaution gallery_monitor("stop"); return; @@ -2218,7 +2188,6 @@ char ** gallery_getfiles(char **initfiles0) { - using namespace navi; using namespace ggfnames; PangoLanguage *plang; @@ -2269,7 +2238,6 @@ G_SIGNAL(Fwin,"button-press-event",mouseclick,0); pfontdesc = pango_font_description_from_string(font); // set default font for files window - gtk_widget_override_font(Fwin,pfontdesc); plang = pango_language_get_default(); // get font metrics (what a mess) pcontext = gtk_widget_get_pango_context(Fwin); @@ -2282,7 +2250,7 @@ zdialog_resize(zd,600,0); // start dialog zdialog_run(zd,dialog_event,"save"); // keep relative position - cursor = gdk_cursor_new(GDK_TOP_LEFT_ARROW); // cursor for file list widget + cursor = gdk_cursor_new_for_display(display,GDK_TOP_LEFT_ARROW); // cursor for file list widget gdkwin = gtk_text_view_get_window(GTK_TEXT_VIEW(Fwin),TEXTWIN); // (do after window realized) gdk_window_set_cursor(gdkwin,cursor); cursorpos = 0; @@ -2948,8 +2916,8 @@ cc = utf8len(bookmarkline); // compensate multibyte chars. 15.05 strncat(bookmarkline,blanks,32-cc); strcat(bookmarkline,bookmarks[ii]+32); - wprintx(bmkswidget,0,bookmarkline,"monospace 9"); - wprintx(bmkswidget,0,"\n"); + wprintf(bmkswidget,0,bookmarkline); + wprintf(bmkswidget,0,"\n"); } return; } diff -Nru fotoxx-15.08/f.image.cc fotoxx-15.09/f.image.cc --- fotoxx-15.08/f.image.cc 1970-01-01 00:00:00.000000000 +0000 +++ fotoxx-15.09/f.image.cc 2015-08-31 10:21:01.000000000 +0000 @@ -0,0 +1,1184 @@ +/************************************************************************** + + Fotoxx edit photos and manage collections + + Copyright 2007-2015 Michael Cornelison + Source URL: http://kornelix.com/fotoxx + Contact: kornelix@posteo.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/. + +*************************************************************************** + + Fotoxx image edit - graphic image functions + + vpixel get virtual pixel at any image location (float) + + PXM_audit check PXM image for pixel values > 255.99... + PXM_make create new PXM pixmap image + PXM_free destroy PXM and free memory + PXM_addalpha add an alpha channel to a PXM pixmap + PXM_copy create a copy of a PXM image + PXM_copy_area create a copy of a rectangular area within a PXM + PXM_rescale create a rescaled copy of a PXM image + PXM_rotate create a rotated copy of a PXM image + + PXB_make create a new PXB pixmap image, empty or from PIXBUF + PXB_free destroy PXB and free memory + PXB_addalpha add an alpha channel to a PXB pixmap + PXB_copy create a copy of a PXB image + PXB_rescale create a rescaled copy of a PXB image + PXM_PXB_copy create a PXB copy of a PXM image + PXM_PXB_update update a PXB area fom an updated PXM area + PXB_PXB_update update a PXB area from another PXB area + pixbuf_rescale_fast fast pixbuf rescale using threads + +***************************************************************************/ + +#define EX extern // enable extern declarations +#include "fotoxx.h" // (variables in fotoxx.h are defined) + +/**************************************************************************/ + + +// Get a virtual pixel at location (px,py) (real) in a PXB pixmap. +// Get the overlapping integer pixels and build a composite. +// Output vpix is uint8[4] supplied by caller. +// Returns 1 if OK, 0 if px/py out of limits for pxm. + +int vpixel(PXB *pxb, float px, float py, uint8 *vpix) +{ + int ww, hh, rs, nc, ac, px0, py0; + uint8 *pix0, *pix1, *pix2, *pix3; + float f0, f1, f2, f3; + + ww = pxb->ww; + hh = pxb->hh; + rs = pxb->rs; + nc = pxb->nc; // 15.08 + ac = nc - 3; + + px0 = px; // integer pixel containing (px,py) + py0 = py; + + if (px0 < 0 || py0 < 0) return 0; + if (px0 > ww-2 || py0 > hh-2) return 0; + + 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); + + pix0 = PXBpix(pxb,px0,py0); // pixel (px0,py0) + pix1 = pix0 + rs; // (px0,py0+1) + pix2 = pix0 + nc; // (px0+1,py0) 15.08 + pix3 = pix1 + nc; // (px0+1,py0+1) + + vpix[0] = f0 * pix0[0] + f1 * pix1[0] + f2 * pix2[0] + f3 * pix3[0]; // sum the weighted inputs + vpix[1] = f0 * pix0[1] + f1 * pix1[1] + f2 * pix2[1] + f3 * pix3[1]; + vpix[2] = f0 * pix0[2] + f1 * pix1[2] + f2 * pix2[2] + f3 * pix3[2]; + if (ac) vpix[3] = f0 * pix0[3] + f1 * pix1[3] + f2 * pix2[3] + f3 * pix3[3]; + + return 1; +} + + +// Get a virtual pixel at location (px,py) (real) in a PXM pixmap. +// Get the overlapping float pixels and build a composite. +// Output vpix is float[4] supplied by caller. +// Returns 1 if OK, 0 if px/py out of limits for pxm. + +int vpixel(PXM *pxm, float px, float py, float *vpix) +{ + int ww, hh, nc, ac, px0, py0; + float *pix0, *pix1, *pix2, *pix3; + float f0, f1, f2, f3; + + ww = pxm->ww; + hh = pxm->hh; + nc = pxm->nc; // 15.08 + ac = nc - 3; + + 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; + + 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); + + pix0 = PXMpix(pxm,px0,py0); // pixel (px0,py0) + pix1 = pix0 + ww * nc; // (px0,py0+1) + pix2 = pix0 + nc; // (px0+1,py0) + pix3 = pix1 + nc; // (px0+1,py0+1) + + vpix[0] = f0 * pix0[0] + f1 * pix1[0] + f2 * pix2[0] + f3 * pix3[0]; // sum the weighted inputs + vpix[1] = f0 * pix0[1] + f1 * pix1[1] + f2 * pix2[1] + f3 * pix3[1]; + vpix[2] = f0 * pix0[2] + f1 * pix1[2] + f2 * pix2[2] + f3 * pix3[2]; + + if (ac) // alpha channel + vpix[3] = f0 * pix0[3] + f1 * pix1[3] + f2 * pix2[3] + f3 * pix3[3]; + // remove test of vpix[2] < 1 + return 1; +} + + +/************************************************************************** + PXM pixmap functions - RGB float pixel map + pixel RGB values may range from 0.0 to 255.99 +***************************************************************************/ + +// audit the contents of a PXM pixmap + +void PXM_audit(PXM *pxm) +{ + int px, py; + float bright, *pix; + + for (py = 0; py < pxm->hh; py++) + for (px = 0; px < pxm->ww; px++) + { + pix = PXMpix(pxm,px,py); + bright = pixbright(pix); + if (int(bright) < 0 || int(bright) > 255) + zappcrash("PXM_audit: px/py %d/%d RGB %.2f %.2f %.2f bright %.2f %d \n", + px,py,pix[0],pix[1],pix[2],bright,int(bright)); + } + return; +} + + +// initialize PXM pixmap - allocate memory + +PXM * PXM_make(int ww, int hh, int nc) // 15.08 +{ + uint cc; + + if (ww < 5 || hh < 5) { // impose reasonableness limits + zmessageACK(Mwin,"image too small: %d %d",ww,hh); + return 0; + } + + cc = ww * hh; + if (ww > wwhh_limit || hh > wwhh_limit || cc > 178000000) { // avoid image > 2 GB memory 15.03 + zmessageACK(Mwin,"image too big: %d %d",ww,hh); + exit(12); + } + + PXM *pxm = (PXM *) zmalloc(sizeof(PXM)); + strcpy(pxm->wmi,"pxmpix"); + pxm->ww = ww; + pxm->hh = hh; + pxm->nc = nc; // nc = 3/4 for no/alpha channel 15.08 + + cc = cc * nc * sizeof(float); // float[nc] per pixel + pxm->pixels = (float *) zmalloc(cc); + return pxm; +} + + +// free PXM pixmap + +void PXM_free(PXM *&pxm) +{ + if (! pxm) return; + if (! strmatch(pxm->wmi,"pxmpix")) + zappcrash("PXM_free(), bad PXM"); + strcpy(pxm->wmi,"xxxxxx"); + zfree(pxm->pixels); + zfree(pxm); + pxm = 0; + return; +} + + +// add an alpha channel to a PXM pixmap + +void PXM_addalpha(PXM *pxm) // 15.08 +{ + int ww, hh, nc1, nc2, cc, ii; + float *pixels1, *pixels2, *pix1, *pix2; + + ww = pxm->ww; + hh = pxm->hh; + nc1 = pxm->nc; + if (nc1 > 3) return; + pixels1 = pxm->pixels; + + nc2 = nc1 + 1; + cc = ww * hh * nc2 * sizeof(float); + pixels2 = (float *) zmalloc(cc); + + cc = nc1 * sizeof(float); + pix1 = pixels1; + pix2 = pixels2; + + for (ii = 0; ii < ww * hh; ii++) { + memcpy(pix2,pix1,cc); + pix2[nc1] = 255.0; // 100% opaque = 255 + pix1 += nc1; + pix2 += nc2; + } + + zfree(pixels1); + pxm->nc = nc2; + pxm->pixels = pixels2; + return; +} + + +// create a copy of a PXM pixmap + +PXM * PXM_copy(PXM *pxm1) +{ + int cc, nc; + PXM *pxm2; + + nc = pxm1->nc; + cc = pxm1->ww * pxm1->hh * nc * sizeof(float); + + pxm2 = PXM_make(pxm1->ww,pxm1->hh,nc); // 15.08 + memcpy(pxm2->pixels,pxm1->pixels,cc); + return pxm2; +} + + +// create a copy of a PXM rectangular 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; + int nc, pcc; + + nc = pxm1->nc; // 15.08 + pcc = nc * sizeof(float); + + pxm2 = PXM_make(ww2,hh2,nc); + + 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++) + { + memcpy(pix2,pix1,pcc); + pix1 += nc; + pix2 += nc; + } + } + + return pxm2; +} + + +/************************************************************************** + + 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 *ppix1, *ppix2; + int ww1, hh1, ww2, hh2, nc; + int *px1L, *py1L; + float *pxmap, *pymap; + int maxmapx, 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; + nc = pxm1->nc; // 15.08 + ppix1 = pxm1->pixels; + + pxm2 = PXM_make(ww,hh,nc); // output PXM + if (! pxm2) return 0; + ww2 = ww; + hh2 = hh; + ppix2 = pxm2->pixels; + + memset(ppix2, 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)); // maps overlap of < maxmap input + pxmap = (float *) zmalloc(ww2 * maxmapx * sizeof(float)); // pixels per output pixel + + py1L = (int *) zmalloc(hh2 * sizeof(int)); // maps first (lowest) input pixel + px1L = (int *) zmalloc(ww2 * sizeof(int)); // 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,&Nval[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 chan[6]; + int pcc = nc * sizeof(float); + + 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 + + memset(chan,0,pcc); // 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 = ppix1 + (py1 * ww1 + px1) * nc; + for (ii = 0; ii < nc; ii++) + chan[ii] += pixel1[ii] * ftot; // add input pixel * overlap + } + } + + pixel2 = ppix2 + (py2 * ww2 + px2) * nc; // save output pixel 15.08 + memcpy(pixel2,chan,pcc); + } + } + + 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 *ppix1, *ppix2; + int ww1, hh1, ww2, hh2, nc; + float angle; +} + +PXM * PXM_rotate(PXM *pxm1, float anglex) +{ + using namespace pxmrotate; + + PXM *PXM_rotate2(PXM *pxm, int angle); + void *PXM_rotate_thread(void *); + + int ii; + PXM *pxm2; + + ww1 = pxm1->ww; // input PXM + hh1 = pxm1->hh; + nc = pxm1->nc; // 15.08 + ppix1 = pxm1->pixels; + angle = anglex; + + while (angle < -180) angle += 360; // normalize, -180 to +180 + while (angle > 180) angle -= 360; + + if (angle >= -180.0 && angle < -179.99) // use lossless version for angles + return PXM_rotate2(pxm1,180); // of -180, -90, 0, 90, 180 + if (angle > -90.01 && angle < -89.99) + return PXM_rotate2(pxm1,-90); + if (angle > -0.01 && angle < 0.01) + return PXM_copy(pxm1); + if (angle > 89.99 && angle < 90.01) + return PXM_rotate2(pxm1,90); + if (angle > 179.99 && angle <= 180.0) + return PXM_rotate2(pxm1,180); + + angle = angle * PI / 180; // radians, -PI to +PI + + 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,nc); // output PXM + ppix2 = pxm2->pixels; + + for (ii = 0; ii < NWT; ii++) // start worker threads + start_detached_thread(PXM_rotate_thread,&Nval[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, chan[6]; + float a, b, ww15, hh15, ww25, hh25; + int pcc = nc * sizeof(float); // 15.08 + + ww15 = 0.5 * ww1; + hh15 = 0.5 * hh1; + ww25 = 0.5 * ww2; + hh25 = 0.5 * hh2; + + a = cosf(angle); + b = sinf(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 = -b * (px2 - ww25) + a * (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 + pix2 = ppix2 + (py2 * ww2 + px2) * nc; // output is black + memset(pix2,0,pcc); + continue; + } + + pix0 = ppix1 + (py0 * ww1 + px0) * nc; // 4 input pixels based at (px0,py0) + pix1 = pix0 + ww1 * nc; + pix2 = pix0 + nc; + pix3 = pix1 + nc; + + 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); + + for (int ii = 0; ii < nc; ii++) // sum the weighted inputs + chan[ii] = f0 * pix0[ii] + f1 * pix1[ii] + + f2 * pix2[ii] + f3 * pix3[ii]; + + pix2 = ppix2 + (py2 * ww2 + px2) * nc; // output pixel + memcpy(pix2,chan,pcc); + } + + zadd_locked(busy,-1); + return 0; +} + +PXM * PXM_rotate2(PXM *pxm1, int angle) // angle = -90, 90, 180 +{ + using namespace pxmrotate; + + int px1, py1, px2, py2, nc, pcc; + float *pix1, *pix2; + PXM *pxm2; + + if (angle == 0) return PXM_copy(pxm1); + + ww1 = pxm1->ww; // input PXM + hh1 = pxm1->hh; + nc = pxm1->nc; // 15.08 + pcc = nc * sizeof(float); + + if (angle == -90) { + ww2 = hh1; + hh2 = ww1; + } + + else if (angle == 90) { + ww2 = hh1; + hh2 = ww1; + } + + else if (angle == 180) { + ww2 = ww1; + hh2 = hh1; + } + + else zappcrash("PXM_rotate2() bad angle %d",angle); + + pxm2 = PXM_make(ww2,hh2,nc); // output PXM + ppix2 = pxm2->pixels; + + for (py1 = 0; py1 < hh1; py1++) // loop all input pixels + for (px1 = 0; px1 < ww1; px1++) + { + if (angle == -90) { + px2 = py1; + py2 = hh2 - px1 - 1; + } + + else if (angle == 90) { + px2 = ww2 - py1 - 1; + py2 = px1; + } + + else /* angle = 180 */ { + px2 = ww2 - px1 - 1; + py2 = hh2 - py1 - 1; + } + + pix1 = ppix1 + (py1 * ww1 + px1) * nc; + pix2 = ppix2 + (py2 * ww2 + px2) * nc; + memcpy(pix2,pix1,pcc); + } + + return pxm2; +} + + +/************************************************************************** + PXB pixmap functions - RGB uint8 pixel map and PIXBUF wrapper +***************************************************************************/ + +// Create PXB pixmap with pixels cleared to zero + +PXB * PXB_make(int ww, int hh, int ac) // 15.08 +{ + zthreadcrash(); + + PXB *pxb = (PXB *) zmalloc(sizeof(PXB)); + strcpy(pxb->wmi,"pxbpix"); + pxb->pixbuf = gdk_pixbuf_new(GDKRGB,ac,8,ww,hh); + if (! pxb->pixbuf) { + zmessageACK(Mwin,"memory allocation failure"); + exit(12); + } + pxb->pixels = gdk_pixbuf_get_pixels(pxb->pixbuf); + pxb->ww = ww; + pxb->hh = hh; + pxb->rs = gdk_pixbuf_get_rowstride(pxb->pixbuf); + pxb->nc = 3 + ac; // nc = 3/4 for no/alpha channel 15.08 + int cc = hh * pxb->rs; + memset(pxb->pixels,0,cc); + return pxb; +} + + +// Create a PXB pixmap from a PIXBUF +// The pixbuf is used directly and is not duplicated + +PXB * PXB_make(PIXBUF *pixbuf1) +{ + zthreadcrash(); + + PXB *pxb2 = (PXB *) zmalloc(sizeof(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->nc = 3 + gdk_pixbuf_get_has_alpha(pixbuf1); // 15.08 + pxb2->pixels = gdk_pixbuf_get_pixels(pixbuf1); + return pxb2; +} + + +// Free PXB pixmap - release memory + +void PXB_free(PXB *&pxb) +{ + zthreadcrash(); + + if (! pxb) return; + if (! strmatch(pxb->wmi,"pxbpix")) + zappcrash("PXB_free(), bad PXB"); + strcpy(pxb->wmi,"xxxxxx"); + g_object_unref(pxb->pixbuf); + zfree(pxb); + pxb = 0; + return; +} + + +// add an alpha channel to a PXB pixmap + +void PXB_addalpha(PXB *pxb) +{ + GdkPixbuf *pixbuf1, *pixbuf2; // 15.08 + uint8 *pixels1, *pixels2, *pix1, *pix2; + int nc, ww, hh, rs1, rs2, px, py; + + nc = pxb->nc; + if (nc > 3) return; + + ww = pxb->ww; + hh = pxb->hh; + + pixbuf1 = pxb->pixbuf; // old pixbuf + pixbuf2 = gdk_pixbuf_new(GDKRGB,1,8,ww,hh); // new pixbuf with alpha channel + + pixels1 = gdk_pixbuf_get_pixels(pixbuf1); + pixels2 = gdk_pixbuf_get_pixels(pixbuf2); + rs1 = gdk_pixbuf_get_rowstride(pixbuf1); + rs2 = gdk_pixbuf_get_rowstride(pixbuf2); + + for (py = 0; py < hh; py++) // copy RGB data + { + pix1 = pixels1 + rs1 * py; + pix2 = pixels2 + rs2 * py; + + for (px = 0; px < ww; px++) + { + memcpy(pix2,pix1,3); + pix2[3] = 255; // set opacity = max. for new pixbuf + pix1 += 3; + pix2 += 4; + } + } + + g_object_unref(pixbuf1); + pxb->pixbuf = pixbuf2; + pxb->pixels = pixels2; + pxb->rs = rs2; + pxb->nc = 4; + + return; +} + + +// Copy a PXB pixmap to a new PXB pixmap + +PXB * PXB_copy(PXB *pxb1) +{ + zthreadcrash(); + + PXB *pxb2 = (PXB *) zmalloc(sizeof(PXB)); + strcpy(pxb2->wmi,"pxbpix"); + pxb2->pixbuf = gdk_pixbuf_copy(pxb1->pixbuf); + if (! pxb2->pixbuf) { + zmessageACK(Mwin,"memory allocation failure"); + exit(12); + } + pxb2->ww = pxb1->ww; + pxb2->hh = pxb1->hh; + pxb2->rs = pxb1->rs; + pxb2->nc = pxb1->nc; // 15.08 + 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) +{ + PIXBUF *pixbuf = 0; + + zthreadcrash(); + pixbuf = gdk_pixbuf_scale_simple(pxb1->pixbuf,ww2,hh2,GDK_INTERP_BILINEAR); + if (! pixbuf) zappcrash("memory allocation failure"); + PXB *pxb2 = PXB_make(pixbuf); + return pxb2; +} + + +// Rotate PXB pixmap by given angle. + +PXB * PXB_rotate(PXB *pxb1, float angle) // 15.04 +{ + PIXBUF *pixbuf = 0; + + zthreadcrash(); + pixbuf = gdk_pixbuf_rotate(pxb1->pixbuf,angle); + if (! pixbuf) zappcrash("memory allocation failure"); + PXB *pxb2 = PXB_make(pixbuf); + 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, nc, ac, px, py; + + ww = pxm1->ww; + hh = pxm1->hh; + nc = pxm1->nc; + ac = nc - 3; + + pxb2 = PXB_make(ww,hh,ac); + + 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]; + if (ac) pix2[3] = pix1[3]; // 15.08 + pix1 += nc; + pix2 += nc; + } + } + + return pxb2; +} + + +// Update a PXB section from an updated PXM section. +// 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; + int nc1, nc2, ac; + + 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; + + nc1 = pxm1->nc; + nc2 = pxb2->nc; + + if (nc1 > 3 && nc2 > 3) ac = 1; // alpha channel 15.08 + else ac = 0; + + 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]; + if (ac) pix2[3] = pix1[3]; + pix1 += nc1; + pix2 += nc2; // 15.08 + } + } + + return; +} + + +// Update an output PXB section from a corresponding input PXB section. +// The two PXBs represent the same image at different scales (width/height). +// pxb1 must be >= pxb2. +// px3, py3, ww3, hh3: modified section within pxb1 to propagate to pxb2; + +void PXB_PXB_update(PXB *pxb1, PXB *pxb2, int px3, int py3, int ww3, int hh3) +{ + static int pww1 = 0, phh1 = 0, pww2 = 0, phh2 = 0; + static int *px1L = 0, *py1L = 0; + static float scalex = 1, scaley = 1; + static float *pxmap = 0, *pymap = 0; + static int maxmapx = 0, maxmapy = 0; + + uint8 *ppix1, *ppix2; + int ww1, hh1, ww2, hh2, rs1, rs2, nc1, nc2, ac; + 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, alpha; + int lox, hix, loy, hiy; + + ww1 = pxb1->ww; + hh1 = pxb1->hh; + rs1 = pxb1->rs; + nc1 = pxb1->nc; // 15.08 + ppix1 = pxb1->pixels; + + ww2 = pxb2->ww; + hh2 = pxb2->hh; + rs2 = pxb2->rs; + nc2 = pxb2->nc; // 15.08 + ppix2 = pxb2->pixels; + + if (nc1 > 3 && nc2 > 3) ac = 1; // alpha channel 15.08 + else ac = 0; + + 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)); // maps overlap of < maxmap input + pxmap = (float *) zmalloc(ww2 * maxmapx * sizeof(float)); // pixels per output pixel + + py1L = (int *) zmalloc(hh2 * sizeof(int)); // maps first (lowest) input pixel + px1L = (int *) zmalloc(ww2 * sizeof(int)); // 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 = alpha = 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 = ppix1 + py1 * rs1 + px1 * nc1; + red += pixel1[0] * ftot; // add input pixel * overlap + green += pixel1[1] * ftot; + blue += pixel1[2] * ftot; + if (ac) alpha += pixel1[3] * ftot; + } + } + + pixel2 = ppix2 + py2 * rs2 + px2 * nc2; // save output pixel 15.08 + pixel2[0] = red; // 0.0 - 255.996 >> 0 - 255 + pixel2[1] = green; + pixel2[2] = blue; + if (ac) pixel2[3] = alpha; + } + } + + return; +} + + +/**************************************************************************/ + +// fast fixbuf rescale, bilinear interpolation, threaded +// works best when the rescale ratio is between 0.5 and 2.0 +// about 4x faster than gdk_pixbuf_scale_simple() if 4 processor cores avail. +// alpha channel is not copied - used only in slide show for now + +namespace pixbuf_rescale_fast_names { + int ww1, hh1, ww2, hh2, rs1, rs2, nc1, nc2; + uint8 *pixels1, *pixels2; + int busy[max_threads]; +} + +PIXBUF * pixbuf_rescale_fast(PIXBUF *pixbuf1, int ww, int hh) // 15.02 +{ + using namespace pixbuf_rescale_fast_names; + + void * pixbuf_rescale_fast_thread(void *arg); + + PIXBUF *pixbuf2; + uint8 *pix2; + + pixbuf2 = gdk_pixbuf_new(GDKRGB,0,8,ww,hh); + + ww1 = gdk_pixbuf_get_width(pixbuf1); + hh1 = gdk_pixbuf_get_height(pixbuf1); + rs1 = gdk_pixbuf_get_rowstride(pixbuf1); + nc1 = gdk_pixbuf_get_n_channels(pixbuf1); // 15.08 + pixels1 = gdk_pixbuf_get_pixels(pixbuf1); + + ww2 = ww; + hh2 = hh; + rs2 = gdk_pixbuf_get_rowstride(pixbuf2); + nc2 = gdk_pixbuf_get_n_channels(pixbuf2); // 15.08 + pixels2 = gdk_pixbuf_get_pixels(pixbuf2); + + for (int ii = 0; ii < NWT; ii++) { // start working threads + busy[ii] = 1; + start_detached_thread(pixbuf_rescale_fast_thread,&Nval[ii]); + } + + for (int ii = 0; ii < NWT; ii++) // wait for all done + while (busy[ii]) zsleep(0.001); + + for (int py2 = 0; py2 < hh2; py2++) { // set last column of pixels black + pix2 = pixels2 + py2 * rs2 + (ww2-1) * 3; + memset(pix2,0,3); + } + + pix2 = pixels2 + (hh2-1) * rs2; // set last row of pixels black + memset(pix2,0,rs2); + + return pixbuf2; +} + +void * pixbuf_rescale_fast_thread(void *arg) +{ + using namespace pixbuf_rescale_fast_names; + + int index = *((int *) arg); + uint8 *pix1, *pix2; + int px1, py1, px2, py2; + float fww, fhh, fx1, fy1; + float dx1, dy1, dx2, dy2; + + fww = 1.0 * ww1 / ww2; + fhh = 1.0 * hh1 / hh2; + + for (py2 = index; py2 < hh2-1; py2 += NWT) // loop output pixel rows + for (px2 = 0; px2 < ww2-1; px2++) // loop output pixel cols + { + fx1 = px2 * fww; // real position in input image + fy1 = py2 * fhh; + px1 = int(fx1); // corresp. input pixel + py1 = int(fy1); + dx1 = fx1 - px1; // distance from pixel left + dx2 = 1.0 - dx1; // distance from pixel right + dy1 = fy1 - py1; // distance from pixel top + dy2 = 1.0 - dy1; // distance from pixel bottom + + pix1 = pixels1 + py1 * rs1 + px1 * nc1; // input pixel group (4) + pix2 = pixels2 + py2 * rs2 + px2 * nc2; // output pixel + + pix2[0] = (dx2 * pix1[0] + dx1 * pix1[3] + dy2 * pix1[0] + dy1 * pix1[rs1+0]) / 2; + pix2[1] = (dx2 * pix1[1] + dx1 * pix1[4] + dy2 * pix1[1] + dy1 * pix1[rs1+1]) / 2; + pix2[2] = (dx2 * pix1[2] + dx1 * pix1[5] + dy2 * pix1[2] + dy1 * pix1[rs1+2]) / 2; + } + + busy[index] = 0; + return 0; +} + + + diff -Nru fotoxx-15.08/f.mashup.cc fotoxx-15.09/f.mashup.cc --- fotoxx-15.08/f.mashup.cc 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/f.mashup.cc 2015-08-31 10:21:01.000000000 +0000 @@ -491,17 +491,17 @@ if (curr_dirk) { // 15.04 file2 = zstrdup(curr_dirk,108); cc = strlen(file2); - strncatv(file2,cc+108,"/",projectname,".jpg",null); // curr_dirk/projectname.jpg + strncatv(file2,cc+108,"/",projectname,".png",null); // curr_dirk/projectname.png } else { - file2 = zstrdup(projectname,6); // projectname.jpg - strcat(file2,".jpg"); + file2 = zstrdup(projectname,6); // projectname.png + strcat(file2,".png"); } file = zgetfile(ZTX("save Mashup output file"),MWIN,"save",file2); zfree(file2); if (file) { - ii = gdk_pixbuf_save(Fpxb->pixbuf,file,"jpeg",&gerror,"quality","90",null); + ii = gdk_pixbuf_save(Fpxb->pixbuf,file,"png",&gerror,"compression","1",null); if (! ii) { zmessageACK(Mwin,gerror->message); zfree(file); @@ -599,7 +599,7 @@ if (! fid) goto failure; pp = fgets_trim(buff,XFCC,fid); // read layout record - if (! pp) { printf("no layout \n"); goto badproject; } + if (! pp) { printz("no layout \n"); goto badproject; } if (strmatchN(pp,"layout:",7)) // layout: /.../filename.jpg { @@ -610,12 +610,12 @@ err = stat(layoutfile,&sbuff); if (err) { zmessageACK(Mwin,ZTX("layout image file missing: \n %s"),layoutfile); - printf("no layout image \n"); + printz("no layout image \n"); goto badproject; } Lpxb = PXB_load(layoutfile,1); // layout image - if (! Lpxb) { printf("PXB_load() layout file \n"); goto badproject; } + if (! Lpxb) { printz("PXB_load() layout file \n"); goto badproject; } Lww = Lpxb->ww; // layout size Lhh = Lpxb->hh; @@ -625,12 +625,12 @@ { nn = sscanf(buff,"flatlayout: %d %d RGB: %d/%d/%d \n", &ww1,&hh1,&flatRGB[0],&flatRGB[1],&flatRGB[2]); - if (nn != 5) { printf("flatlayout rec. \n"); goto badproject; } + if (nn != 5) { printz("flatlayout rec. \n"); goto badproject; } *layoutfile = 0; // flat layout, no layout file Lpxb = PXB_make(ww1,hh1,0); // layout image - if (! Lpxb) { printf("PXB_make() \n"); goto badproject; } + if (! Lpxb) { printz("PXB_make() \n"); goto badproject; } Lww = Lpxb->ww; // layout size Lhh = Lpxb->hh; @@ -644,7 +644,7 @@ } } - else { printf("unknown rec. \n"); goto badproject; } + else { printz("unknown rec. \n"); goto badproject; } // read any number of overlay image records @@ -685,19 +685,19 @@ if (strmatchN(pp,"position:",9)) { // position: xxx yyy nn = sscanf(pp,"position: %d %d",&image[ii].px0,&image[ii].py0); - if (nn != 2) { printf("position rec. \n"); goto badproject; } + if (nn != 2) { printz("position rec. \n"); goto badproject; } continue; } if (strmatchN(pp,"scale:",6)) { // scale: n.nnn nn = sscanf(pp,"scale: %f",&image[ii].scale); - if (nn != 1) { printf("scale rec. \n"); goto badproject; } + if (nn != 1) { printz("scale rec. \n"); goto badproject; } continue; } if (strmatchN(pp,"theta:",6)) { // theta: n.nnn nn = sscanf(pp,"theta: %f",&image[ii].theta); - if (nn != 1) { printf("theta rec. \n"); goto badproject; } + if (nn != 1) { printz("theta rec. \n"); goto badproject; } image[ii].sinT = sin(image[ii].theta); image[ii].cosT = cos(image[ii].theta); continue; @@ -705,69 +705,69 @@ if (strmatchN(pp,"Btransp:",8)) { // Btransp: 0.nnn nn = sscanf(pp,"Btransp: %f",&image[ii].Btransp); - if (nn != 1) { printf("Btransp rec. \n"); goto badproject; } + if (nn != 1) { printz("Btransp rec. \n"); goto badproject; } continue; } if (strmatchN(pp,"Lmarg:",6)) { // Lmarg: nnn 15.03 nn = sscanf(pp,"Lmarg: %d",&image[ii].Lmarg); - if (nn != 1) { printf("Lmarg rec. \n"); goto badproject; } + if (nn != 1) { printz("Lmarg rec. \n"); goto badproject; } continue; } if (strmatchN(pp,"Rmarg:",6)) { // Rmarg: nnn nn = sscanf(pp,"Rmarg: %d",&image[ii].Rmarg); - if (nn != 1) { printf("Rmarg rec. \n"); goto badproject; } + if (nn != 1) { printz("Rmarg rec. \n"); goto badproject; } continue; } if (strmatchN(pp,"Tmarg:",6)) { // Tmarg: nnn nn = sscanf(pp,"Tmarg: %d",&image[ii].Tmarg); - if (nn != 1) { printf("Tmarg rec. \n"); goto badproject; } + if (nn != 1) { printz("Tmarg rec. \n"); goto badproject; } continue; } if (strmatchN(pp,"Bmarg:",6)) { // Bmarg: nnn nn = sscanf(pp,"Bmarg: %d",&image[ii].Bmarg); - if (nn != 1) { printf("Bmarg rec. \n"); goto badproject; } + if (nn != 1) { printz("Bmarg rec. \n"); goto badproject; } continue; } if (strmatchN(pp,"Lblend:",7)) { // Lblend: nnn 15.02 nn = sscanf(pp,"Lblend: %d",&image[ii].Lblend); - if (nn != 1) { printf("Lblend rec. \n"); goto badproject; } + if (nn != 1) { printz("Lblend rec. \n"); goto badproject; } continue; } if (strmatchN(pp,"Rblend:",7)) { // Rblend: nnn nn = sscanf(pp,"Rblend: %d",&image[ii].Rblend); - if (nn != 1) { printf("Rblend rec. \n"); goto badproject; } + if (nn != 1) { printz("Rblend rec. \n"); goto badproject; } continue; } if (strmatchN(pp,"Tblend:",7)) { // Tblend: nnn nn = sscanf(pp,"Tblend: %d",&image[ii].Tblend); - if (nn != 1) { printf("Tblend rec. \n"); goto badproject; } + if (nn != 1) { printz("Tblend rec. \n"); goto badproject; } continue; } if (strmatchN(pp,"Bblend:",7)) { // Bblend: nnn nn = sscanf(pp,"Bblend: %d",&image[ii].Bblend); - if (nn != 1) { printf("Bblend rec. \n"); goto badproject; } + if (nn != 1) { printz("Bblend rec. \n"); goto badproject; } continue; } if (strmatchN(pp,"Nwarp:",6)) { // Nwarp: nn nn = sscanf(pp,"Nwarp: %d",&image[ii].Nwarp); - if (nn != 1) { printf("Nwarp rec. \n"); goto badproject; } - if (image[ii].Nwarp > 200) { printf("Nwarp rec. \n"); goto badproject; } + if (nn != 1) { printz("Nwarp rec. \n"); goto badproject; } + if (image[ii].Nwarp > 200) { printz("Nwarp rec. \n"); goto badproject; } for (kk = 0; kk < image[ii].Nwarp; kk++) { pp = fgets_trim(buff,XFCC,fid); // n.nnn n.nnn n.nnn n.nnn n.nnn if (! pp) break; // (loop for Nwarp records) nn = sscanf(pp,"%f %f %f %f %f",&image[ii].warpmem[kk][0], &image[ii].warpmem[kk][1],&image[ii].warpmem[kk][2], &image[ii].warpmem[kk][3],&image[ii].warpmem[kk][4]); - if (nn != 5) { printf("warpmem rec. \n"); goto badproject; } + if (nn != 5) { printz("warpmem rec. \n"); goto badproject; } } } @@ -776,16 +776,16 @@ if (strmatchN(pp,"vtrancc:",8)) { // vtrancc: nnnn nn = sscanf(pp,"vtrancc: %d",&vcc); - if (nn != 1) { printf("vtrancc rec. \n"); goto badproject; } - if (vcc && vcc != ww1 * hh1) { printf("vtrancc rec. \n"); goto badproject; } + if (nn != 1) { printz("vtrancc rec. \n"); goto badproject; } + if (vcc && vcc != ww1 * hh1) { printz("vtrancc rec. \n"); goto badproject; } image[ii].vtrancc = vcc; continue; } if (strmatchN(pp,"warpcc:",7)) { // warpcc: nnnn nn = sscanf(pp,"warpcc: %d",&wcc); - if (nn != 1) { printf("warpcc rec. \n"); goto badproject; } - if (wcc && wcc != (int) (ww1 * hh1 * sizeof(float))) { printf("warpcc rec. \n"); goto badproject; } + if (nn != 1) { printz("warpcc rec. \n"); goto badproject; } + if (wcc && wcc != (int) (ww1 * hh1 * sizeof(float))) { printz("warpcc rec. \n"); goto badproject; } image[ii].warpcc = wcc; continue; } @@ -813,7 +813,7 @@ if (strmatchN(pp,"position:",9)) { // position: xx yy nn = sscanf(pp,"position: %d %d",&text[ii].px0,&text[ii].py0); - if (nn != 2) { printf("position rec. \n"); goto badproject; } + if (nn != 2) { printz("position rec. \n"); goto badproject; } continue; } @@ -821,12 +821,12 @@ pp += 5; while (*pp == ' ') pp++; pp2 = strstr(pp,"size:"); - if (! pp2) { printf("font rec. \n"); goto badproject; } + if (! pp2) { printz("font rec. \n"); goto badproject; } *pp2 = 0; pp2 += 5; strncpy0(txattr->font,pp,80); txattr->size = atoi(pp2); - if (txattr->size < 8) { printf("font rec. \n"); goto badproject; } + if (txattr->size < 8) { printz("font rec. \n"); goto badproject; } continue; } @@ -836,7 +836,7 @@ &txattr->angle, txattr->color[0], txattr->color[1], txattr->color[2], txattr->color[3], &txattr->transp[0], &txattr->transp[1], &txattr->transp[2], &txattr->transp[3], &txattr->towidth, &txattr->shwidth, &txattr->shangle); - if (nn != 12) { printf("attributes rec. \n"); goto badproject; } + if (nn != 12) { printz("attributes rec. \n"); goto badproject; } } } @@ -857,7 +857,7 @@ if (strmatchN(pp,"position:",9)) { // position: xx yy nn = sscanf(pp,"position: %d %d",&line[ii].px0,&line[ii].py0); - if (nn != 2) { printf("position rec. \n"); goto badproject; } + if (nn != 2) { printz("position rec. \n"); goto badproject; } continue; } @@ -868,7 +868,7 @@ lnattr->color[0], lnattr->color[1], lnattr->color[2], lnattr->color[3], &lnattr->transp[0], &lnattr->transp[1], &lnattr->transp[2], &lnattr->transp[3], &lnattr->towidth, &lnattr->shwidth, &lnattr->shangle); - if (nn != 16) { printf("attributes rec. \n"); goto badproject; } + if (nn != 16) { printz("attributes rec. \n"); goto badproject; } } } @@ -891,7 +891,7 @@ if (vcc) { image[ii].vtranmap = (uint8 *) zmalloc(vcc); cc = read(nfid,image[ii].vtranmap,vcc); - if (cc != vcc) { printf("vtranmap data \n"); goto badproject; } + if (cc != vcc) { printz("vtranmap data \n"); goto badproject; } } else image[ii].vtranmap = 0; } @@ -916,10 +916,10 @@ if (wcc) { image[ii].warpx = (float *) zmalloc(wcc); cc = read(nfid,image[ii].warpx,wcc); - if (cc != wcc) { printf("warpx data \n"); goto badproject; } + if (cc != wcc) { printz("warpx data \n"); goto badproject; } image[ii].warpy = (float *) zmalloc(wcc); cc = read(nfid,image[ii].warpy,wcc); - if (cc != wcc) { printf("warpy data \n"); goto badproject; } + if (cc != wcc) { printz("warpy data \n"); goto badproject; } } else image[ii].warpx = image[ii].warpy = 0; } diff -Nru fotoxx-15.08/f.meta.cc fotoxx-15.09/f.meta.cc --- fotoxx-15.08/f.meta.cc 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/f.meta.cc 2015-08-31 10:21:01.000000000 +0000 @@ -186,7 +186,6 @@ widget = zdialog_widget(zdexifview,"exifdata"); gtk_text_view_set_editable(GTK_TEXT_VIEW(widget),0); // disable widget editing - gtk_widget_override_font(widget,zfuncs::monofont); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(widget),GTK_WRAP_NONE); // disable text wrap wclear(widget); @@ -419,6 +418,8 @@ { zd = zdialog_new(ZTX("Edit Metadata"),Mwin,Bmanagetags,Bapply,Bcancel,null); zdeditmeta = zd; + + zdialog_add_ttip(zd,Bapply,ZTX("save metadata to file")); // File: xxxxxxxxx.jpg zdialog_add_widget(zd,"hbox","hbf","dialog",0,"space=3"); @@ -1643,11 +1644,11 @@ } strcat(catgname,": "); - wprintx(widget,0,catgname,"monospace bold 9"); // "category: " in bold text + wprintx(widget,0,catgname,1); // "category: " in bold text pp2++; if (*pp2 == ' ') pp2++; - if (*pp2) wprintx(widget,0,pp2,"monospace 9"); // "cat1, cat2, ... catN," + if (*pp2) wprintx(widget,0,pp2); // "cat1, cat2, ... catN," wprintx(widget,0,"\n"); } @@ -3744,6 +3745,7 @@ { zdeditgeotags = zdialog_new(title,Mwin,Bfind,Bweb,Bprev,Bmap,Bapply,Bclear,Bcancel,null); zd = zdeditgeotags; + zdialog_add_ttip(zd,Bapply,ZTX("save metadata to file")); 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"); @@ -4552,7 +4554,7 @@ if (ggroups_groupby == 1) // group by country { snprintf(buff,300,"%-30s %5s ","Country","Count"); - write_popup_text("write",buff); + write_popup_text("writebold",buff); for (iig = 0; iig < Ngrec; iig++) { @@ -4566,7 +4568,7 @@ if (ggroups_groupby == 2) // group by country/city { snprintf(buff,300,"%-30s %-30s %5s ","Country","City","Count"); - write_popup_text("write",buff); + write_popup_text("writebold",buff); for (iig = 0; iig < Ngrec; iig++) { @@ -4583,7 +4585,7 @@ if (ggroups_groupby == 3) // group by country/city/date (range) { snprintf(buff,300,"%-30s %-30s %-10s %5s ","Country","City","Date","Count"); - write_popup_text("write",buff); + write_popup_text("writebold",buff); for (iig = 0; iig < Ngrec; iig++) { @@ -5298,7 +5300,7 @@ if (strcmp(searchDateFrom,nowdatetime) >= 0) ff = 1; // search from date >= NOW if (strcmp(searchDateFrom,searchDateTo) >= 0) ff = 1; // search from date >= search to date if (ff) { - zmessageACK(Mwin,ZTX("search dates not reasonable \n %s %s"), + zmessageACK(Mwin,ZTX("search dates not reasonable \n %s %s"), searchDateFrom,searchDateTo); zd->zstat = 0; return 1; diff -Nru fotoxx-15.08/fotoxx-15.08.cc fotoxx-15.09/fotoxx-15.08.cc --- fotoxx-15.08/fotoxx-15.08.cc 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/fotoxx-15.08.cc 1970-01-01 00:00:00.000000000 +0000 @@ -1,5551 +0,0 @@ -/************************************************************************** - - Fotoxx edit photos and manage collections - - Copyright 2007-2015 Michael Cornelison - Source URL: http://kornelix.com/fotoxx - Contact: kornelix@posteo.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/. - -*************************************************************************** - - main main program, set up defaults - initzfunc initializations, carry out command line options - - delete_event response function for main window delete event - destroy_event response function for main window destroy event - state_event response function for main window fullscreen state change - - gtimefunc periodic function - update_Fpanel update status parameters on F window top panel - paint_busy show busy indicator on window when something is running - - Fpaint main / drawing window refresh (draw signal response function) - Fpaint2 trigger Fpaint, callable from threads - Fpaintnow create cairo context and call Fpaint - Fpaint3 update drawing window section from updated E3 section - Fpaint4 update drawing window visible portion - - mouse_event mouse event response function - mouse_convert convert mouse/window space to image space - m_zoom main window zoom in/out function - KBstate send KB key from dialog to main window - KBpress KB key press event function - KBrelease KB key release event function - win_fullscreen set main window full screen status - win_unfullscreen restore main window to former size - set_mwin_title update the main window title bar - - draw_pixel draw one overlay pixel using image space - erase_pixel erase one pixel - draw_line draw overlay line in image space - erase_line erase line - draw_toplines draw or redraw a set of overlay lines - draw_gridlines draw grid lines over image - add_toptext add to set of overlay text strings - draw_toptext draw set of overlay text strings - erase_toptext remove text from set of overlay text strings - draw_text draw text on window in image space - add_topcircle add a circle to set of overlay circles - draw_topcircles draw the set of overlay circles in window space - erase_topcircles erase the set of overlay circles - draw_mousecircle draw a circle around pointer in image space - draw_mousecircle2 2nd instance for paint/clone tracking circle - draw_mousearc draw an ellipse around pointer in image space - - splcurve_init set up a spline curve drawing area - splcurve_adjust mouse event function to manipulate curve nodes - splcurve_draw draw curve through nodes - splcurve_generate generate x/y table of values from curve - splcurve_yval get curve y-value for given x-value - splcurve_load load curve data from a saved file - splcurve_save save curve data to a file - - edit_setup() start an image edit function - edit_cancel() cancle image edit - edit_done() finish image edit - edit_fullsize() convert preview to full size edit - edit_undo() undo current edit (reset) - edit_redo() redo current edit - edit_reset() reset all edit changes - edit_load_widgets load zdialog widgets and curves from a file - edit_save_widgets save zdialog widgets and curves to a file - - m_undo undo one edit in a series - m_redo redo one edit in a series - undo_all undo all edits for image - redo_all redo all edits for image - save_undo save image in the undo stack - load_undo load image from the undo stack - checkpend() check status: edit mods busy block any quiet - takeMouse set mouse event function and special cursor - freeMouse remove mouse event function, set normal cursor - - start_thread start thread running - signal_thread signal thread that work is pending - wait_thread_idle wait for pending work complete - wrapup_thread wait for thread exit or command thread exit - thread_idle_loop wait for pending work, exit if commanded - thread_exit exit thread unconditionally - start_wthread start a working thread per SMP processor - exit_wthread exit a working thread - wait_wthreads wait for all working threads to exit - - save_params save parameters when fotoxx exits - load_params load parameters at fotoxx startup - free_resources free resources for the current image file - vpixel get virtual pixel at any image location (float) - sigdiff compare 2 floats with margin of significance - - PXM_audit check PXM image for pixel values > 255.99... - PXM_make create new PXM pixmap image - PXM_free destroy PXM and free memory - PXM_addalpha add an alpha channel to a PXM pixmap - PXM_copy create a copy of a PXM image - PXM_copy_area create a copy of a rectangular area within a PXM - PXM_fixblue replace blue = 0 pixels with blue = 1 - PXM_rescale create a rescaled copy of a PXM image - PXM_rotate create a rotated copy of a PXM image - - PXB_make create a new PXB pixmap image, empty or from PIXBUF - PXB_free destroy PXB and free memory - PXB_addalpha add an alpha channel to a PXB pixmap - PXB_copy create a copy of a PXB image - PXB_rescale create a rescaled copy of a PXB image - PXM_PXB_copy create a PXB copy of a PXM image - PXM_PXB_update update a PXB area fom an updated PXM area - PXB_PXB_update update a PXB area from another PXB area - pixbuf_rescale_fast fast pixbuf rescale using threads - - m_help help menu function - -***************************************************************************/ - -#define EX // disable extern declarations -#include "fotoxx.h" // (variables in fotoxx.h are defined) - -/**************************************************************************/ - -// fotoxx main program - -int main(int argc, char *argv[]) -{ - char lang[8] = ""; - int Fclone=0, cloxx=0, cloyy=0, cloww=0, clohh=0; - int err; - STATB statb; - - if (argc > 1 && strmatchV(argv[1],"-ver","-v",0)) { - printz(Frelease "\n"); // print version and exit - return 0; - } - - gtk_init(&argc,&argv); // initz. GTK & strip GTK params - zinitapp("fotoxx"); // initz. app directories - err = chdir(get_zuserdir()); // set to /home//.fotoxx - - // 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 will override) - Prelease = zstrdup("unknown"); // prev. fotoxx release (params override) - mwgeom[0] = mwgeom[1] = 100; // default main window geometry - mwgeom[2] = 1200; mwgeom[3] = 800; - *paneltext = 0; // no status bar text - panelfont = pango_font_description_from_string("Sans Bold 9"); // top panel font - trimsize[0] = 1600; // default initial image trim size - trimsize[1] = 1000; - trimbuttons[0] = zstrdup("5:4"); trimratios[0] = zstrdup("5:4"); // default trim ratio buttons - trimbuttons[1] = zstrdup("4:3"); trimratios[1] = zstrdup("4:3"); - trimbuttons[2] = zstrdup("8:5"); trimratios[2] = zstrdup("8:5"); - trimbuttons[3] = zstrdup("16:9"); trimratios[3] = zstrdup("16:9"); - trimbuttons[4] = zstrdup("2:1"); trimratios[4] = zstrdup("2:1"); - trimbuttons[5] = zstrdup("gold"); trimratios[5] = zstrdup("1.62:1"); - editresize[0] = 1600; // default initial resize size - editresize[1] = 1200; - currgrid = 0; // default initial grid settings - 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 = zstrdup("both"); // default menu style (icons + text) - iconsize = 36; // default icon size - startdisplay = zstrdup("prevI"); // start with previous image - Fdragopt = 1; // image drag with mouse 15.02 - zoomcount = 2; // zooms to reach 2x image size - zoomratio = sqrtf(2); // corresp. zoom ratio - thumbdirk = 0; // no thumbnail directory - thumbfilesize = 256; // thumbnail files, default pixels 15.02 - jpeg_def_quality = 90; // default .jpeg save quality - jpeg_1x_quality = 90; // default for 1-time jpeg quality - lens_mm = 35; // pano lens parameter - DCrawcommand = zstrdup("dcraw -T -6 -w -q 0 -o 1"); // default RAW to tiff command using DCraw - RAWfiletypes = zstrdup(".arw .crw .cr2 .dng .erf .iiq .mef .mos " // some of the known RAW file types - ".mpo .nef .nrw .orf .pef .ptx .raw " // (case is not significant here) - ".rw2 .rwl .srf .srw .sr2 "); - imagefiletypes = zstrdup(".jpg .jpeg .png .tif .tiff .bmp .ico " // supported image file types - ".gif .svg .xpm .tga "); - - 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; - BLUE[2] = 255; BLUE[0] = BLUE[1] = 0; - LINE_COLOR = RED; // initial foreground drawing color - - GDKbackground.red = GDKbackground.green = GDKbackground.blue = 0.2; // color for window backgrounds - GDKbackground.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 - blankcursor = gdk_cursor_new(GDK_BLANK_CURSOR); // invisible cursor - - for (int ii = 0; ii < 100; ii++) Nval[ii] = ii; // static integer values 0-99 - - // get files in user directory /home//.fotoxx/* - - snprintf(index_dirk,199,"%s/image_index",get_zuserdir()); // image 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 (index func) - snprintf(saved_areas_dirk,199,"%s/saved_areas",get_zuserdir()); // saved areas directory - snprintf(albums_dirk,199,"%s/albums",get_zuserdir()); // albums directory - 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(favorites_dirk,199,"%s/favorites",get_zuserdir()); // favorites directory - snprintf(mashup_dirk,199,"%s/mashup",get_zuserdir()); // mashup projects directory - locale_filespec("data","quickstart.html",quickstart_file); // quickstart html file - snprintf(slideshow_dirk,199,"%s/slideshows",get_zuserdir()); // slide show directory - snprintf(pattern_dirk,199,"%s/patterns",get_zuserdir()); // pattern files directory - snprintf(retouch_combo_dirk,199,"%s/retouch_combo",get_zuserdir()); // retouch combo settings directory - snprintf(custom_kernel_dirk,199,"%s/custom_kernel",get_zuserdir()); // custom kernel files directory - snprintf(maps_dirk,199,"/usr/share/fotoxx-maps/data"); // map files in fotoxx-maps package - snprintf(searchresults_file,199,"%s/search_results",get_zuserdir()); // output of image search function - - err = stat(index_dirk,&statb); // create any missing directories - if (err) mkdir(index_dirk,0750); - err = stat(saved_areas_dirk,&statb); - if (err) mkdir(saved_areas_dirk,0750); - err = stat(albums_dirk,&statb); - if (err) mkdir(albums_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(mashup_dirk,&statb); - if (err) mkdir(mashup_dirk,0750); - err = stat(slideshow_dirk,&statb); - if (err) mkdir(slideshow_dirk,0750); - - load_params(); // restore parameters from last session - - for (int ii = 1; ii < argc; ii++) // command line parameters - { - char *pp = argv[ii]; - - if (strmatchV(pp,"-debug","-d",0)) // -d -debug - Fdebug = 1; - else if (strmatchV(pp,"-lang","-l",0) && argc > ii+1) // -l -lang lc_RC language/region code - strncpy0(lang,argv[++ii],7); - else if (strmatchV(pp,"-clone","-c",0) && 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 (strmatchV(pp,"-recent","-r",0)) // -r -recent recent files gallery - Frecent = 1; - else if (strmatchV(pp,"-new","-n",0)) // -n -new new added files gallery - Fnew = 1; - else if (strmatchV(pp,"-prev","-p",0)) // -p -prev open previous file - Fprev = 1; - else if (strmatchV(pp,"-blank","-b",0)) // -b -blank start with blank window - Fblank = 1; - else if (strmatchV(pp,"-menu","-m",0) && argc > ii+1) // -m -menu func starting menu func - startmenu = zstrdup(argv[++ii]); - else if (strmatch(pp,"-noindex")) // -noindex no index update 15.02 - Fnoindex = 1; - else if (strmatch(pp,"-cycledesktop") && argc > ii+2) { // -cycledesktop album seconds 15.06 - run_cycledesktop(argv[ii+1],argv[ii+2]); // run in background without GUI - gtk_main(); - return 0; - } - else initial_file = zstrdup(pp); // must be initial file or directory - } - - ZTXinit(lang); // setup locale and translations - setlocale(LC_NUMERIC,"en_US.UTF-8"); // stop comma decimal points - - build_widgets(); // build window widgets and menus - - m_viewmode(0,"F"); // set F mode initially - zmainloop(); // GTK bug workaround - - if (Fclone) { // clone: open new window - gtk_window_move(MWIN,cloxx+10,cloyy+10); // slightly offset from old window - gtk_window_resize(MWIN,cloww,clohh); - } - 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 - } - - g_timeout_add(100,initzfunc,0); // initz. call from gtk_main() - gtk_main(); // start processing window events - return 0; -} - - -/**************************************************************************/ - -// Initial function called from gtk_main() at startup. -// This function MUST return 0. - -int initzfunc(void *) -{ - int Fexiftool = 0, Fxdgopen = 0; - int ii, err, npid, contx; - int ftype, Fdirk = 0; - char *pp, *pp2; - char procfile[20], buff[200]; - char KBshortsU[200], KBshortsI[200]; - char tonefile[200], badnews[200]; - double freememory, cachememory; - float exifver = 0; - FILE *fid; - STATB statb; - - err = chdir(get_zuserdir()); // working directory .../.fotoxx - - printz(Frelease "\n"); // print Fotoxx release version - - int v1 = gtk_get_major_version(); // get GTK release version - int v2 = gtk_get_minor_version(); - int v3 = gtk_get_micro_version(); - printz("GTK version: %d.%02d.%02d \n",v1,v2,v3); - - // find and save the main window and pointer device - - get_hardware_info(Mwin); - if (! zfuncs::screen || ! zfuncs::mouse) { - zpopup_message(0,"GTK/GDK failure to find hardware"); - m_quit(0,0); - exit(1); - } - - // 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); - printz("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; - err = shell_quiet("which rawtherapee"); // check for Raw Therapee - if (! err) Frawtherapee = 1; - err = shell_quiet("which brasero"); // check for Brasero - if (! err) Fbrasero = 1; - err = shell_quiet("which hugin"); // check for pano tools (hugin versions) - if (! err) PTtools = 1; - - if (Fexiftool + Fxdgopen < 2) { // 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"); - zmessageACK(Mwin,badnews); - m_quit(0,0); - } - - if (! Fufraw) printz("UFraw not installed \n"); // optional - if (! Frawtherapee) printz("Raw Therapee not installed \n"); - if (! Fbrasero) printz("Brasero not installed \n"); - if (! PTtools) printz("Panorama Tools (Hugin) not installed \n"); - - // check for first time Fotoxx install or new release install - - if (Ffirsttime) { // new fotoxx install - showz_html(quickstart_file); - Prelease = zstrdup(Frelease); - } - - if (! Ffirsttime && ! strmatch(Prelease,Frelease)) { // Fotoxx release change - zmessLogACK(Mwin,"fotoxx new release %s",Frelease); - Prelease = zstrdup(Frelease); - showz_textfile("doc","changelog"); - } - - Ffirsttime = 0; // reset first time flag - - // delete fotoxx tempdir files if owner process is no longer running - - contx = 0; - while ((pp = command_output(contx,"find /tmp/fotoxx-*",0))) { - pp2 = strchr(pp,'-'); - if (! pp2) continue; - npid = atoi(pp2+1); // pid of fotoxx owner process - snprintf(procfile,20,"/proc/%d",npid); - err = stat(procfile,&statb); - if (! err) continue; // pid is active, keep - shell_quiet("rm -R -f -v %s",pp); // delete - } - - // set up temp directory /tmp/fotoxx-nnnnnn-XXXXXX - - snprintf(tempdir,200,"/tmp/fotoxx-%06d-XXXXXX",getpid()); // use PID + random chars. - pp = mkdtemp(tempdir); - if (! pp) { - zmessageACK(Mwin,"%s \n %s",tempdir,strerror(errno)); - exit(1); - } - strncpy0(tempdir,pp,200); - printz("tempdir: %s \n",tempdir); - - // file name template for undo/redo files - - snprintf(URS_filename,200,"%s/undo_nn",tempdir); // /tmp/fotoxx-nnnnnn/undo_nn - - // check free memory and suggest image size limits - - parseprocfile("/proc/meminfo","MemFree:",&freememory,0); // get amount of free memory - parseprocfile("/proc/meminfo","Cached:",&cachememory,0); - freememory = (freememory + cachememory) / 1024; // megabytes - printz("free memory: %.0f MB \n",freememory); - printz("image size limits for good performance: \n"); - printz(" view: %.0f megapixels \n",(freememory-100)/6); // F + preview, 3 bytes/pixel each - printz(" edit: %.0f megapixels \n",(freememory-100)/54); // + E0/E1/E3/ER, 12 bytes/pixel each - - // update KB shortcuts if needed - - err = locale_filespec("user","KB-shortcuts",KBshortsU); // user KB shortcuts - if (err) { // not found - locale_filespec("data","KB-shortcuts",KBshortsI); - shell_quiet("cp %s %s",KBshortsI,KBshortsU); // copy installed KB shortcuts - printz("keyboard shortcuts installed \n"); - } - KBshortcuts_load(); // load KB shortcuts from file - - // rename collections directory to albums directory // remove in 2016 FIXME 15.03 - - char collections_dirk[200]; - snprintf(collections_dirk,199,"%s/collections",get_zuserdir()); // old name: /home//.fotoxx/collections - err = stat(collections_dirk,&statb); - if (! err) rename(collections_dirk,albums_dirk); - - // remove obsolete user locales directory // remove in 2016 FIXME 15.04 - - char locales_dirk[200]; - snprintf(locales_dirk,199,"%s/locales",get_zuserdir()); // delete /home//.fotoxx/locales - err = stat(locales_dirk,&statb); - if (! err) shell_quiet("rm -R %s",locales_dirk); - - // remove obsolete newest_files file // remove in 2016 FIXME 15.05 - - char newfiles_file[200]; - snprintf(newfiles_file,199,"%s/newest_files",get_zuserdir()); - err = stat(newfiles_file,&statb); - if (! err) remove(newfiles_file); - - // copy default data files to user directories if not already - - err = stat(pattern_dirk,&statb); // pattern files - if (err) { - printz("copy default pattern files \n"); - mkdir(pattern_dirk,0750); - shell_quiet("cp -n %s/patterns/* %s",get_zdatadir(),pattern_dirk); - } - - err = stat(retouch_combo_dirk,&statb); // retouch combo settings - if (err) { - printz("copy default retouch_combo files \n"); - mkdir(retouch_combo_dirk,0750); - shell_quiet("cp -n %s/retouch_combo/* %s",get_zdatadir(),retouch_combo_dirk); - } - - err = stat(custom_kernel_dirk,&statb); // custom convolution kernels - if (err) { - printz("copy default custom_kernel files \n"); - mkdir(custom_kernel_dirk,0750); - shell_quiet("cp -n %s/custom_kernel/* %s",get_zdatadir(),custom_kernel_dirk); - } - - err = stat(favorites_dirk,&statb); // favorites menu - if (err) { - printz("copy default favorites menu \n"); - mkdir(favorites_dirk,0750); - shell_quiet("cp -n %s/favorites/* %s",get_zdatadir(),favorites_dirk); - } - - err = stat(tags_defined_file,&statb); // tags_defined file - if (err) { - printz("create default tags_defined file \n"); - shell_quiet("cp %s/tags_defined %s",get_zdatadir(),tags_defined_file); - } - - snprintf(tonefile,200,"%s/slideshow-tone.oga",slideshow_dirk); // default slide show pause tone - err = stat(tonefile,&statb); - if (err) shell_quiet("cp %s/slideshow-tone.oga %s",get_zdatadir(),tonefile); - - // miscellaneous - - screen = gtk_window_get_screen(MWIN); // get monitor pixel dimensions - screenww = gdk_screen_get_width(screen); - screenhh = gdk_screen_get_height(screen); - printz("screen width: %d height: %d \n",screenww,screenhh); - - NWT = get_nprocs(); // get SMP CPU count - if (NWT <= 0) NWT = 2; - if (NWT > max_threads) NWT = max_threads; // compile time limit - printz("using %d threads \n",NWT); - - zdialog_inputs("load"); // load saved dialog inputs - zdialog_positions("load"); // load saved dialog positions - - exif_server(0,0,0); // kill orphan exiftool process - - g_timeout_add(20,gtimefunc,0); // start periodic function (20 ms) 15.05 - - // create or update image index file - // cannot continue until completed OK - - index_rebuild(0); // must be successfully completed - printz("RAW file types found: %s \n",myRAWtypes); // list RAW types found - - // set current file and gallery from command line if present - - curr_dirk = zstrdup(topdirks[0]); // default 1st top image directory - - if (initial_file) { // from command line - pp = realpath(initial_file,0); // prepend directory if needed - if (pp) { - zfree(initial_file); - initial_file = zstrdup(pp); - free(pp); // not zfree(), bugfix 15.05 - } - else { - printz("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 - printz("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 = zstrdup(initial_file); // set current directory from file - pp = strrchr(curr_dirk,'/'); - if (pp) *pp = 0; - } - } - - if (initial_file) // open initial file - f_open(initial_file); - - else if (Fdirk) { // open initial directory - gallery - gallery(curr_dirk,"init"); - m_viewmode(0,"G"); - gallery(0,"paint",0); - } - - else if (Fprev) { // start with previous file - if (last_curr_file && *last_curr_file == '/') // 15.07 - f_open(last_curr_file); - } - - else if (Frecent) // start with recent files gallery - m_recentfiles(0,0); - - else if (Fnew) // start with newest files gallery - m_newfiles(0,"file"); // by file mod date - - else if (Fblank) { // blank window, no gallery 15.07 - curr_file = curr_dirk = 0; - navi::galleryname = 0; - navi::gallerytype = 0; - set_mwin_title(); - } - - // if no command line option, get startup display from user options - - else if (strmatch(startdisplay,"recent")) // start with recent files gallery - m_recentfiles(0,0); - - else if (strmatch(startdisplay,"newest")) // start with newest files gallery 15.07 - m_newfiles(0,"file"); // by file mode date - - else if (strmatch(startdisplay,"prevG")) { // start with previous gallery 15.07 - if (last_gallerytype > 0) { - navi::gallerytype = last_gallerytype; - if (last_gallerytype == 1) - gallery(last_galleryname,"init"); - else gallery(last_galleryname,"initF"); - m_viewmode(0,"G"); - gallery(0,"paint",0); - } - } - - else if (strmatch(startdisplay,"prevI")) { // start with previous image file - if (last_curr_file && *last_curr_file == '/') - f_open(last_curr_file); - } - - else if (strmatch(startdisplay,"dirk")) { // start with given directory - if (startdirk && *startdirk == '/') { - if (curr_dirk) zfree(curr_dirk); - curr_dirk = zstrdup(startdirk); - navi::thumbsize = 128; - gallery(curr_dirk,"init",0); - m_viewmode(0,"G"); - gallery(0,"paint",0); - } - } - - else if (strmatch(startdisplay,"file")) // start with given image file - f_open(startfile); - - if (startmenu) { // startup menu on command line - printz("startmenu: %s \n",startmenu); - for (ii = 0; ii < Nmenus; ii++) // convert menu name to menu function - if (strmatchcase(ZTX(startmenu),ZTX(menutab[ii].menu))) break; - if (ii < Nmenus) menutab[ii].func(0,menutab[ii].arg); // call the menu function - } - - save_params(); // save parameters now 15.07 - - zmainloop(); // mysterious, avoid blank window - return 0; // don't come back -} - - -/**************************************************************************/ - -// functions for main window event signals - -int delete_event() // main window closed -{ - int yn; - - printz("main window delete event \n"); - if (checkpend("mods")) return 1; // allow user bailout - if (zfuncs::zdialog_busy) { - yn = zmessageYN(Mwin,ZTX("Kill active dialog?")); // allow user bailout - if (! yn) return 1; - } - quitxx(); - return 0; -} - -int destroy_event() // main window destroyed -{ - printz("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) Ffullscreen = 1; - else Ffullscreen = 0; - return 0; -} - - -/**************************************************************************/ - -// Periodic function (20 milliseconds) -// Avoid any thread usage of gtk/gdk functions. - -int gtimefunc(void *) -{ - static int domore = 0; - - if (Fshutdown) return 0; // shutdown underway - - if (Fpaintrequest && Cdrawin && ! Fpaintlock) { // window update needed - Fpaintrequest = 0; // 15.05 - gtk_widget_queue_draw(Cdrawin); // (avoid blank screen if blocked) - } - - if (zd_thread && zd_thread_event) { // send dialog event from thread - zdialog_send_event(zd_thread,zd_thread_event); - zd_thread_event = 0; - } - - if (--domore > 0) return 1; // do rest every 200 milliseconds 15.05 - domore = 10; - - update_Fpanel(); // update panel information - paint_busy(); // show % done if something busy - - return 1; -} - - -/**************************************************************************/ - -// update F window top panel with current status information -// called from timer function - -void update_Fpanel() -{ - static double time1 = 0, time2, cpu1 = 0, cpu2, cpuload; - char text1[300], text2[100]; - static char ptext1[300] = ""; - double freemem, cachemem; - int ww, hh, scale, bpc; - static int ftf = 1; - double file_MB = 1.0 / MEGA * curr_file_size; - static cchar *reduced, *areaactive, *dialogopen; - static cchar *funcbusy, *blocked, *modified; - - zthreadcrash(); - - if (ftf) { - ftf = 0; - reduced = ZTX("(reduced)"); - areaactive = ZTX("area active"); - dialogopen = ZTX("dialog open"); - funcbusy = ZTX("BUSY"); - blocked = ZTX("blocked"); - modified = "mod"; - } - - if (FGW != 'F') 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; - } - - parseprocfile("/proc/meminfo","MemFree:",&freemem,0); // get amount of free memory - parseprocfile("/proc/meminfo","Cached:",&cachemem,0); - freemem = (freemem + cachemem) / 1024; // megabytes - - snprintf(text1,300,"CPU %03.0f%c MB %.0f",cpuload,'%',freemem); // CPU 023% MB 2345 - - if (curr_file && Fpxb) - { - if (E3pxm) { - ww = E3pxm->ww; - hh = E3pxm->hh; - } - else { - ww = Fpxb->ww; - hh = Fpxb->hh; - } - - bpc = curr_file_bpc; - - snprintf(text2,100," %dx%dx%d",ww,hh,bpc); // 2345x1234x16 (preview) 1.56MB 45% - strncatv(text1,300,text2,0); - if (CEF && CEF->Fpreview) strncatv(text1,300," ",reduced,0); - snprintf(text2,100," %.2fM",file_MB); - strncatv(text1,300,text2,0); - scale = Mscale * 100 + 0.5; - snprintf(text2,100," %d%c",scale,'%'); - strncatv(text1,300,text2,0); - - if (URS_pos) { // edit undo/redo stack depth - snprintf(text2,100," %s: %d",ZTX("edits"),URS_pos); - strncatv(text1,300,text2,0); - } - - if (Fmetamod || Fgtagmod) // 15.03 - strncatv(text1,300," ",ZTX("metadata"),0); - } - - else if (Fpxb) { // 15.03 - snprintf(text2,100," %dx%d",Fpxb->ww,Fpxb->hh); - strncatv(text1,300,text2,0); - } - - if (sa_stat == 3) strncatv(text1,300," ",areaactive,0); - if (zfuncs::zdialog_busy) strncatv(text1,300," ",dialogopen,0); - - if (Fbusy) strncatv(text1,300," ",funcbusy,0); // "function busy" - if (Fblock) strncatv(text1,300," ",blocked,0); // "blocked" - if (CEF && CEF->Fmods) strncatv(text1,300," ",modified,0); // "mod" - if (*paneltext) strncatv(text1,300," ",paneltext,0); // application text - - if (strmatch(text1,ptext1)) return; // if no change, don't output - strcpy(ptext1,text1); - - gtk_label_set_label(GTK_LABEL(Fpanlab),text1); // update panel bar - - return; -} - - -/**************************************************************************/ - -// Watch globals Fthreadbusy, Ffuncbusy. -// Show percent complete if Fbusy_goal > 0. -// Show caller message if present. - -void paint_busy(cchar *message) // 15.05 -{ - #define GSFNORMAL GTK_STATE_FLAG_NORMAL - - static GtkWidget *mlabel = 0, *plabel = 0; - static char mmess[100] = "", pmess[12]; - int busy, percent; - - zthreadcrash(); - - busy = Fthreadbusy + Ffuncbusy; - - if (! busy) { // nothing busy - if (plabel) gtk_widget_destroy(plabel); - if (mlabel) gtk_widget_destroy(mlabel); - plabel = mlabel = 0; - *mmess = 0; - return; - } - - if (Fbusy_goal) { - percent = 100 * (Fbusy_done / Fbusy_goal); // NN % - snprintf(pmess,12,"%02d%c",percent,'%'); - if (plabel) gtk_widget_destroy(plabel); - plabel = gtk_label_new(pmess); - gtk_widget_override_font(plabel,panelfont); - gtk_box_pack_start(GTK_BOX(Fpanel),plabel,0,0,5); - } - - if (message) { // new message - strncpy0(mmess,message,99); - if (mlabel) gtk_widget_destroy(mlabel); - mlabel = gtk_label_new(mmess); - gtk_widget_override_font(mlabel,panelfont); - gtk_box_pack_start(GTK_BOX(Fpanel),mlabel,0,0,5); - } - - gtk_widget_show_all(Fpanel); - - return; -} - - -/**************************************************************************/ - -// GTK3 "draw" function for F and W mode drawing windows. -// 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 (triggered from GTK). -// Draw the image section currently within the visible window. -// May NOT be called from threads. See Fpaint2() for threads. - -int Fpaint(GtkWidget *Cdrawin, cairo_t *cr) -{ - PIXBUF *pixbuf; - PXB *pxb1; - 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 morgx, morgy; - int centerx, centery; - int quitnow = 0; - int refresh = 0; - int mousex, mousey; // mouse position after zoom - float magx, magy; // mouse drag, magnification ratios - - if (Fshutdown) quitnow++; // shutdown underway - if (! Cdrawin) quitnow++; - if (! gdkwin) quitnow++; - if (! Cstate || ! Cstate->fpxb) quitnow++; // no image - if (quitnow) return 1; - - if (! resource_lock(Fpaintlock)) { // if locked, come back later - Fpaintrequest = 1; - return 1; - } - - 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 = 1; // image refresh needed - pdww = Dww; - pdhh = Dhh; - } - - if (Fimagerefresh) { // window image changed 15.05 - Fimagerefresh = 0; // changes displayed as-of NOW - refresh = 1; // image refresh needed - if (FGW == 'F' && (E0pxm || E3pxm)) { // insure window F and E0 or E3 - if (E3pxm) pxb1 = PXM_PXB_copy(E3pxm); // update fpxb from E0/E3 image - else pxb1 = PXM_PXB_copy(E0pxm); // or use already edited image - PXB_free(Cstate->fpxb); - Cstate->fpxb = pxb1; - } - } - - centerx = (Cstate->morgx + 0.5 * dww) / Cstate->mscale; // center of window, image space - centery = (Cstate->morgy + 0.5 * dhh) / Cstate->mscale; // (before window or scale change) - - fww = Cstate->fpxb->ww; // 1x image size - fhh = Cstate->fpxb->hh; - - if (Cstate->fzoom == 0) { // scale to fit window - wscale = 1.0 * Dww / fww; - hscale = 1.0 * Dhh / fhh; - if (wscale < hscale) Cstate->mscale = wscale; // use greatest ww/hh ratio - else Cstate->mscale = hscale; - if (fww <= Dww && fhh <= Dhh && ! Fblowup) Cstate->mscale = 1.0; // small image 1x unless Fblowup - zoomx = zoomy = 0; // no zoom target - } - else Cstate->mscale = Cstate->fzoom; // scale to fzoom level - - mww = fww * Cstate->mscale; // scaled image size for window - mhh = fhh * Cstate->mscale; - - dww = Dww; // image fitting inside drawing window - if (dww > mww) dww = mww; // image < window size - dhh = Dhh; - if (dhh > mhh) dhh = mhh; - - if (Cstate->mscale != Cstate->pscale) { // scale changed - Cstate->morgx = Cstate->mscale * centerx - 0.5 * dww; // change origin to keep same center - Cstate->morgy = Cstate->mscale * centery - 0.5 * dhh; // (subject to later rules) - Cstate->pscale = Cstate->mscale; // remember scale - refresh = 1; // image refresh needed - } - - if (! Cstate->mpxb) refresh++; // need to make mpxb - - if (refresh) { // image refresh needed - if (Cstate->mpxb) PXB_free(Cstate->mpxb); - if (Cstate->mscale == 1) Cstate->mpxb = PXB_copy(Cstate->fpxb); // fast 1x image - else Cstate->mpxb = PXB_rescale(Cstate->fpxb,mww,mhh); // rescaled image - } - - 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) { - Cstate->morgx -= round(Mwdragx); // same direction - Cstate->morgy -= round(Mwdragy); - } - if (Fdragopt == 2) { - Cstate->morgx += round(Mwdragx); // opposite direction - Cstate->morgy += round(Mwdragy); - } - if (Fdragopt == 3) { - Cstate->morgx -= round(Mwdragx * magx); // same direction, magnified - Cstate->morgy -= round(Mwdragy * magy); - } - if (Fdragopt == 4) { - Cstate->morgx += round(Mwdragx * magx); // opposite direction, magnified - Cstate->morgy += round(Mwdragy * magy); - } - } - - if (dww < Dww) Cstate->dorgx = 0.5 * (Dww - dww); // if scaled image width < window width - else Cstate->dorgx = 0; // center image in window - if (dhh < Dhh) Cstate->dorgy = 0.5 * (Dhh - dhh); - else Cstate->dorgy = 0; - - if (zoomx || zoomy) { // requested zoom center - Cstate->morgx = Cstate->mscale * zoomx - 0.5 * dww; // corresp. window position within image - Cstate->morgy = Cstate->mscale * zoomy - 0.5 * dhh; - } - - if (Cstate->morgx < 0) Cstate->morgx = 0; // maximize image within window - if (Cstate->morgy < 0) Cstate->morgy = 0; // (no unused margins) - if (Cstate->morgx + dww > mww) Cstate->morgx = mww - dww; - if (Cstate->morgy + dhh > mhh) Cstate->morgy = mhh - dhh; - - if (zoomx || zoomy) { // zoom target - mousex = zoomx * Cstate->mscale - Cstate->morgx + Cstate->dorgx; - mousey = zoomy * Cstate->mscale - Cstate->morgy + Cstate->dorgy; // mouse pointer follows target - move_pointer(Cdrawin,mousex,mousey); - zoomx = zoomy = 0; // reset zoom target - } - - if (zddarkbrite) darkbrite_paint(); // update dark/bright pixels - - morgx = Cstate->morgx; // window position in (larger) image - morgy = Cstate->morgy; - pixbuf = Cstate->mpxb->pixbuf; // get image section within window - pixbuf = gdk_pixbuf_new_subpixbuf(pixbuf,morgx,morgy,dww,dhh); - gdk_cairo_set_source_pixbuf(cr,pixbuf,Cstate->dorgx,Cstate->dorgy); // paint section - cairo_paint(cr); - - g_object_unref(pixbuf); - - mwcr = cr; // cairo context for draw funcs below - cairo_set_line_width(mwcr,1); - - if (Cstate == &Fstate) { // view mode is image - 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 - } - - if (Cstate == &Wstate) // view mode is world maps - geomap_paint_dots(); // 15.01 - - mwcr = 0; // cairo context invalid - resource_unlock(Fpaintlock); // unlock - - if (refresh && zdbrdist) m_show_brdist(0,0); // update brightness distribution - return 1; -} - - -/**************************************************************************/ - -// Cause (modified) output image to get repainted soon. -// Same as Fpaint() but delayed. MAY be called from threads. -// Fpaint() will be called by gtimefunc() next timer cycle. - -void Fpaint2() -{ - Fimagerefresh = 1; // image changed 15.05 - Fpaintrequest = 1; // request repaint - return; -} - - -// Repaint modified image synchrounously. -// May NOT be called from threads. - -void Fpaintnow() -{ - cairo_t *ct; // do not use mwcr - - zthreadcrash(); - - if (! Cdrawin) return; - if (! gdkwin) return; - if (! Cstate || ! Cstate->fpxb) return; // no image - - gdk_window_set_background_rgba(gdkwin,&GDKbackground); // background for F and W view modes - - Fimagerefresh = 1; // image changed 15.05 - ct = gdk_cairo_create(gdkwin); - Fpaint(Cdrawin,ct); - cairo_destroy(ct); - - 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 Fpaint3(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 - Fpaint4(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 Fpaint4(int px3, int py3, int ww3, int hh3) -{ - PIXBUF *pixbuf; - int px2, py2, ww2, hh2; - int crflag = 0; - - zthreadcrash(); - - if (! Cdrawin) return; - if (! gdkwin) return; - if (! Cstate || ! Cstate->fpxb) return; // no image - - 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; - } - - pixbuf = gdk_pixbuf_new_subpixbuf(Mpxb->pixbuf,px2,py2,ww2,hh2); // Mpxb area to paint 15.08 - - 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 *widget, GdkEventButton *event, void *) -{ - void mouse_convert(int xpos1, int ypos1, int &xpos2, int &ypos2); - - int button, time, type, scroll; - static int bdtime = 0, butime = 0; - static int mdragx0, mdragy0; - - if (! Cdrawin) return; - if (! gdkwin) return; - if (! Cstate || ! Cstate->fpxb) return; // no image - - type = event->type; - button = event->button; // button, 1/2/3 = left/center/right - time = event->time; - Mwxposn = event->x; // mouse position in window - Mwyposn = event->y; - mouse_convert(Mwxposn,Mwyposn,Mxposn,Myposn); // convert to image space - - scroll = ((GdkEventScroll *) event)->direction; // scroll wheel event - - KBcontrolkey = KBshiftkey = KBaltkey = 0; - if (event->state & GDK_CONTROL_MASK) KBcontrolkey = 1; - if (event->state & GDK_SHIFT_MASK) KBshiftkey = 1; - if (event->state & GDK_MOD1_MASK) KBaltkey = 1; - - if (type == GDK_SCROLL) { // scroll wheel = zoom - zoomx = Mxposn; // zoom center = mouse position - zoomy = Myposn; - if (scroll == GDK_SCROLL_UP) m_zoom(0,"in"); - if (scroll == GDK_SCROLL_DOWN) m_zoom(0,"out"); - return; - } - - 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(Cdrawin); - } - } - } - 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 (mouseCBfunc && ! Fmousemain) { // pass to callback function - (* mouseCBfunc)(); - Fmousemain = 1; // click/drag params are processed here - } // unless reset by handler func. - - if (FGW == 'W') geomap_mousefunc(); // geomap mouse function - - if (! Fmousemain) return; // curr. function handles mouse - - if (LMclick) { // left click = zoom request - LMclick = 0; - zoomx = Mxclick; // zoom center = mouse - zoomy = Myclick; - m_zoom(0,"in"); - } - - if (RMclick) { // right click - RMclick = 0; - if (Cstate->fzoom) { // if zoomed image, reset to fit window - zoomx = zoomy = 0; - m_zoom(0,"fit"); - } - else if (curr_file && FGW == 'F') - image_Rclick_popup(); // image right-click popup menu - } - - if ((Mxdrag || Mydrag) && ! Fpaintlock) // drag = scroll by mouse 15.05 - gtk_widget_queue_draw(Cdrawin); - - return; -} - - -// convert mouse position from window space to image space - -void mouse_convert(int xpos1, int ypos1, int &xpos2, int &ypos2) -{ - xpos2 = (xpos1 - Cstate->dorgx + Cstate->morgx) / Cstate->mscale + 0.5; - ypos2 = (ypos1 - Cstate->dorgy + Cstate->morgy) / Cstate->mscale + 0.5; - - if (xpos2 < 0) xpos2 = 0; // if outside image put at edge - if (ypos2 < 0) ypos2 = 0; - - if (E3pxm) { - if (xpos2 >= E3pxm->ww) xpos2 = E3pxm->ww-1; - if (ypos2 >= E3pxm->hh) ypos2 = E3pxm->hh-1; - } - else { - if (xpos2 >= Cstate->fpxb->ww) xpos2 = Cstate->fpxb->ww-1; - if (ypos2 >= Cstate->fpxb->hh) ypos2 = Cstate->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; - - zthreadcrash(); - - if (! Cstate || ! Cstate->fpxb) return; - if (! Cdrawin) return; - if (! gdkwin) return; - if (! Cstate || ! Cstate->fpxb) return; // no image - - Rzoom = Cstate->fzoom; // current zoom ratio - - if (E3pxm) { - fww = E3pxm->ww; // 1x image size - fhh = E3pxm->hh; - } - else { - fww = Cstate->fpxb->ww; - fhh = Cstate->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 (strmatch(zoom,"Zoom+")) zoom = "in"; // menu button: + = zoom in - if (strmatch(zoom,"Zoom-")) zoom = "fit"; // - = fit window - - if (strmatch(zoom,"fit")) Cstate->fzoom = 0; // zoom to fit window - - if (strmatch(zoom,"100")) { - if (Cstate->fzoom != 0) Cstate->fzoom = 0; // toggle 100% and fit window - else Cstate->fzoom = 1; - } - - if (strstr("in out",zoom)) // caller: zoom in or out - { - if (! Cstate->fzoom) Cstate->fzoom = fitscale; // current zoom scale - for (fzoom2 = 0.125; fzoom2 < 4.0; fzoom2 *= zoomratio) // find nearest natural ratio - if (Cstate->fzoom < fzoom2 * sqrt(zoomratio)) break; - if (strmatch(zoom,"in")) zratio = zoomratio; // zoom in, make image larger - if (strmatch(zoom,"out")) zratio = 1.0 / zoomratio; // zoom out, make image smaller - Cstate->fzoom = fzoom2 * zratio; - - if (Cstate->fzoom > 0.124 && Cstate->fzoom < 0.126) // hit these ratios exactly - Cstate->fzoom = 0.125; - if (Cstate->fzoom > 0.24 && Cstate->fzoom < 0.26) - Cstate->fzoom = 0.25; - if (Cstate->fzoom > 0.49 && Cstate->fzoom < 0.51) - Cstate->fzoom = 0.50; - if (Cstate->fzoom > 0.99 && Cstate->fzoom < 1.01) - Cstate->fzoom = 1.00; - if (Cstate->fzoom > 1.99 && Cstate->fzoom < 2.01) - Cstate->fzoom = 2.00; - if (Cstate->fzoom > 3.99) Cstate->fzoom = 4.0; // max. allowed zoom - if (Cstate->fzoom < fitscale) Cstate->fzoom = 0; // image < window - } - - if (FGW == 'W') { // optimize for geomaps - if (strmatch(zoom,"in") && Cstate->fzoom < 1.0) - Cstate->fzoom = 1.0; // zoom to 100% directly - if (strmatch(zoom,"out")) Cstate->fzoom = 0.0; // zoom out = fit window directly - if (Cstate->fzoom == 1.0 && Rzoom == 1.0) { - gtk_widget_queue_draw(Cdrawin); // if already, move mouse pointer only - return; - } - } - - if (Cstate->fzoom > 1.0) { // limit image in window to 1 gigabyte - pixels = Cstate->fzoom * fww * Cstate->fzoom * fhh; // (333 megapixels x 3 bytes/pixel) - if (pixels > 333 * MEGA) { // if size is at maximum, - Cstate->fzoom = Rzoom; // move mouse pointer only - gtk_widget_queue_draw(Cdrawin); - return; - } - } - - if (! Cstate->fzoom) zoomx = zoomy = 0; // no requested zoom center - Fpaint2(); // 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 - -namespace trimrotate { void KBfunc(int key); } // keyboard functions called from here -namespace perspective { void KBfunc(int key); } -namespace mashup { void KBfunc(int key); } - -int KBpress(GtkWidget *win, GdkEventKey *event, void *) // prevent propagation of key-press -{ // events to menu buttons - KBkey = event->keyval; - - KBcontrolkey = KBshiftkey = KBaltkey = 0; - if (event->state & GDK_CONTROL_MASK) KBcontrolkey = 1; - 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]; - - KBcontrolkey = KBshiftkey = KBaltkey = 0; - if (event->state & GDK_CONTROL_MASK) KBcontrolkey = 1; - if (event->state & GDK_SHIFT_MASK) KBshiftkey = 1; - if (event->state & GDK_MOD1_MASK) KBaltkey = 1; - - KBkey = event->keyval; - - if (! KBcontrolkey && ! KBshiftkey && ! KBaltkey) { // f/g/w keys set corresp. window mode - if (KBkey == GDK_KEY_f) { m_viewmode(0,"F"); goto KBend; } // Ctrl/Alt + f/g/w can be used for shortcuts - if (KBkey == GDK_KEY_g) { m_viewmode(0,"G"); goto KBend; } - if (KBkey == GDK_KEY_w) { m_viewmode(0,"W"); goto KBend; } - } - - if (KBcapture) return 1; // let current function handle it - - if (KBcontrolkey + KBshiftkey + KBaltkey) goto KBcustom; // combinations are always custom 15.06 - -// 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 is fullscreen toggle - if (Fslideshow) { - ss_escape = 1; // quit slideshow if active - goto KBend; - } - if (! Ffullscreen) win_fullscreen(0); // toggle full-screen mode and back - else win_unfullscreen(); - goto KBend; - } - - if (KBkey == GDK_KEY_Escape) { // ESC key - if (Ffullscreen) win_unfullscreen(); // exit full screen mode - if (Fslideshow) ss_escape = 1; // quit slideshow if active - goto KBend; - } - - if (KBkey == GDK_KEY_s) // 's' shortcut for Sync Gallery 15.02 - navi::menufuncx(0,"Sync"); - - if (FGW == 'G') { // window mode = G - navi::KBrelease(win,event,0); // pass to gallery KB function - goto KBend; // (keys below not for gallery) - } - - if (KBkey == GDK_KEY_z) { // 'z' key - if (! KBcontrolkey) m_zoom(0,"100"); // if no CTRL, toggle zoom 1x - goto KBend; - } - - if (FGW == 'W') goto KBend; // window mode = W, no other KB events - - if (KBkey == GDK_KEY_plus) m_zoom(0,"in"); // + key >> zoom in - if (KBkey == GDK_KEY_minus) m_zoom(0,"fit"); // - key >> fit to window - if (KBkey == GDK_KEY_equal) m_zoom(0,"in"); // = key: same as + - if (KBkey == GDK_KEY_KP_Add) m_zoom(0,"in"); // keypad + - if (KBkey == GDK_KEY_KP_Subtract) m_zoom(0,"fit"); // keypad - - - if (Fslideshow) { // slide show mode - if (KBkey == GDK_KEY_Left) ss_Larrow = 1; // arrow keys = prev/next image - if (KBkey == GDK_KEY_Right) ss_Rarrow = 1; - if (KBkey == GDK_KEY_space) ss_spacebar = 1; // spacebar = pause/resume - if (KBkey == GDK_KEY_b) ss_Bkey = 1; // 'b' = blank screen + pause - if (KBkey == GDK_KEY_m) ss_Mkey = 1; // 'm' shortcut for Magnify - goto KBend; - } - - if (Fmashup) { // mashup active, pass KB key - mashup::KBfunc(KBkey); - goto KBend; - } - - if (CEF && CEF->menufunc == m_trimrotate) { // trim_rotate active, pass KB key - trimrotate::KBfunc(KBkey); - goto KBend; - } - - if (CEF && CEF->menufunc == m_perspective) { // perspective active, pass KB key - perspective::KBfunc(KBkey); - 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 - - if (KBkey == GDK_KEY_m) // 'm' Magnify 15.01 - m_magnify(0,0); - -// look for custom shortcut keys in shortcut table - -KBcustom: - - 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 (strmatchcase(matchkey,shortcutkey[ii])) break; - - if (ii < Nshortcuts) { // convert menu name to menu function - for (jj = 0; jj < Nmenus; jj++) { - if (! menutab[jj].menu) continue; // ignore separator - if (strmatchcase(shortcutmenu[ii],ZTX(menutab[jj].menu))) 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 or panel) - -void win_fullscreen(int hidemenu) -{ - zthreadcrash(); - - if (FGW == 'F' && hidemenu) { // if F window, hide menu and panel - gtk_widget_hide(Fmenu); - gtk_widget_hide(Fpanel); - } - - gtk_window_fullscreen(MWIN); - - for (int ii = 0; ii < 20; ii++) { // wait for window manager to act - zmainloop(); - if (Ffullscreen) break; - } - - return; -} - - -// restore window to former size and restore menu etc. - -void win_unfullscreen() -{ - zthreadcrash(); - - gtk_window_unfullscreen(MWIN); // restore old window size - gtk_widget_show(Fmenu); - gtk_widget_show(Fpanel); - Ffullscreen = 0; - return; -} - - -/**************************************************************************/ - -// update information in main window title bar - -void set_mwin_title() -{ - int cc, gtype, fposn, nfiles, nimages; - char *pp, titlebar[250]; - char pdate[12], ptime[12], pdatetime[20]; - char fname[100], gname[100], fdirk[100]; - - zthreadcrash(); - - if (! curr_file || *curr_file != '/') { - gtk_window_set_title(MWIN,Frelease); - return; - } - - pp = (char *) strrchr(curr_file,'/'); - strncpy0(fname,pp+1,99); // file name - cc = pp - curr_file; - if (cc < 99) strncpy0(fdirk,curr_file,cc+2); // get dirk/path/ if short enough - else { - strncpy(fdirk,curr_file,96); // or use /dirk/path... - strcpy(fdirk+95,"..."); - } - - nfiles = navi::nfiles; // total gallery files (incl. directories) - nimages = navi::nimages; // total image files - - fposn = gallery_position(curr_file,curr_file_posn); // curr. file in curr. gallery? - if (fposn >= 0) { - curr_file_posn = fposn; - fposn = fposn + 1 - nfiles + nimages; // position among images, 1-based - } - - if (*meta_pdate) { - metadate_pdate(meta_pdate,pdate,ptime); // get formatted date and time 15.03 - strncpy0(pdatetime,pdate,11); // yyyy-mm-dd hh:mm - strncpy0(pdatetime+11,ptime,6); - pdatetime[10] = ' '; - } - else strcpy(pdatetime,"(undated)"); - - gtype = navi::gallerytype; - - if (gtype == 1) // gallery name = directory - snprintf(titlebar,250,"%s %d/%d %s %s %s", - Frelease,fposn,nimages,fname,pdatetime,fdirk); - else { - if (gtype == 2 || gtype == 3) - strcpy(gname,"SEARCH RESULTS"); - else if (gtype == 4) { - pp = strrchr(navi::galleryname,'/'); - if (! pp) pp = navi::galleryname; - else pp++; - strcpy(gname,"ALBUM: "); - strncpy0(gname+7,pp,87); - } - else if (gtype == 5) - strcpy(gname,"RECENT FILES"); - else if (gtype == 6) - strcpy(gname,"NEWEST FILES"); - else - strcpy(gname,"NO GALLERY"); - - if (fposn > 0) - snprintf(titlebar,250,"%s %s %d/%d %s %s %s", // window title bar - Frelease,gname,fposn,nimages,fname,pdatetime,fdirk); - else - snprintf(titlebar,250,"%s %s (*)/%d %s %s %s", // image not in gallery - Frelease,gname,nimages,fname,pdatetime,fdirk); - } - - gtk_window_set_title(MWIN,titlebar); - 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 PIXBUF *pixbuf1 = 0, *pixbuf4 = 0; - - zthreadcrash(); - - if (! Cdrawin) return; - if (! gdkwin) return; - if (! Cstate || ! Cstate->fpxb) return; // no image - - 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) { // write 1x1 pixels 15.08 - pixel[0] = LINE_COLOR[0]; - pixel[1] = LINE_COLOR[1]; - pixel[2] = LINE_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] = LINE_COLOR[0]; - pixel[1] = pixel[4] = pixel[7] = pixel[10] = LINE_COLOR[1]; - pixel[2] = pixel[5] = pixel[8] = pixel[11] = LINE_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) -{ - GdkPixbuf *pixbuf; - static int pqx, pqy; - int qx, qy, crflag = 0; - - zthreadcrash(); - - if (! Cdrawin) return; - if (! gdkwin) return; - if (! Cstate || ! Cstate->fpxb) return; // no image - - 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; - } - - pixbuf = gdk_pixbuf_new_subpixbuf(Mpxb->pixbuf,qx,qy,2,2); // 2x2 Mpxb area to copy 15.08 - qx = qx - Morgx + Dorgx; // target pixel in window - qy = qy - Morgy + Dorgy; - gdk_cairo_set_source_pixbuf(mwcr,pixbuf,qx,qy); - cairo_paint(mwcr); - - g_object_unref(pixbuf); - - if (crflag) { - cairo_destroy(mwcr); - mwcr = 0; - } - - return; -} - - -/**************************************************************************/ - -// draw line. -// coordinates are image space. -// type = 1/2 for solid/dotted line - -void draw_line(int x1, int y1, int x2, int y2, int type) -{ - float px1, py1, px2, py2; - double dashes[2] = { 4, 4 }; - int crflag = 0; - double R, G, B; - - zthreadcrash(); - - if (! Cdrawin) return; - if (! gdkwin) return; - if (! Cstate || ! Cstate->fpxb) return; // no image - - 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; // play nice - 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; - } - - R = LINE_COLOR[0] / 255.0; // use line color - G = LINE_COLOR[1] / 255.0; - B = LINE_COLOR[2] / 255.0; - - cairo_set_source_rgb(mwcr,R,G,B); - if (type == 2) cairo_set_dash(mwcr,dashes,2,0); // dotted line - else cairo_set_dash(mwcr,dashes,0,0); - - cairo_move_to(mwcr,px1,py1); // draw line - cairo_line_to(mwcr,px2,py2); - cairo_stroke(mwcr); - - if (crflag) { - cairo_destroy(mwcr); - mwcr = 0; - } - - 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; - - zthreadcrash(); - - if (! Cdrawin) return; - if (! gdkwin) return; - if (! Cstate || ! Cstate->fpxb) return; // no image - - 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; - - zthreadcrash(); - - if (! Cdrawin) return; - if (! gdkwin) return; - if (! Cstate || ! Cstate->fpxb) return; // no image - - 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(ptoplines[ii].x1,ptoplines[ii].y1, - ptoplines[ii].x2,ptoplines[ii].y2); - - if (arg == 1 || arg == 3) // draw new lines - for (ii = 0; ii < Ntoplines; ii++) - draw_line(toplines[ii].x1,toplines[ii].y1, - toplines[ii].x2,toplines[ii].y2,toplines[ii].type); - - 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 - ptoplines[ii] = toplines[ii]; - - Nptoplines = Ntoplines; - - return; -} - - -/**************************************************************************/ - -// draw a grid of horizontal and vertical lines. -// grid line spacings are in window space. - -void draw_gridlines() -{ - int crflag = 0, G = currgrid; - int px, py, gww, ghh; - int startx, starty, endx, endy, stepx, stepy; - int startx1, starty1; - - zthreadcrash(); - - if (! Cdrawin) return; - if (! gdkwin) return; - if (! Cstate || ! Cstate->fpxb) return; // no image - - if (! gridsettings[G][GON]) return; // grid lines off - - gww = dww; // grid box size - ghh = dhh; - startx = Dorgx; // starting corner (top left) - starty = Dorgy; - - if (CEF && strmatch(CEF->funcname,"trim_rotate")) { // trim/rotate function is active - gww = Mscale * (trimrect[2] - trimrect[0]); // fit grid box to trim rectangle - ghh = Mscale * (trimrect[3] - trimrect[1]); - startx = Mscale * trimrect[0] - Morgx + Dorgx; - starty = Mscale * trimrect[1] - Morgy + Dorgy; - } - - endx = startx + gww; - endy = starty + ghh; - - stepx = gridsettings[G][GXS]; // space between grid lines - stepy = gridsettings[G][GYS]; // (window space) - - if (gridsettings[G][GXC]) - stepx = gww / (1 + gridsettings[G][GXC]); // if line counts specified, - if (gridsettings[G][GYC]) // set spacing accordingly - stepy = ghh / ( 1 + gridsettings[G][GYC]); - - startx1 = startx + stepx * gridsettings[G][GXF] / 100; // variable starting offsets - starty1 = starty + stepy * gridsettings[G][GYF] / 100; - - 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 = startx1; px < endx; px += stepx) { - cairo_move_to(mwcr,px,starty); - cairo_line_to(mwcr,px,endy); - } - - if (gridsettings[G][GY] && stepy) - for (py = starty1; py < endy; py += stepy) { - cairo_move_to(mwcr,startx,py); - cairo_line_to(mwcr,endx,py); - } - - cairo_stroke(mwcr); - - cairo_set_source_rgb(mwcr,0,0,0); // adjacent black lines - - if (gridsettings[G][GX] && stepx) - for (px = startx1+1; px < endx+1; px += stepx) { - cairo_move_to(mwcr,px,starty); - cairo_line_to(mwcr,px,endy); - } - - if (gridsettings[G][GY] && stepy) - for (py = starty1+1; py < endy+1; py += stepy) { - cairo_move_to(mwcr,startx,py); - cairo_line_to(mwcr,endx,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) -{ - zthreadcrash(); - - if (Ntoptext == maxtoptext) { - printz("*** 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 Fpaint(). - -void draw_toptext() -{ - int crflag = 0; - - zthreadcrash(); - - if (! Cdrawin) return; - if (! gdkwin) return; - if (! Cstate || ! Cstate->fpxb) return; // no image - - 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 = 0; - static PangoLayout *pangolayout = 0; - static char priorfont[40] = ""; - int ww, hh, crflag = 0; - - zthreadcrash(); - - if (! Cdrawin) return; - if (! gdkwin) return; - - px = Mscale * px - Morgx + Dorgx; // image to window space - py = Mscale * py - Morgy + Dorgy; - - if (! strmatch(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(Cdrawin,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 - -void add_topcircle(int px, int py, int radius) -{ - if (Ntopcircles == maxtopcircles) { - printz("*** maxtopcircles exceeded \n"); - return; - } - - int ii = Ntopcircles++; - topcircles[ii].px = px; - topcircles[ii].py = py; - topcircles[ii].radius = radius; - - return; -} - - -// draw current circles over the image in the window -// called from window repaint function Fpaint() - -void draw_topcircles() -{ - int ii, px, py, rad; - int crflag = 0; - double R, G, B; - - zthreadcrash(); - - if (! Cdrawin) return; - if (! gdkwin) return; - if (! Cstate || ! Cstate->fpxb) return; // no image - - if (! mwcr) { - mwcr = gdk_cairo_create(gdkwin); // create cairo context if not already - cairo_set_line_width(mwcr,1); - crflag = 1; - } - - R = LINE_COLOR[0] / 255.0; // use LINE_COLOR - G = LINE_COLOR[1] / 255.0; - B = LINE_COLOR[2] / 255.0; - - 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 - - cairo_set_source_rgb(mwcr,R,G,B); - 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 around the mouse pointer. -// Prior circle will be erased first. -// Used for mouse/brush radius in select and paint functions. -// cx, cy, cr: center and radius of circle in image space. -// if Ferase, then erase previous circle only. - -void draw_mousecircle(int cx, int cy, int cr, int Ferase) // 15.08 -{ - int px3, py3, ww3, hh3; - static int ppx3, ppy3, pww3 = 0, phh3; - int crflag = 0; - double R, G, B; - double dx, dy, t1, t2, t3, t4; - - t1 = t2 = t3 = t4 = 0; // stop incorrect gcc warnings - - zthreadcrash(); - - if (! Cdrawin) return; - if (! gdkwin) return; - if (! Cstate || ! Cstate->fpxb) return; // no image - - gdk_window_freeze_updates(gdkwin); // visually smoother - - if (pww3 > 0) { // erase prior - Fpaint4(ppx3,ppy3,pww3,phh3); // refresh from Mpxb - pww3 = 0; - } - - if (Ferase) { - gdk_window_thaw_updates(gdkwin); // erase only was wanted - return; - } - - px3 = cx - cr - 2; // convert pointer center + radius - py3 = cy - cr - 2; // to block position, width, length - ww3 = 2 * cr + 4; - hh3 = 2 * cr + 4; - - ppx3 = px3; // remember pixel block area - ppy3 = py3; // to erase in next call - pww3 = ww3; - phh3 = hh3; - - if (! mwcr) { - mwcr = gdk_cairo_create(gdkwin); // create cairo context if not already - crflag = 1; - } - - cx = cx * Mscale - Morgx + Dorgx; // convert to window coordinates - cy = cy * Mscale - Morgy + Dorgy; - cr = cr * Mscale; - - R = LINE_COLOR[0] / 255.0; // use LINE_COLOR - G = LINE_COLOR[1] / 255.0; - B = LINE_COLOR[2] / 255.0; - - cairo_set_source_rgb(mwcr,R,G,B); - - dx = cx - Dorgx - 4; // omit segments close or beyond - if (dx < 0) dx = 0; // top and left image edges - dy = cy - Dorgy - 4; - if (dy < 0) dy = 0; - - if (dx < cr) { - t1 = PI - acos(dx/cr); - t2 = PI + acos(dx/cr); - } - - if (dy < cr) { - t3 = 3*PI/2 - acos(dy/cr); - t4 = 3*PI/2 + acos(dy/cr); - } - - if (dx < cr && dy < cr) { - cairo_arc(mwcr,cx,cy,cr,0,t1); - cairo_stroke(mwcr); - cairo_arc(mwcr,cx,cy,cr,t4,2*PI); - cairo_stroke(mwcr); - if (t2 < t3) { - cairo_arc(mwcr,cx,cy,cr,t2,t3); - cairo_stroke(mwcr); - } - } - else if (dx < cr) { - cairo_arc(mwcr,cx,cy,cr,0,t1); - cairo_stroke(mwcr); - cairo_arc(mwcr,cx,cy,cr,t2,2*PI); - cairo_stroke(mwcr); - } - else if (dy < cr) { - cairo_arc(mwcr,cx,cy,cr,0,t3); - cairo_stroke(mwcr); - cairo_arc(mwcr,cx,cy,cr,t4,2*PI); - cairo_stroke(mwcr); - } - else { - cairo_arc(mwcr,cx,cy,cr,0,2*PI); - cairo_stroke(mwcr); - } - - if (crflag) { - cairo_destroy(mwcr); - mwcr = 0; - } - - gdk_window_thaw_updates(gdkwin); - return; -} - -// duplicate for drawing and tracking a 2nd mouse circle -// (used by paint/clone to track source pixels being cloned) - -void draw_mousecircle2(int cx, int cy, int cr, int Ferase) // 15.08 -{ - int px3, py3, ww3, hh3; - static int ppx3, ppy3, pww3 = 0, phh3; - int crflag = 0; - double R, G, B; - double dx, dy, t1, t2, t3, t4; - - t1 = t2 = t3 = t4 = 0; // stop incorrect gcc warnings - - zthreadcrash(); - - if (! Cdrawin) return; - if (! gdkwin) return; - if (! Cstate || ! Cstate->fpxb) return; // no image - - gdk_window_freeze_updates(gdkwin); // visually smoother - - if (pww3 > 0) { // erase prior - Fpaint4(ppx3,ppy3,pww3,phh3); // refresh from Mpxb - pww3 = 0; - } - - if (Ferase) { - gdk_window_thaw_updates(gdkwin); // erase only was wanted - return; - } - - px3 = cx - cr - 2; // convert pointer center + radius - py3 = cy - cr - 2; // to block position, width, length - ww3 = 2 * cr + 4; - hh3 = 2 * cr + 4; - - ppx3 = px3; // remember pixel block area - ppy3 = py3; // to erase in next call - pww3 = ww3; - phh3 = hh3; - - if (! mwcr) { - mwcr = gdk_cairo_create(gdkwin); // create cairo context if not already - crflag = 1; - } - - cx = cx * Mscale - Morgx + Dorgx; // convert to window coordinates - cy = cy * Mscale - Morgy + Dorgy; - cr = cr * Mscale; - - R = LINE_COLOR[0] / 255.0; // use LINE_COLOR - G = LINE_COLOR[1] / 255.0; - B = LINE_COLOR[2] / 255.0; - - cairo_set_source_rgb(mwcr,R,G,B); - - dx = cx - Dorgx - 4; // omit segments close or beyond - if (dx < 0) dx = 0; // top and left image edges - dy = cy - Dorgy - 4; - if (dy < 0) dy = 0; - - if (dx < cr) { - t1 = PI - acos(dx/cr); - t2 = PI + acos(dx/cr); - } - - if (dy < cr) { - t3 = 3*PI/2 - acos(dy/cr); - t4 = 3*PI/2 + acos(dy/cr); - } - - if (dx < cr && dy < cr) { - cairo_arc(mwcr,cx,cy,cr,0,t1); - cairo_stroke(mwcr); - cairo_arc(mwcr,cx,cy,cr,t4,2*PI); - cairo_stroke(mwcr); - if (t2 < t3) { - cairo_arc(mwcr,cx,cy,cr,t2,t3); - cairo_stroke(mwcr); - } - } - else if (dx < cr) { - cairo_arc(mwcr,cx,cy,cr,0,t1); - cairo_stroke(mwcr); - cairo_arc(mwcr,cx,cy,cr,t2,2*PI); - cairo_stroke(mwcr); - } - else if (dy < cr) { - cairo_arc(mwcr,cx,cy,cr,0,t3); - cairo_stroke(mwcr); - cairo_arc(mwcr,cx,cy,cr,t4,2*PI); - cairo_stroke(mwcr); - } - else { - cairo_arc(mwcr,cx,cy,cr,0,2*PI); - cairo_stroke(mwcr); - } - - if (crflag) { - cairo_destroy(mwcr); - mwcr = 0; - } - - gdk_window_thaw_updates(gdkwin); - return; -} - - -/**************************************************************************/ - -// Draw ellipse around the mouse pointer. -// Prior ellipse will be erased first. -// cx, cy, ww, hh: center and axes of ellipse -// if Ferase, then erase previous ellipse only. - -void draw_mousearc(int cx, int cy, int cww, int chh, int Ferase) -{ - int px3, py3, ww3, hh3; - static int ppx3, ppy3, pww3 = 0, phh3; - int px, py; - int crflag = 0; - float a, b, a2, b2; - float x, y, x2, y2; - - zthreadcrash(); - - if (! Cdrawin) return; - if (! gdkwin) return; - if (! Cstate || ! Cstate->fpxb) return; // no image - - gdk_window_freeze_updates(gdkwin); // visually smoother - - if (pww3 > 0) { // erase prior - Fpaint4(ppx3,ppy3,pww3,phh3); // refresh from Mpxb - pww3 = 0; - } - - if (Ferase) { - gdk_window_thaw_updates(gdkwin); // erase only was wanted - return; - } - - px3 = cx - (cww + 2) / 2; // convert pointer center + radius - py3 = cy - (chh + 2) / 2; // to block position, width, length - ww3 = cww + 2; - hh3 = chh + 2; - - ppx3 = px3; // remember pixel block area - ppy3 = py3; // to erase in next call - pww3 = ww3; - phh3 = hh3; - - if (! mwcr) { - mwcr = gdk_cairo_create(gdkwin); // create cairo context if not already - crflag = 1; - } - - a = cww / 2; // ellipse constants from - b = chh / 2; // enclosing rectangle - a2 = a * a; - b2 = b * b; - - for (y = -b; y < b; y++) // step through y values, omitting - { // curve points covered by x values - y2 = y * y; - x2 = a2 * (1 - y2 / b2); - x = sqrtf(x2); // corresp. x values, + and - - py = y + cy; - px = cx - x + 0.5; - draw_pixel(px,py); // draw 2 points on ellipse - px = cx + x + 0.5; - draw_pixel(px,py); - } - - for (x = -a; x < a; x++) // step through x values, omitting - { // curve points covered by y values - x2 = x * x; - y2 = b2 * (1 - x2 / a2); - y = sqrtf(y2); // corresp. y values, + and - - px = x + cx; - py = cy - y + 0.5; - draw_pixel(px,py); // draw 2 points on ellipse - py = cy + y + 0.5; - draw_pixel(px,py); - } - - if (crflag) { - cairo_destroy(mwcr); - mwcr = 0; - } - - gdk_window_thaw_updates(gdkwin); - 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 = splcurve_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)) -{ - zthreadcrash(); - - int cc = sizeof(spldat); // allocate spc curve data area - spldat * sd = (spldat *) zmalloc(cc); - 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; - float dist, dx, dy; - - zthreadcrash(); - - 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) { // not the last anchor point - dx = sd->apx[spc][ap+1] - mxval; // get distance to next anchor point - if (dx < 0.01) return 0; // x-value not increasing, forbid - dy = sd->apy[spc][ap+1] - myval; - dist = sqrtf(dx * dx + dy * dy); - if (dist < 0.05) return 0; // too close, forbid - } - if (ap > 0) { // not the first anchor point - dx = mxval - sd->apx[spc][ap-1]; // get distance to prior anchor point - if (dx < 0.01) return 0; // x-value not increasing, forbid - dy = myval - sd->apy[spc][ap-1]; - dist = sqrtf(dx * dx + dy * dy); - if (dist < 0.05) return 0; // too close, forbid - } - } - - 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; // nearest curve - ap = minap; // nearest anchor point - } - - if (evtype == GDK_BUTTON_PRESS && button == 3) // right click, remove anchor point - { - if (sqrtf(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 < 0) printz("meaningless reference %d \n",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 (sqrtf(mindist2) < 0.05) // anchor point close enough, - { // move this one to mouse position - if (ap < sd->nap[spc]-1) { // not the last anchor point - dx = sd->apx[spc][ap+1] - mxval; // get distance to next anchor point - if (dx < 0.01) return 0; // x-value not increasing, forbid - dy = sd->apy[spc][ap+1] - myval; - dist = sqrtf(dx * dx + dy * dy); - if (dist < 0.05) return 0; // too close, forbid - } - if (ap > 0) { // not the first anchor point - dx = mxval - sd->apx[spc][ap-1]; // get distance to prior anchor point - if (dx < 0.01) return 0; // x-value not increasing, forbid - dy = myval - sd->apy[spc][ap-1]; - dist = sqrtf(dx * dx + dy * dy); - if (dist < 0.05) return 0; // too close, forbid - } - } - - 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,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 - } - } - - if (evtype == GDK_MOTION_NOTIFY) Fdrag = 1; // remember drag is underway - - 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 - if (sd->drawarea) gtk_widget_queue_draw(sd->drawarea); // redraw graph - if (sd->spcfunc) sd->spcfunc(spc); // call user function - - return 0; -} - - -// add a new anchor point to a curve -// spc: curve number -// px, py: node coordinates in the range 0-1 - -int splcurve_addnode(spldat *sd, int spc, float px, float py) // 15.07 -{ - int ap, kk; - - for (ap = 0; ap < sd->nap[spc]; ap++) // find anchor point with next higher x - if (px <= sd->apx[spc][ap]) break; // (ap may come out 0 or nap) - - if (ap < sd->nap[spc] && sd->apx[spc][ap] - px < 0.05) // disallow < 0.05 from next - return 0; // or prior anchor point - if (ap > 0 && px - 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->apx[spc][ap] = px; // add node coordinates - sd->apy[spc][ap] = py; - - sd->nap[spc]++; // up point count - return 1; -} - - -// 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; - - zthreadcrash(); - - 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, cchar *file) -{ - char *pfile; - int nn, ii, jj; - FILE *fid = 0; - int Nspc, vert[10], nap[10]; - float apx[10][50], apy[10][50]; - - zthreadcrash(); - - if (file) pfile = zstrdup(file); - else pfile = zgetfile(ZTX("load curve from a file"),MWIN,"file",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) // redraw all curves - gtk_widget_queue_draw(sd->drawarea); - - return 1; - -fail: - if (fid) fclose(fid); - printz("curve file is invalid \n"); - return 0; - -fail2: - if (fid) fclose(fid); - printz("curve file has different no. of curves \n"); - return 0; -} - - -// save curve data to a file - -int splcurve_save(spldat *sd, cchar *file) -{ - char *pfile, *pp; - int ii, jj; - FILE *fid; - - if (file) pp = zstrdup(file); - else pp = zgetfile(ZTX("save curve to a file"),MWIN,"save",saved_curves_dirk); - if (! pp) return 0; - - pfile = zstrdup(pp,8); - 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 management - - edit_setup() get E0 if none, E0 > E1 > E3 - edit_cancel() free (E1 E3 ER) - edit_done() E3 > E0, free (E1 ER) add to undo stack - edit_undo() E3 > ER, E1 > E3 - edit_redo() ER > E3 - edit_reset() free ER, E1 > E3 - edit_fullsize() free (E1 E3) E0 > E1 > E3 - -*************************************************************************** - - Setup for a new edit transaction - Create E1 (edit input) and E3 (edit output) pixmaps from - previous edit (E0) or image file (new E0). - - FprevReq 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. gamma) - -***************************************************************************/ - -int edit_setup(editfunc &EF) -{ - int yn, rww, rhh; - int Fpreview; - - if (! curr_file) return 0; // no image file - if (FGW != 'F') return 0; - - if (CEF && CEF->zd) // if pending edit, complete it - zdialog_send_event(CEF->zd,"done"); - if (checkpend("edit")) return 0; // failed (HDR etc.) - - if (URS_pos > maxedits-2) { // undo/redo stack capacity reached - zmessageACK(Mwin,ZTX("Too many edits, please save image")); - return 0; - } - - if (checkpend("busy block")) return 0; // blocking function 15.04 - - free_geomap(); // free map memory for edit usage - - 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 - if (zdsela) 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 (! resource_lock(Fpaintlock)) return 0; // lock window update - - if (URS_pos == 0) save_undo(); // initial image >> undo/redo stack - - Fpreview = 0; // assume no preview - - if (EF.FprevReq && ! Fzoom) // preview requested by edit func. - Fpreview = 1; - - if (EF.Farea == 2 && sa_stat == 3) // not if select area active - Fpreview = 0; - - if (E0pxm->ww * E0pxm->hh < 2000000) // if image is small, don't use preview - Fpreview = 0; - - 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 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 - - CEF = &EF; // set current edit function - CEF->Fmods = 0; // image not modified yet - 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 thread func if any - - resource_unlock(Fpaintlock); // moved down - Fpaintnow(); // update image synchronous - return 1; -} - - -/**************************************************************************/ - -// print error message and caller address if CEF invalid - -int CEF_invalid() -{ - if (CEF) return 0; - printz("CEF invalid \n"); // 15.05 - return 1; -} - - -/**************************************************************************/ - -// process edit cancel -// keep: retain zdialog, mousefunc, curves - -void edit_cancel(int keep) // 15.04 -{ - if (CEF_invalid()) return; - wrapup_thread(9); // tell thread to quit, wait 15.05 - if (CEF_invalid()) return; - if (! resource_lock(Fpaintlock)) return; - - PXM_free(E1pxm); // free E1, E3, ER - PXM_free(E3pxm); - PXM_free(ERpxm); - PXM_free(E9pxm); - - if (! keep) - { - if (CEF->zd == zd_thread) zd_thread = 0; // thread -> zdialog event - if (CEF->zd) zdialog_free(CEF->zd); // kill dialog - if (CEF->mousefunc == mouseCBfunc) freeMouse(); // if my mouse, free mouse - if (CEF->curves) zfree(CEF->curves); // free curves data - } - - CEF = 0; // no current edit func - resource_unlock(Fpaintlock); - Fpaintnow(); // update image synchronous - return; -} - - -/**************************************************************************/ - -// process edit done -// keep: retain zdialog, mousefunc, curves - -void edit_done(int keep) // 15.04 -{ - if (CEF_invalid()) return; - wrapup_thread(8); // tell thread to finish, wait 15.05 - if (CEF_invalid()) return; - if (! resource_lock(Fpaintlock)) return; - - 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); - PXM_free(E9pxm); - 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); - PXM_free(E9pxm); - } - - if (! keep) - { - if (CEF->zd == zd_thread) zd_thread = 0; // thread -> zdialog event - if (CEF->zd) zdialog_free(CEF->zd); // kill dialog - if (CEF->mousefunc == mouseCBfunc) freeMouse(); // if my mouse, free mouse - if (CEF->curves) zfree(CEF->curves); // free curves data - } - - CEF = 0; // no current edit func - resource_unlock(Fpaintlock); - Fpaintnow(); // update image synchronous - return; -} - - -/**************************************************************************/ - -// Convert from preview mode (window-size pixmaps) to full-size pixmaps. -// Called by the edit function prior to edit_done(). - -void edit_fullsize() // 15.04 -{ - if (CEF_invalid()) return; - wait_thread_idle(); // wait for thread idle - if (CEF_invalid()) return; - if (! CEF->Fpreview) return; // FprevReq ignored if small image - if (! resource_lock(Fpaintlock)) return; // 15.02 - PXM_free(E1pxm); // free preview pixmaps - PXM_free(E3pxm); - E1pxm = PXM_copy(E0pxm); // E0 >> E1, full size image - E3pxm = PXM_copy(E1pxm); // E1 >> E3 - PXB_free(Cstate->fpxb); - Cstate->fpxb = PXM_PXB_copy(E3pxm); // update Fpxb from image E3 - Fzoom = 0; - resource_unlock(Fpaintlock); - CEF->Fpreview = 0; - return; -} - - -// edit undo, redo, reset functions -// these apply within an active edit function - -void edit_undo() -{ - F1_help_topic = "undo_redo"; - - if (CEF_invalid()) return; - wait_thread_idle(); // wait for thread idle - if (CEF_invalid()) return; - if (! CEF->Fmods) return; // not modified - if (! resource_lock(Fpaintlock)) return; // 15.02 - - PXM_free(ERpxm); // E3 >> redo copy - ERpxm = E3pxm; - E3pxm = PXM_copy(E1pxm); // E1 >> E3 - CEF->Fmods = 0; // reset image modified status - resource_unlock(Fpaintlock); - Fpaintnow(); // update image synchronous - return; -} - - -void edit_redo() -{ - F1_help_topic = "undo_redo"; - - if (CEF_invalid()) return; - wait_thread_idle(); // wait for thread idle - if (CEF_invalid()) return; - if (! ERpxm) return; // no prior undo - if (! resource_lock(Fpaintlock)) return; // 15.02 - - PXM_free(E3pxm); // redo copy >> E3 - E3pxm = ERpxm; - ERpxm = 0; - CEF->Fmods = 1; // image modified - resource_unlock(Fpaintlock); - Fpaintnow(); // update image synchronous - return; -} - - -void edit_reset() // reset E3 to E1 status -{ - if (CEF_invalid()) return; - wait_thread_idle(); // wait for thread idle - if (CEF_invalid()) return; - if (! CEF->Fmods) return; // not modified - if (! resource_lock(Fpaintlock)) return; // 15.02 - - PXM_free(ERpxm); // delete redo copy - PXM_free(E3pxm); - E3pxm = PXM_copy(E1pxm); // E1 >> E3 - CEF->Fmods = 0; // reset image modified status - resource_unlock(Fpaintlock); - Fpaintnow(); // update image synchronous - return; -} - - -/**************************************************************************/ - -// Load/save all zdialog widgets data from/to a file. -// Funcname corresponds to /home//.appname/funcname -// where zdialog data is saved for the respective function. -// Supply spldat for curve data if edit curves are used. -// Freload = 1 to reload prior data without user input. - -void edit_load_widgets(editfunc *EF, int Freload) -{ - using namespace zfuncs; - - static char *filename = 0; - cchar *mess = ZTX("Load settings from file"); - - FILE *fid; - cchar *funcname; - zdialog *zd; - spldat *sd; - char dirname[200], buff[1000]; - char *wname, *wdata, wdata2[1000]; - char *pp, *pp1, *pp2; - int ii, jj, kk, cc1, cc2; - int Nspc, vert, nap, err; - float apx, apy; - - funcname = EF->funcname; - zd = EF->zd; - sd = EF->curves; - - if (! Freload || ! filename) { // get filename from user unless Freload - if (filename) zfree(filename); - snprintf(dirname,200,"%s/%s",get_zuserdir(),funcname); // /home//.appname/funcname - filename = zgetfile(mess,MWIN,"file",dirname,0); // open data file - if (! filename) return; // user cancel - } - - fid = fopen(filename,"r"); - if (! fid) { - zmessageACK(Mwin,"%s \n %s",filename,strerror(errno)); - return; - } - - for (ii = 0; ii < zdmaxwidgets; ii++) // read widget data recs - { - pp = fgets_trim(buff,1000,fid,1); - if (! pp) break; - if (strmatch(pp,"curves")) break; // start of curves data - pp1 = pp; - pp2 = strstr(pp1," =="); - if (! pp2) continue; // widget has no data - cc1 = pp2 - pp1; - if (cc1 > 100) continue; - pp1[cc1] = 0; - wname = pp1; // widget name - pp2 += 3; - if (*pp2 == ' ') pp2++; - wdata = pp2; // widget data - cc2 = strlen(wdata); - if (cc2 < 1) wdata = (char *) ""; - if (cc2 > 300) continue; - repl_1str(wdata,wdata2,"\\n","\n"); // replace "\n" with newline chars. - zdialog_put_data(zd,wname,wdata2); - } - - if (sd) // read curve data - { - pp = fgets_trim(buff,200,fid,1); // curve count - if (! pp) goto baddata; - Nspc = atoi(pp); - if (Nspc != sd->Nspc) goto baddata; - - for (ii = 0; ii < Nspc; ii++) // loop curves - { - pp = fgets_trim(buff,1000,fid,1); // vert flag, node count - if (! pp) goto baddata; - pp = (char *) strField(buff,' ',1); // vert flag, 0 or 1 - if (! pp) goto baddata; - vert = atoi(pp); - if (vert > 1) goto baddata; - sd->vert[ii] = vert; - pp = (char *) strField(buff,' ',2); // node count - if (! pp) goto baddata; - nap = atoi(pp); - if (nap < 2 || nap > 30) goto baddata; - sd->nap[ii] = nap; - - for (jj = 0; jj < nap; jj++) // loop nodes - { - kk = 2 * jj + 3; - pp = (char *) strField(buff," /",kk); // get x-value with '/' delimiter - if (! pp) goto baddata; - err = convSF(pp,apx,0.0,1.0,0); - if (err > 1) goto baddata; - pp = (char *) strField(buff," /",kk+1); // get y-value with ' ' delimiter - if (! pp) goto baddata; - err = convSF(pp,apy,0.0,1.0,0); - if (err > 1) goto baddata; - sd->apx[ii][jj] = apx; - sd->apy[ii][jj] = apy; - } - - splcurve_generate(sd,ii); - } - } - - fclose(fid); - return; - -baddata: - zmessageACK(Mwin,ZTX("file data does not fit dialog")); - return; -} - - -void edit_save_widgets(editfunc *EF) -{ - using namespace zfuncs; - - cchar *funcname; - cchar *title = ZTX("Save settings to a file"); - zdialog *zd; - spldat *sd; - FILE *fid; - char *filename, dirname[200]; - char *wtype, *wname, *wdata, wdata2[1000]; - int ii, jj, cc; - int Nspc, vert, nap; - float apx, apy; - - cchar *editwidgets = "entry edit text togbutt check combo comboE " - "radio spin hscale vscale colorbutt"; - - funcname = EF->funcname; - zd = EF->zd; - sd = EF->curves; - - snprintf(dirname,200,"%s/%s",get_zuserdir(),funcname); // /home//.appname/funcname - filename = zgetfile(title,MWIN,"save",dirname,0); // open data file - if (! filename) return; // user cancel - - fid = fopen(filename,"w"); - zfree(filename); - if (! fid) { - zmessageACK(Mwin,"%s \n %s",filename,strerror(errno)); - return; - } - - for (ii = 0; ii < zdmaxwidgets; ii++) - { - wtype = (char *) zd->widget[ii].type; - if (! wtype) break; - if (! strstr(editwidgets,wtype)) continue; - wname = (char *) zd->widget[ii].name; // write widget data recs: - wdata = zd->widget[ii].data; // widgetname == widgetdata - if (! wdata) continue; - cc = strlen(wdata); - if (cc > 900) continue; - repl_1str(wdata,wdata2,"\n","\\n"); - fprintf(fid,"%s == %s \n",wname,wdata); - } - - if (sd) // write curve data - { - fprintf(fid,"curves\n"); - - Nspc = sd->Nspc; // curve count - fprintf(fid,"%d \n",Nspc); - - for (ii = 0; ii < Nspc; ii++) // loop curves - { - vert = sd->vert[ii]; - nap = sd->nap[ii]; - fprintf(fid,"%d %d ",vert,nap); // write vert flag and node count - - for (jj = 0; jj < nap; jj++) // loop nodes - { - apx = sd->apx[ii][jj]; - apy = sd->apy[ii][jj]; - fprintf(fid,"%.3f/%.3f ",apx,apy); // write x-value / y-value pairs - } - - fprintf(fid,"\n"); - } - } - - fclose(fid); - return; -} - - -/************************************************************************** - undo / redo menu buttons -***************************************************************************/ - -// [undo/redo] menu function -// Call m_undo() / m_redo() if left / right mouse click on menu. -// If A key is pressed, undo or redo all edits. -// If middle mouse button is clicked, pop-up a list of all edit steps -// and choose a step to go back to. - -void m_undo_redo(GtkWidget *, cchar *) -{ - void undo_redo_choice(GtkWidget *, cchar *menu); - - GtkWidget *popmenu; - int button = zfuncs::vmenuclickbutton; - char menuitem[40], flag; - - F1_help_topic = "undo_redo"; - - if (button == 1) { - if (KBkey == GDK_KEY_a) undo_all(); - else m_undo(0,0); - } - - if (button == 2) // go back to previous edit step 15.07 - { - if (URS_max == 0) return; - popmenu = create_popmenu(); - for (int ii = 0; ii < 30; ii++) { // insert all edit steps - if (ii > URS_max) break; - if (ii == URS_pos) flag = '*'; // flag step matching current image - else flag = ' '; - snprintf(menuitem,40,"%d %s %c",ii,URS_funcs[ii],flag); - add_popmenu_item(popmenu,menuitem,undo_redo_choice,(char *) &Nval[ii],0); - } - popup_menu(Mwin,popmenu); - } - - if (button == 3) { - if (KBkey == GDK_KEY_a) redo_all(); - else m_redo(0,0); - } - - return; -} - - -// popup menu function - -void undo_redo_choice(GtkWidget *, cchar *menu) // 15.07 -{ - int nn = *((int *) menu); - if (nn < 0 || nn > URS_max) return; - URS_pos = nn; - load_undo(); - return; -} - - -// [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 - 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 - URS_pos++; - load_undo(); - return; -} - - -// undo all edits of the current image -// (discard modifications) - -void undo_all() -{ - if (CEF) return; // not if edit active - if (URS_pos == 0) return; - - URS_pos = 0; // original image - load_undo(); - return; -} - - -// redo all edits of the current image -// (reinstate all modifications) - -void redo_all() -{ - if (CEF) return; // not if edit active - if (URS_pos == URS_max) return; - - URS_pos = URS_max;; // image with last edit applied - 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; - int ww, hh, nc; - - ww = E0pxm->ww; - hh = E0pxm->hh; - nc = E0pxm->nc; - - pp = strstr(URS_filename,"undo_"); // get undo/redo stack filename to use - if (! pp) zappcrash("undo/redo stack corrupted"); - snprintf(pp+5,3,"%02d",URS_pos); - - fid = open(URS_filename,O_WRONLY|O_CREAT|O_TRUNC,0640); // create or overwrite - if (! fid) goto writefail; - - snprintf(buff,24,"fotoxx %05d %05d %d",ww,hh,nc); // write header - cc = write(fid,buff,20); - if (cc != 20) goto writefail; - - cc = ww * hh * nc * sizeof(float); // write ww * hh RGB(A) pixels 15.08 - cc2 = write(fid,E0pxm->pixels,cc); - if (cc2 != cc) goto writefail; - close(fid); - - if (URS_pos == 0) { // stack posn. 0 = original image - strcpy(URS_funcs[0],"original"); // function name for original image - URS_saved[0] = 1; // original image already on disk - } - else { // stack position - if (CEF_invalid()) return; // must have an edit function - strncpy0(URS_funcs[URS_pos],CEF->funcname,32); // edit function name - URS_saved[URS_pos] = 0; // not yet saved to disk - } - - return; - -writefail: - zmessageACK(Mwin,"undo/redo stack write failure: %d \n" - "(may be out of disk space)",errno); - shell_quiet("rm -R %s",tempdir); - exit(errno); -} - - -// Load E0 from undo/redo file stack -// stack position = URS_pos - -void load_undo() -{ - char *pp, buff[24]; - int fid, nn, ww, hh, nc, cc, cc2; - - if (! resource_lock(Fpaintlock)) return; // 15.02 - - pp = strstr(URS_filename,"undo_"); - if (! pp) zappcrash("undo/redo stack corrupted 1"); - snprintf(pp+5,3,"%02d",URS_pos); - - fid = open(URS_filename,O_RDONLY); - if (! fid) zappcrash("undo/redo stack corrupted 2"); - - cc = read(fid,buff,20); - if (cc != 20) zappcrash("undo/redo stack corrupted 3"); - nn = sscanf(buff,"fotoxx %d %d %d",&ww,&hh,&nc); - if (nn != 3) zappcrash("undo/redo stack corrupted 4"); - - PXM_free(E0pxm); - E0pxm = PXM_make(ww,hh,nc); // 15.08 - cc = ww * hh * nc * sizeof(float); - cc2 = read(fid,E0pxm->pixels,cc); - if (cc2 != cc) zappcrash("undo/redo stack corrupted 5"); - close(fid); - - resource_unlock(Fpaintlock); - - sa_validate(); // delete area if invalid - Fpaintnow(); // update image synchronous - return; -} - - -/**************************************************************************/ - -// check for busy or pending conditions and message the user -// returns 1 if busy or pending condition -// 0 if nothing is pending or user decides to discard mods -// conditions: -// edit edit function is active (CEF not null) -// mods current file has unsaved modifications -// busy function is still running // 15.04 -// block edit function mutex flag // 15.04 -// all check both the above -// quiet suppress user message - -int checkpend(cchar *list) -{ - int edit, mods, busy, block, all, quiet, pend, choice; - cchar *modmess = ZTX("This action will discard changes to current image"); - cchar *activemess = ZTX("prior function still active"); - cchar *blockmess = ZTX("prior function still active"); - cchar *keep = ZTX("Keep"); - cchar *discard = ZTX("Discard"); - - edit = mods = busy = block = all = quiet = pend = 0; - - if (strstr(list,"edit")) edit = 1; - if (strstr(list,"mods")) mods = 1; - if (strstr(list,"busy")) busy = 1; - if (strstr(list,"block")) block = 1; - if (strstr(list,"all")) all = 1; - if (strstr(list,"quiet")) quiet = 1; - - if (all) edit = mods = busy = block = 1; - - if ((edit && CEF) || (busy && Fbusy)) { - pend = 1; - if (! quiet) zmessageACK(Mwin,activemess); - } - - if (! pend && (block && Fblock)) { - pend = 1; - if (! quiet) zmessageACK(Mwin,blockmess); - } - - if (! pend && mods) { - if (CEF && CEF->Fmods && ! CEF->Fsaved) pend = 1; // active edits unsaved - if (URS_pos > 0 && URS_saved[URS_pos] == 0) pend = 1; // completed edits unsaved - if (Fmetamod || Fgtagmod) pend = 1; // metadata edits unsaved 15.03 - if (pend && ! quiet) { - choice = zdialog_choose(Mwin,modmess,keep,discard,null); // ask user - if (choice == 2) { // choice is discard - if (CEF && CEF->zd) - zdialog_send_event(CEF->zd,"cancel"); - if (URS_pos > 0) undo_all(); // undo prior edits - Fmetamod = Fgtagmod = 0; // discard metadata edits - pend = 0; - } - else m_viewmode(0,"F"); // keep - back to current image - } - } - - return pend; // 1 if something pending -} - - -/**************************************************************************/ - -// zdialog mouse capture and release - -void takeMouse(mcbFunc func, GdkCursor *cursor) // capture mouse for dialog -{ - zthreadcrash(); - - if (! Cdrawin) return; - if (! gdkwin) return; - freeMouse(); - mouseCBfunc = func; - Mcapture = 1; - gdk_window_set_cursor(gdkwin,cursor); - return; -} - -void freeMouse() // free mouse for main window -{ - zthreadcrash(); - - if (! Cdrawin) return; - if (! gdkwin) return; - if (! Mcapture) return; - mouseCBfunc = 0; - Mcapture = 0; - draw_mousearc(0,0,0,0,1); // remove mouse circle - gdk_window_set_cursor(gdkwin,0); // set normal cursor - return; -} - - -/************************************************************************** - - functions to manage working threads - - 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, initial status - 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 - -***************************************************************************/ - -// 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_invalid()) return; - if (CEF->thread_status > 0) CEF->thread_pend++; - return; -} - - -// wait for edit thread to complete pending work and become idle - -void wait_thread_idle() -{ - if (CEF_invalid()) return; - if (! CEF->thread_status) return; - if (CEF->thread_pend == CEF->thread_done) return; - while (CEF->thread_status && CEF->thread_pend > CEF->thread_done) { - zmainloop(); // 15.04 - zsleep(0.01); - if (CEF_invalid()) return; - } - 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) -{ - if (CEF_invalid()) return; - if (! CEF->thread_status) return; - CEF->thread_command = command; // tell thread to quit or finish - while (CEF->thread_status > 0) { // wait for thread to finish - zmainloop(); // 15.04 - zsleep(0.01); - if (CEF_invalid()) return; - } - return; -} - - -// called only from edit threads -// idle loop - wait for work request or exit command - -void thread_idle_loop() -{ - if (CEF_invalid()) thread_exit(); - 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 - if (CEF_invalid()) pthread_exit(0); - 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 worker 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(int block) // wait for all worker threads done -{ // may be called from thread or non-thread - if (CEF) { - while (wthreads_busy) { - zsleep(0.003); - if (block) continue; - zmainloop(); - } - if (CEF_invalid()) return; - } - else { - while (wthreads_busy) { - zsleep(0.003); - if (block) continue; - zmainloop(); - } - } - return; -} - - -/************************************************************************** - other support functions -***************************************************************************/ - -// table for loading and saving adjustable parameters between sessions - -typedef struct { - char name[20]; - char type[12]; - int count; - void *location; -} param; - -#define Nparms 33 -param paramTab[Nparms] = { -// name type count location -{ "fotoxx release", "char", 1, &Prelease }, -{ "first time", "int", 1, &Ffirsttime }, -{ "window geometry", "int", 4, &mwgeom }, -{ "thumbnail size", "int", 1, &navi::thumbsize }, -{ "menu style", "char", 1, &menu_style }, -{ "icon size", "int", 1, &iconsize }, -{ "drag option", "int", 1, &Fdragopt }, -{ "zoom count", "int", 1, &zoomcount }, -{ "show hidden", "int", 1, &Fshowhidden }, -{ "last version", "int", 1, &Flastversion }, -{ "startup display", "char", 1, &startdisplay }, -{ "start image file", "char", 1, &startfile }, -{ "start directory", "char", 1, &startdirk }, -{ "last curr file", "char", 1, &last_curr_file }, -{ "last galleryname", "char", 1, &last_galleryname }, -{ "last gallerytype", "int", 1, &last_gallerytype }, -{ "grid base", "int", 10, &gridsettings[0] }, -{ "grid trim/rotate", "int", 10, &gridsettings[1] }, -{ "grid unbend", "int", 10, &gridsettings[2] }, -{ "grid warp curved", "int", 10, &gridsettings[3] }, -{ "grid warp linear", "int", 10, &gridsettings[4] }, -{ "grid warp affine", "int", 10, &gridsettings[5] }, -{ "RAW command", "char", 1, &DCrawcommand }, -{ "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 }, -{ "thumb file size", "int", 1, &thumbfilesize }, -{ "lens mm", "float", 1, &lens_mm }, -{ "cycledesktop_album", "char", 1, &cycledesktop_album }, -{ "cycledesktop_index", "int", 1, &cycledesktop_index } }; - -// save parameters to file /.../.fotoxx/parameters - -void save_params() -{ - FILE *fid; - char buff[1050], text[1000]; // limit for character data cc - char *name, *type; - int count; - void *location; - char **charloc; - int *intloc; - float *floatloc; - - last_curr_file = last_galleryname = 0; // save curr_file and gallery poop 15.07 - last_gallerytype = 0; // for next session startup - if (curr_file && *curr_file == '/') - last_curr_file = zstrdup(curr_file); - if (navi::galleryname) { - last_galleryname = zstrdup(navi::galleryname); - last_gallerytype = navi::gallerytype; - } - - 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 (strmatch(type,"char")) { - if (! *charloc) break; // missing, discontinue this parameter - repl_1str(*charloc++,text,"\n","\\n"); // replace newlines with "\n" - fprintf(fid," \"%s\"",text); - } - if (strmatch(type,"int")) - fprintf(fid," \"%d\"",*intloc++); - - if (strmatch(type,"float")) - fprintf(fid," \"%.2f\"",*floatloc++); - } - - fprintf(fid,"\n"); // write EOR - } - - fprintf(fid,"\n"); - fclose(fid); // close file - - return; -} - - -// load parameters from file /.../.fotoxx/parameters - -void load_params() -{ - FILE *fid; - int ii, err, 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; - - snprintf(buff,199,"%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 (! strmatch(name,paramTab[ii].name)) continue; // parm name - if (! strmatch(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 (strmatch(type,"char")) { - repl_1str(pp,text,"\\n","\n"); // replace "\n" with real newlines - *charloc++ = zstrdup(text); - } - - if (strmatch(type,"int")) { - err = convSI(pp,Idata); - if (err) continue; - *intloc++ = Idata; - } - - if (strmatch(type,"float")) { - err = convSF(pp,Fdata); - if (err) continue; - *floatloc++ = Fdata; - } - } - } - - fclose(fid); - - for (ii = 0; ii < Nparms; ii++) // set any null strings to "" - { - if (! strmatch(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] = zstrdup("",20); - } - - zoomratio = pow( 2.0, 1.0 / zoomcount); // set zoom ratio from zoom count - return; -} - - -/**************************************************************************/ - -// free all resources associated with the current image file - -void free_resources(int fkeepundo) -{ - if (! resource_lock(Fpaintlock)) return; - - if (! fkeepundo) - shell_quiet("rm -f %s/undo_*",tempdir); // remove undo/redo files - - if (Fshutdown) return; // stop here if shutdown mode - - URS_pos = URS_max = 0; // reset undo/redo stack - Fmetamod = Fgtagmod = 0; // no unsaved metadata changes 15.03 - sa_unselect(); // unselect select area - - draw_toplines(2); // no toplines - erase_topcircles(); // no topcircles - Ntoptext = 0; // no toptext - Fbusy_goal = 0; - - if (curr_file) { - if (zdsela) zdialog_free(zdsela); // kill select area dialog if active - freeMouse(); // free mouse - zfree(curr_file); // free image file - curr_file = 0; - *paneltext = 0; - } - - gtk_window_set_title(MWIN,Frelease); // sparse title 15.03 - - PXB_free(Fpxb); - PXM_free(E0pxm); - PXM_free(E1pxm); - PXM_free(E3pxm); - PXM_free(ERpxm); - PXM_free(E8pxm); - PXM_free(E9pxm); - - resource_unlock(Fpaintlock); - return; -} - - -/**************************************************************************/ - -// Get a virtual pixel at location (px,py) (real) in a PXB pixmap. -// Get the overlapping integer pixels and build a composite. -// Output vpix is uint8[4] supplied by caller. -// Returns 1 if OK, 0 if px/py out of limits for pxm. - -int vpixel(PXB *pxb, float px, float py, uint8 *vpix) -{ - int ww, hh, rs, nc, ac, px0, py0; - uint8 *pix0, *pix1, *pix2, *pix3; - float f0, f1, f2, f3; - - ww = pxb->ww; - hh = pxb->hh; - rs = pxb->rs; - nc = pxb->nc; // 15.08 - ac = nc - 3; - - px0 = px; // integer pixel containing (px,py) - py0 = py; - - if (px0 < 0 || py0 < 0) return 0; - if (px0 > ww-2 || py0 > hh-2) return 0; - - 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); - - pix0 = PXBpix(pxb,px0,py0); // pixel (px0,py0) - pix1 = pix0 + rs; // (px0,py0+1) - pix2 = pix0 + nc; // (px0+1,py0) 15.08 - pix3 = pix1 + nc; // (px0+1,py0+1) - - vpix[0] = f0 * pix0[0] + f1 * pix1[0] + f2 * pix2[0] + f3 * pix3[0]; // sum the weighted inputs - vpix[1] = f0 * pix0[1] + f1 * pix1[1] + f2 * pix2[1] + f3 * pix3[1]; - vpix[2] = f0 * pix0[2] + f1 * pix1[2] + f2 * pix2[2] + f3 * pix3[2]; - if (ac) vpix[3] = f0 * pix0[3] + f1 * pix1[3] + f2 * pix2[3] + f3 * pix3[3]; - - return 1; -} - - -// Get a virtual pixel at location (px,py) (real) in a PXM pixmap. -// Get the overlapping float pixels and build a composite. -// Output vpix is float[4] supplied by caller. -// Returns 1 if OK, 0 if px/py out of limits for pxm. - -int vpixel(PXM *pxm, float px, float py, float *vpix) -{ - int ww, hh, nc, ac, px0, py0; - float *pix0, *pix1, *pix2, *pix3; - float f0, f1, f2, f3; - - ww = pxm->ww; - hh = pxm->hh; - nc = pxm->nc; // 15.08 - ac = nc - 3; - - 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; - - 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); - - pix0 = PXMpix(pxm,px0,py0); // pixel (px0,py0) - pix1 = pix0 + ww * nc; // (px0,py0+1) - pix2 = pix0 + nc; // (px0+1,py0) - pix3 = pix1 + nc; // (px0+1,py0+1) - - vpix[0] = f0 * pix0[0] + f1 * pix1[0] + f2 * pix2[0] + f3 * pix3[0]; // sum the weighted inputs - vpix[1] = f0 * pix0[1] + f1 * pix1[1] + f2 * pix2[1] + f3 * pix3[1]; - vpix[2] = f0 * pix0[2] + f1 * pix1[2] + f2 * pix2[2] + f3 * pix3[2]; - if (ac) vpix[3] = f0 * pix0[3] + f1 * pix1[3] + f2 * pix2[3] + f3 * pix3[3]; - - if (vpix[2] < 0.5) vpix[2] = 0; // edge or voided pixel - if (! vpix[2]) 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; -} - - -/************************************************************************** - PXM pixmap functions - RGB float pixel map - pixel RGB values may range from 0.0 to 255.99 -***************************************************************************/ - -// audit the contents of a PXM pixmap - -void PXM_audit(PXM *pxm) -{ - int px, py; - float bright, *pix; - - for (py = 0; py < pxm->hh; py++) - for (px = 0; px < pxm->ww; px++) - { - pix = PXMpix(pxm,px,py); - bright = pixbright(pix); - if (int(bright) < 0 || int(bright) > 255) - zappcrash("PXM_audit: px/py %d/%d RGB %.2f %.2f %.2f bright %.2f %d \n", - px,py,pix[0],pix[1],pix[2],bright,int(bright)); - } - return; -} - - -// initialize PXM pixmap - allocate memory - -PXM * PXM_make(int ww, int hh, int nc) // 15.08 -{ - uint cc; - - if (ww < 5 || hh < 5) { // impose reasonableness limits - zmessageACK(Mwin,"image too small: %d %d",ww,hh); - return 0; - } - - cc = ww * hh; - if (ww > wwhh_limit || hh > wwhh_limit || cc > 178000000) { // avoid image > 2 GB memory 15.03 - zmessageACK(Mwin,"image too big: %d %d",ww,hh); - exit(12); - } - - PXM *pxm = (PXM *) zmalloc(sizeof(PXM)); - strcpy(pxm->wmi,"pxmpix"); - pxm->ww = ww; - pxm->hh = hh; - pxm->nc = nc; // nc = 3/4 for no/alpha channel 15.08 - - cc = cc * nc * sizeof(float); // float[nc] per pixel - pxm->pixels = (float *) zmalloc(cc); - return pxm; -} - - -// free PXM pixmap - -void PXM_free(PXM *&pxm) -{ - if (! pxm) return; - if (! strmatch(pxm->wmi,"pxmpix")) - zappcrash("PXM_free(), bad PXM"); - strcpy(pxm->wmi,"xxxxxx"); - zfree(pxm->pixels); - zfree(pxm); - pxm = 0; - return; -} - - -// add an alpha channel to a PXM pixmap - -void PXM_addalpha(PXM *pxm) // 15.08 -{ - int ww, hh, nc1, nc2, cc, ii; - float *pixels1, *pixels2, *pix1, *pix2; - - ww = pxm->ww; - hh = pxm->hh; - nc1 = pxm->nc; - if (nc1 > 3) return; - pixels1 = pxm->pixels; - - nc2 = nc1 + 1; - cc = ww * hh * nc2 * sizeof(float); - pixels2 = (float *) zmalloc(cc); - - cc = nc1 * sizeof(float); - pix1 = pixels1; - pix2 = pixels2; - - for (ii = 0; ii < ww * hh; ii++) { - memcpy(pix2,pix1,cc); - pix2[nc1] = 255.0; - pix1 += nc1; - pix2 += nc2; - } - - zfree(pixels1); - pxm->nc = nc2; - pxm->pixels = pixels2; - return; -} - - -// create a copy of a PXM pixmap - -PXM * PXM_copy(PXM *pxm1) -{ - int cc, nc; - PXM *pxm2; - - nc = pxm1->nc; - cc = pxm1->ww * pxm1->hh * nc * sizeof(float); - - pxm2 = PXM_make(pxm1->ww,pxm1->hh,nc); // 15.08 - memcpy(pxm2->pixels,pxm1->pixels,cc); - return pxm2; -} - - -// create a copy of a PXM rectangular 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; - int nc, pcc; - - nc = pxm1->nc; // 15.08 - pcc = nc * sizeof(float); - - pxm2 = PXM_make(ww2,hh2,nc); - - 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++) - { - memcpy(pix2,pix1,pcc); - pix1 += nc; - pix2 += nc; - } - } - - 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 * pxm->nc; // 15.08 - pixel0 = pxm->pixels + 2; - pixelN = pixel0 + size; - - for (pixel = pixel0; pixel < pixelN; pixel += pxm->nc) - 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 *ppix1, *ppix2; - int ww1, hh1, ww2, hh2, nc; - int *px1L, *py1L; - float *pxmap, *pymap; - int maxmapx, 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; - nc = pxm1->nc; // 15.08 - ppix1 = pxm1->pixels; - - pxm2 = PXM_make(ww,hh,nc); // output PXM - if (! pxm2) return 0; - ww2 = ww; - hh2 = hh; - ppix2 = pxm2->pixels; - - memset(ppix2, 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)); // maps overlap of < maxmap input - pxmap = (float *) zmalloc(ww2 * maxmapx * sizeof(float)); // pixels per output pixel - - py1L = (int *) zmalloc(hh2 * sizeof(int)); // maps first (lowest) input pixel - px1L = (int *) zmalloc(ww2 * sizeof(int)); // 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,&Nval[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 chan[6]; - int pcc = nc * sizeof(float); - - 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 - - memset(chan,0,pcc); // 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 = ppix1 + (py1 * ww1 + px1) * nc; - for (ii = 0; ii < nc; ii++) - chan[ii] += pixel1[ii] * ftot; // add input pixel * overlap - } - } - - pixel2 = ppix2 + (py2 * ww2 + px2) * nc; // save output pixel 15.08 - memcpy(pixel2,chan,pcc); - } - } - - 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 *ppix1, *ppix2; - int ww1, hh1, ww2, hh2, nc; - float angle; -} - -PXM * PXM_rotate(PXM *pxm1, float anglex) -{ - using namespace pxmrotate; - - PXM *PXM_rotate2(PXM *pxm, int angle); - void *PXM_rotate_thread(void *); - - int ii; - PXM *pxm2; - - ww1 = pxm1->ww; // input PXM - hh1 = pxm1->hh; - nc = pxm1->nc; // 15.08 - ppix1 = pxm1->pixels; - angle = anglex; - - while (angle < -180) angle += 360; // normalize, -180 to +180 - while (angle > 180) angle -= 360; - - if (angle >= -180.0 && angle < -179.99) // use lossless version for angles - return PXM_rotate2(pxm1,180); // of -180, -90, 0, 90, 180 - if (angle > -90.01 && angle < -89.99) - return PXM_rotate2(pxm1,-90); - if (angle > -0.01 && angle < 0.01) - return PXM_copy(pxm1); - if (angle > 89.99 && angle < 90.01) - return PXM_rotate2(pxm1,90); - if (angle > 179.99 && angle <= 180.0) - return PXM_rotate2(pxm1,180); - - angle = angle * PI / 180; // radians, -PI to +PI - - 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,nc); // output PXM - ppix2 = pxm2->pixels; - - for (ii = 0; ii < NWT; ii++) // start worker threads - start_detached_thread(PXM_rotate_thread,&Nval[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, chan[6]; - float a, b, ww15, hh15, ww25, hh25; - int pcc = nc * sizeof(float); // 15.08 - - ww15 = 0.5 * ww1; - hh15 = 0.5 * hh1; - ww25 = 0.5 * ww2; - hh25 = 0.5 * hh2; - - a = cosf(angle); - b = sinf(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 = -b * (px2 - ww25) + a * (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 - pix2 = ppix2 + (py2 * ww2 + px2) * nc; // output is black - memset(pix2,0,pcc); - continue; - } - - pix0 = ppix1 + (py0 * ww1 + px0) * nc; // 4 input pixels based at (px0,py0) - pix1 = pix0 + ww1 * nc; - pix2 = pix0 + nc; - pix3 = pix1 + nc; - - 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); - - for (int ii = 0; ii < nc; ii++) // sum the weighted inputs - chan[ii] = f0 * pix0[ii] + f1 * pix1[ii] - + f2 * pix2[ii] + f3 * pix3[ii]; - - pix2 = ppix2 + (py2 * ww2 + px2) * nc; // output pixel - memcpy(pix2,chan,pcc); - } - - zadd_locked(busy,-1); - return 0; -} - -PXM * PXM_rotate2(PXM *pxm1, int angle) // angle = -90, 90, 180 -{ - using namespace pxmrotate; - - int px1, py1, px2, py2, nc, pcc; - float *pix1, *pix2; - PXM *pxm2; - - if (angle == 0) return PXM_copy(pxm1); - - ww1 = pxm1->ww; // input PXM - hh1 = pxm1->hh; - nc = pxm1->nc; // 15.08 - pcc = nc * sizeof(float); - - if (angle == -90) { - ww2 = hh1; - hh2 = ww1; - } - - else if (angle == 90) { - ww2 = hh1; - hh2 = ww1; - } - - else if (angle == 180) { - ww2 = ww1; - hh2 = hh1; - } - - else zappcrash("PXM_rotate2() bad angle %d",angle); - - pxm2 = PXM_make(ww2,hh2,nc); // output PXM - ppix2 = pxm2->pixels; - - for (py1 = 0; py1 < hh1; py1++) // loop all input pixels - for (px1 = 0; px1 < ww1; px1++) - { - if (angle == -90) { - px2 = py1; - py2 = hh2 - px1 - 1; - } - - else if (angle == 90) { - px2 = ww2 - py1 - 1; - py2 = px1; - } - - else /* angle = 180 */ { - px2 = ww2 - px1 - 1; - py2 = hh2 - py1 - 1; - } - - pix1 = ppix1 + (py1 * ww1 + px1) * nc; - pix2 = ppix2 + (py2 * ww2 + px2) * nc; - memcpy(pix2,pix1,pcc); - } - - return pxm2; -} - - -/************************************************************************** - PXB pixmap functions - RGB uint8 pixel map and PIXBUF wrapper -***************************************************************************/ - -// Create PXB pixmap with pixels cleared to zero - -PXB * PXB_make(int ww, int hh, int ac) // 15.08 -{ - zthreadcrash(); - - PXB *pxb = (PXB *) zmalloc(sizeof(PXB)); - strcpy(pxb->wmi,"pxbpix"); - pxb->pixbuf = gdk_pixbuf_new(GDKRGB,ac,8,ww,hh); - if (! pxb->pixbuf) { - zmessageACK(Mwin,"memory allocation failure"); - exit(12); - } - pxb->pixels = gdk_pixbuf_get_pixels(pxb->pixbuf); - pxb->ww = ww; - pxb->hh = hh; - pxb->rs = gdk_pixbuf_get_rowstride(pxb->pixbuf); - pxb->nc = 3 + ac; // nc = 3/4 for no/alpha channel 15.08 - int cc = hh * pxb->rs; - memset(pxb->pixels,0,cc); - return pxb; -} - - -// Create a PXB pixmap from a PIXBUF -// The pixbuf is used directly and is not duplicated - -PXB * PXB_make(PIXBUF *pixbuf1) -{ - zthreadcrash(); - - PXB *pxb2 = (PXB *) zmalloc(sizeof(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->nc = 3 + gdk_pixbuf_get_has_alpha(pixbuf1); // 15.08 - pxb2->pixels = gdk_pixbuf_get_pixels(pixbuf1); - return pxb2; -} - - -// Free PXB pixmap - release memory - -void PXB_free(PXB *&pxb) -{ - zthreadcrash(); - - if (! pxb) return; - if (! strmatch(pxb->wmi,"pxbpix")) - zappcrash("PXB_free(), bad PXB"); - strcpy(pxb->wmi,"xxxxxx"); - g_object_unref(pxb->pixbuf); - zfree(pxb); - pxb = 0; - return; -} - - -// add an alpha channel to a PXB pixmap - -void PXB_addalpha(PXB *pxb) -{ - GdkPixbuf *pixbuf1, *pixbuf2; // 15.08 - uint8 *pixels1, *pixels2, *pix1, *pix2; - int nc, ww, hh, rs1, rs2, px, py; - - nc = pxb->nc; - if (nc > 3) return; - - ww = pxb->ww; - hh = pxb->hh; - - pixbuf1 = pxb->pixbuf; // old pixbuf - pixbuf2 = gdk_pixbuf_new(GDKRGB,1,8,ww,hh); // new pixbuf with alpha channel - - pixels1 = gdk_pixbuf_get_pixels(pixbuf1); - pixels2 = gdk_pixbuf_get_pixels(pixbuf2); - rs1 = gdk_pixbuf_get_rowstride(pixbuf1); - rs2 = gdk_pixbuf_get_rowstride(pixbuf2); - - for (py = 0; py < hh; py++) // copy RGB data - { - pix1 = pixels1 + rs1 * py; - pix2 = pixels2 + rs2 * py; - - for (px = 0; px < ww; px++) - { - memcpy(pix2,pix1,3); - pix2[3] = 255; // set opacity = max. for new pixbuf - pix1 += 3; - pix2 += 4; - } - } - - g_object_unref(pixbuf1); - pxb->pixbuf = pixbuf2; - pxb->pixels = pixels2; - pxb->rs = rs2; - pxb->nc = 4; - - return; -} - - -// Copy a PXB pixmap to a new PXB pixmap - -PXB * PXB_copy(PXB *pxb1) -{ - zthreadcrash(); - - PXB *pxb2 = (PXB *) zmalloc(sizeof(PXB)); - strcpy(pxb2->wmi,"pxbpix"); - pxb2->pixbuf = gdk_pixbuf_copy(pxb1->pixbuf); - if (! pxb2->pixbuf) { - zmessageACK(Mwin,"memory allocation failure"); - exit(12); - } - pxb2->ww = pxb1->ww; - pxb2->hh = pxb1->hh; - pxb2->rs = pxb1->rs; - pxb2->nc = pxb1->nc; // 15.08 - 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) -{ - PIXBUF *pixbuf = 0; - - zthreadcrash(); - pixbuf = gdk_pixbuf_scale_simple(pxb1->pixbuf,ww2,hh2,GDK_INTERP_BILINEAR); - if (! pixbuf) zappcrash("memory allocation failure"); - PXB *pxb2 = PXB_make(pixbuf); - return pxb2; -} - - -// Rotate PXB pixmap by given angle. - -PXB * PXB_rotate(PXB *pxb1, float angle) // 15.04 -{ - PIXBUF *pixbuf = 0; - - zthreadcrash(); - pixbuf = gdk_pixbuf_rotate(pxb1->pixbuf,angle); - if (! pixbuf) zappcrash("memory allocation failure"); - PXB *pxb2 = PXB_make(pixbuf); - 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, nc, ac, px, py; - - ww = pxm1->ww; - hh = pxm1->hh; - nc = pxm1->nc; - ac = nc - 3; - - pxb2 = PXB_make(ww,hh,ac); - - 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]; - if (ac) pix2[3] = pix1[3]; // 15.08 - pix1 += nc; - pix2 += nc; - } - } - - return pxb2; -} - - -// Update a PXB section from an updated PXM section. -// 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; - int nc1, nc2, ac; - - 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; - - nc1 = pxm1->nc; - nc2 = pxb2->nc; - - if (nc1 > 3 && nc2 > 3) ac = 1; // alpha channel 15.08 - else ac = 0; - - 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]; - if (ac) pix2[3] = pix1[3]; - pix1 += nc1; - pix2 += nc2; // 15.08 - } - } - - return; -} - - -// Update an output PXB section from a corresponding input PXB section. -// The two PXBs represent the same image at different scales (width/height). -// pxb1 must be >= pxb2. -// px3, py3, ww3, hh3: modified section within pxb1 to propagate to pxb2; - -void PXB_PXB_update(PXB *pxb1, PXB *pxb2, int px3, int py3, int ww3, int hh3) -{ - static int pww1 = 0, phh1 = 0, pww2 = 0, phh2 = 0; - static int *px1L = 0, *py1L = 0; - static float scalex = 1, scaley = 1; - static float *pxmap = 0, *pymap = 0; - static int maxmapx = 0, maxmapy = 0; - - uint8 *ppix1, *ppix2; - int ww1, hh1, ww2, hh2, rs1, rs2, nc1, nc2, ac; - 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, alpha; - int lox, hix, loy, hiy; - - ww1 = pxb1->ww; - hh1 = pxb1->hh; - rs1 = pxb1->rs; - nc1 = pxb1->nc; // 15.08 - ppix1 = pxb1->pixels; - - ww2 = pxb2->ww; - hh2 = pxb2->hh; - rs2 = pxb2->rs; - nc2 = pxb2->nc; // 15.08 - ppix2 = pxb2->pixels; - - if (nc1 > 3 && nc2 > 3) ac = 1; // alpha channel 15.08 - else ac = 0; - - 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)); // maps overlap of < maxmap input - pxmap = (float *) zmalloc(ww2 * maxmapx * sizeof(float)); // pixels per output pixel - - py1L = (int *) zmalloc(hh2 * sizeof(int)); // maps first (lowest) input pixel - px1L = (int *) zmalloc(ww2 * sizeof(int)); // 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 = alpha = 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 = ppix1 + py1 * rs1 + px1 * nc1; - red += pixel1[0] * ftot; // add input pixel * overlap - green += pixel1[1] * ftot; - blue += pixel1[2] * ftot; - if (ac) alpha += pixel1[3] * ftot; - } - } - - pixel2 = ppix2 + py2 * rs2 + px2 * nc2; // save output pixel 15.08 - pixel2[0] = red; // 0.0 - 255.996 >> 0 - 255 - pixel2[1] = green; - pixel2[2] = blue; - if (ac) pixel2[3] = alpha; - } - } - - return; -} - - -/**************************************************************************/ - -// fast fixbuf rescale, bilinear interpolation, threaded -// works best when the rescale ratio is between 0.5 and 2.0 -// about 4x faster than gdk_pixbuf_scale_simple() if 4 processor cores avail. -// alpha channel is not copied - used only in slide show for now - -namespace pixbuf_rescale_fast_names { - int ww1, hh1, ww2, hh2, rs1, rs2, nc1, nc2; - uint8 *pixels1, *pixels2; - int busy[max_threads]; -} - -PIXBUF * pixbuf_rescale_fast(PIXBUF *pixbuf1, int ww, int hh) // 15.02 -{ - using namespace pixbuf_rescale_fast_names; - - void * pixbuf_rescale_fast_thread(void *arg); - - PIXBUF *pixbuf2; - uint8 *pix2; - - pixbuf2 = gdk_pixbuf_new(GDKRGB,0,8,ww,hh); - - ww1 = gdk_pixbuf_get_width(pixbuf1); - hh1 = gdk_pixbuf_get_height(pixbuf1); - rs1 = gdk_pixbuf_get_rowstride(pixbuf1); - nc1 = gdk_pixbuf_get_n_channels(pixbuf1); // 15.08 - pixels1 = gdk_pixbuf_get_pixels(pixbuf1); - - ww2 = ww; - hh2 = hh; - rs2 = gdk_pixbuf_get_rowstride(pixbuf2); - nc2 = gdk_pixbuf_get_n_channels(pixbuf2); // 15.08 - pixels2 = gdk_pixbuf_get_pixels(pixbuf2); - - for (int ii = 0; ii < NWT; ii++) { // start working threads - busy[ii] = 1; - start_detached_thread(pixbuf_rescale_fast_thread,&Nval[ii]); - } - - for (int ii = 0; ii < NWT; ii++) // wait for all done - while (busy[ii]) zsleep(0.001); - - for (int py2 = 0; py2 < hh2; py2++) { // set last column of pixels black - pix2 = pixels2 + py2 * rs2 + (ww2-1) * 3; - memset(pix2,0,3); - } - - pix2 = pixels2 + (hh2-1) * rs2; // set last row of pixels black - memset(pix2,0,rs2); - - return pixbuf2; -} - -void * pixbuf_rescale_fast_thread(void *arg) -{ - using namespace pixbuf_rescale_fast_names; - - int index = *((int *) arg); - uint8 *pix1, *pix2; - int px1, py1, px2, py2; - float fww, fhh, fx1, fy1; - float dx1, dy1, dx2, dy2; - - fww = 1.0 * ww1 / ww2; - fhh = 1.0 * hh1 / hh2; - - for (py2 = index; py2 < hh2-1; py2 += NWT) // loop output pixel rows - for (px2 = 0; px2 < ww2-1; px2++) // loop output pixel cols - { - fx1 = px2 * fww; // real position in input image - fy1 = py2 * fhh; - px1 = int(fx1); // corresp. input pixel - py1 = int(fy1); - dx1 = fx1 - px1; // distance from pixel left - dx2 = 1.0 - dx1; // distance from pixel right - dy1 = fy1 - py1; // distance from pixel top - dy2 = 1.0 - dy1; // distance from pixel bottom - - pix1 = pixels1 + py1 * rs1 + px1 * nc1; // input pixel group (4) - pix2 = pixels2 + py2 * rs2 + px2 * nc2; // output pixel - - pix2[0] = (dx2 * pix1[0] + dx1 * pix1[3] + dy2 * pix1[0] + dy1 * pix1[rs1+0]) / 2; - pix2[1] = (dx2 * pix1[1] + dx1 * pix1[4] + dy2 * pix1[1] + dy1 * pix1[rs1+1]) / 2; - pix2[2] = (dx2 * pix1[2] + dx1 * pix1[5] + dy2 * pix1[2] + dy1 * pix1[rs1+2]) / 2; - } - - busy[index] = 0; - return 0; -} - - -/**************************************************************************/ - -// help menu function - -void m_help(GtkWidget *, cchar *menu) -{ - if (strmatch(menu,ZTX("Quick Start"))) - showz_html(quickstart_file); - - if (strmatch(menu,ZTX("User Guide"))) - showz_userguide(); - - if (strmatch(menu,ZTX("User Guide Changes"))) - showz_userguide("recent_changes"); - - if (strmatch(menu,ZTX("README"))) - showz_textfile("doc","README"); - - if (strmatch(menu,ZTX("Edit Functions Summary"))) - showz_textfile("data","edit-menus"); - - if (strmatch(menu,ZTX("Change Log"))) - showz_textfile("doc","changelog"); - - if (strmatch(menu,ZTX("Log File"))) - showz_logfile(); - - if (strmatch(menu,ZTX("Translations"))) - showz_userguide("translations"); - - if (strmatch(menu,ZTX("Home Page"))) - showz_html(Fhomepage); - - if (strmatch(menu,ZTX("About"))) - zmessageACK(Mwin,"%s\n %s\n %s\n %s\n %s\n %s\n", - Frelease,Flicense,Fhomepage,Fsoftware,Fcontact,Ftranslators); - - if (strmatch(menu,ZTX("Help"))) // menu button - showz_userguide(F1_help_topic); // show topic if there, or page 1 - - return; -} - - - diff -Nru fotoxx-15.08/fotoxx-15.09.cc fotoxx-15.09/fotoxx-15.09.cc --- fotoxx-15.08/fotoxx-15.09.cc 1970-01-01 00:00:00.000000000 +0000 +++ fotoxx-15.09/fotoxx-15.09.cc 2015-08-31 10:21:01.000000000 +0000 @@ -0,0 +1,4308 @@ +/************************************************************************** + + Fotoxx edit photos and manage collections + + Copyright 2007-2015 Michael Cornelison + Source URL: http://kornelix.com/fotoxx + Contact: kornelix@posteo.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/. + +*************************************************************************** + + main main program, set up defaults + initzfunc initializations, carry out command line options + + delete_event response function for main window delete event + destroy_event response function for main window destroy event + state_event response function for main window fullscreen state change + + gtimefunc periodic function + update_Fpanel update status parameters on F window top panel + paint_busy show busy indicator on window when something is running + + Fpaint main / drawing window refresh (draw signal response function) + Fpaintnow immediate Fpaint, not callable from threads + Fpaint2 queue Fpaint, callable from threads + Fpaint3 update drawing window section from updated E3 section + Fpaint4 update drawing window section (direct write) + + mouse_event mouse event response function + mouse_convert convert mouse/window space to image space + m_zoom main window zoom in/out function + KBstate send KB key from dialog to main window + KBpress KB key press event function + KBrelease KB key release event function + win_fullscreen set main window full screen status + win_unfullscreen restore main window to former size + set_mwin_title update the main window title bar + + draw_pixel draw one overlay pixel using image space + erase_pixel erase one pixel + draw_line draw overlay line in image space + erase_line erase line + draw_toplines draw or redraw a set of overlay lines + draw_gridlines draw grid lines over image + add_toptext add to set of overlay text strings + draw_toptext draw set of overlay text strings + erase_toptext remove text from set of overlay text strings + draw_text draw text on window in image space + add_topcircle add a circle to set of overlay circles + draw_topcircles draw the set of overlay circles in window space + erase_topcircles erase the set of overlay circles + draw_mousecircle draw a circle around pointer in image space + draw_mousecircle2 2nd instance for paint/clone tracking circle + draw_mousearc draw an ellipse around pointer in image space + + splcurve_init set up a spline curve drawing area + splcurve_adjust mouse event function to manipulate curve nodes + splcurve_draw draw curve through nodes + splcurve_generate generate x/y table of values from curve + splcurve_yval get curve y-value for given x-value + splcurve_load load curve data from a saved file + splcurve_save save curve data to a file + + edit_setup() start an image edit function + edit_cancel() cancle image edit + edit_done() finish image edit + edit_fullsize() convert preview to full size edit + edit_undo() undo current edit (reset) + edit_redo() redo current edit + edit_reset() reset all edit changes + edit_load_widgets load zdialog widgets and curves from a file + edit_save_widgets save zdialog widgets and curves to a file + + m_undo undo one edit in a series + m_redo redo one edit in a series + undo_all undo all edits for image + redo_all redo all edits for image + save_undo save image in the undo stack + load_undo load image from the undo stack + checkpend() check status: edit mods busy block any quiet + takeMouse set mouse event function and special cursor + freeMouse remove mouse event function, set normal cursor + + start_thread start thread running + signal_thread signal thread that work is pending + wait_thread_idle wait for pending work complete + wrapup_thread wait for thread exit or command thread exit + thread_idle_loop wait for pending work, exit if commanded + thread_exit exit thread unconditionally + start_wthread start a working thread per SMP processor + exit_wthread exit a working thread + wait_wthreads wait for all working threads to exit + + save_params save parameters when fotoxx exits + load_params load parameters at fotoxx startup + free_resources free resources for the current image file + sigdiff compare 2 floats with margin of significance + +***************************************************************************/ + +#define EX // disable extern declarations +#include "fotoxx.h" // (variables in fotoxx.h are defined) + +/**************************************************************************/ + + +// fotoxx main program + +using namespace zfuncs; + +int main(int argc, char *argv[]) +{ + char lang[8] = "", text[100]; + int Fclone=0, cloxx=0, cloyy=0, cloww=0, clohh=0; + int err; + STATB statb; + + if (argc > 1 && strmatchV(argv[1],"-ver","-v",0)) { + printz(Frelease "\n"); // print version and exit + return 0; + } + + gtk_init(&argc,&argv); // initz. GTK & strip GTK params + zinitapp("fotoxx"); // initz. app directories + err = chdir(get_zuserdir()); // set to /home//.fotoxx + + // 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 will override) + Prelease = zstrdup("unknown"); // prev. fotoxx release (params override) + mwgeom[0] = mwgeom[1] = 100; // default main window geometry + mwgeom[2] = 1200; mwgeom[3] = 800; + *paneltext = 0; // no status bar text + trimsize[0] = 1600; // default initial image trim size + trimsize[1] = 1000; + trimbuttons[0] = zstrdup("5:4"); trimratios[0] = zstrdup("5:4"); // default trim ratio buttons + trimbuttons[1] = zstrdup("4:3"); trimratios[1] = zstrdup("4:3"); + trimbuttons[2] = zstrdup("8:5"); trimratios[2] = zstrdup("8:5"); + trimbuttons[3] = zstrdup("16:9"); trimratios[3] = zstrdup("16:9"); + trimbuttons[4] = zstrdup("2:1"); trimratios[4] = zstrdup("2:1"); + trimbuttons[5] = zstrdup("gold"); trimratios[5] = zstrdup("1.62:1"); + editresize[0] = 1600; // default initial resize size + editresize[1] = 1200; + currgrid = 0; // default initial grid settings + 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 = zstrdup("both"); // default menu style (icons + text) + dialog_font = zstrdup("Sans 9"); // default dialog font 15.09 + iconsize = 36; // default icon size + startdisplay = zstrdup("prevI"); // start with previous image + Fdragopt = 1; // image drag with mouse 15.02 + zoomcount = 2; // zooms to reach 2x image size + zoomratio = sqrtf(2); // corresp. zoom ratio + thumbdirk = 0; // no thumbnail directory + thumbfilesize = 256; // thumbnail files, default pixels 15.02 + jpeg_def_quality = 90; // default .jpeg save quality + jpeg_1x_quality = 90; // default for 1-time jpeg quality + lens_mm = 35; // pano lens parameter + DCrawcommand = zstrdup("dcraw -T -6 -w -q 0 -o 1"); // default RAW to tiff command using DCraw + RAWfiletypes = zstrdup(".arw .crw .cr2 .dng .erf .iiq .mef .mos " // some of the known RAW file types + ".mpo .nef .nrw .orf .pef .ptx .raw " // (case is not significant here) + ".rw2 .rwl .srf .srw .sr2 "); + imagefiletypes = zstrdup(".jpg .jpeg .png .tif .tiff .bmp .ico " // supported image file types + ".gif .svg .xpm .tga "); + + 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; + BLUE[2] = 255; BLUE[0] = BLUE[1] = 0; + LINE_COLOR = RED; // initial foreground drawing color + + bgcolor.red = bgcolor.green = bgcolor.blue = 0.2; // main window background color 15.09 + bgcolor.alpha = 1; + + for (int ii = 0; ii < 100; ii++) Nval[ii] = ii; // static integer values 0-99 + + // get files in user directory /home//.fotoxx/* + + snprintf(index_dirk,199,"%s/image_index",get_zuserdir()); // image 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 (index func) + snprintf(saved_areas_dirk,199,"%s/saved_areas",get_zuserdir()); // saved areas directory + snprintf(albums_dirk,199,"%s/albums",get_zuserdir()); // albums directory + 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(favorites_dirk,199,"%s/favorites",get_zuserdir()); // favorites directory + snprintf(mashup_dirk,199,"%s/mashup",get_zuserdir()); // mashup projects directory + locale_filespec("data","quickstart.html",quickstart_file); // quickstart html file + snprintf(slideshow_dirk,199,"%s/slideshows",get_zuserdir()); // slide show directory + snprintf(pattern_dirk,199,"%s/patterns",get_zuserdir()); // pattern files directory + snprintf(retouch_combo_dirk,199,"%s/retouch_combo",get_zuserdir()); // retouch combo settings directory + snprintf(custom_kernel_dirk,199,"%s/custom_kernel",get_zuserdir()); // custom kernel files directory + snprintf(printer_color_dirk,199,"%s/printer_color",get_zuserdir()); // printer color map files + snprintf(maps_dirk,199,"/usr/share/fotoxx-maps/data"); // map files in fotoxx-maps package + snprintf(searchresults_file,199,"%s/search_results",get_zuserdir()); // output of image search function + + err = stat(index_dirk,&statb); // create any missing directories + if (err) mkdir(index_dirk,0750); + err = stat(saved_areas_dirk,&statb); + if (err) mkdir(saved_areas_dirk,0750); + err = stat(albums_dirk,&statb); + if (err) mkdir(albums_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(mashup_dirk,&statb); + if (err) mkdir(mashup_dirk,0750); + err = stat(slideshow_dirk,&statb); + if (err) mkdir(slideshow_dirk,0750); + err = stat(printer_color_dirk,&statb); + if (err) mkdir(printer_color_dirk,0750); + + snprintf(text,100,"%s/colorchart.png",printer_color_dirk); // set printer color adjustment + colorchartfile = zstrdup(text); // default file names 15.09 + snprintf(text,100,"%s/colormap.dat",printer_color_dirk); + colormapfile = zstrdup(text); + + load_params(); // restore parameters from last session + + for (int ii = 1; ii < argc; ii++) // command line parameters + { + char *pp = argv[ii]; + + if (strmatchV(pp,"-debug","-d",0)) // -d -debug + Fdebug = 1; + else if (strmatchV(pp,"-lang","-l",0) && argc > ii+1) // -l -lang lc_RC language/region code + strncpy0(lang,argv[++ii],7); + else if (strmatchV(pp,"-clone","-c",0) && 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 (strmatchV(pp,"-recent","-r",0)) // -r -recent recent files gallery + Frecent = 1; + else if (strmatchV(pp,"-new","-n",0)) // -n -new new added files gallery + Fnew = 1; + else if (strmatchV(pp,"-prev","-p",0)) // -p -prev open previous file + Fprev = 1; + else if (strmatchV(pp,"-blank","-b",0)) // -b -blank start with blank window + Fblank = 1; + else if (strmatchV(pp,"-menu","-m",0) && argc > ii+1) // -m -menu func starting menu func + startmenu = zstrdup(argv[++ii]); + else if (strmatch(pp,"-noindex")) // -noindex no index update 15.02 + Fnoindex = 1; + else if (strmatch(pp,"-cycledesktop") && argc > ii+2) { // -cycledesktop album seconds 15.06 + run_cycledesktop(argv[ii+1],argv[ii+2]); // run in background without GUI + gtk_main(); + return 0; + } + else initial_file = zstrdup(pp); // must be initial file or directory + } + + ZTXinit(lang); // setup locale and translations + setlocale(LC_NUMERIC,"en_US.UTF-8"); // stop comma decimal points + + build_widgets(); // build window widgets and menus + + if (! zfuncs::screen || ! zfuncs::mouse) { + zpopup_message(0,"GTK/GDK failure to find hardware"); // 15.09 + m_quit(0,0); + exit(1); + } + + arrowcursor = gdk_cursor_new_for_display(display,GDK_TOP_LEFT_ARROW); // cursor for selection + dragcursor = gdk_cursor_new_for_display(display,GDK_CROSSHAIR); // cursor for dragging + drawcursor = gdk_cursor_new_for_display(display,GDK_PENCIL); // cursor for drawing lines + blankcursor = gdk_cursor_new_for_display(display,GDK_BLANK_CURSOR); // invisible cursor + + m_viewmode(0,"F"); // set F mode initially + zmainloop(); // GTK bug workaround + + if (Fclone) { // clone: open new window + gtk_window_move(MWIN,cloxx+10,cloyy+10); // slightly offset from old window + gtk_window_resize(MWIN,cloww,clohh); + } + 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 + } + + g_timeout_add(100,initzfunc,0); // initz. call from gtk_main() + gtk_main(); // start processing window events + return 0; +} + + +/**************************************************************************/ + +// Initial function called from gtk_main() at startup. +// This function MUST return 0. + +int initzfunc(void *) +{ + int Fexiftool = 0, Fxdgopen = 0; + int ii, err, npid, contx; + int ftype, Fdirk = 0; + char *pp, *pp2; + char procfile[20], buff[200]; + char KBshortsU[200], KBshortsI[200]; + char tonefile[200], badnews[200]; + double freememory, cachememory; + float exifver = 0; + FILE *fid; + STATB statb; + + err = chdir(get_zuserdir()); // working directory .../.fotoxx + + printz(Frelease "\n"); // print Fotoxx release version + + int v1 = gtk_get_major_version(); // get GTK release version + int v2 = gtk_get_minor_version(); + int v3 = gtk_get_micro_version(); + printz("GTK version: %d.%02d.%02d \n",v1,v2,v3); + + // 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); + printz("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; + err = shell_quiet("which rawtherapee"); // check for Raw Therapee + if (! err) Frawtherapee = 1; + err = shell_quiet("which brasero"); // check for Brasero + if (! err) Fbrasero = 1; + err = shell_quiet("which hugin"); // check for pano tools (hugin versions) + if (! err) PTtools = 1; + + if (Fexiftool + Fxdgopen < 2) { // 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"); + zmessageACK(Mwin,badnews); + m_quit(0,0); + } + + if (! Fufraw) printz("UFraw not installed \n"); // optional + if (! Frawtherapee) printz("Raw Therapee not installed \n"); + if (! Fbrasero) printz("Brasero not installed \n"); + if (! PTtools) printz("Panorama Tools (Hugin) not installed \n"); + + // check for first time Fotoxx install or new release install + + if (Ffirsttime) { // new fotoxx install + showz_html(quickstart_file); + Prelease = zstrdup(Frelease); + } + + if (! Ffirsttime && ! strmatch(Prelease,Frelease)) { // Fotoxx release change + zmessLogACK(Mwin,"fotoxx new release %s",Frelease); + Prelease = zstrdup(Frelease); + showz_textfile("doc","changelog"); + } + + Ffirsttime = 0; // reset first time flag + + // delete fotoxx tempdir files if owner process is no longer running + + contx = 0; + while ((pp = command_output(contx,"find /tmp/fotoxx-*",0))) { + pp2 = strchr(pp,'-'); + if (! pp2) continue; + npid = atoi(pp2+1); // pid of fotoxx owner process + snprintf(procfile,20,"/proc/%d",npid); + err = stat(procfile,&statb); + if (! err) continue; // pid is active, keep + shell_quiet("rm -R -f -v %s",pp); // delete + } + + // set up temp directory /tmp/fotoxx-nnnnnn-XXXXXX + + snprintf(tempdir,200,"/tmp/fotoxx-%06d-XXXXXX",getpid()); // use PID + random chars. + pp = mkdtemp(tempdir); + if (! pp) { + zmessageACK(Mwin,"%s \n %s",tempdir,strerror(errno)); + exit(1); + } + strncpy0(tempdir,pp,200); + printz("tempdir: %s \n",tempdir); + + // file name template for undo/redo files + + snprintf(URS_filename,200,"%s/undo_nn",tempdir); // /tmp/fotoxx-nnnnnn/undo_nn + + // check free memory and suggest image size limits + + parseprocfile("/proc/meminfo","MemFree:",&freememory,0); // get amount of free memory + parseprocfile("/proc/meminfo","Cached:",&cachememory,0); + freememory = (freememory + cachememory) / 1024; // megabytes + printz("free memory: %.0f MB \n",freememory); + printz("image size limits for good performance: \n"); + printz(" view: %.0f megapixels \n",(freememory-100)/6); // F + preview, 3 bytes/pixel each + printz(" edit: %.0f megapixels \n",(freememory-100)/54); // + E0/E1/E3/ER, 12 bytes/pixel each + + // update KB shortcuts if needed + + err = locale_filespec("user","KB-shortcuts",KBshortsU); // user KB shortcuts + if (err) { // not found + locale_filespec("data","KB-shortcuts",KBshortsI); + shell_quiet("cp %s %s",KBshortsI,KBshortsU); // copy installed KB shortcuts + printz("keyboard shortcuts installed \n"); + } + KBshortcuts_load(); // load KB shortcuts from file + + // rename collections directory to albums directory // remove in 2016 FIXME 15.03 + + char collections_dirk[200]; + snprintf(collections_dirk,199,"%s/collections",get_zuserdir()); // old name: /home//.fotoxx/collections + err = stat(collections_dirk,&statb); + if (! err) rename(collections_dirk,albums_dirk); + + // remove obsolete user locales directory // remove in 2016 FIXME 15.04 + + char locales_dirk[200]; + snprintf(locales_dirk,199,"%s/locales",get_zuserdir()); // delete /home//.fotoxx/locales + err = stat(locales_dirk,&statb); + if (! err) shell_quiet("rm -R %s",locales_dirk); + + // remove obsolete newest_files file // remove in 2016 FIXME 15.05 + + char newfiles_file[200]; + snprintf(newfiles_file,199,"%s/newest_files",get_zuserdir()); + err = stat(newfiles_file,&statb); + if (! err) remove(newfiles_file); + + // copy default data files to user directories if not already + + err = stat(pattern_dirk,&statb); // pattern files + if (err) { + printz("copy default pattern files \n"); + mkdir(pattern_dirk,0750); + shell_quiet("cp -n %s/patterns/* %s",get_zdatadir(),pattern_dirk); + } + + err = stat(retouch_combo_dirk,&statb); // retouch combo settings + if (err) { + printz("copy default retouch_combo files \n"); + mkdir(retouch_combo_dirk,0750); + shell_quiet("cp -n %s/retouch_combo/* %s",get_zdatadir(),retouch_combo_dirk); + } + + err = stat(custom_kernel_dirk,&statb); // custom convolution kernels + if (err) { + printz("copy default custom_kernel files \n"); + mkdir(custom_kernel_dirk,0750); + shell_quiet("cp -n %s/custom_kernel/* %s",get_zdatadir(),custom_kernel_dirk); + } + + err = stat(favorites_dirk,&statb); // favorites menu + if (err) { + printz("copy default favorites menu \n"); + mkdir(favorites_dirk,0750); + shell_quiet("cp -n %s/favorites/* %s",get_zdatadir(),favorites_dirk); + } + + err = stat(tags_defined_file,&statb); // tags_defined file + if (err) { + printz("create default tags_defined file \n"); + shell_quiet("cp %s/tags_defined %s",get_zdatadir(),tags_defined_file); + } + + snprintf(tonefile,200,"%s/slideshow-tone.oga",slideshow_dirk); // default slide show pause tone + err = stat(tonefile,&statb); + if (err) shell_quiet("cp %s/slideshow-tone.oga %s",get_zdatadir(),tonefile); + + // miscellaneous + + screen = gtk_window_get_screen(MWIN); // get monitor pixel dimensions + screenww = gdk_screen_get_width(screen); + screenhh = gdk_screen_get_height(screen); + printz("screen width: %d height: %d \n",screenww,screenhh); + + NWT = get_nprocs(); // get SMP CPU count + if (NWT <= 0) NWT = 2; + if (NWT > max_threads) NWT = max_threads; // compile time limit + printz("using %d threads \n",NWT); + + zdialog_inputs("load"); // load saved dialog inputs + zdialog_positions("load"); // load saved dialog positions + + exif_server(0,0,0); // kill orphan exiftool process + + g_timeout_add(20,gtimefunc,0); // start periodic function (20 ms) 15.05 + + // create or update image index file + // cannot continue until completed OK + + index_rebuild(0); // must be successfully completed + printz("RAW file types found: %s \n",myRAWtypes); // list RAW types found + + // set current file and gallery from command line if present + + curr_dirk = zstrdup(topdirks[0]); // default 1st top image directory + + if (initial_file) { // from command line + pp = realpath(initial_file,0); // prepend directory if needed + if (pp) { + zfree(initial_file); + initial_file = zstrdup(pp); + free(pp); // not zfree(), bugfix 15.05 + } + else { + printz("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 + printz("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 = zstrdup(initial_file); // set current directory from file + pp = strrchr(curr_dirk,'/'); + if (pp) *pp = 0; + } + } + + if (initial_file) // open initial file + f_open(initial_file); + + else if (Fdirk) { // open initial directory - gallery + gallery(curr_dirk,"init"); + m_viewmode(0,"G"); + gallery(0,"paint",0); + } + + else if (Fprev) { // start with previous file + if (last_curr_file && *last_curr_file == '/') // 15.07 + f_open(last_curr_file); + } + + else if (Frecent) // start with recent files gallery + m_recentfiles(0,0); + + else if (Fnew) // start with newest files gallery + m_newfiles(0,"file"); // by file mod date + + else if (Fblank) { // blank window, no gallery 15.07 + curr_file = curr_dirk = 0; + navi::galleryname = 0; + navi::gallerytype = 0; + set_mwin_title(); + } + + // if no command line option, get startup display from user options + + else if (strmatch(startdisplay,"recent")) // start with recent files gallery + m_recentfiles(0,0); + + else if (strmatch(startdisplay,"newest")) // start with newest files gallery 15.07 + m_newfiles(0,"file"); // by file mode date + + else if (strmatch(startdisplay,"prevG")) { // start with previous gallery 15.07 + if (last_gallerytype > 0) { + navi::gallerytype = last_gallerytype; + if (last_gallerytype == 1) + gallery(last_galleryname,"init"); + else gallery(last_galleryname,"initF"); + m_viewmode(0,"G"); + gallery(0,"paint",0); + } + } + + else if (strmatch(startdisplay,"prevI")) { // start with previous image file + if (last_curr_file && *last_curr_file == '/') + f_open(last_curr_file); + } + + else if (strmatch(startdisplay,"dirk")) { // start with given directory + if (startdirk && *startdirk == '/') { + if (curr_dirk) zfree(curr_dirk); + curr_dirk = zstrdup(startdirk); + navi::thumbsize = 128; + gallery(curr_dirk,"init",0); + m_viewmode(0,"G"); + gallery(0,"paint",0); + } + } + + else if (strmatch(startdisplay,"file")) // start with given image file + f_open(startfile); + + if (startmenu) { // startup menu on command line + printz("startmenu: %s \n",startmenu); + for (ii = 0; ii < Nmenus; ii++) // convert menu name to menu function + if (strmatchcase(ZTX(startmenu),ZTX(menutab[ii].menu))) break; + if (ii < Nmenus) menutab[ii].func(0,menutab[ii].arg); // call the menu function + } + + save_params(); // save parameters now 15.07 + + zmainloop(); // mysterious, avoid blank window + return 0; // don't come back +} + + +/**************************************************************************/ + +// functions for main window event signals + +int delete_event() // main window closed +{ + int yn; + + printz("main window delete event \n"); + if (checkpend("mods")) return 1; // allow user bailout + if (zfuncs::zdialog_busy) { + yn = zmessageYN(Mwin,ZTX("Kill active dialog?")); // allow user bailout + if (! yn) return 1; + } + quitxx(); + return 0; +} + +int destroy_event() // main window destroyed +{ + printz("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) Ffullscreen = 1; + else Ffullscreen = 0; + return 0; +} + + +/**************************************************************************/ + +// Periodic function (20 milliseconds) + +int gtimefunc(void *) +{ + void paint_busy(); + static int domore = 0; + + if (Fshutdown) return 0; // shutdown underway + + if (Fpaintrequest && Cdrawin && ! Fpaintlock) // window update needed + gtk_widget_queue_draw(Cdrawin); // (avoid blank screen if blocked) + + if (zd_thread && zd_thread_event) { // send dialog event from thread + zdialog_send_event(zd_thread,zd_thread_event); + zd_thread_event = 0; + } + + if (--domore > 0) return 1; // do rest every 200 milliseconds 15.05 + domore = 10; + + update_Fpanel(); // update top panel information + return 1; +} + + +/**************************************************************************/ + +// update F window top panel with current status information +// called from timer function + +void update_Fpanel() +{ + static double time1 = 0, time2, cpu1 = 0, cpu2, cpuload; + char text1[300], text2[100]; + static char ptext1[300] = ""; + double freemem, cachemem; + int ww, hh, scale, bpc; + static int ftf = 1; + double file_MB = 1.0 / MEGA * curr_file_size; + static cchar *reduced, *areaactive, *dialogopen; + static cchar *blocked, *modified; + + zthreadcrash(); + + if (ftf) { + ftf = 0; + reduced = ZTX("(reduced)"); + areaactive = ZTX("area active"); + dialogopen = ZTX("dialog open"); + blocked = ZTX("blocked"); + modified = "mod"; + } + + if (FGW != 'F') 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; + } + + parseprocfile("/proc/meminfo","MemFree:",&freemem,0); // get amount of free memory + parseprocfile("/proc/meminfo","Cached:",&cachemem,0); + freemem = (freemem + cachemem) / 1024; // megabytes + + snprintf(text1,300,"CPU %03.0f%c MB %.0f",cpuload,'%',freemem); // CPU 023% MB 2345 + + if (curr_file && Fpxb) + { + if (E3pxm) { + ww = E3pxm->ww; + hh = E3pxm->hh; + } + else { + ww = Fpxb->ww; + hh = Fpxb->hh; + } + + bpc = curr_file_bpc; + + snprintf(text2,100," %dx%dx%d",ww,hh,bpc); // 2345x1234x16 (preview) 1.56MB 45% + strncatv(text1,300,text2,0); + if (CEF && CEF->Fpreview) strncatv(text1,300," ",reduced,0); + snprintf(text2,100," %.2fM",file_MB); + strncatv(text1,300,text2,0); + scale = Mscale * 100 + 0.5; + snprintf(text2,100," %d%c",scale,'%'); + strncatv(text1,300,text2,0); + + if (URS_pos) { // edit undo/redo stack depth + snprintf(text2,100," %s: %d",ZTX("edits"),URS_pos); + strncatv(text1,300,text2,0); + } + + if (Fmetamod || Fgtagmod) // 15.03 + strncatv(text1,300," ",ZTX("metadata"),0); + } + + else if (Fpxb) { // 15.03 + snprintf(text2,100," %dx%d",Fpxb->ww,Fpxb->hh); + strncatv(text1,300,text2,0); + } + + if (sa_stat == 3) strncatv(text1,300," ",areaactive,0); + if (zfuncs::zdialog_busy) strncatv(text1,300," ",dialogopen,0); + + if (Fblock) strncatv(text1,300," ",blocked,0); // "blocked" + if (CEF && CEF->Fmods) strncatv(text1,300," ",modified,0); // "mod" + if (*paneltext) strncatv(text1,300," ",paneltext,0); // application text + + if (! strmatch(text1,ptext1)) { // if text changed, update panel bar + gtk_label_set_label(GTK_LABEL(Fpanlab),text1); + gtk_widget_show_all(Fpanel); + strcpy(ptext1,text1); + } + +// Watch global Fbusy, show BUSY label if active. +// Show progress bar if Fbusy_goal > 0. +// added to top panel: BUSY [.......... ] + + static GtkWidget *busylabel = 0, *progresslabel = 0; + static cchar *busytext = "BUSY"; + static char progressdots[24] = "[....................]"; + int Ndots = 0; + + if (Fbusy) { + if (! busylabel) { + busylabel = gtk_label_new(null); + gtk_label_set_markup(GTK_LABEL(busylabel),busytext); + gtk_box_pack_start(GTK_BOX(Fpanel),busylabel,0,0,5); + } + } + else { + if (busylabel) gtk_widget_destroy(busylabel); + busylabel = 0; + } + + if (Fbusy_done > 0 && Fbusy_done < Fbusy_goal) { + if (! progresslabel) { + progresslabel = gtk_label_new(""); + gtk_box_pack_start(GTK_BOX(Fpanel),progresslabel,0,0,0); + } + Ndots = 20 * Fbusy_done / Fbusy_goal; // 0 - 20 + memset(progressdots+1,'.',Ndots); // [ N dots + 20-N blanks ] + memset(progressdots+1+Ndots,' ',20-Ndots); + gtk_label_set_text(GTK_LABEL(progresslabel),progressdots); + } + else { + if (progresslabel) gtk_widget_destroy(progresslabel); + progresslabel = 0; + } + + gtk_widget_show_all(Fpanel); + + return; +} + + +/**************************************************************************/ + +// GTK3 "draw" function for F and W mode drawing windows. +// 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 (triggered from GTK). +// Draw the image section currently within the visible window. +// May NOT be called from threads. See Fpaint2() for threads. + +int Fpaint(GtkWidget *Cdrawin, cairo_t *cr) +{ + PIXBUF *pixbuf; + PXB *pxb1; + 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 morgx, morgy; + int centerx, centery; + int refresh = 0; + int mousex, mousey; // mouse position after zoom + float magx, magy; // mouse drag, magnification ratios + + if (Fshutdown) return 1; // shutdown underway + if (! Cdrawin) return 1; + if (! gdkwin) return 1; + if (! Cstate || ! Cstate->fpxb) return 1; // no image + + Dww = gdk_window_get_width(gdkwin); // (new) drawing window size + Dhh = gdk_window_get_height(gdkwin); + if (Dww < 20 || Dhh < 20) return 1; // too small + + while (! resource_lock(Fpaintlock)) zsleep(0.01); // conflict from threads only 15.09 + + if (Dww != pdww || Dhh != pdhh) { // window size changed + refresh = 1; // image refresh needed + pdww = Dww; + pdhh = Dhh; + } + + if (Fpaintrequest) { // window image changed 15.09 + Fpaintrequest = 0; // window updated as of NOW 15.09 + refresh = 1; // image refresh needed + if (FGW == 'F' && (E0pxm || E3pxm)) { // insure window F and E0 or E3 + if (E3pxm) pxb1 = PXM_PXB_copy(E3pxm); // update fpxb from E0/E3 image + else pxb1 = PXM_PXB_copy(E0pxm); // or use already edited image + PXB_free(Cstate->fpxb); + Cstate->fpxb = pxb1; + } + } + + centerx = (Cstate->morgx + 0.5 * dww) / Cstate->mscale; // center of window, image space + centery = (Cstate->morgy + 0.5 * dhh) / Cstate->mscale; // (before window or scale change) + + fww = Cstate->fpxb->ww; // 1x image size + fhh = Cstate->fpxb->hh; + + if (Cstate->fzoom == 0) { // scale to fit window + wscale = 1.0 * Dww / fww; + hscale = 1.0 * Dhh / fhh; + if (wscale < hscale) Cstate->mscale = wscale; // use greatest ww/hh ratio + else Cstate->mscale = hscale; + if (fww <= Dww && fhh <= Dhh && ! Fblowup) Cstate->mscale = 1.0; // small image 1x unless Fblowup + zoomx = zoomy = 0; // no zoom target + } + else Cstate->mscale = Cstate->fzoom; // scale to fzoom level + + mww = fww * Cstate->mscale; // scaled image size for window + mhh = fhh * Cstate->mscale; + + dww = Dww; // image fitting inside drawing window + if (dww > mww) dww = mww; // image < window size + dhh = Dhh; + if (dhh > mhh) dhh = mhh; + + if (Cstate->mscale != Cstate->pscale) { // scale changed + Cstate->morgx = Cstate->mscale * centerx - 0.5 * dww; // change origin to keep same center + Cstate->morgy = Cstate->mscale * centery - 0.5 * dhh; // (subject to later rules) + Cstate->pscale = Cstate->mscale; // remember scale + refresh = 1; // image refresh needed + } + + if (! Cstate->mpxb) refresh++; // need to make mpxb + + if (refresh) { // image refresh needed + if (Cstate->mpxb) PXB_free(Cstate->mpxb); + if (Cstate->mscale == 1) Cstate->mpxb = PXB_copy(Cstate->fpxb); // fast 1x image + else Cstate->mpxb = PXB_rescale(Cstate->fpxb,mww,mhh); // rescaled image + } + + 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) { + Cstate->morgx -= round(Mwdragx); // same direction + Cstate->morgy -= round(Mwdragy); + } + if (Fdragopt == 2) { + Cstate->morgx += round(Mwdragx); // opposite direction + Cstate->morgy += round(Mwdragy); + } + if (Fdragopt == 3) { + Cstate->morgx -= round(Mwdragx * magx); // same direction, magnified + Cstate->morgy -= round(Mwdragy * magy); + } + if (Fdragopt == 4) { + Cstate->morgx += round(Mwdragx * magx); // opposite direction, magnified + Cstate->morgy += round(Mwdragy * magy); + } + } + + if (dww < Dww) Cstate->dorgx = 0.5 * (Dww - dww); // if scaled image width < window width + else Cstate->dorgx = 0; // center image in window + if (dhh < Dhh) Cstate->dorgy = 0.5 * (Dhh - dhh); + else Cstate->dorgy = 0; + + if (zoomx || zoomy) { // requested zoom center + Cstate->morgx = Cstate->mscale * zoomx - 0.5 * dww; // corresp. window position within image + Cstate->morgy = Cstate->mscale * zoomy - 0.5 * dhh; + } + + if (Cstate->morgx < 0) Cstate->morgx = 0; // maximize image within window + if (Cstate->morgy < 0) Cstate->morgy = 0; // (no unused margins) + if (Cstate->morgx + dww > mww) Cstate->morgx = mww - dww; + if (Cstate->morgy + dhh > mhh) Cstate->morgy = mhh - dhh; + + if (zoomx || zoomy) { // zoom target + mousex = zoomx * Cstate->mscale - Cstate->morgx + Cstate->dorgx; + mousey = zoomy * Cstate->mscale - Cstate->morgy + Cstate->dorgy; // mouse pointer follows target + move_pointer(Cdrawin,mousex,mousey); + zoomx = zoomy = 0; // reset zoom target + } + + if (zddarkbrite) darkbrite_paint(); // update dark/bright pixels + + gdk_cairo_set_source_rgba(cr,&bgcolor); // paint background color 15.09 + cairo_paint(cr); + + morgx = Cstate->morgx; // window position in (larger) image + morgy = Cstate->morgy; + pixbuf = Cstate->mpxb->pixbuf; // get image section within window + pixbuf = gdk_pixbuf_new_subpixbuf(pixbuf,morgx,morgy,dww,dhh); + gdk_cairo_set_source_pixbuf(cr,pixbuf,Cstate->dorgx,Cstate->dorgy); // paint section + cairo_paint(cr); + g_object_unref(pixbuf); + + mwcr = cr; // cairo context for draw funcs below + cairo_set_line_width(mwcr,1); + + if (Cstate == &Fstate) { // view mode is image + 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 + } + + if (Cstate == &Wstate) // view mode is world maps + geomap_paint_dots(); // 15.01 + + mwcr = 0; // cairo context invalid + resource_unlock(Fpaintlock); // unlock + + if (refresh && zdbrdist) m_show_brdist(0,0); // update brightness distribution + return 1; +} + + +/**************************************************************************/ + +// Repaint modified image synchrounously. +// May NOT be called from threads. + +void Fpaintnow() +{ + if (! Cdrawin) { + printz("Fpaintnow() Cdrawin = null \n"); + return; + } + + Fpaintrequest = 1; // request repaint of changed image 15.09 + gtk_widget_queue_draw(Cdrawin); + while (Fpaintrequest) zmainloop(); + return; +} + + +// Cause (modified) output image to get repainted soon. +// Fpaint() will be called by gtimefunc() next timer cycle. +// MAY be called from threads. + +void Fpaint2() +{ + Fpaintrequest = 1; // request repaint of changed image 15.09 + 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 Fpaint3(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 + Fpaint4(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. +// Writes directly on the window (cairo pixbuf paint). + +void Fpaint4(int px3, int py3, int ww3, int hh3) +{ + PIXBUF *pixbuf; + int px2, py2, ww2, hh2; + int crflag = 0; + + zthreadcrash(); + + if (! Cdrawin) return; + if (! gdkwin) return; + if (! Cstate || ! Cstate->fpxb) return; // no image + + 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; + } + + pixbuf = gdk_pixbuf_new_subpixbuf(Mpxb->pixbuf,px2,py2,ww2,hh2); // Mpxb area to paint 15.08 + + px2 = px2 - Morgx + Dorgx; // corresp. position in drawing window + py2 = py2 - Morgy + Dorgy; + + if (Mpxb->nc > 3) { // alpha channel present 15.09 + cairo_rectangle(mwcr,px2,py2,ww2,hh2); // paint background color + gdk_cairo_set_source_rgba(mwcr,&bgcolor); + cairo_fill(mwcr); + } + + 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 *widget, GdkEventButton *event, void *) +{ + void mouse_convert(int xpos1, int ypos1, int &xpos2, int &ypos2); + + int button, time, type, scroll; + static int bdtime = 0, butime = 0; + static int mdragx0, mdragy0; + + if (! Cdrawin) return; + if (! gdkwin) return; + if (! Cstate || ! Cstate->fpxb) return; // no image + + type = event->type; + button = event->button; // button, 1/2/3 = left/center/right + time = event->time; + Mwxposn = event->x; // mouse position in window + Mwyposn = event->y; + mouse_convert(Mwxposn,Mwyposn,Mxposn,Myposn); // convert to image space + + scroll = ((GdkEventScroll *) event)->direction; // scroll wheel event + + KBcontrolkey = KBshiftkey = KBaltkey = 0; + if (event->state & GDK_CONTROL_MASK) KBcontrolkey = 1; + if (event->state & GDK_SHIFT_MASK) KBshiftkey = 1; + if (event->state & GDK_MOD1_MASK) KBaltkey = 1; + + if (type == GDK_SCROLL) { // scroll wheel = zoom + zoomx = Mxposn; // zoom center = mouse position + zoomy = Myposn; + if (scroll == GDK_SCROLL_UP) m_zoom(0,"in"); + if (scroll == GDK_SCROLL_DOWN) m_zoom(0,"out"); + return; + } + + 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(Cdrawin); + } + } + } + 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 (mouseCBfunc && ! Fmousemain) { // pass to callback function + (* mouseCBfunc)(); + Fmousemain = 1; // click/drag params are processed here + } // unless reset by handler func. + + if (FGW == 'W') geomap_mousefunc(); // geomap mouse function + + if (! Fmousemain) return; // curr. function handles mouse + + if (LMclick) { // left click = zoom request + LMclick = 0; + zoomx = Mxclick; // zoom center = mouse + zoomy = Myclick; + m_zoom(0,"in"); + } + + if (RMclick) { // right click + RMclick = 0; + if (Cstate->fzoom) { // if zoomed image, reset to fit window + zoomx = zoomy = 0; + m_zoom(0,"fit"); + } + else if (curr_file && FGW == 'F') + image_Rclick_popup(); // image right-click popup menu + } + + if ((Mxdrag || Mydrag) && ! Fpaintlock) // drag = scroll by mouse 15.05 + gtk_widget_queue_draw(Cdrawin); + + return; +} + + +// convert mouse position from window space to image space + +void mouse_convert(int xpos1, int ypos1, int &xpos2, int &ypos2) +{ + xpos2 = (xpos1 - Cstate->dorgx + Cstate->morgx) / Cstate->mscale + 0.5; + ypos2 = (ypos1 - Cstate->dorgy + Cstate->morgy) / Cstate->mscale + 0.5; + + if (xpos2 < 0) xpos2 = 0; // if outside image put at edge + if (ypos2 < 0) ypos2 = 0; + + if (E3pxm) { + if (xpos2 >= E3pxm->ww) xpos2 = E3pxm->ww-1; + if (ypos2 >= E3pxm->hh) ypos2 = E3pxm->hh-1; + } + else { + if (xpos2 >= Cstate->fpxb->ww) xpos2 = Cstate->fpxb->ww-1; + if (ypos2 >= Cstate->fpxb->hh) ypos2 = Cstate->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; + + zthreadcrash(); + + if (! Cstate || ! Cstate->fpxb) return; + if (! Cdrawin) return; + if (! gdkwin) return; + if (! Cstate || ! Cstate->fpxb) return; // no image + + Rzoom = Cstate->fzoom; // current zoom ratio + + if (E3pxm) { + fww = E3pxm->ww; // 1x image size + fhh = E3pxm->hh; + } + else { + fww = Cstate->fpxb->ww; + fhh = Cstate->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 (strmatch(zoom,"Zoom+")) zoom = "in"; // menu button: + = zoom in + if (strmatch(zoom,"Zoom-")) zoom = "fit"; // - = fit window + + if (strmatch(zoom,"fit")) Cstate->fzoom = 0; // zoom to fit window + + if (strmatch(zoom,"100")) { + if (Cstate->fzoom != 0) Cstate->fzoom = 0; // toggle 100% and fit window + else Cstate->fzoom = 1; + } + + if (strstr("in out",zoom)) // caller: zoom in or out + { + if (! Cstate->fzoom) Cstate->fzoom = fitscale; // current zoom scale + for (fzoom2 = 0.125; fzoom2 < 4.0; fzoom2 *= zoomratio) // find nearest natural ratio + if (Cstate->fzoom < fzoom2 * sqrt(zoomratio)) break; + if (strmatch(zoom,"in")) zratio = zoomratio; // zoom in, make image larger + if (strmatch(zoom,"out")) zratio = 1.0 / zoomratio; // zoom out, make image smaller + Cstate->fzoom = fzoom2 * zratio; + + if (Cstate->fzoom > 0.124 && Cstate->fzoom < 0.126) // hit these ratios exactly + Cstate->fzoom = 0.125; + if (Cstate->fzoom > 0.24 && Cstate->fzoom < 0.26) + Cstate->fzoom = 0.25; + if (Cstate->fzoom > 0.49 && Cstate->fzoom < 0.51) + Cstate->fzoom = 0.50; + if (Cstate->fzoom > 0.99 && Cstate->fzoom < 1.01) + Cstate->fzoom = 1.00; + if (Cstate->fzoom > 1.99 && Cstate->fzoom < 2.01) + Cstate->fzoom = 2.00; + if (Cstate->fzoom > 3.99) Cstate->fzoom = 4.0; // max. allowed zoom + if (Cstate->fzoom < fitscale) Cstate->fzoom = 0; // image < window + } + + if (FGW == 'W') { // optimize for geomaps + if (strmatch(zoom,"in") && Cstate->fzoom < 1.0) + Cstate->fzoom = 1.0; // zoom to 100% directly + if (strmatch(zoom,"out")) Cstate->fzoom = 0.0; // zoom out = fit window directly + if (Cstate->fzoom == 1.0 && Rzoom == 1.0) { + gtk_widget_queue_draw(Cdrawin); // if already, move mouse pointer only + return; + } + } + + if (Cstate->fzoom > 1.0) { // limit image in window to 1 gigabyte + pixels = Cstate->fzoom * fww * Cstate->fzoom * fhh; // (333 megapixels x 3 bytes/pixel) + if (pixels > 333 * MEGA) { // if size is at maximum, + Cstate->fzoom = Rzoom; // move mouse pointer only + gtk_widget_queue_draw(Cdrawin); + return; + } + } + + if (! Cstate->fzoom) zoomx = zoomy = 0; // no requested zoom center + Fpaint2(); // 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 + +namespace trimrotate { void KBfunc(int key); } // keyboard functions called from here +namespace perspective { void KBfunc(int key); } +namespace mashup { void KBfunc(int key); } + +int KBpress(GtkWidget *win, GdkEventKey *event, void *) // prevent propagation of key-press +{ // events to menu buttons + KBkey = event->keyval; + + KBcontrolkey = KBshiftkey = KBaltkey = 0; + if (event->state & GDK_CONTROL_MASK) KBcontrolkey = 1; + 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]; + + KBcontrolkey = KBshiftkey = KBaltkey = 0; + if (event->state & GDK_CONTROL_MASK) KBcontrolkey = 1; + if (event->state & GDK_SHIFT_MASK) KBshiftkey = 1; + if (event->state & GDK_MOD1_MASK) KBaltkey = 1; + + KBkey = event->keyval; + + if (! KBcontrolkey && ! KBshiftkey && ! KBaltkey) { // f/g/w keys set corresp. window mode + if (KBkey == GDK_KEY_f) { m_viewmode(0,"F"); goto KBend; } // Ctrl/Alt + f/g/w can be used for shortcuts + if (KBkey == GDK_KEY_g) { m_viewmode(0,"G"); goto KBend; } + if (KBkey == GDK_KEY_w) { m_viewmode(0,"W"); goto KBend; } + } + + if (KBcapture) return 1; // let current function handle it + + if (KBcontrolkey + KBshiftkey + KBaltkey) goto KBcustom; // combinations are always custom 15.06 + +// 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 is fullscreen toggle + if (Fslideshow) { + ss_escape = 1; // quit slideshow if active + goto KBend; + } + if (! Ffullscreen) win_fullscreen(0); // toggle full-screen mode and back + else win_unfullscreen(); + goto KBend; + } + + if (KBkey == GDK_KEY_Escape) { // ESC key + if (Ffullscreen) win_unfullscreen(); // exit full screen mode + if (Fslideshow) ss_escape = 1; // quit slideshow if active + goto KBend; + } + + if (KBkey == GDK_KEY_s) // 's' shortcut for Sync Gallery 15.02 + navi::menufuncx(0,"Sync"); + + if (FGW == 'G') { // window mode = G + navi::KBrelease(win,event,0); // pass to gallery KB function + goto KBend; // (keys below not for gallery) + } + + if (KBkey == GDK_KEY_z) { // 'z' key + if (! KBcontrolkey) m_zoom(0,"100"); // if no CTRL, toggle zoom 1x + goto KBend; + } + + if (FGW == 'W') goto KBend; // window mode = W, no other KB events + + if (KBkey == GDK_KEY_plus) m_zoom(0,"in"); // + key >> zoom in + if (KBkey == GDK_KEY_minus) m_zoom(0,"fit"); // - key >> fit to window + if (KBkey == GDK_KEY_equal) m_zoom(0,"in"); // = key: same as + + if (KBkey == GDK_KEY_KP_Add) m_zoom(0,"in"); // keypad + + if (KBkey == GDK_KEY_KP_Subtract) m_zoom(0,"fit"); // keypad - + + if (Fslideshow) { // slide show mode + if (KBkey == GDK_KEY_Left) ss_Larrow = 1; // arrow keys = prev/next image + if (KBkey == GDK_KEY_Right) ss_Rarrow = 1; + if (KBkey == GDK_KEY_space) ss_spacebar = 1; // spacebar = pause/resume + if (KBkey == GDK_KEY_b) ss_Bkey = 1; // 'b' = blank screen + pause + if (KBkey == GDK_KEY_m) ss_Mkey = 1; // 'm' shortcut for Magnify + goto KBend; + } + + if (Fmashup) { // mashup active, pass KB key + mashup::KBfunc(KBkey); + goto KBend; + } + + if (CEF && CEF->menufunc == m_trimrotate) { // trim_rotate active, pass KB key + trimrotate::KBfunc(KBkey); + goto KBend; + } + + if (CEF && CEF->menufunc == m_perspective) { // perspective active, pass KB key + perspective::KBfunc(KBkey); + 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 + + if (KBkey == GDK_KEY_m) // 'm' Magnify 15.01 + m_magnify(0,0); + +// look for custom shortcut keys in shortcut table + +KBcustom: + + 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 (strmatchcase(matchkey,shortcutkey[ii])) break; + + if (ii < Nshortcuts) { // convert menu name to menu function + for (jj = 0; jj < Nmenus; jj++) { + if (! menutab[jj].menu) continue; // ignore separator + if (strmatchcase(shortcutmenu[ii],ZTX(menutab[jj].menu))) 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 or panel) + +void win_fullscreen(int hidemenu) +{ + zthreadcrash(); + + if (FGW == 'F' && hidemenu) { // if F window, hide menu and panel + gtk_widget_hide(Fmenu); + gtk_widget_hide(Fpanel); + } + + gtk_window_fullscreen(MWIN); + while (! Ffullscreen) zmainloop(); // 15.09 + + return; +} + + +// restore window to former size and restore menu etc. + +void win_unfullscreen() +{ + zthreadcrash(); + + gtk_window_unfullscreen(MWIN); // restore old window size + gtk_widget_show(Fmenu); + gtk_widget_show(Fpanel); + Ffullscreen = 0; + return; +} + + +/**************************************************************************/ + +// update information in main window title bar + +void set_mwin_title() +{ + int cc, gtype, fposn, nfiles, nimages; + char *pp, titlebar[250]; + char pdate[12], ptime[12], pdatetime[20]; + char fname[100], gname[100], fdirk[100]; + + zthreadcrash(); + + if (! curr_file || *curr_file != '/') { + gtk_window_set_title(MWIN,Frelease); + return; + } + + pp = (char *) strrchr(curr_file,'/'); + strncpy0(fname,pp+1,99); // file name + cc = pp - curr_file; + if (cc < 99) strncpy0(fdirk,curr_file,cc+2); // get dirk/path/ if short enough + else { + strncpy(fdirk,curr_file,96); // or use /dirk/path... + strcpy(fdirk+95,"..."); + } + + nfiles = navi::nfiles; // total gallery files (incl. directories) + nimages = navi::nimages; // total image files + + fposn = gallery_position(curr_file,curr_file_posn); // curr. file in curr. gallery? + if (fposn >= 0) { + curr_file_posn = fposn; + fposn = fposn + 1 - nfiles + nimages; // position among images, 1-based + } + + if (*meta_pdate) { + metadate_pdate(meta_pdate,pdate,ptime); // get formatted date and time 15.03 + strncpy0(pdatetime,pdate,11); // yyyy-mm-dd hh:mm + strncpy0(pdatetime+11,ptime,6); + pdatetime[10] = ' '; + } + else strcpy(pdatetime,"(undated)"); + + gtype = navi::gallerytype; + + if (gtype == 1) // gallery name = directory + snprintf(titlebar,250,"%s %d/%d %s %s %s", + Frelease,fposn,nimages,fname,pdatetime,fdirk); + else { + if (gtype == 2 || gtype == 3) + strcpy(gname,"SEARCH RESULTS"); + else if (gtype == 4) { + pp = strrchr(navi::galleryname,'/'); + if (! pp) pp = navi::galleryname; + else pp++; + strcpy(gname,"ALBUM: "); + strncpy0(gname+7,pp,87); + } + else if (gtype == 5) + strcpy(gname,"RECENT FILES"); + else if (gtype == 6) + strcpy(gname,"NEWEST FILES"); + else + strcpy(gname,"NO GALLERY"); + + if (fposn > 0) + snprintf(titlebar,250,"%s %s %d/%d %s %s %s", // window title bar + Frelease,gname,fposn,nimages,fname,pdatetime,fdirk); + else + snprintf(titlebar,250,"%s %s (*)/%d %s %s %s", // image not in gallery + Frelease,gname,nimages,fname,pdatetime,fdirk); + } + + gtk_window_set_title(MWIN,titlebar); + 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 PIXBUF *pixbuf1 = 0, *pixbuf4 = 0; + + zthreadcrash(); + + if (! Cdrawin) return; + if (! gdkwin) return; + if (! Cstate || ! Cstate->fpxb) return; // no image + + 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 + } + + if (Cstate->fpxb->nc > 3) // omit transparent pixels 15.09 + if (PXBpix(Cstate->fpxb,px,py)[3] < 128) return; + + 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) { // write 1x1 pixels 15.08 + pixel[0] = LINE_COLOR[0]; + pixel[1] = LINE_COLOR[1]; + pixel[2] = LINE_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] = LINE_COLOR[0]; + pixel[1] = pixel[4] = pixel[7] = pixel[10] = LINE_COLOR[1]; + pixel[2] = pixel[5] = pixel[8] = pixel[11] = LINE_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) +{ + GdkPixbuf *pixbuf; + static int pqx, pqy; + int qx, qy, crflag = 0; + + zthreadcrash(); + + if (! Cdrawin) return; + if (! gdkwin) return; + if (! Cstate || ! Cstate->fpxb) return; // no image + + 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; + } + + pixbuf = gdk_pixbuf_new_subpixbuf(Mpxb->pixbuf,qx,qy,2,2); // 2x2 Mpxb area to copy 15.08 + qx = qx - Morgx + Dorgx; // target pixel in window + qy = qy - Morgy + Dorgy; + gdk_cairo_set_source_pixbuf(mwcr,pixbuf,qx,qy); + cairo_paint(mwcr); + + g_object_unref(pixbuf); + + if (crflag) { + cairo_destroy(mwcr); + mwcr = 0; + } + + return; +} + + +/**************************************************************************/ + +// draw line. +// coordinates are image space. +// type = 1/2 for solid/dotted line + +void draw_line(int x1, int y1, int x2, int y2, int type) +{ + float px1, py1, px2, py2; + double dashes[2] = { 4, 4 }; + int crflag = 0; + double R, G, B; + + zthreadcrash(); + + if (! Cdrawin) return; + if (! gdkwin) return; + if (! Cstate || ! Cstate->fpxb) return; // no image + + 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; // play nice + 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; + } + + R = LINE_COLOR[0] / 255.0; // use line color + G = LINE_COLOR[1] / 255.0; + B = LINE_COLOR[2] / 255.0; + + cairo_set_source_rgb(mwcr,R,G,B); + if (type == 2) cairo_set_dash(mwcr,dashes,2,0); // dotted line + else cairo_set_dash(mwcr,dashes,0,0); + + cairo_move_to(mwcr,px1,py1); // draw line + cairo_line_to(mwcr,px2,py2); + cairo_stroke(mwcr); + + if (crflag) { + cairo_destroy(mwcr); + mwcr = 0; + } + + 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; + + zthreadcrash(); + + if (! Cdrawin) return; + if (! gdkwin) return; + if (! Cstate || ! Cstate->fpxb) return; // no image + + 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; + + zthreadcrash(); + + if (! Cdrawin) return; + if (! gdkwin) return; + if (! Cstate || ! Cstate->fpxb) return; // no image + + 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(ptoplines[ii].x1,ptoplines[ii].y1, + ptoplines[ii].x2,ptoplines[ii].y2); + + if (arg == 1 || arg == 3) // draw new lines + for (ii = 0; ii < Ntoplines; ii++) + draw_line(toplines[ii].x1,toplines[ii].y1, + toplines[ii].x2,toplines[ii].y2,toplines[ii].type); + + 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 + ptoplines[ii] = toplines[ii]; + + Nptoplines = Ntoplines; + + return; +} + + +/**************************************************************************/ + +// draw a grid of horizontal and vertical lines. +// grid line spacings are in window space. + +void draw_gridlines() +{ + int crflag = 0, G = currgrid; + int px, py, gww, ghh; + int startx, starty, endx, endy, stepx, stepy; + int startx1, starty1; + + zthreadcrash(); + + if (! Cdrawin) return; + if (! gdkwin) return; + if (! Cstate || ! Cstate->fpxb) return; // no image + + if (! gridsettings[G][GON]) return; // grid lines off + + gww = dww; // grid box size + ghh = dhh; + startx = Dorgx; // starting corner (top left) + starty = Dorgy; + + if (CEF && strmatch(CEF->funcname,"trim_rotate")) { // trim/rotate function is active + gww = Mscale * (trimrect[2] - trimrect[0]); // fit grid box to trim rectangle + ghh = Mscale * (trimrect[3] - trimrect[1]); + startx = Mscale * trimrect[0] - Morgx + Dorgx; + starty = Mscale * trimrect[1] - Morgy + Dorgy; + } + + endx = startx + gww; + endy = starty + ghh; + + stepx = gridsettings[G][GXS]; // space between grid lines + stepy = gridsettings[G][GYS]; // (window space) + + if (gridsettings[G][GXC]) + stepx = gww / (1 + gridsettings[G][GXC]); // if line counts specified, + if (gridsettings[G][GYC]) // set spacing accordingly + stepy = ghh / ( 1 + gridsettings[G][GYC]); + + startx1 = startx + stepx * gridsettings[G][GXF] / 100; // variable starting offsets + starty1 = starty + stepy * gridsettings[G][GYF] / 100; + + 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 = startx1; px < endx; px += stepx) { + cairo_move_to(mwcr,px,starty); + cairo_line_to(mwcr,px,endy); + } + + if (gridsettings[G][GY] && stepy) + for (py = starty1; py < endy; py += stepy) { + cairo_move_to(mwcr,startx,py); + cairo_line_to(mwcr,endx,py); + } + + cairo_stroke(mwcr); + + cairo_set_source_rgb(mwcr,0,0,0); // adjacent black lines + + if (gridsettings[G][GX] && stepx) + for (px = startx1+1; px < endx+1; px += stepx) { + cairo_move_to(mwcr,px,starty); + cairo_line_to(mwcr,px,endy); + } + + if (gridsettings[G][GY] && stepy) + for (py = starty1+1; py < endy+1; py += stepy) { + cairo_move_to(mwcr,startx,py); + cairo_line_to(mwcr,endx,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) +{ + zthreadcrash(); + + if (Ntoptext == maxtoptext) { + printz("*** 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 Fpaint(). + +void draw_toptext() +{ + int crflag = 0; + + zthreadcrash(); + + if (! Cdrawin) return; + if (! gdkwin) return; + if (! Cstate || ! Cstate->fpxb) return; // no image + + 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 = 0; + static PangoLayout *pangolayout = 0; + static char priorfont[40] = ""; + int ww, hh, crflag = 0; + + zthreadcrash(); + + if (! Cdrawin) return; + if (! gdkwin) return; + + px = Mscale * px - Morgx + Dorgx; // image to window space + py = Mscale * py - Morgy + Dorgy; + + if (! strmatch(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(Cdrawin,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 + +void add_topcircle(int px, int py, int radius) +{ + if (Ntopcircles == maxtopcircles) { + printz("*** maxtopcircles exceeded \n"); + return; + } + + int ii = Ntopcircles++; + topcircles[ii].px = px; + topcircles[ii].py = py; + topcircles[ii].radius = radius; + + return; +} + + +// draw current circles over the image in the window +// called from window repaint function Fpaint() + +void draw_topcircles() +{ + int ii, px, py, rad; + int crflag = 0; + double R, G, B; + + zthreadcrash(); + + if (! Cdrawin) return; + if (! gdkwin) return; + if (! Cstate || ! Cstate->fpxb) return; // no image + + if (! mwcr) { + mwcr = gdk_cairo_create(gdkwin); // create cairo context if not already + cairo_set_line_width(mwcr,1); + crflag = 1; + } + + R = LINE_COLOR[0] / 255.0; // use LINE_COLOR + G = LINE_COLOR[1] / 255.0; + B = LINE_COLOR[2] / 255.0; + + 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 + + cairo_set_source_rgb(mwcr,R,G,B); + 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 around the mouse pointer. +// Prior circle will be erased first. +// Used for mouse/brush radius in select and paint functions. +// cx, cy, cr: center and radius of circle in image space. +// if Ferase, then erase previous circle only. + +void draw_mousecircle(int cx, int cy, int cr, int Ferase) // 15.09 +{ + int px3, py3, ww3, hh3; + static int ppx3, ppy3, pww3 = 0, phh3; + int crflag = 0; + int px, py, qx, qy, nc, rs, pok; + uint8 *mpix, *mpix1; + double R, G, B; + double t, dt, t1, t2; + + zthreadcrash(); + + if (! Cdrawin) return; + if (! gdkwin) return; + if (! Cstate || ! Cstate->mpxb) return; // no image + + if (pww3 > 0) { // erase prior + Fpaint4(ppx3,ppy3,pww3,phh3); // refresh from Mpxb + pww3 = 0; + } + + if (Ferase) return; // erase only, done + + rs = gdk_pixbuf_get_rowstride(Cstate->mpxb->pixbuf); // image row stride + nc = gdk_pixbuf_get_n_channels(Cstate->mpxb->pixbuf); // image no. channels + mpix = gdk_pixbuf_get_pixels(Cstate->mpxb->pixbuf); // image pixels + + px3 = cx - cr - 2; // convert pointer center + radius + py3 = cy - cr - 2; // to block position, width, length + ww3 = 2 * cr + 4; + hh3 = 2 * cr + 4; + + ppx3 = px3; // remember pixel block area + ppy3 = py3; // to erase in next call + pww3 = ww3; + phh3 = hh3; + + if (! mwcr) { + mwcr = gdk_cairo_create(gdkwin); // create cairo context if not already + crflag = 1; + } + + cx = cx * Mscale - Morgx + Dorgx; // convert to window coordinates + cy = cy * Mscale - Morgy + Dorgy; + cr = cr * Mscale; + + R = LINE_COLOR[0] / 255.0; // use LINE_COLOR + G = LINE_COLOR[1] / 255.0; + B = LINE_COLOR[2] / 255.0; + + cairo_set_source_rgb(mwcr,R,G,B); + + t1 = t2 = -1; // angle limits of arc to draw + dt = 1.0 / cr; + + for (t = 0; t < 2*PI; t += dt) // loop 0-360 degrees + { + px = cx + cr * cos(t); // pixel on mouse circle + py = cy + cr * sin(t); + + pok = 1; // assume pixel OK to draw + + if (px < Dorgx || py < Dorgy) pok = 0; // outside image limits + if (px >= Dorgx+dww || py >= Dorgy+dhh) pok = 0; + + if (pok && nc > 3) { + qx = px + Morgx - Dorgx; // check alpha channel + qy = py + Morgy - Dorgy; + mpix1 = mpix + qy * rs + qx * nc; + if (mpix1[3] < 128) pok = 0; // pixel is transparent + } + + if (pok) { // pixel ok, add to arc + if (t1 < 0) t1 = t; // start of arc to draw + t2 = t; // end of arc, so far + } + + else if (t1 >= 0) { // pixel not ok + cairo_arc(mwcr,cx,cy,cr,t1,t2); // draw accumulated arc + cairo_stroke(mwcr); + t1 = t2 = -1; // start over + } + } + + if (t1 >= 0) { + cairo_arc(mwcr,cx,cy,cr,t1,t2); // draw rest of arc + cairo_stroke(mwcr); + } + + if (crflag) { + cairo_destroy(mwcr); + mwcr = 0; + } + + return; +} + + +// duplicate for drawing and tracking a 2nd mouse circle +// (used by paint/clone to track source pixels being cloned) + +void draw_mousecircle2(int cx, int cy, int cr, int Ferase) // 15.09 +{ + int px3, py3, ww3, hh3; + static int ppx3, ppy3, pww3 = 0, phh3; + int crflag = 0; + int px, py, qx, qy, nc, rs, pok; + uint8 *mpix, *mpix1; + double R, G, B; + double t, dt, t1, t2; + + zthreadcrash(); + + if (! Cdrawin) return; + if (! gdkwin) return; + if (! Cstate || ! Cstate->mpxb) return; // no image + + if (pww3 > 0) { // erase prior + Fpaint4(ppx3,ppy3,pww3,phh3); // refresh from Mpxb + pww3 = 0; + } + + if (Ferase) return; // erase only, done + + rs = gdk_pixbuf_get_rowstride(Cstate->mpxb->pixbuf); // image row stride + nc = gdk_pixbuf_get_n_channels(Cstate->mpxb->pixbuf); // image no. channels + mpix = gdk_pixbuf_get_pixels(Cstate->mpxb->pixbuf); // image pixels + + px3 = cx - cr - 2; // convert pointer center + radius + py3 = cy - cr - 2; // to block position, width, length + ww3 = 2 * cr + 4; + hh3 = 2 * cr + 4; + + ppx3 = px3; // remember pixel block area + ppy3 = py3; // to erase in next call + pww3 = ww3; + phh3 = hh3; + + if (! mwcr) { + mwcr = gdk_cairo_create(gdkwin); // create cairo context if not already + crflag = 1; + } + + cx = cx * Mscale - Morgx + Dorgx; // convert to window coordinates + cy = cy * Mscale - Morgy + Dorgy; + cr = cr * Mscale; + + R = LINE_COLOR[0] / 255.0; // use LINE_COLOR + G = LINE_COLOR[1] / 255.0; + B = LINE_COLOR[2] / 255.0; + + cairo_set_source_rgb(mwcr,R,G,B); + + t1 = t2 = -1; // angle limits of arc to draw + dt = 1.0 / cr; + + for (t = 0; t < 2*PI; t += dt) // loop 0-360 degrees + { + px = cx + cr * cos(t); // pixel on mouse circle + py = cy + cr * sin(t); + + pok = 1; // assume pixel OK to draw + + if (px < Dorgx || py < Dorgy) pok = 0; // outside image limits + if (px >= Dorgx+dww || py >= Dorgy+dhh) pok = 0; + + if (pok && nc > 3) { + qx = px + Morgx - Dorgx; // check alpha channel + qy = py + Morgy - Dorgy; + mpix1 = mpix + qy * rs + qx * nc; + if (mpix1[3] < 128) pok = 0; // pixel is transparent + } + + if (pok) { // pixel ok, add to arc + if (t1 < 0) t1 = t; // start of arc to draw + t2 = t; // end of arc, so far + } + + else if (t1 >= 0) { // pixel not ok + cairo_arc(mwcr,cx,cy,cr,t1,t2); // draw accumulated arc + cairo_stroke(mwcr); + t1 = t2 = -1; // start over + } + } + + if (t1 >= 0) { + cairo_arc(mwcr,cx,cy,cr,t1,t2); // draw rest of arc + cairo_stroke(mwcr); + } + + if (crflag) { + cairo_destroy(mwcr); + mwcr = 0; + } + + return; +} + + +/**************************************************************************/ + +// Draw ellipse around the mouse pointer. +// Prior ellipse will be erased first. +// cx, cy, cww, chh: center and axes of ellipse +// if Ferase, then erase previous ellipse only. + +void draw_mousearc(int cx, int cy, int cww, int chh, int Ferase) +{ + int px3, py3, ww3, hh3; + static int ppx3, ppy3, pww3 = 0, phh3; + int px, py; + int crflag = 0; + float a, b, a2, b2; + float x, y, x2, y2; + + zthreadcrash(); + + if (! Cdrawin) return; + if (! gdkwin) return; + if (! Cstate || ! Cstate->fpxb) return; // no image + + gdk_window_freeze_updates(gdkwin); // visually smoother + + if (pww3 > 0) { // erase prior + Fpaint4(ppx3,ppy3,pww3,phh3); // refresh from Mpxb + pww3 = 0; + } + + if (Ferase) { + gdk_window_thaw_updates(gdkwin); // erase only was wanted + return; + } + + px3 = cx - (cww + 2) / 2; // convert pointer center + radius + py3 = cy - (chh + 2) / 2; // to block position, width, length + ww3 = cww + 2; + hh3 = chh + 2; + + ppx3 = px3; // remember pixel block area + ppy3 = py3; // to erase in next call + pww3 = ww3; + phh3 = hh3; + + if (! mwcr) { + mwcr = gdk_cairo_create(gdkwin); // create cairo context if not already + crflag = 1; + } + + a = cww / 2; // ellipse constants from + b = chh / 2; // enclosing rectangle + a2 = a * a; + b2 = b * b; + + for (y = -b; y < b; y++) // step through y values, omitting + { // curve points covered by x values + y2 = y * y; + x2 = a2 * (1 - y2 / b2); + x = sqrtf(x2); // corresp. x values, + and - + py = y + cy; + px = cx - x + 0.5; + draw_pixel(px,py); // draw 2 points on ellipse + px = cx + x + 0.5; + draw_pixel(px,py); + } + + for (x = -a; x < a; x++) // step through x values, omitting + { // curve points covered by y values + x2 = x * x; + y2 = b2 * (1 - x2 / a2); + y = sqrtf(y2); // corresp. y values, + and - + px = x + cx; + py = cy - y + 0.5; + draw_pixel(px,py); // draw 2 points on ellipse + py = cy + y + 0.5; + draw_pixel(px,py); + } + + if (crflag) { + cairo_destroy(mwcr); + mwcr = 0; + } + + gdk_window_thaw_updates(gdkwin); + 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 = splcurve_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)) +{ + zthreadcrash(); + + int cc = sizeof(spldat); // allocate spc curve data area + spldat * sd = (spldat *) zmalloc(cc); + 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; + float dist, dx, dy; + + zthreadcrash(); + + 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) { // not the last anchor point + dx = sd->apx[spc][ap+1] - mxval; // get distance to next anchor point + if (dx < 0.01) return 0; // x-value not increasing, forbid + dy = sd->apy[spc][ap+1] - myval; + dist = sqrtf(dx * dx + dy * dy); + if (dist < 0.05) return 0; // too close, forbid + } + if (ap > 0) { // not the first anchor point + dx = mxval - sd->apx[spc][ap-1]; // get distance to prior anchor point + if (dx < 0.01) return 0; // x-value not increasing, forbid + dy = myval - sd->apy[spc][ap-1]; + dist = sqrtf(dx * dx + dy * dy); + if (dist < 0.05) return 0; // too close, forbid + } + } + + 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; // nearest curve + ap = minap; // nearest anchor point + } + + if (evtype == GDK_BUTTON_PRESS && button == 3) // right click, remove anchor point + { + if (sqrtf(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 < 0) printz("meaningless reference %d \n",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 (sqrtf(mindist2) < 0.05) // anchor point close enough, + { // move this one to mouse position + if (ap < sd->nap[spc]-1) { // not the last anchor point + dx = sd->apx[spc][ap+1] - mxval; // get distance to next anchor point + if (dx < 0.01) return 0; // x-value not increasing, forbid + dy = sd->apy[spc][ap+1] - myval; + dist = sqrtf(dx * dx + dy * dy); + if (dist < 0.05) return 0; // too close, forbid + } + if (ap > 0) { // not the first anchor point + dx = mxval - sd->apx[spc][ap-1]; // get distance to prior anchor point + if (dx < 0.01) return 0; // x-value not increasing, forbid + dy = myval - sd->apy[spc][ap-1]; + dist = sqrtf(dx * dx + dy * dy); + if (dist < 0.05) return 0; // too close, forbid + } + } + + 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,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 + } + } + + if (evtype == GDK_MOTION_NOTIFY) Fdrag = 1; // remember drag is underway + + 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 + if (sd->drawarea) gtk_widget_queue_draw(sd->drawarea); // redraw graph + if (sd->spcfunc) sd->spcfunc(spc); // call user function + + return 0; +} + + +// add a new anchor point to a curve +// spc: curve number +// px, py: node coordinates in the range 0-1 + +int splcurve_addnode(spldat *sd, int spc, float px, float py) // 15.07 +{ + int ap, kk; + + for (ap = 0; ap < sd->nap[spc]; ap++) // find anchor point with next higher x + if (px <= sd->apx[spc][ap]) break; // (ap may come out 0 or nap) + + if (ap < sd->nap[spc] && sd->apx[spc][ap] - px < 0.05) // disallow < 0.05 from next + return 0; // or prior anchor point + if (ap > 0 && px - 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->apx[spc][ap] = px; // add node coordinates + sd->apy[spc][ap] = py; + + sd->nap[spc]++; // up point count + return 1; +} + + +// 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; + + zthreadcrash(); + + 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, cchar *file) +{ + char *pfile; + int nn, ii, jj; + FILE *fid = 0; + int Nspc, vert[10], nap[10]; + float apx[10][50], apy[10][50]; + + zthreadcrash(); + + if (file) pfile = zstrdup(file); + else pfile = zgetfile(ZTX("load curve from a file"),MWIN,"file",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) // redraw all curves + gtk_widget_queue_draw(sd->drawarea); + + return 1; + +fail: + if (fid) fclose(fid); + printz("curve file is invalid \n"); + return 0; + +fail2: + if (fid) fclose(fid); + printz("curve file has different no. of curves \n"); + return 0; +} + + +// save curve data to a file + +int splcurve_save(spldat *sd, cchar *file) +{ + char *pfile, *pp; + int ii, jj; + FILE *fid; + + if (file) pp = zstrdup(file); + else pp = zgetfile(ZTX("save curve to a file"),MWIN,"save",saved_curves_dirk); + if (! pp) return 0; + + pfile = zstrdup(pp,8); + 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 management + + edit_setup() get E0 if none, E0 > E1 > E3 + edit_cancel() free (E1 E3 ER) + edit_done() E3 > E0, free (E1 ER) add to undo stack + edit_undo() E3 > ER, E1 > E3 + edit_redo() ER > E3 + edit_reset() free ER, E1 > E3 + edit_fullsize() free (E1 E3) E0 > E1 > E3 + +*************************************************************************** + + Setup for a new edit transaction + Create E1 (edit input) and E3 (edit output) pixmaps from + previous edit (E0) or image file (new E0). + + FprevReq 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. gamma) + +***************************************************************************/ + +int edit_setup(editfunc &EF) +{ + int yn, rww, rhh; + int Fpreview; + + if (! curr_file) return 0; // no image file + if (FGW != 'F') return 0; + + if (CEF && CEF->zd) // if pending edit, complete it + zdialog_send_event(CEF->zd,"done"); + if (checkpend("edit")) return 0; // failed (HDR etc.) + + if (URS_pos > maxedits-2) { // undo/redo stack capacity reached + zmessageACK(Mwin,ZTX("Too many edits, please save image")); + return 0; + } + + if (checkpend("busy block")) return 0; // blocking function 15.04 + + free_geomap(); // free map memory for edit usage + + 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 + if (zdsela) 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; + curr_file_bpc = f_load_bpc; + } + + if (! resource_lock(Fpaintlock)) return 0; // lock window update + + if (URS_pos == 0) save_undo(); // initial image >> undo/redo stack + + Fpreview = 0; // assume no preview + + if (EF.FprevReq && ! Fzoom) // preview requested by edit func. + Fpreview = 1; + + if (EF.Farea == 2 && sa_stat == 3) // not if select area active + Fpreview = 0; + + if (E0pxm->ww * E0pxm->hh < 2000000) // if image is small, don't use preview + Fpreview = 0; + + 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 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 + + CEF = &EF; // set current edit function + CEF->Fmods = 0; // image not modified yet + 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 thread func if any + + resource_unlock(Fpaintlock); // moved down + Fpaintnow(); // update image synchronous + return 1; +} + + +/**************************************************************************/ + +// print error message and caller address if CEF invalid + +int CEF_invalid() +{ + if (CEF) return 0; + printz("CEF invalid \n"); // 15.05 + return 1; +} + + +/**************************************************************************/ + +// process edit cancel +// keep: retain zdialog, mousefunc, curves + +void edit_cancel(int keep) // 15.04 +{ + if (CEF_invalid()) return; + wrapup_thread(9); // tell thread to quit, wait 15.05 + if (CEF_invalid()) return; + if (! resource_lock(Fpaintlock)) return; + + PXM_free(E1pxm); // free E1, E3, ER + PXM_free(E3pxm); + PXM_free(ERpxm); + PXM_free(E9pxm); + + if (! keep) + { + if (CEF->zd == zd_thread) zd_thread = 0; // thread -> zdialog event + if (CEF->zd) zdialog_free(CEF->zd); // kill dialog + if (CEF->mousefunc == mouseCBfunc) freeMouse(); // if my mouse, free mouse + if (CEF->curves) zfree(CEF->curves); // free curves data + } + + CEF = 0; // no current edit func + resource_unlock(Fpaintlock); + Fpaintnow(); // update image synchronous + return; +} + + +/**************************************************************************/ + +// process edit done +// keep: retain zdialog, mousefunc, curves + +void edit_done(int keep) // 15.04 +{ + if (CEF_invalid()) return; + wrapup_thread(8); // tell thread to finish, wait 15.05 + if (CEF_invalid()) return; + if (! resource_lock(Fpaintlock)) return; + + 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); + PXM_free(E9pxm); + 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); + PXM_free(E9pxm); + } + + if (! keep) + { + if (CEF->zd == zd_thread) zd_thread = 0; // thread -> zdialog event + if (CEF->zd) zdialog_free(CEF->zd); // kill dialog + if (CEF->mousefunc == mouseCBfunc) freeMouse(); // if my mouse, free mouse + if (CEF->curves) zfree(CEF->curves); // free curves data + } + + CEF = 0; // no current edit func + resource_unlock(Fpaintlock); + Fpaintnow(); // update image synchronous + return; +} + + +/**************************************************************************/ + +// Convert from preview mode (window-size pixmaps) to full-size pixmaps. +// Called by the edit function prior to edit_done(). + +void edit_fullsize() // 15.04 +{ + if (CEF_invalid()) return; + wait_thread_idle(); // wait for thread idle + if (CEF_invalid()) return; + if (! CEF->Fpreview) return; // FprevReq ignored if small image + if (! resource_lock(Fpaintlock)) return; // 15.02 + PXM_free(E1pxm); // free preview pixmaps + PXM_free(E3pxm); + E1pxm = PXM_copy(E0pxm); // E0 >> E1, full size image + E3pxm = PXM_copy(E1pxm); // E1 >> E3 + PXB_free(Cstate->fpxb); + Cstate->fpxb = PXM_PXB_copy(E3pxm); // update Fpxb from image E3 + Fzoom = 0; + resource_unlock(Fpaintlock); + CEF->Fpreview = 0; + return; +} + + +// edit undo, redo, reset functions +// these apply within an active edit function + +void edit_undo() +{ + F1_help_topic = "undo_redo"; + + if (CEF_invalid()) return; + wait_thread_idle(); // wait for thread idle + if (CEF_invalid()) return; + if (! CEF->Fmods) return; // not modified + if (! resource_lock(Fpaintlock)) return; // 15.02 + + PXM_free(ERpxm); // E3 >> redo copy + ERpxm = E3pxm; + E3pxm = PXM_copy(E1pxm); // E1 >> E3 + CEF->Fmods = 0; // reset image modified status + resource_unlock(Fpaintlock); + Fpaintnow(); // update image synchronous + return; +} + + +void edit_redo() +{ + F1_help_topic = "undo_redo"; + + if (CEF_invalid()) return; + wait_thread_idle(); // wait for thread idle + if (CEF_invalid()) return; + if (! ERpxm) return; // no prior undo + if (! resource_lock(Fpaintlock)) return; // 15.02 + + PXM_free(E3pxm); // redo copy >> E3 + E3pxm = ERpxm; + ERpxm = 0; + CEF->Fmods = 1; // image modified + resource_unlock(Fpaintlock); + Fpaintnow(); // update image synchronous + return; +} + + +void edit_reset() // reset E3 to E1 status +{ + if (CEF_invalid()) return; + wait_thread_idle(); // wait for thread idle + if (CEF_invalid()) return; + if (! CEF->Fmods) return; // not modified + if (! resource_lock(Fpaintlock)) return; // 15.02 + + PXM_free(ERpxm); // delete redo copy + PXM_free(E3pxm); + E3pxm = PXM_copy(E1pxm); // E1 >> E3 + CEF->Fmods = 0; // reset image modified status + resource_unlock(Fpaintlock); + Fpaintnow(); // update image synchronous + return; +} + + +/**************************************************************************/ + +// Load/save all zdialog widgets data from/to a file. +// Funcname corresponds to /home//.appname/funcname +// where zdialog data is saved for the respective function. +// Supply spldat for curve data if edit curves are used. +// Freload = 1 to reload prior data without user input. + +void edit_load_widgets(editfunc *EF, int Freload) +{ + using namespace zfuncs; + + static char *filename = 0; + cchar *mess = ZTX("Load settings from file"); + + FILE *fid; + cchar *funcname; + zdialog *zd; + spldat *sd; + char dirname[200], buff[1000]; + char *wname, *wdata, wdata2[1000]; + char *pp, *pp1, *pp2; + int ii, jj, kk, cc1, cc2; + int Nspc, vert, nap, err; + float apx, apy; + + funcname = EF->funcname; + zd = EF->zd; + sd = EF->curves; + + if (! Freload || ! filename) { // get filename from user unless Freload + if (filename) zfree(filename); + snprintf(dirname,200,"%s/%s",get_zuserdir(),funcname); // /home//.appname/funcname + filename = zgetfile(mess,MWIN,"file",dirname,0); // open data file + if (! filename) return; // user cancel + } + + fid = fopen(filename,"r"); + if (! fid) { + zmessageACK(Mwin,"%s \n %s",filename,strerror(errno)); + return; + } + + for (ii = 0; ii < zdmaxwidgets; ii++) // read widget data recs + { + pp = fgets_trim(buff,1000,fid,1); + if (! pp) break; + if (strmatch(pp,"curves")) break; // start of curves data + pp1 = pp; + pp2 = strstr(pp1," =="); + if (! pp2) continue; // widget has no data + cc1 = pp2 - pp1; + if (cc1 > 100) continue; + pp1[cc1] = 0; + wname = pp1; // widget name + pp2 += 3; + if (*pp2 == ' ') pp2++; + wdata = pp2; // widget data + cc2 = strlen(wdata); + if (cc2 < 1) wdata = (char *) ""; + if (cc2 > 300) continue; + repl_1str(wdata,wdata2,"\\n","\n"); // replace "\n" with newline chars. + zdialog_put_data(zd,wname,wdata2); + } + + if (sd) // read curve data + { + pp = fgets_trim(buff,200,fid,1); // curve count + if (! pp) goto baddata; + Nspc = atoi(pp); + if (Nspc != sd->Nspc) goto baddata; + + for (ii = 0; ii < Nspc; ii++) // loop curves + { + pp = fgets_trim(buff,1000,fid,1); // vert flag, node count + if (! pp) goto baddata; + pp = (char *) strField(buff,' ',1); // vert flag, 0 or 1 + if (! pp) goto baddata; + vert = atoi(pp); + if (vert > 1) goto baddata; + sd->vert[ii] = vert; + pp = (char *) strField(buff,' ',2); // node count + if (! pp) goto baddata; + nap = atoi(pp); + if (nap < 2 || nap > 30) goto baddata; + sd->nap[ii] = nap; + + for (jj = 0; jj < nap; jj++) // loop nodes + { + kk = 2 * jj + 3; + pp = (char *) strField(buff," /",kk); // get x-value with '/' delimiter + if (! pp) goto baddata; + err = convSF(pp,apx,0.0,1.0,0); + if (err > 1) goto baddata; + pp = (char *) strField(buff," /",kk+1); // get y-value with ' ' delimiter + if (! pp) goto baddata; + err = convSF(pp,apy,0.0,1.0,0); + if (err > 1) goto baddata; + sd->apx[ii][jj] = apx; + sd->apy[ii][jj] = apy; + } + + splcurve_generate(sd,ii); + } + } + + fclose(fid); + return; + +baddata: + zmessageACK(Mwin,ZTX("file data does not fit dialog")); + return; +} + + +void edit_save_widgets(editfunc *EF) +{ + using namespace zfuncs; + + cchar *funcname; + cchar *title = ZTX("Save settings to a file"); + zdialog *zd; + spldat *sd; + FILE *fid; + char *filename, dirname[200]; + char *wtype, *wname, *wdata, wdata2[1000]; + int ii, jj, cc; + int Nspc, vert, nap; + float apx, apy; + + cchar *editwidgets = "entry edit text togbutt check combo comboE " + "radio spin hscale vscale colorbutt"; + + funcname = EF->funcname; + zd = EF->zd; + sd = EF->curves; + + snprintf(dirname,200,"%s/%s",get_zuserdir(),funcname); // /home//.appname/funcname + filename = zgetfile(title,MWIN,"save",dirname,0); // open data file + if (! filename) return; // user cancel + + fid = fopen(filename,"w"); + zfree(filename); + if (! fid) { + zmessageACK(Mwin,"%s \n %s",filename,strerror(errno)); + return; + } + + for (ii = 0; ii < zdmaxwidgets; ii++) + { + wtype = (char *) zd->widget[ii].type; + if (! wtype) break; + if (! strstr(editwidgets,wtype)) continue; + wname = (char *) zd->widget[ii].name; // write widget data recs: + wdata = zd->widget[ii].data; // widgetname == widgetdata + if (! wdata) continue; + cc = strlen(wdata); + if (cc > 900) continue; + repl_1str(wdata,wdata2,"\n","\\n"); + fprintf(fid,"%s == %s \n",wname,wdata); + } + + if (sd) // write curve data + { + fprintf(fid,"curves\n"); + + Nspc = sd->Nspc; // curve count + fprintf(fid,"%d \n",Nspc); + + for (ii = 0; ii < Nspc; ii++) // loop curves + { + vert = sd->vert[ii]; + nap = sd->nap[ii]; + fprintf(fid,"%d %d ",vert,nap); // write vert flag and node count + + for (jj = 0; jj < nap; jj++) // loop nodes + { + apx = sd->apx[ii][jj]; + apy = sd->apy[ii][jj]; + fprintf(fid,"%.3f/%.3f ",apx,apy); // write x-value / y-value pairs + } + + fprintf(fid,"\n"); + } + } + + fclose(fid); + return; +} + + +/************************************************************************** + undo / redo menu buttons +***************************************************************************/ + +// [undo/redo] menu function +// Call m_undo() / m_redo() if left / right mouse click on menu. +// If A key is pressed, undo or redo all edits. +// If middle mouse button is clicked, pop-up a list of all edit steps +// and choose a step to go back to. + +void m_undo_redo(GtkWidget *, cchar *) +{ + void undo_redo_choice(GtkWidget *, cchar *menu); + + GtkWidget *popmenu; + int button = zfuncs::vmenuclickbutton; + char menuitem[40], flag; + + F1_help_topic = "undo_redo"; + + if (button == 1) { + if (KBkey == GDK_KEY_a) undo_all(); + else m_undo(0,0); + } + + if (button == 2) // go back to previous edit step 15.07 + { + if (URS_max == 0) return; + popmenu = create_popmenu(); + for (int ii = 0; ii < 30; ii++) { // insert all edit steps + if (ii > URS_max) break; + if (ii == URS_pos) flag = '*'; // flag step matching current image + else flag = ' '; + snprintf(menuitem,40,"%d %s %c",ii,URS_funcs[ii],flag); + add_popmenu_item(popmenu,menuitem,undo_redo_choice,(char *) &Nval[ii],0); + } + popup_menu(Mwin,popmenu); + } + + if (button == 3) { + if (KBkey == GDK_KEY_a) redo_all(); + else m_redo(0,0); + } + + return; +} + + +// popup menu function + +void undo_redo_choice(GtkWidget *, cchar *menu) // 15.07 +{ + int nn = *((int *) menu); + if (nn < 0 || nn > URS_max) return; + URS_pos = nn; + load_undo(); + return; +} + + +// [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 + 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 + URS_pos++; + load_undo(); + return; +} + + +// undo all edits of the current image +// (discard modifications) + +void undo_all() +{ + if (CEF) return; // not if edit active + if (URS_pos == 0) return; + URS_pos = 0; // original image + load_undo(); + return; +} + + +// redo all edits of the current image +// (reinstate all modifications) + +void redo_all() +{ + if (CEF) return; // not if edit active + if (URS_pos == URS_max) return; + URS_pos = URS_max;; // image with last edit applied + 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; + int ww, hh, nc; + + ww = E0pxm->ww; + hh = E0pxm->hh; + nc = E0pxm->nc; + + pp = strstr(URS_filename,"undo_"); // get undo/redo stack filename to use + if (! pp) zappcrash("undo/redo stack corrupted"); + snprintf(pp+5,3,"%02d",URS_pos); + + fid = open(URS_filename,O_WRONLY|O_CREAT|O_TRUNC,0640); // create or overwrite + if (! fid) goto writefail; + + snprintf(buff,24,"fotoxx %05d %05d %d",ww,hh,nc); // write header + cc = write(fid,buff,20); + if (cc != 20) goto writefail; + + cc = ww * hh * nc * sizeof(float); // write ww * hh RGB(A) pixels 15.08 + cc2 = write(fid,E0pxm->pixels,cc); + if (cc2 != cc) goto writefail; + close(fid); + + if (URS_pos == 0) { // stack posn. 0 = original image + strcpy(URS_funcs[0],"original"); // function name for original image + URS_saved[0] = 1; // original image already on disk + } + else { // stack position + if (CEF_invalid()) return; // must have an edit function + strncpy0(URS_funcs[URS_pos],CEF->funcname,32); // edit function name + URS_saved[URS_pos] = 0; // not yet saved to disk + } + + return; + +writefail: + zmessageACK(Mwin,"undo/redo stack write failure: %d \n" + "(may be out of disk space)",errno); + shell_quiet("rm -R %s",tempdir); + exit(errno); +} + + +// Load E0 from undo/redo file stack +// stack position = URS_pos + +void load_undo() +{ + char *pp, buff[24]; + int fid, nn, ww, hh, nc, cc, cc2; + + if (! resource_lock(Fpaintlock)) return; // 15.02 + + pp = strstr(URS_filename,"undo_"); + if (! pp) zappcrash("undo/redo stack corrupted 1"); + snprintf(pp+5,3,"%02d",URS_pos); + + fid = open(URS_filename,O_RDONLY); + if (! fid) zappcrash("undo/redo stack corrupted 2"); + + cc = read(fid,buff,20); + if (cc != 20) zappcrash("undo/redo stack corrupted 3"); + nn = sscanf(buff,"fotoxx %d %d %d",&ww,&hh,&nc); + if (nn != 3) zappcrash("undo/redo stack corrupted 4"); + + PXM_free(E0pxm); + E0pxm = PXM_make(ww,hh,nc); // 15.08 + cc = ww * hh * nc * sizeof(float); + cc2 = read(fid,E0pxm->pixels,cc); + if (cc2 != cc) zappcrash("undo/redo stack corrupted 5"); + close(fid); + + resource_unlock(Fpaintlock); + + sa_validate(); // delete area if invalid + if (Cdrawin) Fpaintnow(); // update image synchronous 15.09 + return; +} + + +/**************************************************************************/ + +// check for busy or pending conditions and message the user +// returns 1 if busy or pending condition +// 0 if nothing is pending or user decides to discard mods +// conditions: +// edit edit function is active (CEF not null) +// mods current file has unsaved modifications +// busy function is still running // 15.04 +// block edit function mutex flag // 15.04 +// all check both the above +// quiet suppress user message + +int checkpend(cchar *list) +{ + int edit, mods, busy, block, all, quiet, pend, choice; + cchar *modmess = ZTX("This action will discard changes to current image"); + cchar *activemess = ZTX("prior function still active"); + cchar *blockmess = ZTX("prior function still active"); + cchar *keep = ZTX("Keep"); + cchar *discard = ZTX("Discard"); + + edit = mods = busy = block = all = quiet = pend = 0; + + if (strstr(list,"edit")) edit = 1; + if (strstr(list,"mods")) mods = 1; + if (strstr(list,"busy")) busy = 1; + if (strstr(list,"block")) block = 1; + if (strstr(list,"all")) all = 1; + if (strstr(list,"quiet")) quiet = 1; + + if (all) edit = mods = busy = block = 1; + + if ((edit && CEF) || (busy && Fbusy)) { + pend = 1; + if (! quiet) zmessageACK(Mwin,activemess); + } + + if (! pend && (block && Fblock)) { + pend = 1; + if (! quiet) zmessageACK(Mwin,blockmess); + } + + if (! pend && mods) { + if (CEF && CEF->Fmods && ! CEF->Fsaved) pend = 1; // active edits unsaved + if (URS_pos > 0 && URS_saved[URS_pos] == 0) pend = 1; // completed edits unsaved + if (Fmetamod || Fgtagmod) pend = 1; // metadata edits unsaved 15.03 + if (pend && ! quiet) { + choice = zdialog_choose(Mwin,modmess,keep,discard,null); // ask user + if (choice == 2) { // choice is discard + if (CEF && CEF->zd) + zdialog_send_event(CEF->zd,"cancel"); + if (URS_pos > 0) undo_all(); // undo prior edits + Fmetamod = Fgtagmod = 0; // discard metadata edits + pend = 0; + } + else m_viewmode(0,"F"); // keep - back to current image + } + } + + return pend; // 1 if something pending +} + + +/**************************************************************************/ + +// zdialog mouse capture and release + +void takeMouse(mcbFunc func, GdkCursor *cursor) // capture mouse for dialog +{ + zthreadcrash(); + + if (! Cdrawin) return; + if (! gdkwin) return; + freeMouse(); + mouseCBfunc = func; + Mcapture = 1; + gdk_window_set_cursor(gdkwin,cursor); + return; +} + +void freeMouse() // free mouse for main window +{ + zthreadcrash(); + + if (! Cdrawin) return; + if (! gdkwin) return; + if (! Mcapture) return; + mouseCBfunc = 0; + Mcapture = 0; + draw_mousearc(0,0,0,0,1); // remove mouse circle + gdk_window_set_cursor(gdkwin,0); // set normal cursor + return; +} + + +/************************************************************************** + + functions to manage working threads + + 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, initial status + 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 + +***************************************************************************/ + +// 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_invalid()) return; + if (CEF->thread_status > 0) CEF->thread_pend++; + return; +} + + +// wait for edit thread to complete pending work and become idle + +void wait_thread_idle() +{ + if (CEF_invalid()) return; + if (! CEF->thread_status) return; + if (CEF->thread_pend == CEF->thread_done) return; + while (CEF->thread_status && CEF->thread_pend > CEF->thread_done) { + zmainloop(); // 15.04 + zsleep(0.01); + if (CEF_invalid()) return; + } + 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) +{ + if (CEF_invalid()) return; + if (! CEF->thread_status) return; + CEF->thread_command = command; // tell thread to quit or finish + while (CEF->thread_status > 0) { // wait for thread to finish + zmainloop(); // 15.04 + zsleep(0.01); + if (CEF_invalid()) return; + } + return; +} + + +// called only from edit threads +// idle loop - wait for work request or exit command + +void thread_idle_loop() +{ + if (CEF_invalid()) thread_exit(); + 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 + if (CEF_invalid()) pthread_exit(0); + 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 worker 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(int block) // wait for all worker threads done +{ // may be called from thread or non-thread + if (CEF) { + while (wthreads_busy) { + zsleep(0.003); + if (block) continue; + zmainloop(); + } + if (CEF_invalid()) return; + } + else { + while (wthreads_busy) { + zsleep(0.003); + if (block) continue; + zmainloop(); + } + } + return; +} + + +/************************************************************************** + other support functions +***************************************************************************/ + +// table for loading and saving adjustable parameters between sessions + +typedef struct { + char name[20]; + char type[12]; + int count; + void *location; +} param; + +#define Nparms 36 +param paramTab[Nparms] = { +// name type count location +{ "fotoxx release", "char", 1, &Prelease }, +{ "first time", "int", 1, &Ffirsttime }, +{ "window geometry", "int", 4, &mwgeom }, +{ "thumbnail size", "int", 1, &navi::thumbsize }, +{ "menu style", "char", 1, &menu_style }, +{ "dialog font", "char", 1, &dialog_font }, +{ "icon size", "int", 1, &iconsize }, +{ "drag option", "int", 1, &Fdragopt }, +{ "zoom count", "int", 1, &zoomcount }, +{ "show hidden", "int", 1, &Fshowhidden }, +{ "last version", "int", 1, &Flastversion }, +{ "startup display", "char", 1, &startdisplay }, +{ "start image file", "char", 1, &startfile }, +{ "start directory", "char", 1, &startdirk }, +{ "last curr file", "char", 1, &last_curr_file }, +{ "last galleryname", "char", 1, &last_galleryname }, +{ "last gallerytype", "int", 1, &last_gallerytype }, +{ "grid base", "int", 10, &gridsettings[0] }, +{ "grid trim/rotate", "int", 10, &gridsettings[1] }, +{ "grid unbend", "int", 10, &gridsettings[2] }, +{ "grid warp curved", "int", 10, &gridsettings[3] }, +{ "grid warp linear", "int", 10, &gridsettings[4] }, +{ "grid warp affine", "int", 10, &gridsettings[5] }, +{ "RAW command", "char", 1, &DCrawcommand }, +{ "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 }, +{ "thumb file size", "int", 1, &thumbfilesize }, +{ "lens mm", "float", 1, &lens_mm }, +{ "cycledesktop_album", "char", 1, &cycledesktop_album }, +{ "cycledesktop_index", "int", 1, &cycledesktop_index }, +{ "colorchart file", "char", 1, &colorchartfile }, +{ "colormap file", "char", 1, &colormapfile } }; + + +// save parameters to file /.../.fotoxx/parameters + +void save_params() +{ + FILE *fid; + char buff[1050], text[1000]; // limit for character data cc + char *name, *type; + int count; + void *location; + char **charloc; + int *intloc; + float *floatloc; + + last_curr_file = last_galleryname = 0; // save curr_file and gallery poop 15.07 + last_gallerytype = 0; // for next session startup + if (curr_file && *curr_file == '/') + last_curr_file = zstrdup(curr_file); + if (navi::galleryname) { + last_galleryname = zstrdup(navi::galleryname); + last_gallerytype = navi::gallerytype; + } + + 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 (strmatch(type,"char")) { + if (! *charloc) break; // missing, discontinue this parameter + repl_1str(*charloc++,text,"\n","\\n"); // replace newlines with "\n" + fprintf(fid," \"%s\"",text); + } + if (strmatch(type,"int")) + fprintf(fid," \"%d\"",*intloc++); + + if (strmatch(type,"float")) + fprintf(fid," \"%.2f\"",*floatloc++); + } + + fprintf(fid,"\n"); // write EOR + } + + fprintf(fid,"\n"); + fclose(fid); // close file + + return; +} + + +// load parameters from file /.../.fotoxx/parameters + +void load_params() +{ + FILE *fid; + int ii, err, 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; + + snprintf(buff,199,"%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 (! strmatch(name,paramTab[ii].name)) continue; // parm name + if (! strmatch(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 (strmatch(type,"char")) { + repl_1str(pp,text,"\\n","\n"); // replace "\n" with real newlines + *charloc++ = zstrdup(text); + } + + if (strmatch(type,"int")) { + err = convSI(pp,Idata); + if (err) continue; + *intloc++ = Idata; + } + + if (strmatch(type,"float")) { + err = convSF(pp,Fdata); + if (err) continue; + *floatloc++ = Fdata; + } + } + } + + fclose(fid); + + for (ii = 0; ii < Nparms; ii++) // set any null strings to "" + { + if (! strmatch(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] = zstrdup("",20); + } + + zoomratio = pow( 2.0, 1.0 / zoomcount); // set zoom ratio from zoom count + return; +} + + +/**************************************************************************/ + +// free all resources associated with the current image file + +void free_resources(int fkeepundo) +{ + if (! resource_lock(Fpaintlock)) return; + + if (! fkeepundo) + shell_quiet("rm -f %s/undo_*",tempdir); // remove undo/redo files + + if (Fshutdown) return; // stop here if shutdown mode + + URS_pos = URS_max = 0; // reset undo/redo stack + Fmetamod = Fgtagmod = 0; // no unsaved metadata changes 15.03 + Fwarnalpha = 0; // no warn if save image with alpha 15.09 + sa_unselect(); // unselect select area + + draw_toplines(2); // no toplines + erase_topcircles(); // no topcircles + Ntoptext = 0; // no toptext + Fbusy_goal = 0; + + if (curr_file) { + if (zdsela) zdialog_free(zdsela); // kill select area dialog if active + freeMouse(); // free mouse + zfree(curr_file); // free image file + curr_file = 0; + *paneltext = 0; + } + + gtk_window_set_title(MWIN,Frelease); // sparse title 15.03 + + PXB_free(Fpxb); + PXM_free(E0pxm); + PXM_free(E1pxm); + PXM_free(E3pxm); + PXM_free(ERpxm); + PXM_free(E8pxm); + PXM_free(E9pxm); + + resource_unlock(Fpaintlock); + return; +} + + +/**************************************************************************/ + +// compare two floats for significant difference +// signf: e.g. 0.01 for 1% threshold of significance +// 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; +} + + + diff -Nru fotoxx-15.08/fotoxx.h fotoxx-15.09/fotoxx.h --- fotoxx-15.08/fotoxx.h 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/fotoxx.h 2015-08-31 10:21:01.000000000 +0000 @@ -29,7 +29,7 @@ // Fotoxx definitions -#define Frelease "Fotoxx 15.08" // Fotoxx release version +#define Frelease "Fotoxx 15.09" // Fotoxx release version #define Flicense "Free software - GNU General Public License v.3" #define Fhomepage "http://kornelix.com/fotoxx" #define Fsoftware "Software used: GNU, GTK, libtiff, libpng, liblcms, DCraw, exiftool" @@ -109,10 +109,9 @@ namespace zfuncs { extern GdkDisplay *display; // X11 workstation (KB, mouse, screen) extern GdkDeviceManager *manager; // knows screen / mouse associations - extern GdkScreen *screen; // monitor + extern GdkScreen *screen; // monitor (screen) extern GdkDevice *mouse; // pointer device - extern PangoFontDescription *monofont; // zdialog widget fonts - extern PangoFontDescription *widgetfont; + extern GtkSettings *settings; // screen settings extern int monitorDPI; // monitor dots/inch extern char zappname[20]; // app name/version extern char zlang[8]; // current language lc_RC @@ -152,7 +151,6 @@ // GTK etc. parameters -EX GdkScreen *screen; // physical monitor EX int screenww, screenhh; // monitor screen size EX GtkWidget *Mwin, *Mvbox; // main window EX GtkWidget *Fhbox, *Fmenu, *Fvbox, *Fpanel, *Fpanlab, *Fdrawin; // F window widgets @@ -163,7 +161,7 @@ EX GtkWidget *Cdrawin; // curr. image drawing window, Fdrawin/Wdrawin EX GdkWindow *gdkwin; // corresp. GDK window EX cairo_t *mwcr; // cairo context for drawing windows -EX char FGW; // curr. window mode: 'F' 'G' 'W' +EX GdkRGBA bgcolor; // background color 15.09 EX GdkCursor *arrowcursor; // main window cursors EX GdkCursor *dragcursor; @@ -172,13 +170,11 @@ EX uint8 BLACK[3], WHITE[3], RED[3], GREEN[3], BLUE[3]; // RGB values 0-255 EX uint8 *LINE_COLOR; // line drawing color, one of the above -EX GdkRGBA GDKbackground; // window background color - -EX PangoFontDescription *panelfont; // font for window top panels // user options EX char *menu_style; // menu style: icons/text/both +EX char *dialog_font; // zdialog font and size 15.09 EX int iconsize; // menu icon size EX int thumbfilesize; // thumbnail files, pixel size 15.02 EX char *startdisplay; // display: recent/prev/blank/file/dirk @@ -202,13 +198,14 @@ EX int NWT; // working threads to use EX int wthreads_busy; // working threads running EX int Nval[100]; // static integer values 0-99 +EX char FGW; // curr. window mode: 'F' 'G' 'W' #define CCC (XFCC*2+200) // max. command line size EX char command[CCC]; // (command, parameters, 2 filespecs) typedef void menufunc_t(GtkWidget *,cchar *); // table of menu names and functions typedef struct { - GtkWidget *topmenu; // parent menu + GtkWidget *topmenu; // parent menu cchar *menu; // menu text cchar *mtran; // translation cchar *icon; // menu icon @@ -269,6 +266,7 @@ EX char file_errmess[1000]; // error message from low-level file funcs EX cchar *F1_help_topic; // current function help topic EX int Fcaptions; // show image captions/comments +EX int Fwarnalpha; // warn if save image with alpha to jpeg volatile // stop optimizer removing code EX double Fbusy_goal, Fbusy_done; // BUSY message progress tracking @@ -288,7 +286,7 @@ EX char *clicked_file; // image file / thumbnail clicked EX int clicked_posn; // clicked gallery position (Nth) EX int clicked_width; // clicked thumbnail position -EX int clicked_height; // normalized 0-100 +EX int clicked_height; // (normalized 0-100) EX char *rawfile; // RAW file passed to raw edit program EX char *imagefiletypes; // supported image file types, .jpg .png etc. EX char **filecache; // cache for moving image files around @@ -296,6 +294,8 @@ EX char *last_curr_file; // curr_file in last session EX char *last_galleryname; // galleryname in last session EX int last_gallerytype; // gallerytype in last session +EX char *colorchartfile; // printer colorchart-xxx.png 15.09 +EX char *colormapfile; // printer colormap-xxx.dat EX char f_load_type[8]; // data set by f_load() EX int f_load_bpc, f_load_size; @@ -303,7 +303,7 @@ EX char f_save_type[8]; EX int f_save_bpc, f_save_size; -// files and directories in /.../.fotoxx/ +// files and directories in /home//.fotoxx/ EX char index_dirk[200]; // image index directory EX char tags_defined_file[200]; // tags defined file @@ -321,6 +321,7 @@ EX char slideshow_dirk[200]; // directory for slide show files EX char pattern_dirk[200]; // directory for pattern files EX char searchresults_file[200]; // file for search results +EX char printer_color_dirk[200]; // directory for printer color map files EX char maps_dirk[200]; // directory for map files // fotoxx PXM and PXB pixmaps @@ -448,7 +449,7 @@ #define mode_ellipse 2 /* select ellipse by drag */ #define mode_draw 3 /* freehand draw by drag/click */ #define mode_follow 4 /* follow edge indicated by clicks */ -#define mode_replace 5 /* freehand draw and replace nearby pixels */ +#define mode_replace 5 /* adjust edge by dragging mouse */ #define mode_mouse 6 /* select area within mouse (radius) */ #define mode_onecolor 7 /* select one matching color within mouse */ #define mode_allcolors 8 /* select all matching colors within mouse */ @@ -632,10 +633,9 @@ int state_event(GtkWidget *, GdkEvent *event); // window state event function int gtimefunc(void *arg); // periodic function void update_Fpanel(); // update F window information panel -void paint_busy(cchar *message = 0); // paint "BUSY" on window if something busy int Fpaint(GtkWidget *, cairo_t *); // F and W drawing area paint function -void Fpaint2(); // window repaint (thread callable) void Fpaintnow(); // window repaint synchronously +void Fpaint2(); // window repaint (thread callable) void Fpaint3(int px, int py, int ww, int hh); // update Mpxb area from updated E3 area void Fpaint4(int px, int py, int ww, int hh); // update Dpxb area from updated Mpxb void mouse_event(GtkWidget *, GdkEventButton *, void *); // mouse event function @@ -721,42 +721,13 @@ void save_params(); // save parameters for next session void load_params(); // load parameters from prior session void free_resources(int fkeepundo = 0); // free all allocated resources -int vpixel(PXB *pxb, float px, float py, uint8 *vpix); // get PXB virtual pixel at (px,py) -int vpixel(PXM *pxm, float px, float py, float *vpix); // get PXM virtual pixel at (px,py) int sigdiff(float d1, float d2, float signf); // test for significant difference -// PXM and PXB pixmap functions (fotoxx main) - -void PXM_audit(PXM *pxm); // audit contents of a PXM pixmap -PXM * PXM_make(int ww, int hh, int nc); // create a PXM pixmap -void PXM_free(PXM *&pxm); // free PXM pixmap -void PXM_addalpha(PXM *pxm); // -PXM * PXM_copy(PXM *pxm); // copy PXM pixmap -PXM * PXM_copy_area(PXM *pxm, int orgx, int orgy, int ww, int hh); // copy section of PXM pixmap -void PXM_fixblue(PXM *pxm); // set blue = 0 pixels to blue = 2 -PXM * PXM_rescale(PXM *pxm, int ww, int hh); // rescale PXM pixmap (ww/hh) -PXM * PXM_rotate(PXM *pxm, float angle); // rotate PXM pixmap - -PXB * PXB_make(int ww, int hh, int ac); // create a PXB pixmap -PXB * PXB_make(PIXBUF *pixbuf); // create a PXB pixmap from a pixbuf -void PXB_free(PXB *&pxb); // free PXB pixmap -void PXB_addalpha(PXB *pxb); // add alpha channel to PXB pixmap 15.08 -PXB * PXB_copy(PXB *pxb); // copy PXB -PXB * PXB_rescale(PXB *pxb, int ww, int hh); // rescale PXB pixmap (ww/hh) -PXB * PXB_rotate(PXB *pxb, float angle); // rotate PXB pixmap 15.04 - -PXB * PXM_PXB_copy(PXM *pxm); // PXM to pixbuf, same scale -void PXM_PXB_update(PXM *, PXB *, int px3, int py3, int ww3, int hh3); // update PXB area from PXM, same scale -void PXB_PXB_update(PXB *, PXB *, int px3, int py3, int ww3, int hh3); // update PXB area from PXB, any scale - -PIXBUF * pixbuf_rescale_fast(PIXBUF *pixbuf1, int ww, int hh); // faster gdk_pixbuf_scale_simple() - // window and menu builder (f.widgets.cc) void build_widgets(); // build widgets and menus for F/G/W view modes void m_viewmode(GtkWidget *, cchar *fgw); // set current F/G/W view mode void m_favorites(GtkWidget *, cchar *); // graphic popup menu, user favorites -void m_help(GtkWidget *, cchar *menu); // various help menu functions void popup_menufunc(GtkWidget *, cchar *menu); // image/thumb right-click menu func void image_Rclick_popup(); // popup menu for image right-click void gallery_Lclick_func(int Nth); // function for thumbnail left-click @@ -790,6 +761,7 @@ void m_copyto_clip(GtkWidget *, cchar *file); // copy an image file to the clipboard void m_quit(GtkWidget *, cchar *); // exit application with checks void quitxx(); // exit unconditionally +void m_help(GtkWidget *, cchar *menu); // various help menu functions void f_preload(int next); // start preload of next file int f_open(cchar *file, int Nth = 0, int keep = 0, // open new current image file @@ -824,81 +796,6 @@ PXB * RAW_PXB_load(cchar *filespec); // RAW file to PXB, 8 bpc PXM * RAW_PXM_load(cchar *filespec); // RAW file to PXM, 16 bpc -// thumbnail gallery and navigation functions (f.gallery.cc) - -char * gallery(cchar *filez, cchar *action, int Nth = 0); // display image gallery window, navigate -void set_gwin_title(); // main window title = gallery name -char * gallery_getnext(int index, int lastver); // get prev/next file with last version option -int gallery_position(cchar *file, int Nth); // get rel. position of file in gallery -int image_file_type(cchar *file); // get file type 1-5: dirk/image/RAW/thumb/other -char * thumb2imagefile(cchar *thumbfile); // get image file for thumbnail file -char * image2thumbfile(cchar *imagefile); // get thumbnail file for image file -char * image_thumbfile(char *imagefile, int *ind = 0); // get thumbnail filespec, create if missing -PIXBUF * image_thumbnail(char *imagefile, int size = 0); // get thumbnail pixbuf, create if nec. -PIXBUF * get_thumbnail_pixbuf(char *imagefile, int size); // make thumbnail pixbuf from image file -void popimage(int Fnewin); // popup big image of clicked thumbnail -void gallery_monitor(cchar *action); // start/stop gallery directory monitor -char ** gallery_getfiles(char **initfiles = 0); // select files from gallery window -void gallery_getfiles_Lclick_func(int Nth); // get files, thumbnail left-click -void gallery_getfiles_Rclick_func(int Nth); // get files, thumbnail right-click -void m_edit_bookmarks(GtkWidget *, cchar *); // edit bookmarks (gallery/file position) -void bookmarks_Lclick_func(int Nth); // thumbnail click response function - -// tools menu functions (f.tools.cc) - -void m_index(GtkWidget *, cchar *); // rebuild image index and thumbnails -void index_rebuild(int menu); // index rebuild function -void m_options(GtkWidget *, cchar *); // user options -void m_KBshortcuts(GtkWidget *, cchar *); // edit KB shortcuts, update file -int KBshortcuts_load(); // load KB shortcuts at startup time -void m_show_brdist(GtkWidget *, cchar *); // show brightness distribution graph -void brdist_drawgraph(GtkWidget *drawin, cairo_t *cr, int *); // draw brightness distribution graph -void brdist_drawscale(GtkWidget *drawarea, cairo_t *cr, int *); // draw brightness scale, black to white stripe -void m_gridlines(GtkWidget *, cchar *); // grid lines setup dialog -void toggle_grid(int action); // set grid off/on or toggle (0/1/2) -void m_line_color(GtkWidget *, cchar *); // foreground line color (area, mouse, trim ...) -void m_show_RGB(GtkWidget *, cchar *); // show RGB values at mouse click -void m_magnify(GtkWidget *, cchar *); // magnify image within a radius of the mouse -void m_darkbrite(GtkWidget *, cchar *); // highlight the darkest and brightest pixels -void darkbrite_paint(); // paint function called from Fpaint() -void m_moncolor(GtkWidget *, cchar *); // check monitor brightness and color -void m_mongamma(GtkWidget *, cchar *); // adjust monitor gamma -void m_changelang(GtkWidget *, cchar *); // change language -void m_untranslated(GtkWidget *, cchar *); // report missing translations -void m_resources(GtkWidget *, cchar *); // report CPU and memory usage -void m_zappcrash(GtkWidget *, cchar *); // deliberate zappcrash (test function) -void m_goto_bookmark(GtkWidget *, cchar *); // select bookmarked image, goto gallery posn -void m_batch_convert(GtkWidget *, cchar *); // rename/convert/resize/export image files -int batch_sharp_func(PXM *pxm, int amount, int thresh); // callable sharpen func used by batch funcs -void m_batch_upright(GtkWidget *, cchar *); // upright rotated image files -void m_batch_deltrash(GtkWidget *, cchar *); // delete or trash selected files -void m_batch_dcraw(GtkWidget *, cchar *); // convert RAW files to tiff using DCraw -void m_batch_rawtherapee(GtkWidget *, cchar *); // convert RAW files to tiff using Raw Therapee -void m_duplicates(GtkWidget *, cchar *); // find duplicate image files -void m_burn(GtkWidget *, cchar *); // burn selected images to CD/DVD - -// albums menu (f.albums.cc) - -void m_manage_albums(GtkWidget *, cchar *); // create and edit image albums -void album_drag_start(int Nth); // rearrange - get image to move -void album_drag_drop(int Nth); // rearrange - put image here -void album_drag_kill(); // abort drag/drop operation -void album_remove(GtkWidget *, cchar *); // remove image from album -void album_cutfile(GtkWidget *, cchar *); // remove image from album, add to cache -void album_pastecache(GtkWidget *, cchar *); // paste image cache to album position -void album_pastecurrfile(GtkWidget *, cchar *); // paste current file to album position -void conv_albums(char **, char **, int); // convert after files renamed/moved -void m_copyto_cache(GtkWidget *, cchar *); // copy an image file to the file cache -int file_addtocache(char *file); // add image file to file cache -char * file_removefromcache(); // get image file from cache -void file_clearcache(); // clear image file cache -void m_slideshow(GtkWidget *, cchar *); // enter or leave slideshow mode -void ss_imageprefs_Lclick_func(int Nth); // slideshow image prefs thumbnail click func -void slideshow_next(cchar *); // show prev/next image -void m_setdesktop(GtkWidget *, cchar *); // set desktop background from curr. file -void m_cycledesktop(GtkWidget *, cchar *); // cycle desktop images from a Fotoxx album -void run_cycledesktop(cchar *album, cchar *secs); // cycle desktop background function - // metadata menu functions (f.metadata.cc) void m_meta_view_short(GtkWidget *, cchar *); // view selected EXIF/IPTC data @@ -951,14 +848,16 @@ void m_select_disable(GtkWidget *, cchar *); // disable area void m_select_invert(GtkWidget *, cchar *); // invert area void m_select_unselect(GtkWidget *, cchar *); // unselect area -void m_select_open(GtkWidget *, cchar *); // open file and make a select area +void m_select_copy(GtkWidget *, cchar *); // copy an area for later paste +void m_select_paste(GtkWidget *, cchar *); // paste last copied area into image +void m_select_open(GtkWidget *, cchar *); // open file and paste as area in image void m_select_save(GtkWidget *, cchar *); // save area to file with alpha channel - void sa_geom_mousefunc(); // select rectangle or ellipse -void sa_draw_mousefunc(); // line drawing functions +void sa_draw_mousefunc(); // edge line drawing function int sa_nearpix(int mx, int my, int rad, int &px, int &py, int fx); // find nearest pixel void sa_draw_line(int px1, int py1, int px2, int py2); // draw a connected line void sa_draw1pix(int px, int py); // add one pixel to select area +void sa_redraw(); // redraw area edge void sa_mouse_select(); // select by mouse (opt. color match) void sa_nextseq(); // start next sequence number void sa_unselect_pixels(); // remove current selection @@ -1063,6 +962,115 @@ void m_mashup(GtkWidget *, cchar *); // arrange images on a background image +// tools menu functions (f.tools.cc) + +void m_index(GtkWidget *, cchar *); // rebuild image index and thumbnails +void index_rebuild(int menu); // index rebuild function +void m_options(GtkWidget *, cchar *); // user options +void m_KBshortcuts(GtkWidget *, cchar *); // edit KB shortcuts, update file +int KBshortcuts_load(); // load KB shortcuts at startup time +void m_show_brdist(GtkWidget *, cchar *); // show brightness distribution graph +void brdist_drawgraph(GtkWidget *drawin, cairo_t *cr, int *); // draw brightness distribution graph +void brdist_drawscale(GtkWidget *drawarea, cairo_t *cr, int *); // draw brightness scale, black to white stripe +void m_gridlines(GtkWidget *, cchar *); // grid lines setup dialog +void toggle_grid(int action); // set grid off/on or toggle (0/1/2) +void m_line_color(GtkWidget *, cchar *); // foreground line color (area, mouse, trim ...) +void m_show_RGB(GtkWidget *, cchar *); // show RGB values at mouse click +void m_magnify(GtkWidget *, cchar *); // magnify image within a radius of the mouse +void m_darkbrite(GtkWidget *, cchar *); // highlight the darkest and brightest pixels +void darkbrite_paint(); // paint function called from Fpaint() +void m_moncolor(GtkWidget *, cchar *); // check monitor brightness and color +void m_mongamma(GtkWidget *, cchar *); // adjust monitor gamma +void m_changelang(GtkWidget *, cchar *); // change language +void m_untranslated(GtkWidget *, cchar *); // report missing translations +void m_caliprint(GtkWidget *, cchar *); // calibrate printer colors +void m_resources(GtkWidget *, cchar *); // report CPU and memory usage +void m_zappcrash(GtkWidget *, cchar *); // deliberate zappcrash (test function) + +// thumbnail gallery and navigation functions (f.gallery.cc) + +char * gallery(cchar *filez, cchar *action, int Nth = 0); // display image gallery window, navigate +void set_gwin_title(); // main window title = gallery name +char * gallery_getnext(int index, int lastver); // get prev/next file with last version option +int gallery_position(cchar *file, int Nth); // get rel. position of file in gallery +int image_file_type(cchar *file); // get file type 1-5: dirk/image/RAW/thumb/other +char * thumb2imagefile(cchar *thumbfile); // get image file for thumbnail file +char * image2thumbfile(cchar *imagefile); // get thumbnail file for image file +char * image_thumbfile(char *imagefile, int *ind = 0); // get thumbnail filespec, create if missing +PIXBUF * image_thumbnail(char *imagefile, int size = 0); // get thumbnail pixbuf, create if nec. +PIXBUF * get_thumbnail_pixbuf(char *imagefile, int size); // make thumbnail pixbuf from image file +void popimage(int Fnewin); // popup big image of clicked thumbnail +void gallery_monitor(cchar *action); // start/stop gallery directory monitor +char ** gallery_getfiles(char **initfiles = 0); // select files from gallery window +void gallery_getfiles_Lclick_func(int Nth); // get files, thumbnail left-click +void gallery_getfiles_Rclick_func(int Nth); // get files, thumbnail right-click +void m_edit_bookmarks(GtkWidget *, cchar *); // edit bookmarks (gallery/file position) +void m_goto_bookmark(GtkWidget *, cchar *); // select bookmarked image, goto gallery posn +void bookmarks_Lclick_func(int Nth); // thumbnail click response function + +// albums menu (f.albums.cc) + +void m_manage_albums(GtkWidget *, cchar *); // create and edit image albums +void album_drag_start(int Nth); // rearrange - get image to move +void album_drag_drop(int Nth); // rearrange - put image here +void album_drag_kill(); // abort drag/drop operation +void album_remove(GtkWidget *, cchar *); // remove image from album +void album_cutfile(GtkWidget *, cchar *); // remove image from album, add to cache +void album_pastecache(GtkWidget *, cchar *); // paste image cache to album position +void album_pastecurrfile(GtkWidget *, cchar *); // paste current file to album position +void conv_albums(char **, char **, int); // convert after files renamed/moved +void m_copyto_cache(GtkWidget *, cchar *); // copy an image file to the file cache +int file_addtocache(char *file); // add image file to file cache +char * file_removefromcache(); // get image file from cache +void file_clearcache(); // clear image file cache +void m_slideshow(GtkWidget *, cchar *); // enter or leave slideshow mode +void ss_imageprefs_Lclick_func(int Nth); // slideshow image prefs thumbnail click func +void slideshow_next(cchar *); // show prev/next image +void m_setdesktop(GtkWidget *, cchar *); // set desktop background from curr. file +void m_cycledesktop(GtkWidget *, cchar *); // cycle desktop images from a Fotoxx album +void run_cycledesktop(cchar *album, cchar *secs); // cycle desktop background function + +// batch menu functions (f.batch.cc) + +void m_batch_convert(GtkWidget *, cchar *); // rename/convert/resize/export image files +int batch_sharp_func(PXM *pxm, int amount, int thresh); // callable sharpen func used by batch funcs +void m_batch_upright(GtkWidget *, cchar *); // upright rotated image files +void m_batch_deltrash(GtkWidget *, cchar *); // delete or trash selected files +void m_batch_dcraw(GtkWidget *, cchar *); // convert RAW files to tiff using DCraw +void m_batch_rawtherapee(GtkWidget *, cchar *); // convert RAW files to tiff using Raw Therapee +void m_burn(GtkWidget *, cchar *); // burn selected images to CD/DVD +void m_duplicates(GtkWidget *, cchar *); // find duplicate image files + +// PXM and PXB pixmap image functions (f.image.cc) + +int vpixel(PXB *pxb, float px, float py, uint8 *vpix); // get PXB virtual pixel at (px,py) +int vpixel(PXM *pxm, float px, float py, float *vpix); // get PXM virtual pixel at (px,py) + +void PXM_audit(PXM *pxm); // audit contents of a PXM pixmap +PXM * PXM_make(int ww, int hh, int nc); // create a PXM pixmap +void PXM_free(PXM *&pxm); // free PXM pixmap +void PXM_addalpha(PXM *pxm); // +PXM * PXM_copy(PXM *pxm); // copy PXM pixmap +PXM * PXM_copy_area(PXM *pxm, int orgx, int orgy, int ww, int hh); // copy section of PXM pixmap +void PXM_fixblue(PXM *pxm); // set blue = 0 pixels to blue = 2 +PXM * PXM_rescale(PXM *pxm, int ww, int hh); // rescale PXM pixmap (ww/hh) +PXM * PXM_rotate(PXM *pxm, float angle); // rotate PXM pixmap + +PXB * PXB_make(int ww, int hh, int ac); // create a PXB pixmap +PXB * PXB_make(PIXBUF *pixbuf); // create a PXB pixmap from a pixbuf +void PXB_free(PXB *&pxb); // free PXB pixmap +void PXB_addalpha(PXB *pxb); // add alpha channel to PXB pixmap 15.08 +PXB * PXB_copy(PXB *pxb); // copy PXB +PXB * PXB_rescale(PXB *pxb, int ww, int hh); // rescale PXB pixmap (ww/hh) +PXB * PXB_rotate(PXB *pxb, float angle); // rotate PXB pixmap 15.04 + +PXB * PXM_PXB_copy(PXM *pxm); // PXM to pixbuf, same scale +void PXM_PXB_update(PXM *, PXB *, int px3, int py3, int ww3, int hh3); // update PXB area from PXM, same scale +void PXB_PXB_update(PXB *, PXB *, int px3, int py3, int ww3, int hh3); // update PXB area from PXB, any scale + +PIXBUF * pixbuf_rescale_fast(PIXBUF *pixbuf1, int ww, int hh); // faster gdk_pixbuf_scale_simple() + + // translatable strings used in multiple dialogs #define Badd ZTX("Add") diff -Nru fotoxx-15.08/f.repair.cc fotoxx-15.09/f.repair.cc --- fotoxx-15.08/f.repair.cc 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/f.repair.cc 2015-08-31 10:21:01.000000000 +0000 @@ -358,6 +358,7 @@ float *pix1, *pix3; int ii, px, py, dist = 0; + int nc = E1pxm->nc; // 15.09 float amount, thresh; float b1, b1x, b1y, b3x, b3y, b3, bf, f1, f2; float red1, green1, blue1, red3, green3, blue3; @@ -381,8 +382,8 @@ b1 = pixbright(pix1); // pixel brightness, 0 - 256 if (b1 == 0) continue; // black, don't change - b1x = b1 - pixbright(pix1-3); // horiz. brightness gradient - b1y = b1 - pixbright(pix1-3 * E1pxm->ww); // vertical + b1x = b1 - pixbright(pix1-nc); // horiz. brightness gradient 15.09 + b1y = b1 - pixbright(pix1-nc * E1pxm->ww); // vertical f1 = fabsf(b1x + b1y); if (f1 < thresh) // moderate brightness change for @@ -393,8 +394,8 @@ b1x = b1x * amount; // amplified gradient b1y = b1y * amount; - b3x = pixbright(pix1-3) + b1x; // + prior pixel brightness - b3y = pixbright(pix1-3 * E3pxm->ww) + b1y; // = new brightness + b3x = pixbright(pix1-nc) + b1x; // + prior pixel brightness + b3y = pixbright(pix1-nc * E3pxm->ww) + b1y; // = new brightness b3 = 0.5 * (b3x + b3y); b3 = f1 * b3 + f2 * b1; // possibly moderated @@ -816,7 +817,7 @@ for (dy = -rad-1; dy <= rad+1; dy++) // at distance (dx,dy) from center ++blur_weight[abs(dx)][abs(dy)]; - m = sqrt(radflat2 + radflat2); // corner pixel distance from center + m = sqrt(radflat2 + radflat2); // corner pixel distance from center sum = 0; for (dx = 0; dx <= rad+1; dx++) // compute weight of pixel @@ -863,6 +864,7 @@ int dx, dy, adx, ady, rad; int ww = E3pxm->ww, hh = E3pxm->hh; int Npix; + int nc = E1pxm->nc; // 15.09 float red, green, blue; float weight1, weight2, f1, f2; float *pix1, *pix3, *pixN; @@ -883,7 +885,7 @@ pix1 = PXMpix(E1pxm,px,py); // source pixel pix3 = PXMpix(E3pxm,px,py); // target pixel - + rad = blur_radius; red = green = blue = 0; weight2 = 0.0; @@ -903,7 +905,7 @@ adx = abs(dx); ady = abs(dy); - pixN = pix1 + (dy * ww + dx) * 3; + pixN = pix1 + (dy * ww + dx) * nc; // 15.09 weight1 = blur_weight[adx][ady]; // weight at distance (dx,dy) weight2 += weight1; red += pixN[0] * weight1; // accumulate contributions @@ -1193,9 +1195,6 @@ cchar *title = ZTX("Measure Noise"); cchar *clickmess = ZTX("Click on a monotone image area."); - PangoFontDescription *monofont; - monofont = pango_font_description_from_string("mono bold 10"); // monofont for dialog widgets - /*** ___________________________________ | Measure Noise | @@ -1216,10 +1215,8 @@ zdialog_add_widget(zd,"label","clab","dialog",clickmess,"space=3"); snprintf(text,100,mformat,0.0,0.0,0.0); // mean RGB: 0 0 0 zdialog_add_widget(zd,"label","mlab","dialog",text); - gtk_widget_override_font(zdialog_widget(zd,"mlab"),monofont); snprintf(text,100,nformat,0.0,0.0,0.0); // mean noise: 0.00 0.00 0.00 zdialog_add_widget(zd,"label","nlab","dialog",text); - gtk_widget_override_font(zdialog_widget(zd,"nlab"),monofont); zdialog_run(zd,denoise_measure_dialog_event,"save"); // run dialog return; @@ -1356,7 +1353,7 @@ int ii, px, py, dist = 0; float *pix3, *pix9; - int nc = E3pxm->nc, pcc = nc * sizeof(float); + int nc = E3pxm->nc, pcc = nc * sizeof(float); // 15.09 while (true) { @@ -1481,6 +1478,7 @@ int dy, dx, rad; int minR, minG, minB, maxR, maxG, maxB; float *pixN; + int nc = E3pxm->nc; // 15.09 minR = minG = minB = 255; maxR = maxG = maxB = 0; @@ -1491,7 +1489,7 @@ { if (dy == 0 && dx == 0) continue; // skip self - pixN = pix3 + (dy * ww + dx) * 3; + pixN = pix3 + (dy * ww + dx) * nc; // 15.09 if (pixN[0] < minR) minR = pixN[0]; // find min and max per color if (pixN[0] > maxR) maxR = pixN[0]; if (pixN[1] < minG) minG = pixN[1]; @@ -1522,6 +1520,7 @@ int rgb, dy, dx, rad, nn; float nn1, val, sum, sum2, mean, variance, sigma; float *pixN; + int nc = E3pxm->nc; // 15.09 rad = denoise_radius; nn = (rad * 2 + 1); @@ -1536,7 +1535,7 @@ for (dx = -rad; dx <= rad; dx++) { if (dy == 0 && dx == 0) continue; // skip self - pixN = pix3 + (dy * ww + dx) * 3; + pixN = pix3 + (dy * ww + dx) * nc; // 15.09 val = pixN[rgb]; sum += val; sum2 += val * val; @@ -1569,6 +1568,7 @@ int dy, dx, rad, ns, rgb; float bsortN[400], *pixN; + int nc = E3pxm->nc; // 15.09 rad = denoise_radius; @@ -1579,7 +1579,7 @@ for (dy = -rad; dy <= rad; dy++) // loop surrounding pixels for (dx = -rad; dx <= rad; dx++) // get brightness values { - pixN = pix3 + (dy * ww + dx) * 3; + pixN = pix3 + (dy * ww + dx) * nc; // 15.09 bsortN[ns] = pixN[rgb]; ns++; } @@ -1602,6 +1602,7 @@ int dy, dx, rad; float minR, minG, minB, maxR, maxG, maxB; float *pixN; + int nc = E3pxm->nc; // 15.09 for (rad = 1; rad <= denoise_radius; rad++) for (int loops = 0; loops < 2; loops++) @@ -1615,7 +1616,7 @@ if (dx > -rad && dx < rad) continue; // skip inner pixels if (dy > -rad && dy < rad) continue; - pixN = pix3 + (dy * ww + dx) * 3; + pixN = pix3 + (dy * ww + dx) * nc; // 15.09 if (pixN[0] < minR) minR = pixN[0]; // find min and max per color if (pixN[0] > maxR) maxR = pixN[0]; // among outermost pixels if (pixN[1] < minG) minG = pixN[1]; @@ -1651,6 +1652,7 @@ int ii, jj; float *fimg[3]; float f256 = 1.0 / 256.0; + int nc = E3pxm->nc; // 15.09 if (sa_stat == 3) goto denoise_area; // select area is active @@ -1659,12 +1661,12 @@ fimg[2] = (float *) zmalloc(ww * hh * sizeof(float)); for (ii = 0; ii < ww * hh; ii++) // extract one noisy color from E3 - fimg[0][ii] = E3pxm->pixels[3*ii+rgb] * f256; + fimg[0][ii] = E3pxm->pixels[nc*ii+rgb] * f256; // 15.09 denoise_wavelet(fimg,ww,hh,denoise_thresh); for (ii = 0; ii < ww * hh; ii++) // save one denoised color to E9 - E9pxm->pixels[3*ii+rgb] = 256.0 * fimg[0][ii]; + E9pxm->pixels[nc*ii+rgb] = 256.0 * fimg[0][ii]; zfree(fimg[0]); zfree(fimg[1]); @@ -1700,7 +1702,7 @@ { ii = py * ww2 + px; jj = (py + pyl) * ww + (px + pxl); - fimg[0][ii] = E3pxm->pixels[3*jj+rgb] * f256; + fimg[0][ii] = E3pxm->pixels[nc*jj+rgb] * f256; // 15.09 } denoise_wavelet(fimg,ww2,hh2,denoise_thresh); @@ -1717,9 +1719,9 @@ if (dist < sa_blend) { f1 = 1.0 * dist / sa_blend; f2 = 1.0 - f1; - E9pxm->pixels[3*jj+rgb] = f1 * 256.0 * fimg[0][ii] + f2 * E3pxm->pixels[3*jj+rgb]; + E9pxm->pixels[nc*jj+rgb] = f1 * 256.0 * fimg[0][ii] + f2 * E3pxm->pixels[nc*jj+rgb]; } - else E9pxm->pixels[3*jj+rgb] = 256.0 * fimg[0][ii]; + else E9pxm->pixels[nc*jj+rgb] = 256.0 * fimg[0][ii]; } zfree(fimg[0]); @@ -1920,6 +1922,7 @@ float *pixa, *pixb, *pixc, *pixd, *pixe, *pixf; float cont, f1, f2; float thresh2 = 10 * denoise_thresh; + int nc = E3pxm->nc; // 15.09 for (py = index+3; py < hh-3; py += NWT) // loop all image pixels for (px = 3; px < ww-3; px++) @@ -1933,12 +1936,12 @@ pix3 = PXMpix(E3pxm,px,py); // pixel being tested - pixa = pix3-3; // 3 pixels left in row - pixb = pix3-6; - pixc = pix3-9; - pixd = pix3+3; // 3 pixels right in row - pixe = pix3+6; - pixf = pix3+9; + pixa = pix3-nc; // 3 pixels left in row 15.09 + pixb = pix3-2*nc; + pixc = pix3-3*nc; + pixd = pix3+nc; // 3 pixels right in row + pixe = pix3+2*nc; + pixf = pix3+3*nc; f1 = pixa[0] + pixb[0] + pixc[0]; // detect a threshold centered f2 = pixd[0] + pixe[0] + pixf[0]; // on this pixel @@ -1964,12 +1967,12 @@ continue; } - pixa = pix3-ww*3; // 3 pixels in column above - pixb = pix3-ww*6; - pixc = pix3-ww*9; - pixd = pix3+ww*3; // 3 pixels in column below - pixe = pix3+ww*6; - pixf = pix3+ww*9; + pixa = pix3-ww*nc; // 3 pixels in column above 15.09 + pixb = pix3-ww*2*nc; + pixc = pix3-ww*3*nc; + pixd = pix3+ww*nc; // 3 pixels in column below + pixe = pix3+ww*2*nc; + pixf = pix3+ww*3*nc; f1 = pixa[0] + pixb[0] + pixc[0]; // repeat threshold detection f2 = pixd[0] + pixe[0] + pixf[0]; @@ -2227,7 +2230,7 @@ float slope; char *pmap; float *pix1, *pix3; - int nc = E1pxm->nc, pcc = nc * sizeof(float); + int nc = E1pxm->nc, pcc = nc * sizeof(float); // 15.09 if (sa_stat != 3) return; // nothing selected if (! sa_validate()) return; // area invalid for curr. image file @@ -2373,6 +2376,7 @@ float m, d, w, sum, weight; float red, green, blue; float *pix9, *pix3, *pixN; + int nc = E3pxm->nc; // 15.09 if (sa_stat != 3) return 0; @@ -2425,7 +2429,7 @@ if (py+dy < 0 || py+dy >= E3pxm->hh) continue; adx = abs(dx); ady = abs(dy); - pixN = pix9 + (dy * E3pxm->ww + dx) * 3; + pixN = pix9 + (dy * E3pxm->ww + dx) * nc; weight = blur_weight[adx][ady]; // weight at distance (dx,dy) red += pixN[0] * weight; // accumulate contributions green += pixN[1] * weight; @@ -2863,7 +2867,7 @@ { int cx, cy, rad, px, py; float *pix1, *pix3; - int nc = E1pxm->nc, pcc = nc * sizeof(float); + int nc = E1pxm->nc, pcc = nc * sizeof(float); // 15.09 cx = redmem[ii].cx; cy = redmem[ii].cy; @@ -3323,6 +3327,7 @@ py = py - radius - 1; ww = 2 * radius + 3; Fpaint3(px,py,ww,ww); + return; } @@ -3595,7 +3600,10 @@ if (zd->zstat) { - if (zd->zstat == 1) edit_done(0); // commit edit + if (zd->zstat == 1) { // commit edit + edit_done(0); + Fwarnalpha = 1; // warn if save to jpeg + } else edit_cancel(0); // discard edit return 1; } @@ -3641,7 +3649,7 @@ using namespace ptransp_names; static int pmxdown = 0, pmydown = 0; - int px, py, radius; + int px, py; if (LMclick || RMclick) { @@ -3670,11 +3678,7 @@ } LMclick = RMclick = Mxdrag = Mydrag = 0; - - radius = Mradius * Mscale; // Cairo cannot paint pixbuf with alpha - erase_topcircles(); // over drawing area with alpha - add_topcircle(Mxposn,Myposn,radius); - Fpaintnow(); + draw_mousecircle(Mxposn,Myposn,Mradius,0); // draw mouse circle return; } @@ -3739,6 +3743,11 @@ CEF->Fmods++; CEF->Fsaved = 0; + px = px - radius - 1; // repaint modified area 15.09 + py = py - radius - 1; + ww = 2 * radius + 3; + Fpaint3(px,py,ww,ww); + return; } @@ -5272,14 +5281,10 @@ { int color_ramp_event(zdialog *zd, cchar *event); - GtkWidget *widget; cchar *limits; zdialog *zd; cchar *mess = ZTX("Click image to select pixels."); - PangoFontDescription *widgetfont; - widgetfont = pango_font_description_from_string("Monospace 8"); // small monospace font for widgets - F1_help_topic = "color_ramp"; EFrgbrevise.menufunc = m_color_ramp; @@ -5341,8 +5346,6 @@ pixx[3] = '0' + ii; zdialog_add_widget(zd,"hbox",hbpixx,"vbpix"); // add hbox "hbpix1" to "hbpix9" zdialog_add_widget(zd,"label",pixx,hbpixx); // add label "pix1" to "pix9" - widget = zdialog_widget(zd,pixx); - gtk_widget_override_font(widget,widgetfont); // use monofont } if (color_ramp_metric == 1) limits = "-255.9|255.9|0.1|0.0"; // metric = RGB @@ -5366,12 +5369,6 @@ zdialog_add_widget(zd,"spin",redx,hbdatx,limits,"space=3"); // add spin buttons for "red1" to "red9" etc. zdialog_add_widget(zd,"spin",greenx,hbdatx,limits,"space=3"); zdialog_add_widget(zd,"spin",bluex,hbdatx,limits,"space=3"); - widget = zdialog_widget(zd,redx); - gtk_widget_override_font(widget,widgetfont); // use monofont - widget = zdialog_widget(zd,greenx); - gtk_widget_override_font(widget,widgetfont); - widget = zdialog_widget(zd,bluex); - gtk_widget_override_font(widget,widgetfont); } zdialog_add_widget(zd,"hbox","hbsoft","dialog","space=5"); @@ -5754,7 +5751,6 @@ cchar *title = ZTX("Color Match Images"); F1_help_topic = "match_colors"; - if (checkpend("all")) return; /* @@ -5840,8 +5836,9 @@ if (strmatch(event,"open1")) // get image 1 for color source { + if (match_color_mode == 4) edit_cancel(1); // cancel edit, keep dialog 15.09 match_color_mode = 0; - err = f_open(null); + err = f_open(null); // open image 1 if (! err) match_color_mode = 1; // image 1 ready to click } @@ -5852,7 +5849,7 @@ return 1; } match_color_mode = 2; - err = f_open(null); + err = f_open(null); // open image 2 if (err) return 1; match_color_mode = 3; // image 2 ready to click } @@ -6677,7 +6674,7 @@ float slope, f1, f2; float *pix1, *pix3; char *pmap; - int nc = E1pxm->nc, pcc = nc * sizeof(float); + int nc = E1pxm->nc, pcc = nc * sizeof(float); // 15.09 if (! resource_lock(Fpaintlock)) return; // 15.02 Ffuncbusy++; @@ -7637,37 +7634,45 @@ void stuckpix_pixelblock(int px, int py, int size, float rgb[3]) { - float *ppix; - - ppix = PXMpix(E3pxm,px,py); // block of pixels + float *pix1, *pix2, *pix3, *pix4, *pix5, *pix6, *pix7, *pix8, *pix9; if (size == 1) // 1x1 block, 1 pixel { - rgb[0] = ppix[0]; - rgb[1] = ppix[1]; - rgb[2] = ppix[2]; + pix1 = PXMpix(E3pxm,px,py); + rgb[0] = pix1[0]; + rgb[1] = pix1[1]; + rgb[2] = pix1[2]; } if (size == 2) // 2x2 block, 4 pixels { - rgb[0] = (ppix[0] + ppix[3] + ppix[E3pxm->ww*3] + ppix[E3pxm->ww*3+3]) / 4; - rgb[1] = (ppix[1] + ppix[4] + ppix[E3pxm->ww*3+1] + ppix[E3pxm->ww*3+4]) / 4; - rgb[2] = (ppix[2] + ppix[5] + ppix[E3pxm->ww*3+2] + ppix[E3pxm->ww*3+5]) / 4; + pix1 = PXMpix(E3pxm,px,py); // 15.09 + pix2 = PXMpix(E3pxm,px+1,py); + pix3 = PXMpix(E3pxm,px,py+1); + pix4 = PXMpix(E3pxm,px+1,py+1); + rgb[0] = (pix1[0] + pix2[0] + pix3[0] + pix4[0]) / 4; + rgb[1] = (pix1[1] + pix2[1] + pix3[1] + pix4[1]) / 4; + rgb[2] = (pix1[2] + pix2[2] + pix3[2] + pix4[2]) / 4; } if (size == 3) // 3x3 block, 9 pixels { - rgb[0] = (ppix[0] + ppix[3] + ppix[6] - + ppix[E3pxm->ww*3] + ppix[E3pxm->ww*3+3] + ppix[E3pxm->ww*3+6] - + ppix[E3pxm->ww*6] + ppix[E3pxm->ww*6+3] + ppix[E3pxm->ww*6+6]) / 9; - - rgb[1] = (ppix[1] + ppix[4] + ppix[7] - + ppix[E3pxm->ww*3+1] + ppix[E3pxm->ww*3+4] + ppix[E3pxm->ww*3+7] - + ppix[E3pxm->ww*6+1] + ppix[E3pxm->ww*6+4] + ppix[E3pxm->ww*6+7]) / 9; - - rgb[2] = (ppix[2] + ppix[5] + ppix[8] - + ppix[E3pxm->ww*3+2] + ppix[E3pxm->ww*3+5] + ppix[E3pxm->ww*3+8] - + ppix[E3pxm->ww*6+2] + ppix[E3pxm->ww*6+5] + ppix[E3pxm->ww*6+8]) / 9; + pix1 = PXMpix(E3pxm,px,py); // 15.09 + pix2 = PXMpix(E3pxm,px+1,py); + pix3 = PXMpix(E3pxm,px+2,py); + pix4 = PXMpix(E3pxm,px,py+1); + pix5 = PXMpix(E3pxm,px+1,py+1); + pix6 = PXMpix(E3pxm,px+2,py+1); + pix7 = PXMpix(E3pxm,px,py+2); + pix8 = PXMpix(E3pxm,px+1,py+2); + pix9 = PXMpix(E3pxm,px+2,py+2); + + rgb[0] = (pix1[0] + pix2[0] + pix3[0] + pix4[0] + + pix5[0] + pix6[0] + pix7[0] + pix8[0] + pix9[0]) / 9; + rgb[1] = (pix1[1] + pix2[1] + pix3[1] + pix4[1] + + pix5[1] + pix1[1] + pix7[1] + pix8[1] + pix9[1]) / 9; + rgb[2] = (pix1[2] + pix2[2] + pix3[2] + pix4[2] + + pix5[2] + pix6[2] + pix7[2] + pix8[2] + pix9[2]) / 9; } return; diff -Nru fotoxx-15.08/f.tools.cc fotoxx-15.09/f.tools.cc --- fotoxx-15.08/f.tools.cc 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/f.tools.cc 2015-08-31 10:21:01.000000000 +0000 @@ -38,7 +38,7 @@ m_mongamma monitor gamma check and adjust m_changelang choose GUI language m_untranslated report misting translations - m_duplicates find all duplicated images + m_caliprint printer color calibration m_resources print memory allocated and CPU time used m_zappcrash zappcrash test @@ -336,8 +336,6 @@ cchar *duperr = ZTX("Duplicate directory: \n %s \n" "Please remove."); - PangoFontDescription *monofont; - startime = get_seconds(); // index function start time FindexOK = 0; // must run to completion @@ -433,10 +431,7 @@ zdialog_add_widget(zd_indexlog,"frame","frame","dialog",0,"expand"); zdialog_add_widget(zd_indexlog,"scrwin","scrwin","frame"); zdialog_add_widget(zd_indexlog,"text","text","scrwin"); - wlog = zdialog_widget(zd_indexlog,"text"); - monofont = pango_font_description_from_string("monospace 9"); - gtk_widget_override_font(wlog,monofont); zdialog_resize(zd_indexlog,500,300); zdialog_run(zd_indexlog,indexlog_dialog_event,"parent"); @@ -749,8 +744,10 @@ zsleep(0.1); // the log window } - if (! menu && zd_indexlog) // kill log window if not manual run + if (! menu && zd_indexlog) { // kill log window if not manual run + if (indexupdates || thumbupdates || thumbdeletes) zsleep(1); zdialog_send_event(zd_indexlog,"kill"); + } return; @@ -867,6 +864,7 @@ | [Browse] [______________________________________________________] | | | | Menu Style (o) Icons (o) Icons + Text Icon Size [___|-+] | + | Dialog font [sans 10 _________] [choose] | Image Pan/Scroll: [drag magnified |v] Zooms for 2x [___|-+] | | JPEG save quality [____|-+] Thumbnail size [___|v] | | [x] show hidden directories in gallery view | @@ -905,6 +903,11 @@ zdialog_add_widget(zd,"label","labis","hbmenu",ZTX("Icon size")); zdialog_add_widget(zd,"spin","iconsize","hbmenu","32|48|1|40","space=3"); + zdialog_add_widget(zd,"hbox","hbfont","dialog"); // screen font 15.09 + zdialog_add_widget(zd,"label","labfont","hbfont",ZTX("Dialog font and size"),"space=5"); + zdialog_add_widget(zd,"entry","font","hbfont","Sans 10","size=20"); + zdialog_add_widget(zd,"button","choosefont","hbfont",Bchoose,"space=5"); + zdialog_add_widget(zd,"hbox","hbips","dialog"); zdialog_add_widget(zd,"label","labips","hbips",ZTX("Image Pan/scroll:"),"space=5"); zdialog_add_widget(zd,"combo","panscroll","hbips",0); @@ -958,6 +961,8 @@ zdialog_stuff(zd,"iconsize",iconsize); // icon size + zdialog_stuff(zd,"font",dialog_font); // dialog font 15.09 + if (Fdragopt == 1) zdialog_stuff(zd,"panscroll","drag"); // set pan/scroll option 15.07 if (Fdragopt == 2) zdialog_stuff(zd,"panscroll","scroll"); if (Fdragopt == 3) zdialog_stuff(zd,"panscroll","drag magnified"); @@ -1006,6 +1011,7 @@ int ii, jj, nn; char *pp, temp[200]; static char browsefile[500] = ""; + GtkWidget *font_dialog; if (strmatch(event,"escape")) zd->zstat = 2; // escape = cancel 15.07 @@ -1017,7 +1023,7 @@ if (strmatch(event,"enter")) zd->zstat = 1; // [done] - if (zd->zstat && zd->zstat != 1) return 0; // cancel + if (zd->zstat && zd->zstat != 1) return 1; // cancel if (strmatch(event,"browse")) // browse for startup directory or file { @@ -1035,18 +1041,34 @@ if (strmatch(startdisplay,"dirk")) { pp = zgetfile(ZTX("Select startup directory"),MWIN,"folder",browsefile); - if (! pp) return 0; + if (! pp) return 1; zdialog_stuff(zd,"browsefile",pp); zfree(pp); } if (strmatch(startdisplay,"file")) { pp = zgetfile(ZTX("Select startup image file"),MWIN,"file",browsefile); - if (! pp) return 0; + if (! pp) return 1; zdialog_stuff(zd,"browsefile",pp); zfree(pp); } } + + if (strmatch(event,"choosefont")) // choose dialog font + { + zdialog_fetch(zd,"font",temp,200); + font_dialog = gtk_font_chooser_dialog_new(ZTX("select font"),MWIN); + gtk_font_chooser_set_font(GTK_FONT_CHOOSER(font_dialog),temp); + 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) return 1; + strncpy0(temp,pp,200); + g_free(pp); + zdialog_stuff(zd,"font",temp); + dialog_font = zstrdup(temp); + g_object_set(zfuncs::settings,"gtk-font-name",dialog_font,null); + } if (zd->zstat == 1) // done, check inputs are valid { @@ -1065,7 +1087,7 @@ if (image_file_type(startdirk) != 1) { zmessageACK(Mwin,ZTX("startup directory is invalid")); zd->zstat = 0; - return 0; + return 1; } } @@ -1076,7 +1098,7 @@ if (image_file_type(startfile) != 2) { zmessageACK(Mwin,ZTX("startup file is invalid")); zd->zstat = 0; - return 0; + return 1; } } @@ -1103,6 +1125,10 @@ iconsize = nn; options_fclone++; } + + zdialog_fetch(zd,"font",temp,200); // screen font 15.09 + if (*temp > ' ') dialog_font = zstrdup(temp); + g_object_set(zfuncs::settings,"gtk-font-name",dialog_font,null); zdialog_fetch(zd,"panscroll",temp,200); // get drag/scroll option 15.07 if strmatch(temp,"drag") Fdragopt = 1; @@ -1139,10 +1165,10 @@ RAWfiletypes = pp; save_params(); // done, save modified parameters - return 0; + return 1; } - return 0; + return 1; } @@ -1238,7 +1264,7 @@ for (int ii = 0; ii < Nshortcuts2; ii++) { // show shortcuts list in dialog snprintf(textline,100,"%-20s %s \n",shortcutkey2[ii],shortcutmenu2[ii]); - wprintx(widget,0,textline,"monospace 9"); + wprintx(widget,0,textline); } for (int ii = 0; ii < Neligible; ii++) // add eligible menu names to @@ -1416,7 +1442,7 @@ for (ii = 0; ii < Nshortcuts2; ii++) { // show existing shortcuts in dialog snprintf(textline,100,"%-20s %s \n",shortcutkey2[ii],shortcutmenu2[ii]); - wprintx(widget,0,textline,"monospace 9"); + wprintx(widget,0,textline); } return 1; @@ -1470,7 +1496,7 @@ for (ii = 0; ii < Nshortcuts2; ii++) { // show existing shortcuts in dialog snprintf(textline,100,"%-20s %s \n",shortcutkey2[ii],shortcutmenu2[ii]); - wprintx(widget,0,textline,"monospace 9"); + wprintx(widget,0,textline); } zdialog_stuff(zd,"shortkey",""); @@ -2009,8 +2035,6 @@ { int show_RGB_event(zdialog *zd, cchar *event); - PangoFontDescription *pfontdesc; - GtkWidget *widget; cchar *mess = ZTX("Click image to select pixels."); cchar *header = " Pixel Red Green Blue"; char hbx[8] = "hbx", pixx[8] = "pixx"; // last char. is '0' to '9' @@ -2020,7 +2044,6 @@ if (! curr_file) return; // no image file RGBSnpix = 0; // no pixels yet - pfontdesc = pango_font_description_from_string("Monospace 9"); // monospace font /*** _________________________________________ @@ -2070,8 +2093,7 @@ zdialog_add_widget(zd,"vbox","vbdat","dialog"); // vbox for current pixel values zdialog_add_widget(zd,"hbox","hbpix","vbdat"); zdialog_add_widget(zd,"label","labheader","hbpix",header); // Pixel Red Green Blue - widget = zdialog_widget(zd,"labheader"); - gtk_widget_override_font(widget,pfontdesc); + zdialog_labelfont(zd,"labheader","monospace 9",header); // 15.09 for (ii = 0; ii < 10; ii++) { // 10 labels for pixel data output @@ -2079,8 +2101,6 @@ pixx[3] = '0' + ii; zdialog_add_widget(zd,"hbox",hbx,"vbdat"); zdialog_add_widget(zd,"label",pixx,hbx); - widget = zdialog_widget(zd,pixx); // use monospace font - gtk_widget_override_font(widget,pfontdesc); } zdialog_run(zd,show_RGB_event,"save"); // run dialog @@ -2295,7 +2315,7 @@ green3 -= green1; blue3 -= blue1; } - snprintf(text+14,86," %6.2f %6.2f %6.2f ",red3,green3,blue3); // xxx.xx + snprintf(text+14,86," %6.2f %6.2f %6.2f ",red3,green3,blue3); } if (RGBSmetric == 2) { // output EV values @@ -2307,10 +2327,10 @@ green3 -= EVfunc(green1); blue3 -= EVfunc(blue1); } - snprintf(text+14,86," %6.3f %6.3f %6.3f ",red3,green3,blue3); // x.xxx + snprintf(text+14,86," %6.3f %6.3f %6.3f ",red3,green3,blue3); } - zdialog_stuff(RGBSzd,pixx,text); // pixel and RGB values >> dialog + zdialog_labelfont(RGBSzd,pixx,"monospace 9",text); // 15.09 } return 1; @@ -2996,259 +3016,580 @@ /**************************************************************************/ -// find all duplicated files and create corresponding gallery of duplicates +// printer color calibration tool -void m_duplicates(GtkWidget *, const char *) +namespace caliprint { - int duplicates_dialog_event(zdialog *zd, cchar *event); + int dialog_event(zdialog *zd, cchar *event); + void printchart(); + void scanchart(); + void fixchart(); + void processchart(); + void printimage(); + +// parameters for 16 colors per RGB dimension: 0 16 32 48 ... 256 (256 --> 255) +// NC colors per RGB dimension (17) (counting both 0 and 255) +// CS color step size (16) +// LS last step (NC-1 = 16) +// TS tile size in pixels (50) +// ROWS chart rows (85) ROWS x COLS must be >= NC*NC*NC +// COLS chart columns (58) + + #define NC 17 + #define CS 16 + #define LS 16 + #define TS 50 + #define NC2 (NC*NC) + #define NC3 (NC*NC*NC) + #define ROWS 85 + #define COLS 58 + + int RGBvals[NC]; + int Ntiles = NC3; + int margin = 80; // chart margins + int chartww = COLS * TS; // chart image size + int charthh = ROWS * TS; + char printchartfile[200]; + char scanchartfile[200]; +} - PIXBUF *pxb; - GError *gerror; - FILE *fid = 0; - int Nfiles = 0, Ndups = 0; // image file and duplicate counts - char **files = 0; // image file list - char **thumbs = 0; // 64x64 thumbnail images - int *tcc = 0; // thumbnail actual width x height - uint8 *pix; - zdialog *zd; - int thumbsize, pixdiff, pixcount; - char text[100], gfile[100], *pp; - int zstat, ii, jj, kk, cc, err, ww, hh, ndup; - int m1, m2, sum, diff; - F1_help_topic = "find_duplicates"; +// menu function - if (checkpend("all")) return; // check nothing pending - Fblock = 1; +void m_caliprint(GtkWidget *, cchar *menu) +{ + using namespace caliprint; + + zdialog *zd; + cchar *title = ZTX("Calibrate Printer"); + + F1_help_topic = "calibrate_printer"; + if (checkpend("all")) return; /*** - _________________________________________ - | Find Duplicate Images | - | | - | thumbnail size [ 64 |-+] | - | pixel difference [ 2 |-+] | - | pixel count [ 2 |-+] | - | Images: nnnnnn Duplicates: nnn | - | /topdirk/subdirk1/subdirk2/... | - | imagefile.jpg | - | [proceed] [cancel] | - |_________________________________________| + ______________________________________ + | Calibrate Printer Colors | + | | + | (o) print color chart | + | (o) scan and save color chart | + | (o) align and trim color chart | + | (o) open and process color chart | + | (o) print image with revised colors | + | | + | [Proceed] [Cancel] | + |______________________________________| ***/ - zd = zdialog_new(ZTX("Find Duplicate Images"),Mwin,Bproceed,Bcancel,null); - zdialog_add_widget(zd,"hbox","hbthumb","dialog"); - zdialog_add_widget(zd,"label","labthumb","hbthumb",ZTX("Thumbnail size")); - zdialog_add_widget(zd,"spin","thumbsize","hbthumb","32|256|32|64","space=3"); - zdialog_add_widget(zd,"hbox","hbdiff","dialog"); - zdialog_add_widget(zd,"label","labdiff","hbdiff",ZTX("pixel difference")); - zdialog_add_widget(zd,"spin","pixdiff","hbdiff","1|20|1|2","space=3"); - zdialog_add_widget(zd,"hbox","hbsum","dialog"); - zdialog_add_widget(zd,"label","labsum","hbsum",ZTX("pixel count")); - zdialog_add_widget(zd,"spin","pixcount","hbsum","1|999|1|10","space=3"); - zdialog_add_widget(zd,"hbox","hbcount","dialog",0,"space=5"); - zdialog_add_widget(zd,"label","labcount1","hbcount",ZTX("Images:")); - zdialog_add_widget(zd,"label","labcount2","hbcount",ZTX("searching ...")); - zdialog_add_widget(zd,"label","space","hbcount",0,"space=5"); - zdialog_add_widget(zd,"label","labdup1","hbcount",ZTX("Duplicates:")); - zdialog_add_widget(zd,"label","labdup2","hbcount","0"); - zdialog_add_widget(zd,"hbox","hbdirk","dialog",0,"space=3"); - zdialog_add_widget(zd,"label","labdirk","hbdirk"," ","space=5"); - zdialog_add_widget(zd,"hbox","hbfile","dialog"); - zdialog_add_widget(zd,"label","labfile","hbfile"," ","space=5"); + zd = zdialog_new(title,Mwin,Bproceed,Bcancel,null); - zdialog_restore_inputs(zd); - zdialog_resize(zd,300,0); - zdialog_run(zd,duplicates_dialog_event); + zdialog_add_widget(zd,"vbox","vbopt","dialog"); + zdialog_add_widget(zd,"radio","printchart","vbopt",ZTX("print color chart")); + zdialog_add_widget(zd,"radio","scanchart","vbopt",ZTX("scan and save color chart")); + zdialog_add_widget(zd,"radio","fixchart","vbopt",ZTX("align and trim color chart")); + zdialog_add_widget(zd,"radio","processchart","vbopt",ZTX("open and process color chart")); + zdialog_add_widget(zd,"radio","printimage","vbopt",ZTX("print image with revised colors")); + + zdialog_stuff(zd,"printchart",1); + zdialog_stuff(zd,"scanchart",0); + zdialog_stuff(zd,"fixchart",0); + zdialog_stuff(zd,"processchart",0); + zdialog_stuff(zd,"printimage",0); + + zdialog_resize(zd,250,0); + zdialog_run(zd,dialog_event); + return; +} - err = find_imagefiles(thumbdirk,files,Nfiles,1); // get all thumbnail files - if (err) { - zmessageACK(Mwin,strerror(errno)); - goto cleanup; + +// dialog event and completion function + +int caliprint::dialog_event(zdialog *zd, cchar *event) +{ + using namespace caliprint; + + int nn; + + F1_help_topic = "calibrate_printer"; + if (checkpend("all")) return 1; + + if (! zd->zstat) return 1; // wait for [proceed] or [cancel] + + if (zd->zstat != 1) { // cancel + zdialog_free(zd); + return 1; + } + + zdialog_fetch(zd,"printchart",nn); + if (nn) { + printchart(); + zdialog_free(zd); + return 1; + } + + zdialog_fetch(zd,"scanchart",nn); + if (nn) { + scanchart(); + zdialog_free(zd); + return 1; + } + + zdialog_fetch(zd,"fixchart",nn); + if (nn) { + fixchart(); + zdialog_free(zd); + return 1; + } + + zdialog_fetch(zd,"processchart",nn); + if (nn) { + processchart(); + zdialog_free(zd); + return 1; + } + + zdialog_fetch(zd,"printimage",nn); + if (nn) { + printimage(); + zdialog_free(zd); + return 1; } + + zd->zstat = 0; // keep dialog active + return 1; +} + - if (Nfiles < 10) { - zmessageACK(Mwin,ZTX("only %d image thumbnails found"),Nfiles); - goto cleanup; +// generate and print the color chart + +void caliprint::printchart() +{ + using namespace caliprint; + + int ii, cc, fww, fhh, R, G, B; + int row, col, px, py; + int chartrs, textww, texthh, textrs; + uint8 *chartpixels, *textpixels, *pix1, *pix2; + PIXBUF *chartpxb, *textpxb; + GError *gerror = 0; + + for (ii = 0; ii < NC; ii++) // construct RGBvals table + RGBvals[ii] = CS * ii; + RGBvals[LS] = 255; // set last value = 255 + + fww = chartww + 2 * margin; + fhh = charthh + 2 * margin; + + chartpxb = gdk_pixbuf_new(GDKRGB,0,8,fww,fhh); // make chart image + if (! chartpxb) { + zmessageACK(Mwin,"cannot create pixbuf"); + return; + } + + chartpixels = gdk_pixbuf_get_pixels(chartpxb); // clear to white + chartrs = gdk_pixbuf_get_rowstride(chartpxb); + cc = fhh * chartrs; + memset(chartpixels,255,cc); + + for (py = 0; py < charthh; py++) // fill chart tiles with colors + for (px = 0; px < chartww; px++) + { + row = py / TS; + col = px / TS; + ii = row * COLS + col; + if (ii >= Ntiles) break; // last chart positions may be unused + R = ii / NC2; + G = (ii - NC2 * R) / NC; // RGB index values for tile ii + B = ii - NC2 * R - NC * G; + pix1 = chartpixels + (py + margin) * chartrs + (px + margin) * 3; + pix1[0] = RGBvals[R]; + pix1[1] = RGBvals[G]; + pix1[2] = RGBvals[B]; + } + + for (py = 10; py < fhh-10; py++) // add tile boundary markers + for (px = 10; px < fww-10; px++) // for easier de-skew and trim + { + if (py < margin || py > fhh - margin) + if (px < margin || px > fww - margin) { + pix1 = chartpixels + py * chartrs + px * 3; + pix1[0] = pix1[1] = pix1[2] = 0; + } } + + textpxb = text_pixbuf(" TOP ","sans bold",30,Mwin); + textww = gdk_pixbuf_get_width(textpxb); // copy "TOP" in top margin so user + texthh = gdk_pixbuf_get_height(textpxb); // can know which end is up + textrs = gdk_pixbuf_get_rowstride(textpxb); + textpixels = gdk_pixbuf_get_pixels(textpxb); + + for (row = 0; row < texthh; row++) + for (col = 0; col < textww; col++) + { + pix1 = textpixels + row * textrs + col * 3; + pix2 = chartpixels + (row+10) * chartrs + (col+20+margin) * 3; // top left corner + memcpy(pix2,pix1,3); + } + + g_object_unref(textpxb); + + snprintf(printchartfile,200,"%s/printchart.png",printer_color_dirk); + gdk_pixbuf_save(chartpxb,printchartfile,"png",&gerror,null); + if (gerror) { + zmessageACK(Mwin,gerror->message); + return; + } + + g_object_unref(chartpxb); - snprintf(text,100,"%d",Nfiles); // stuff thumbnail count in dialog - zdialog_stuff(zd,"labcount2",text); + zmessageACK(Mwin,"The color chart file will be printed."); + print_image_file(Mwin,printchartfile); // print the chart - zstat = zdialog_wait(zd); // wait for user inputs - if (zstat != 1) goto cleanup; + return; +} - zdialog_fetch(zd,"thumbsize",thumbsize); // thumbnail size to use - zdialog_fetch(zd,"pixdiff",pixdiff); // pixel difference threshold - zdialog_fetch(zd,"pixcount",pixcount); // pixel count threshold - cc = Nfiles * sizeof(uint8 *); - thumbs = (char **) zmalloc(cc); - memset(thumbs,0,cc); +// scan the color chart - cc = Nfiles * sizeof(int); - tcc = (int *) zmalloc(cc); +void caliprint::scanchart() +{ + using namespace caliprint; - Ffuncbusy = 1; + zmessageACK(Mwin,ZTX("Scan the printed color chart. \n" + "Save in %s/"),printer_color_dirk); + return; +} - for (ii = 0; ii < Nfiles; ii++) // screen out thumbnails not 15.02 - { // within top image directories - pp = thumb2imagefile(files[ii]); - if (! pp) { - zfree(files[ii]); - files[ii] = 0; - continue; - } - for (kk = 0; kk < Ntopdirks; kk++) - { - cc = strlen(topdirks[kk]); - if (pp[cc] != '/') continue; - if (strmatchN(pp,topdirks[kk],cc)) break; - } +// edit and fix the color chart + +void caliprint::fixchart() +{ + using namespace caliprint; + + char *pp; + + zmessageACK(Mwin,ZTX("Open and edit the scanned color chart file. \n" + "Remove any skew or rotation caused by the scanner. \n" + "Trim off all margins. Be careful not to cut off \n" + "any color tile edges or leave any white margins.")); + + pp = zgetfile("scanned color chart file",MWIN,"file",printer_color_dirk,1); + if (! pp) return; + strncpy0(scanchartfile,pp,200); + f_open(scanchartfile,0,0,1,0); + return; +} + - zfree(pp); - if (kk < Ntopdirks) continue; - zfree(files[ii]); - files[ii] = 0; +// process the scanned and fixed color chart + +void caliprint::processchart() +{ + using namespace caliprint; + + PIXBUF *chartpxb; + GError *gerror = 0; + uint8 *chartpixels, *pix1; + FILE *fid; + char *pp; + int chartrs, chartnc, px, py; + int ii, nn, row, col, R, G, B; + int xlo, xhi, ylo, yhi; + float fww, fhh; + int Rsum, Gsum, Bsum, Rout, Gout, Bout; + int Rlo, Rhi, Rx, Glo, Ghi, Gx, Blo, Bhi, Bx; + int RGBerr1[NC][NC][NC][3], RGBerr2[NC][NC][NC][3]; + + for (ii = 0; ii < NC; ii++) // construct RGBvals table + RGBvals[ii] = CS * ii; + RGBvals[LS] = 255; // set last value = 255 + + zmessageACK(Mwin,ZTX("Open the trimmed color chart file")); + + pp = zgetfile("trimmed color chart file",MWIN,"file",printer_color_dirk,1); + if (! pp) return; + strncpy0(scanchartfile,pp,200); + + chartpxb = gdk_pixbuf_new_from_file(scanchartfile,&gerror); // scanned chart without margins + if (! chartpxb) { + if (gerror) zmessageACK(Mwin,gerror->message); + return; } + + chartww = gdk_pixbuf_get_width(chartpxb); + charthh = gdk_pixbuf_get_height(chartpxb); + chartpixels = gdk_pixbuf_get_pixels(chartpxb); + chartrs = gdk_pixbuf_get_rowstride(chartpxb); + chartnc = gdk_pixbuf_get_n_channels(chartpxb); + fww = 1.0 * chartww / COLS; + fhh = 1.0 * charthh / ROWS; + + for (row = 0; row < ROWS; row++) // loop each tile + for (col = 0; col < COLS; col++) + { + ii = row * COLS + col; + if (ii >= Ntiles) break; + + ylo = row * fhh; // tile position within chart image + yhi = ylo + fhh; + xlo = col * fww; + xhi = xlo + fww; - for (ii = 0; ii < Nfiles; ii++) // get thumbnails in memory - { - if (! files[ii]) continue; - if (Fkillfunc) goto cleanup; + Rsum = Gsum = Bsum = nn = 0; - kk = thumbsize; - gerror = 0; - pxb = gdk_pixbuf_new_from_file_at_size(files[ii],kk,kk,&gerror); - if (! pxb) { - printz("file: %s \n %s",files[ii],gerror->message); - zfree(files[ii]); - files[ii] = 0; - continue; + for (py = ylo+fhh/5; py < yhi-fhh/5; py++) // get tile pixels less 20% margins + for (px = xlo+fww/5; px < xhi-fww/5; px++) + { + pix1 = chartpixels + py * chartrs + px * chartnc; + Rsum += pix1[0]; + Gsum += pix1[1]; + Bsum += pix1[2]; + nn++; } - ww = gdk_pixbuf_get_width(pxb); // actual thumbnail dimensions - hh = gdk_pixbuf_get_height(pxb); // ( <= 64x64) - pix = gdk_pixbuf_get_pixels(pxb); - - cc = ww * hh * 3; - thumbs[ii] = (char *) zmalloc(cc); - memcpy(thumbs[ii],pix,cc); - tcc[ii] = cc; - g_object_unref(pxb); - zmainloop(10); // keep GTK alive - } - - for (ii = 0; ii < Nfiles; ii++) // replace thumbnail filespecs - { // with corresp. image filespecs - if (! files[ii]) continue; - pp = thumb2imagefile(files[ii]); - zfree(files[ii]); - files[ii] = pp; - } - - snprintf(gfile,100,"%s/search_results",tempdir); // open file for gallery output - fid = fopen(gfile,"w"); - if (! fid) goto filerror; - - Fbusy_goal = Nfiles; // set up progress monitor - Fbusy_done = 0; - - for (ii = 0; ii < Nfiles; ii++) // loop all thumbnails - { - if (Fkillfunc) goto cleanup; - Fbusy_done++; - - if (! files[ii]) continue; - pp = strrchr(files[ii],'/'); - if (! pp) continue; - *pp = 0; - zdialog_stuff(zd,"labdirk",files[ii]); // update directory and file name - zdialog_stuff(zd,"labfile",pp+1); // in dialog - *pp = '/'; - zmainloop(10); // keep GTK alive - zsleep(0.001); + Rout = Rsum / nn; // average tile RGB values + Gout = Gsum / nn; + Bout = Bsum / nn; + + R = ii / NC2; + G = (ii - NC2 * R) / NC; + B = ii - NC2 * R - NC * G; + + RGBerr1[R][G][B][0] = Rout - RGBvals[R]; // error = (scammed RGB) - (printed RGB) + RGBerr1[R][G][B][1] = Gout - RGBvals[G]; + RGBerr1[R][G][B][2] = Bout - RGBvals[B]; + } + + g_object_unref(chartpxb); + + // anneal the error values to reduce randomness + + for (R = 0; R < NC; R++) + for (G = 0; G < NC; G++) + for (B = 0; B < NC; B++) + { + Rlo = R-1; + Rhi = R+1; + Glo = G-1; + Ghi = G+1; + Blo = B-1; + Bhi = B+1; + + if (Rlo < 0) Rlo = 0; + if (Rhi > LS) Rhi = LS; + if (Glo < 0) Glo = 0; + if (Ghi > LS) Ghi = LS; + if (Blo < 0) Blo = 0; + if (Bhi > LS) Bhi = LS; + + Rsum = Gsum = Bsum = nn = 0; - for (jj = ndup = 0; jj < Nfiles; jj++) // loop all thumbnails + for (Rx = Rlo; Rx <= Rhi; Rx++) + for (Gx = Glo; Gx <= Ghi; Gx++) + for (Bx = Blo; Bx <= Bhi; Bx++) { - if (jj == ii) continue; - if (! files[jj]) continue; - if (tcc[ii] != tcc[jj]) continue; // look for matching thumbnails + Rsum += RGBerr1[Rx][Gx][Bx][0]; + Gsum += RGBerr1[Rx][Gx][Bx][1]; + Bsum += RGBerr1[Rx][Gx][Bx][2]; + nn++; + } - for (kk = sum = 0; kk < tcc[ii]; kk++) - { - m1 = thumbs[ii][kk]; - m2 = thumbs[jj][kk]; - diff = abs(m1 - m2); - if (diff < pixdiff) continue; - if (++sum > pixcount) break; - } + RGBerr2[R][G][B][0] = 0.7 * Rsum / nn; // 70% adjustment + RGBerr2[R][G][B][1] = 0.7 * Gsum / nn; + RGBerr2[R][G][B][2] = 0.7 * Bsum / nn; + } - if (kk < tcc[ii]) continue; // no match + // save finished color map to user-selected file (default colormap.dat) - gerror = 0; // thumbnails match - pxb = gdk_pixbuf_new_from_file_at_size(files[jj],64,64,&gerror); // check image is readable - if (pxb) g_object_unref(pxb); - if (! pxb || gerror) { // no, ignore matching - zfree(files[jj]); // "broken file" thumbnails - files[jj] = 0; - continue; - } + zmessageACK(Mwin,ZTX("Set the file name and location \n" + "for the output color map file.")); - if (ndup == 0) fprintf(fid,"%s\n",files[ii]); // first duplicate, output file name - fprintf(fid,"%s\n",files[jj]); // output duplicate image file name - zfree(files[jj]); - files[jj] = 0; - ndup++; - - Ndups++; - snprintf(text,100,"%d",Ndups); // update duplicates found in dialog - zdialog_stuff(zd,"labdup2",text); - } + pp = zgetfile("Color Map File",MWIN,"save",colormapfile,1); + if (! pp) return; + if (colormapfile) zfree(colormapfile); + colormapfile = pp; + save_params(); + + fid = fopen(colormapfile,"w"); + if (! fid) return; + + for (R = 0; R < NC; R++) + for (G = 0; G < NC; G++) + for (B = 0; B < NC; B++) + { + fprintf(fid,"RGB: %3d %3d %3d ERR: %4d %4d %4d \n", + RGBvals[R], RGBvals[G], RGBvals[B], + RGBerr2[R][G][B][0], RGBerr2[R][G][B][1], RGBerr2[R][G][B][2]); } fclose(fid); - fid = 0; - - free_resources(); - navi::gallerytype = 2; // generate gallery of duplicate images - gallery(gfile,"initF"); - m_viewmode(0,"G"); - gallery(0,"paint",0); // position at top -cleanup: - zdialog_free(zd); - if (fid) fclose(fid); - for (ii = 0; ii < Nfiles; ii++) - if (files[ii]) zfree(files[ii]); - if (thumbs) - for (ii = 0; ii < Nfiles; ii++) - if (thumbs[ii]) zfree(thumbs[ii]); - if (files) zfree(files); - if (thumbs) zfree(thumbs); - if (tcc) zfree(tcc); - fid = 0; - Fbusy_goal = 0; - Ffuncbusy = 0; - Fkillfunc = 0; - Fblock = 0; return; - -filerror: - zmessLogACK(Mwin,"file error: %s",strerror(errno)); - goto cleanup; } -// dialog event and completion function +// Print the current image file with revised colors -int duplicates_dialog_event(zdialog *zd, cchar *event) +void caliprint::printimage() { - if (strmatch(event,"escape")) zd->zstat = 2; // escape = cancel 15.07 - if (! zd->zstat) return 1; // wait for user input - if (zd->zstat != 1) Fkillfunc = 1; // [cancel] or [x] - return 1; // [proceed] + using namespace caliprint; + + zdialog *zd; + int zstat; + cchar *title = ZTX("Color map file to use"); + FILE *fid; + PIXBUF *pixbuf; + GError *gerror = 0; + uint8 *pixels, *pix1; + char *pp, printfile[200]; + int ww, hh, rs, nc, px, py; + int R, G, B, R2, G2, B2; + int ii, nn, err; + int RGB[NC][NC][NC][3], ERR[NC][NC][NC][3]; + int rr1, rr2, gg1, gg2, bb1, bb2; + float Fr, Fg, Fb, F; + int Rerr1, Gerr1, Berr1; + int Rerr2, Gerr2, Berr2; + int Rerr, Gerr, Berr; + + for (ii = 0; ii < NC; ii++) // construct RGBvals table + RGBvals[ii] = CS * ii; + RGBvals[LS] = 255; // set last value = 255 + + if (! curr_file) { + zmessageACK(Mwin,ZTX("Select the image file to print.")); + return; + } + + zd = zdialog_new(title,Mwin,Bbrowse,Bproceed,Bcancel,null); // show current color map file + zdialog_add_widget(zd,"hbox","hbmap","dialog"); // and allow user to choose another + zdialog_add_widget(zd,"label","labmap","hbmap",0,"space=3"); + zdialog_stuff(zd,"labmap",colormapfile); + zdialog_run(zd); + zstat = zdialog_wait(zd); + zdialog_free(zd); + + if (zstat == 1) { // [browse] + pp = zgetfile("Color Map File",MWIN,"file",printer_color_dirk,1); + if (! pp) return; + if (colormapfile) zfree(colormapfile); + colormapfile = pp; + } + + else if (zstat != 2) return; // not proceed: cancel + + fid = fopen(colormapfile,"r"); // read color map file + if (! fid) return; + + for (R = 0; R < NC; R++) + for (G = 0; G < NC; G++) + for (B = 0; B < NC; B++) + { + nn = fscanf(fid,"RGB: %d %d %d ERR: %d %d %d ", + &RGB[R][G][B][0], &RGB[R][G][B][1], &RGB[R][G][B][2], + &ERR[R][G][B][0], &ERR[R][G][B][1], &ERR[R][G][B][2]); + if (nn != 6) { + zmessageACK(Mwin,strerror(errno)); + fclose(fid); + return; + } + } + + fclose(fid); + + pixbuf = gdk_pixbuf_copy(Fpxb->pixbuf); // get image pixbuf to convert + if (! pixbuf) { + if (gerror) zmessageACK(Mwin,gerror->message); + return; + } + + ww = gdk_pixbuf_get_width(pixbuf); + hh = gdk_pixbuf_get_height(pixbuf); + pixels = gdk_pixbuf_get_pixels(pixbuf); + rs = gdk_pixbuf_get_rowstride(pixbuf); + nc = gdk_pixbuf_get_n_channels(pixbuf); + + for (py = 0; py < hh; py++) + for (px = 0; px < ww; px++) + { + pix1 = pixels + py * rs + px * nc; + R = pix1[0]; + G = pix1[1]; + B = pix1[2]; + + rr1 = R/CS; // get color map values surrounding RGB + rr2 = rr1 + 1; + if (rr2 > LS) { // if > last entry, use last entry + rr1--; + rr2--; + } + + gg1 = G/CS; + gg2 = gg1 + 1; + if (gg2 > LS) { + gg1--; + gg2--; + } + + bb1 = B/CS; + bb2 = bb1 + 1; + if (bb2 > LS) { + bb1--; + bb2--; + } + + Fr = 1.0 * ( R - RGBvals[rr1] ) / ( RGBvals[rr2] - RGBvals[rr1] ); // RGB position between color map values + Fg = 1.0 * ( G - RGBvals[gg1] ) / ( RGBvals[gg2] - RGBvals[gg1] ); // (RGB - low) / (high - low) + Fb = 1.0 * ( B - RGBvals[bb1] ) / ( RGBvals[bb2] - RGBvals[bb1] ); + F = (Fr + Fg + Fb) / 3.0; + + Rerr1 = ERR[rr1][gg1][bb1][0]; // error value below RGB + Gerr1 = ERR[rr1][gg1][bb1][1]; + Berr1 = ERR[rr1][gg1][bb1][2]; + + Rerr2 = ERR[rr2][gg2][bb2][0]; // error value above RGB + Gerr2 = ERR[rr2][gg2][bb2][1]; + Berr2 = ERR[rr2][gg2][bb2][2]; + + Rerr = Rerr1 + F * (Rerr2 - Rerr1); // interpolated RGB error value + Gerr = Gerr1 + F * (Gerr2 - Gerr1); // low + F * (high - low) + Berr = Berr1 + F * (Berr2 - Berr1); + + R2 = R - Rerr; // RGB out = RGB in - error + G2 = G - Gerr; + B2 = B - Berr; + + if (R2 < 0) R2 = 0; + if (R2 > 255) R2 = 255; + if (G2 < 0) G2 = 0; + if (G2 > 255) G2 = 255; + if (B2 < 0) B2 = 0; + if (B2 > 255) B2 = 255; + + pix1[0] = R2; + pix1[1] = G2; + pix1[2] = B2; + } + + snprintf(printfile,200,"%s/printfile.png",get_zuserdir()); // save revised pixbuf to print file + gdk_pixbuf_save(pixbuf,printfile,"png",&gerror,null); + if (gerror) { + zmessageACK(Mwin,gerror->message); + Ffuncbusy = 0; + return; + } + + g_object_unref(pixbuf); + + err = f_open(printfile,0,0,1,0); // open print file + if (err) return; + + zmessageACK(Mwin,ZTX("Image colors are converted for printing.")); + + print_image_file(Mwin,printfile); + + return; } @@ -3261,7 +3602,7 @@ { F1_help_topic = "resources"; // 15.07 zmalloc_report(); - printf(" thumbnail cache: %.0f MB \n",navi::thumbcache_MB); + printz(" thumbnail cache: %.0f MB \n",navi::thumbcache_MB); return; } diff -Nru fotoxx-15.08/f.widgets.cc fotoxx-15.09/f.widgets.cc --- fotoxx-15.08/f.widgets.cc 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/f.widgets.cc 2015-08-31 10:21:01.000000000 +0000 @@ -51,10 +51,6 @@ void build_widgets() { - // build the window widgets for the three view modes F/G/W - - GtkStateFlags gtksf = (GtkStateFlags) 0; - Mwin = gtk_window_new(GTK_WINDOW_TOPLEVEL); // create main window gtk_window_set_title(MWIN,Frelease); Mvbox = gtk_box_new(VERTICAL,0); // top container @@ -68,6 +64,11 @@ G_SIGNAL(Mwin,"key-release-event",KBrelease,0); drag_drop_connect(Mwin,m_open_drag); // connect drag-drop to main window + + // get hardware and set default font for screen widgets + + get_hardware_info(Mwin); // GTK API broken again 15.09 + g_object_set(zfuncs::settings,"gtk-font-name",dialog_font,null); // set font for screen 15.09 // F view widgets - image file @@ -81,10 +82,8 @@ gtk_box_pack_start(GTK_BOX(Fvbox),Fpanel,0,0,0); gtk_widget_set_size_request(Fpanel,0,20); // 15.04 Fpanlab = gtk_label_new("panel"); - gtk_widget_override_font(Fpanlab,panelfont); gtk_box_pack_start(GTK_BOX(Fpanel),Fpanlab,0,0,0); Fdrawin = gtk_drawing_area_new(); // image drawing area - gtk_widget_override_background_color(Fdrawin,gtksf,&GDKbackground); gtk_box_pack_start(GTK_BOX(Fvbox),Fdrawin,1,1,0); gtk_widget_hide(Fhbox); @@ -109,12 +108,10 @@ gtk_box_pack_start(GTK_BOX(Ghbox),Gvbox,1,1,0); Gpanel = gtk_box_new(HORIZONTAL,0); // top panel for [TOP] and navi buttons gtk_box_pack_start(GTK_BOX(Gvbox),Gpanel,0,0,2); - Gtop = gtk_button_new_with_label(ZTX("TOP")); // [TOP] button in panel - gtk_widget_override_font(Gtop,panelfont); - gtk_box_pack_start(GTK_BOX(Gpanel),Gtop,0,0,3); Galbum = gtk_button_new_with_label(ZTX("Album")); // [Album] button in panel 15.08 - gtk_widget_override_font(Galbum,panelfont); gtk_box_pack_start(GTK_BOX(Gpanel),Galbum,0,0,3); + Gtop = gtk_button_new_with_label(ZTX("TOP")); // [TOP] button in panel + gtk_box_pack_start(GTK_BOX(Gpanel),Gtop,0,0,3); Gsep = gtk_separator_new(VERTICAL); // separator line gtk_box_pack_start(GTK_BOX(Gpanel),Gsep,0,0,3); @@ -147,7 +144,6 @@ Wvbox = gtk_box_new(VERTICAL,0); // right vbox for geomap gtk_box_pack_start(GTK_BOX(Whbox),Wvbox,1,1,0); Wdrawin = gtk_drawing_area_new(); // geomap drawing area - gtk_widget_override_background_color(Wdrawin,gtksf,&GDKbackground); gtk_box_pack_start(GTK_BOX(Wvbox),Wdrawin,1,1,0); gtk_widget_hide(Whbox); @@ -243,6 +239,8 @@ cchar * select_disable_tip = ZTX("Disable area for editing"); cchar * select_invert_tip = ZTX("Reverse existing area"); cchar * select_unselect_tip = ZTX("Erase existing area"); + cchar * select_copy_tip = ZTX("Copy area for later pasting into image"); + cchar * select_paste_tip = ZTX("Paste previously copied area into image"); cchar * select_open_tip = ZTX("Open a file and paste as area into image"); cchar * select_save_tip = ZTX("Save area to a file with transparency"); @@ -335,7 +333,7 @@ cchar * mongamma_tip = ZTX("Chart to adjust monitor gamma"); cchar * changelang_tip = ZTX("Change the GUI language"); cchar * untranslated_tip = ZTX("Report missing translations"); - cchar * duplicates_tip = ZTX("Search all image files and report duplicates"); + cchar * caliprint_tip = ZTX("Calibrate printer colors"); cchar * resources_tip = ZTX("Memory and CPU (to terminal/logfile)"); // cchar * zappcrash_tip = "deliberate crash with traceback dump"; @@ -346,6 +344,7 @@ cchar * batch_dcraw_tip = ZTX("Convert camera RAW files using DCraw"); cchar * batch_rawtherapee_tip = ZTX("Convert camera RAW files using Raw Therapee"); cchar * burn_tip = ZTX("Burn selected image files to CD or DVD"); + cchar * duplicates_tip = ZTX("Search all image files and report duplicates"); // metadata batch functions included here // help popup menu @@ -424,6 +423,8 @@ MENUENT(mArea, ZTX("Disable"), 0, select_disable_tip, m_select_disable, 0 ); MENUENT(mArea, ZTX("Invert"), 0, select_invert_tip, m_select_invert, 0 ); MENUENT(mArea, ZTX("Unselect"), 0, select_unselect_tip, m_select_unselect, 0 ); + MENUENT(mArea, ZTX("Copy Area"), 0, select_copy_tip, m_select_copy, 0 ); + MENUENT(mArea, ZTX("Paste Area"), 0, select_paste_tip, m_select_paste, 0 ); MENUENT(mArea, ZTX("Open Area File"), 0, select_open_tip, m_select_open, 0 ); MENUENT(mArea, ZTX("Save Area File"), 0, select_save_tip, m_select_save, 0 ); @@ -516,7 +517,8 @@ MENUENT(mTools, ZTX("Monitor Gamma"), 0, mongamma_tip, m_mongamma, 0 ); MENUENT(mTools, ZTX("Change Language"), 0, changelang_tip, m_changelang, 0 ); MENUENT(mTools, ZTX("Missing Translations"), 0, untranslated_tip, m_untranslated, 0 ); - MENUENT(mTools, ZTX("Find Duplicate Images"), 0, duplicates_tip, m_duplicates, 0 ); + MENUENT(mTools, ZTX("Calibrate Printer"), 0, caliprint_tip, m_caliprint, 0 ); + MENUENT(mTools, ZTX("Resources"), 0, resources_tip, m_resources, 0 ); // MENUENT(mTools, ZTX("zappcrash test"), 0, zappcrash_tip, m_zappcrash, 0 ); @@ -527,10 +529,13 @@ MENUENT(mBatch, ZTX("Batch RAW (DCraw)"), 0, batch_dcraw_tip, m_batch_dcraw, 0 ); MENUENT(mBatch, ZTX("Batch RAW (Raw Therapee)"), 0, batch_rawtherapee_tip, m_batch_rawtherapee, 0 ); MENUENT(mBatch, ZTX("Burn Images to CD/DVD"), 0, burn_tip, m_burn, 0 ); + MENUENT(mBatch, ZTX("Find Duplicate Images"), 0, duplicates_tip, m_duplicates, 0 ); MENUENT(mBatch, ZTX("Batch Add/Remove Tags"), 0, batch_tags_tip, m_batch_tags, 0 ); MENUENT(mBatch, ZTX("Batch Rename Tags"), 0, batch_renametags_tip, m_batch_renametags, 0 ); MENUENT(mBatch, ZTX("Batch Add/Change Metadata"), 0, batch_metadata_tip, m_batch_metadata, 0 ); MENUENT(mBatch, ZTX("Batch Add Geotags"), 0, batch_geotags_tip, m_batch_geotags, 0 ); + MENUENT(mBatch, ZTX("Images by Geotag"), 0, geotag_groups_tip, m_geotag_groups, 0 ); + MENUENT(mBatch, ZTX("Search Images"), 0, search_images_tip, m_search_images, 0 ); mAlbums = create_popmenu(); MENUENT(mAlbums, ZTX("Manage Albums"), 0, manage_albums_tip, m_manage_albums, 0 ); Binary files /tmp/1I1fCpeMl4/fotoxx-15.08/icons/blackball.png and /tmp/x6bldCBcrv/fotoxx-15.09/icons/blackball.png differ Binary files /tmp/1I1fCpeMl4/fotoxx-15.08/icons/blueball.png and /tmp/x6bldCBcrv/fotoxx-15.09/icons/blueball.png differ Binary files /tmp/1I1fCpeMl4/fotoxx-15.08/icons/greenball.png and /tmp/x6bldCBcrv/fotoxx-15.09/icons/greenball.png differ Binary files /tmp/1I1fCpeMl4/fotoxx-15.08/icons/redball.png and /tmp/x6bldCBcrv/fotoxx-15.09/icons/redball.png differ Binary files /tmp/1I1fCpeMl4/fotoxx-15.08/icons/whiteball.png and /tmp/x6bldCBcrv/fotoxx-15.09/icons/whiteball.png differ diff -Nru fotoxx-15.08/locales/translate-ca.po fotoxx-15.09/locales/translate-ca.po --- fotoxx-15.08/locales/translate-ca.po 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/locales/translate-ca.po 2015-08-31 10:21:01.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: home 2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-07-29 09:45+0200\n" +"POT-Creation-Date: 2015-08-30 21:14+0200\n" "PO-Revision-Date: 2013-12-30 12:36+0100\n" "Last-Translator: Josep Antoni Miralles Puignau \n" "Language-Team: Catalán, Valenciano <>\n" @@ -29,7 +29,7 @@ msgid "Drag album thumbnail to new position." msgstr "Arrossegar miniatura de l'àlbum a la nova posició" -#: f.albums.cc:107 f.widgets.cc:536 +#: f.albums.cc:107 f.widgets.cc:541 msgid "Manage Albums" msgstr "Gestionar àlbums" @@ -176,141 +176,145 @@ msgid "fallover" msgstr "cap abaix" -#: f.albums.cc:1139 f.widgets.cc:537 +#: f.albums.cc:1138 f.widgets.cc:542 msgid "Slide Show" msgstr "Diaporama" -#: f.albums.cc:1150 +#: f.albums.cc:1149 msgid "Clip Limit" msgstr "Límit de sequencia" -#: f.albums.cc:1154 +#: f.albums.cc:1153 msgid "Music File" msgstr "Arxiu de Música" -#: f.albums.cc:1159 +#: f.albums.cc:1158 msgid "Full Screen" msgstr "A tota pantalla" -#: f.albums.cc:1160 +#: f.albums.cc:1159 msgid "Auto-replay" msgstr "Auto reiniciar" -#: f.albums.cc:1166 +#: f.albums.cc:1165 msgid "Customize:" msgstr "Personalitzar" -#: f.albums.cc:1167 +#: f.albums.cc:1166 msgid "transitions" msgstr "transicions" -#: f.albums.cc:1168 +#: f.albums.cc:1167 msgid "image files" msgstr "archivos de imagen" -#: f.albums.cc:1173 f.albums.cc:1289 +#: f.albums.cc:1172 f.albums.cc:1286 #, c-format msgid "%d images" msgstr "%d imatges" -#: f.albums.cc:1196 f.albums.cc:1259 f.albums.cc:1349 f.albums.cc:1462 -#: f.albums.cc:1654 f.albums.cc:1738 f.albums.cc:1755 f.albums.cc:1976 +#: f.albums.cc:1194 f.albums.cc:1256 f.albums.cc:1346 f.albums.cc:1459 +#: f.albums.cc:1652 f.albums.cc:1736 f.albums.cc:1753 f.albums.cc:1974 msgid "invalid album" msgstr "àlbum invàlid" -#: f.albums.cc:1273 +#: f.albums.cc:1270 msgid "open album" msgstr "obrir àlbum" -#: f.albums.cc:1305 +#: f.albums.cc:1302 msgid "Select music file" msgstr "Seleccioneu arxiu de música" -#: f.albums.cc:1329 +#: f.albums.cc:1326 msgid "select random (if 5+ enabled)" msgstr "Selecció aleatòria (si +5 activat)" -#: f.albums.cc:1353 +#: f.albums.cc:1350 msgid "Transition Preferences" msgstr "Preferències de transició" -#: f.albums.cc:1362 +#: f.albums.cc:1359 msgid "transition" msgstr "transició" -#: f.albums.cc:1363 +#: f.albums.cc:1360 msgid "enabled" msgstr "activada" -#: f.albums.cc:1364 +#: f.albums.cc:1361 msgid "slowdown" msgstr "ralentitzar" -#: f.albums.cc:1365 +#: f.albums.cc:1362 msgid "preference" msgstr "preferència" -#: f.albums.cc:1468 +#: f.albums.cc:1465 msgid "Image Preferences" msgstr "Preferències d'imatge" -#: f.albums.cc:1472 f.file.cc:1153 f.file.cc:1349 f.file.cc:1557 f.meta.cc:425 +#: f.albums.cc:1469 f.file.cc:1157 f.file.cc:1353 f.file.cc:1561 f.meta.cc:426 msgid "Image File:" msgstr "Imatge:" -#: f.albums.cc:1476 +#: f.albums.cc:1473 msgid "Play tone when image shows" msgstr "Reproduïr música mentre es veu la imatge" -#: f.albums.cc:1479 +#: f.albums.cc:1476 msgid "Show image caption" msgstr "Mostrar títul del diaporama" -#: f.albums.cc:1484 +#: f.albums.cc:1481 msgid "Show image comments" msgstr "Mostrar comentaris de la imatge" -#: f.albums.cc:1489 +#: f.albums.cc:1486 msgid "Wait before zoom" msgstr "Espera abans del zoom" -#: f.albums.cc:1494 +#: f.albums.cc:1491 msgid "Zoom type:" msgstr "Tipus de zoom" -#: f.albums.cc:1495 +#: f.albums.cc:1492 msgid "none" msgstr "cap" -#: f.albums.cc:1496 +#: f.albums.cc:1493 msgid "zoom-in" msgstr "aproximar" -#: f.albums.cc:1497 +#: f.albums.cc:1494 msgid "zoom-out" msgstr "allunyar" -#: f.albums.cc:1500 +#: f.albums.cc:1497 msgid "Zoom size (x)" msgstr "Tamany de zoon (x)" -#: f.albums.cc:1503 +#: f.albums.cc:1500 msgid "Steps" msgstr "Pasos" -#: f.albums.cc:1507 +#: f.albums.cc:1504 msgid "Zoom image location:" msgstr "Localitzaciò del zoom d'imatge" -#: f.albums.cc:1515 +#: f.albums.cc:1512 msgid "Wait after zoom" msgstr "Espera desprès del zoom" -#: f.albums.cc:1520 +#: f.albums.cc:1517 msgid "Transition to next image" msgstr "Transiciò a la pròxima imatge" -#: f.albums.cc:1961 f.albums.cc:2119 +#: f.albums.cc:1520 f.albums.cc:1622 +msgid "next" +msgstr "següent" + +#: f.albums.cc:1959 f.albums.cc:2117 #, c-format msgid "" "file format error: \n" @@ -323,7 +327,7 @@ msgid "Select Area for Edits" msgstr "Seleccionar àrea per editar" -#: f.area.cc:80 f.edit.cc:5897 +#: f.area.cc:80 f.edit.cc:5908 msgid "Press F1 for help" msgstr "Prèmer F1 per ajuda" @@ -367,7 +371,7 @@ msgid "select all matching colors within mouse" msgstr "seleccionar amb el ratolí tots els colors coincidents" -#: f.area.cc:139 f.edit.cc:5942 +#: f.area.cc:139 f.edit.cc:5953 msgid "mouse radius" msgstr "radi del ratolí" @@ -399,12 +403,12 @@ msgid "area edits fade away within edge distance" msgstr "les edicions d'àrea s'esvaeixen a les vores" -#: f.area.cc:353 f.area.cc:536 +#: f.area.cc:351 f.area.cc:534 #, c-format msgid "exceed %d edits" msgstr "excedit %d edicions" -#: f.area.cc:1363 +#: f.area.cc:1355 msgid "" "Click one time inside each enclosed area \n" "(possible gaps in the outline will be found). \n" @@ -414,23 +418,23 @@ "(Es poden trobar possibles forats en el contorn)\n" "Premeu F1 per obtenir ajuda." -#: f.area.cc:1391 +#: f.area.cc:1383 msgid "finish area" msgstr "acabar àrea" -#: f.area.cc:1399 +#: f.area.cc:1391 msgid "extend to corner:" msgstr "extendre fins a la cantonada" -#: f.area.cc:1440 +#: f.area.cc:1432 msgid "searching" msgstr "buscant" -#: f.area.cc:1472 +#: f.area.cc:1463 msgid "outline has a gap" msgstr "el contorn te un forat" -#: f.area.cc:1476 +#: f.area.cc:1467 msgid "success" msgstr "èxit" @@ -439,113 +443,114 @@ msgid "found %d pixels" msgstr "trobats %d pixels" -#: f.area.cc:1918 f.area.cc:1935 f.area.cc:1955 f.area.cc:2260 f.area.cc:2387 +#: f.area.cc:1926 f.area.cc:1943 f.area.cc:1963 f.area.cc:2278 f.area.cc:2354 +#: f.area.cc:2511 msgid "the area is not finished" msgstr "l'àrea no està acabada" -#: f.area.cc:2049 +#: f.area.cc:2052 msgid "Edge calculation in progress" msgstr "Càlcul del límit en progrés" -#: f.area.cc:2058 +#: f.area.cc:2061 msgid "Area Edge Calc" msgstr "Càlcul del límit de l'àrea" -#: f.area.cc:2338 +#: f.area.cc:2462 msgid "load area from a file" msgstr "Carregar àrea des d'una imatge" -#: f.area.cc:2421 +#: f.area.cc:2545 msgid "save area as a PNG file" msgstr "guardar àrea com un arxiu PNG" -#: f.area.cc:2449 +#: f.area.cc:2573 msgid "position with mouse click/drag" msgstr "posició amb el clic del ratolí/arrossegament" -#: f.area.cc:2493 +#: f.area.cc:2617 msgid "Paste Image" msgstr "Enganxar imatge" -#: f.area.cc:2498 f.batch.cc:1135 f.batch.cc:1626 +#: f.area.cc:2622 f.batch.cc:1136 f.batch.cc:1627 msgid "resize" msgstr "redimensionar" -#: f.batch.cc:103 f.widgets.cc:524 +#: f.batch.cc:104 f.widgets.cc:526 msgid "Batch Convert" msgstr "Convertir en lot" -#: f.batch.cc:110 f.file.cc:781 +#: f.batch.cc:111 f.file.cc:782 msgid "New Name" msgstr "nou nom" -#: f.batch.cc:112 +#: f.batch.cc:113 msgid "base" msgstr "inici" -#: f.batch.cc:114 +#: f.batch.cc:115 msgid "adder" msgstr "increment" -#: f.batch.cc:118 +#: f.batch.cc:119 msgid "New Location" msgstr "Nova ubicació" -#: f.batch.cc:123 +#: f.batch.cc:124 msgid "New File Type" msgstr "Nou tipus d'arxiu" -#: f.batch.cc:127 f.batch.cc:135 +#: f.batch.cc:128 f.batch.cc:136 msgid "no change" msgstr "sense canvis" -#: f.batch.cc:130 +#: f.batch.cc:131 msgid "max. Width" msgstr "Ample màx." -#: f.batch.cc:138 f.batch.cc:531 +#: f.batch.cc:139 f.batch.cc:532 msgid "Delete Originals" msgstr "Esborrar originals" -#: f.batch.cc:139 f.batch.cc:528 +#: f.batch.cc:140 f.batch.cc:529 msgid "Copy Metadata" msgstr "Copiar metadades" -#: f.batch.cc:140 f.batch.cc:529 f.edit.cc:1396 f.widgets.cc:432 -#: f.widgets.cc:672 +#: f.batch.cc:141 f.batch.cc:530 f.edit.cc:1407 f.widgets.cc:433 +#: f.widgets.cc:677 msgid "Upright" msgstr "Adressar" -#: f.batch.cc:143 f.batch.cc:530 f.batch.cc:1144 f.batch.cc:1635 -#: f.repair.cc:115 f.widgets.cc:448 +#: f.batch.cc:144 f.batch.cc:531 f.batch.cc:1145 f.batch.cc:1636 +#: f.repair.cc:115 f.widgets.cc:449 msgid "Sharpen" msgstr "Enfocar" -#: f.batch.cc:145 f.batch.cc:1146 f.batch.cc:1637 +#: f.batch.cc:146 f.batch.cc:1147 f.batch.cc:1638 msgid "amount" msgstr "quantitat" -#: f.batch.cc:148 f.batch.cc:1149 f.batch.cc:1640 +#: f.batch.cc:149 f.batch.cc:1150 f.batch.cc:1641 msgid "threshold" msgstr "umbral" -#: f.batch.cc:250 +#: f.batch.cc:251 msgid "file type not supported" msgstr "tipus d'arxiu no suportat" -#: f.batch.cc:314 +#: f.batch.cc:315 msgid "cannot create new file" msgstr "no es pot crear un nou arxiu" -#: f.batch.cc:361 +#: f.batch.cc:362 msgid "updating albums ..." msgstr "actualitzant àlbums ..." -#: f.batch.cc:434 f.batch.cc:1422 f.batch.cc:1828 f.file.cc:1202 +#: f.batch.cc:435 f.batch.cc:1423 f.batch.cc:1829 f.file.cc:1206 msgid "Select directory" msgstr "Seleccionar directori" -#: f.batch.cc:480 +#: f.batch.cc:481 msgid "" "new name/base/adder unreasonable\n" " e.g. newname ### 100 10" @@ -553,149 +558,182 @@ "nou nom/inici/increment no raonable\n" "p.e. nounom ### 100 10" -#: f.batch.cc:503 +#: f.batch.cc:504 #, c-format msgid "max. size %d x %d is not reasonable" msgstr "max. mida %d x %d no és raonable" -#: f.batch.cc:522 +#: f.batch.cc:523 #, c-format msgid "Convert %d image files" msgstr "Convertir %d imatges" -#: f.batch.cc:523 +#: f.batch.cc:524 msgid "Rename to" msgstr "Re-anomenar com" -#: f.batch.cc:524 +#: f.batch.cc:525 msgid "Convert to" msgstr "Convertir a" -#: f.batch.cc:525 +#: f.batch.cc:526 msgid "Resize within" msgstr "Redimmensionar dins de" -#: f.batch.cc:526 +#: f.batch.cc:527 msgid "Output to" msgstr "Sortida com" -#: f.batch.cc:532 +#: f.batch.cc:533 msgid "PROCEED?" msgstr "PROCEDIR?" -#: f.batch.cc:686 f.widgets.cc:525 +#: f.batch.cc:687 f.widgets.cc:527 msgid "Batch Upright" msgstr "Adressar en lot" -#: f.batch.cc:692 +#: f.batch.cc:693 msgid "Survey all files" msgstr "Examinar tots els arxius" -#: f.batch.cc:746 +#: f.batch.cc:747 msgid "file cannot be read" msgstr "l'arxiu no pot ser llegit" -#: f.batch.cc:864 +#: f.batch.cc:865 msgid "cannot select both options" msgstr "no es poden sel·leccionar ambdues opcions" -#: f.batch.cc:908 f.widgets.cc:526 +#: f.batch.cc:909 f.widgets.cc:528 msgid "Batch Delete/Trash" msgstr "Esborrar/paperera en lot" -#: f.batch.cc:913 +#: f.batch.cc:914 msgid "delete" msgstr "esborrar" -#: f.batch.cc:916 +#: f.batch.cc:917 msgid "trash" msgstr "paperera" -#: f.batch.cc:1078 +#: f.batch.cc:1079 msgid "Batch Convert RAW Files (DCraw)" msgstr "Convertir en lot arxius RAW (DCraw)" -#: f.batch.cc:1087 +#: f.batch.cc:1088 msgid "DCraw not installed" msgstr "DCraw no instal.lat" -#: f.batch.cc:1122 f.batch.cc:1613 +#: f.batch.cc:1123 f.batch.cc:1614 msgid "output location" msgstr "ubicació exterior" -#: f.batch.cc:1127 f.batch.cc:1618 +#: f.batch.cc:1128 f.batch.cc:1619 msgid "output file type" msgstr "tipus d'arxiu de sortida" -#: f.batch.cc:1158 +#: f.batch.cc:1159 msgid "white balance" msgstr "balanç de blancs" -#: f.batch.cc:1159 +#: f.batch.cc:1160 msgid "interpolation" msgstr "interpolació" -#: f.batch.cc:1160 +#: f.batch.cc:1161 msgid "color space" msgstr "espai de color" -#: f.batch.cc:1161 +#: f.batch.cc:1162 msgid "gamma curve" msgstr "corba gamma" -#: f.batch.cc:1164 +#: f.batch.cc:1165 msgid "camera" msgstr "càmera" -#: f.batch.cc:1165 +#: f.batch.cc:1166 msgid "fixed" msgstr "corretgit" -#: f.batch.cc:1166 +#: f.batch.cc:1167 msgid "calculated" msgstr "calculat" -#: f.batch.cc:1183 +#: f.batch.cc:1184 msgid "default" msgstr "per defecte" -#: f.batch.cc:1189 +#: f.batch.cc:1190 msgid "defaults" msgstr "per defecte" -#: f.batch.cc:1576 +#: f.batch.cc:1577 msgid "Batch Convert RAW Files (Raw Therapee)" msgstr "Convertir en lot arxius RAW (RawTherapee)" -#: f.batch.cc:1585 f.file.cc:488 +#: f.batch.cc:1586 f.file.cc:489 msgid "Raw Therapee not installed" msgstr "RawTherapee no instal.lat" -#: f.batch.cc:1894 +#: f.batch.cc:1895 msgid "Brasero not installed" msgstr "Brasera no instal.lat" -#: f.bend.cc:82 f.widgets.cc:469 +#: f.batch.cc:1984 f.widgets.cc:532 +msgid "Find Duplicate Images" +msgstr "Trobar imatges duplicades" + +#: f.batch.cc:1986 f.tools.cc:927 +msgid "Thumbnail size" +msgstr "Tamany de miniatura" + +#: f.batch.cc:1989 +msgid "pixel difference" +msgstr "diferència de píxels" + +#: f.batch.cc:1992 +msgid "pixel count" +msgstr "conteig de píxels" + +#: f.batch.cc:1995 +msgid "Images:" +msgstr "Imatges:" + +#: f.batch.cc:1996 +msgid "searching ..." +msgstr "buscant ..." + +#: f.batch.cc:1998 +msgid "Duplicates:" +msgstr "Duplicats:" + +#: f.batch.cc:2016 +#, c-format +msgid "only %d image thumbnails found" +msgstr "trobades tant sols % imatges" + +#: f.bend.cc:86 f.widgets.cc:470 msgid "Unbend" msgstr "Redreçar" -#: f.bend.cc:90 f.edit.cc:4237 f.effects.cc:4620 +#: f.bend.cc:94 f.edit.cc:4248 f.effects.cc:4625 msgid "vertical" msgstr "vertical" -#: f.bend.cc:91 f.edit.cc:4236 f.effects.cc:4616 +#: f.bend.cc:95 f.edit.cc:4247 f.effects.cc:4621 msgid "horizontal" msgstr "horitzontal" -#: f.bend.cc:92 +#: f.bend.cc:96 msgid "linear" msgstr "lineal" -#: f.bend.cc:95 +#: f.bend.cc:99 msgid "curved" msgstr "curvat" -#: f.bend.cc:363 +#: f.bend.cc:367 msgid "" " Click the four corners of a tetragon area. Press [apply]. \n" " The image is warped to make the tetragon into a rectangle." @@ -703,15 +741,15 @@ " 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:376 +#: f.bend.cc:384 msgid "Perspective Correction" msgstr "Corregir perspectiva" -#: f.bend.cc:582 +#: f.bend.cc:590 msgid "must have 4 corners" msgstr "ha de tenir 4 cantonades" -#: f.bend.cc:704 +#: f.bend.cc:712 msgid "" " Select an area to warp using select area function. \n" " Press [start warp] and pull area with mouse. \n" @@ -723,19 +761,19 @@ " 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:717 f.widgets.cc:471 +#: f.bend.cc:725 f.widgets.cc:472 msgid "Warp area" msgstr "Deformar àrea" -#: f.bend.cc:722 +#: f.bend.cc:730 msgid "start warp" msgstr "iniciar deformació" -#: f.bend.cc:780 +#: f.bend.cc:788 msgid "no active Select Area" msgstr "Seleccionar àrea no actiu" -#: f.bend.cc:1121 f.bend.cc:1431 +#: f.bend.cc:1129 f.bend.cc:1443 msgid "" " Pull an image position using the mouse. \n" " Make multiple mouse pulls until satisfied. \n" @@ -745,19 +783,19 @@ " Múltiples empentes del ratolí fins a quedar satisfet. \n" " Quan hagi acabat, polsar [Fet]." -#: f.bend.cc:1135 f.widgets.cc:472 +#: f.bend.cc:1147 f.widgets.cc:473 msgid "Warp curved" msgstr "Deformació corba" -#: f.bend.cc:1144 f.mashup.cc:1836 +#: f.bend.cc:1156 f.mashup.cc:1836 msgid "warp span" msgstr "intèrval de deformació" -#: f.bend.cc:1445 f.widgets.cc:473 +#: f.bend.cc:1461 f.widgets.cc:474 msgid "Warp linear" msgstr "Deformació lineal" -#: f.bend.cc:1760 +#: f.bend.cc:1776 msgid "" " Pull on an image corner using the mouse. \n" " Make multiple mouse pulls until satisfied. \n" @@ -767,15 +805,15 @@ " Múltiples empentes del ratolí fins a quedar satisfet. \n" " Quan hagi acabat, polsar [Fet]." -#: f.bend.cc:1772 f.widgets.cc:474 +#: f.bend.cc:1792 f.widgets.cc:475 msgid "Warp affine" msgstr "Deformació afí" -#: f.bend.cc:2119 +#: f.bend.cc:2139 msgid "Flatten Book Page Photo" msgstr "Aplanar foto d'una pàgina d'un llibre " -#: f.bend.cc:2120 +#: f.bend.cc:2140 msgid "" "Trim image to isolate one page. \n" "Map top and bottom edges with \n" @@ -785,88 +823,88 @@ "Assenyalar les cantonades superior i inferior \n" "amb més de 4 clics del ratolí, després aplanar : " -#: f.bend.cc:2123 +#: f.bend.cc:2143 msgid "Stretch curved-down surfaces:" msgstr "Adreçar superfícies curvades per sota" -#: f.bend.cc:2178 +#: f.bend.cc:2198 msgid "top:" msgstr "adalt :" -#: f.bend.cc:2181 +#: f.bend.cc:2201 msgid "bottom:" msgstr "abaix :" -#: f.combine.cc:2119 f.combine.cc:2750 f.combine.cc:3406 f.combine.cc:3938 +#: f.combine.cc:2108 f.combine.cc:2739 f.combine.cc:3395 f.combine.cc:3927 msgid "Select 2 to 9 files" msgstr "Seleccionar de 2 a 9 fitxers" -#: f.combine.cc:2140 f.combine.cc:2771 f.combine.cc:3427 f.combine.cc:3959 +#: f.combine.cc:2129 f.combine.cc:2760 f.combine.cc:3416 f.combine.cc:3948 msgid "Images are not all the same size" msgstr "Les imatges no són totes de la mateixa mida" -#: f.combine.cc:2484 +#: f.combine.cc:2473 msgid "Adjust Image Contributions" msgstr "Ajustar contribucions de cada imatge" -#: f.combine.cc:2488 +#: f.combine.cc:2477 msgid "dark pixels" msgstr "ombres" -#: f.combine.cc:2490 +#: f.combine.cc:2479 msgid "light pixels" msgstr "llums" -#: f.combine.cc:2492 +#: f.combine.cc:2481 msgid "file:" msgstr "fitxer:" -#: f.combine.cc:3007 +#: f.combine.cc:2996 msgid "Paint and Warp Image" msgstr "Pintar i deformar imatge" -#: f.combine.cc:3011 f.combine.cc:3656 f.combine.cc:6246 f.effects.cc:3851 -#: f.widgets.cc:555 f.widgets.cc:578 f.widgets.cc:600 +#: f.combine.cc:3000 f.combine.cc:3645 f.combine.cc:6236 f.effects.cc:3858 +#: f.widgets.cc:560 f.widgets.cc:583 f.widgets.cc:605 msgid "Image" msgstr "Imatge" -#: f.combine.cc:3015 +#: f.combine.cc:3004 msgid "paint" msgstr "pintar" -#: f.combine.cc:3016 +#: f.combine.cc:3005 msgid "warp" msgstr "deformar" -#: f.combine.cc:3654 +#: f.combine.cc:3643 msgid "Select and Paint Image" msgstr "Seleccionar i pintar imatge" -#: f.combine.cc:4130 +#: f.combine.cc:4119 msgid "Adjust Pixel Composition" msgstr "Ajustar la composició de pixels" -#: f.combine.cc:4132 +#: f.combine.cc:4121 msgid "use average" msgstr "usar la mitja" -#: f.combine.cc:4133 +#: f.combine.cc:4122 msgid "use median" msgstr "usar la mediana" -#: f.combine.cc:4135 +#: f.combine.cc:4124 msgid "omit low pixel" msgstr "omitir píxel baix" -#: f.combine.cc:4136 +#: f.combine.cc:4125 msgid "omit high pixel" msgstr "omitir píxel alt" -#: f.combine.cc:4398 f.combine.cc:5504 +#: f.combine.cc:4387 f.combine.cc:5493 msgid "Select 2 to 4 files" msgstr "Seleccionar de 2 a 4 fitxers" -#: f.combine.cc:4473 +#: f.combine.cc:4462 msgid "" "Drag images into rough alignment.\n" "To rotate, drag from lower edge." @@ -874,76 +912,76 @@ "Arrossegar imatges a una alineació aproximada.\n" "Per girar, arrossegar des de la vora inferior." -#: f.combine.cc:4475 f.combine.cc:5581 +#: f.combine.cc:4464 f.combine.cc:5570 msgid "no curve (scanned image)" msgstr "no hi ha corba (imatge escanejada)" -#: f.combine.cc:4476 f.combine.cc:5582 +#: f.combine.cc:4465 f.combine.cc:5571 msgid "Search for lens mm" msgstr "Cerca mm de la lent" -#: f.combine.cc:4477 f.combine.cc:5583 +#: f.combine.cc:4466 f.combine.cc:5572 msgid "Save lens mm → image EXIF" msgstr "Guardar focal en EXIF" -#: f.combine.cc:4538 f.combine.cc:5644 +#: f.combine.cc:4527 f.combine.cc:5633 msgid "Pre-align Images" msgstr "Pre-alinear imatges" -#: f.combine.cc:4542 f.combine.cc:5648 +#: f.combine.cc:4531 f.combine.cc:5637 msgid "lens mm" msgstr "mm de la lent" -#: f.combine.cc:4547 f.combine.cc:5653 +#: f.combine.cc:4536 f.combine.cc:5642 msgid "no auto warp" msgstr "no auto correcció" -#: f.combine.cc:4549 f.combine.cc:5655 f.widgets.cc:439 f.widgets.cc:671 +#: f.combine.cc:4538 f.combine.cc:5644 f.widgets.cc:440 f.widgets.cc:676 msgid "Resize" msgstr "Redimensionar" -#: f.combine.cc:4550 f.combine.cc:5656 +#: f.combine.cc:4539 f.combine.cc:5645 msgid "resize window" msgstr "redimensionar finestra" -#: f.combine.cc:4558 f.combine.cc:5664 +#: f.combine.cc:4547 f.combine.cc:5653 msgid "do not warp images during auto-alignment" msgstr "no deformar imatges mentre s'auto-alineen" -#: f.combine.cc:4603 f.combine.cc:5709 +#: f.combine.cc:4592 f.combine.cc:5698 msgid "use two images only" msgstr "utilitzar només dues imatges" -#: f.combine.cc:4631 f.combine.cc:4835 f.combine.cc:5021 f.combine.cc:5735 -#: f.combine.cc:5940 f.combine.cc:6126 +#: f.combine.cc:4620 f.combine.cc:4824 f.combine.cc:5010 f.combine.cc:5724 +#: f.combine.cc:5928 f.combine.cc:6114 msgid "Too little overlap, cannot align" msgstr "molt poc solpament, no es pot alinear" -#: f.combine.cc:5096 f.combine.cc:6202 +#: f.combine.cc:5088 f.combine.cc:6192 msgid "Match Brightness and Color" msgstr "Coincidència de brillantor i color" -#: f.combine.cc:5141 +#: f.combine.cc:5133 msgid "Select image" msgstr "Sele ccionar imatge" -#: f.combine.cc:5156 f.combine.cc:6261 +#: f.combine.cc:5148 f.combine.cc:6251 msgid "auto color" msgstr "auto color" -#: f.combine.cc:5157 f.combine.cc:6262 +#: f.combine.cc:5149 f.combine.cc:6252 msgid "file color" msgstr "fitxer de color" -#: f.combine.cc:5163 f.combine.cc:6268 +#: f.combine.cc:5155 f.combine.cc:6258 msgid "mouse warp" msgstr "corregir amb el ratolí" -#: f.combine.cc:5166 +#: f.combine.cc:5158 msgid "curved image" msgstr "imatge corba" -#: f.combine.cc:5579 +#: f.combine.cc:5568 msgid "" "Drag images into rough alignment.\n" "To rotate, drag from right edge." @@ -951,11 +989,11 @@ "Arrossegar imatges a una alineació aproximada.\n" "Per girar, arrossegar des de la vora dreta." -#: f.combine.cc:6482 +#: f.combine.cc:6469 msgid "pano tools (hugin) not installed" msgstr "Pano Tools (Hugin) no installat" -#: f.combine.cc:6491 +#: f.combine.cc:6478 msgid "Select at least 2 files" msgstr "Seleccioneu almenys 2 arxius" @@ -968,240 +1006,240 @@ msgid "Minor rotate: drag right edge with mouse" msgstr "Girar : arrossegar cantó dret amb el ratolí " -#: f.edit.cc:167 f.widgets.cc:431 f.widgets.cc:670 +#: f.edit.cc:171 f.widgets.cc:432 f.widgets.cc:675 msgid "Trim/Rotate" msgstr "Retallar/Girar" -#: f.edit.cc:179 f.edit.cc:577 +#: f.edit.cc:183 f.edit.cc:585 msgid "ratio" msgstr "proporció" -#: f.edit.cc:183 +#: f.edit.cc:187 msgid "trim size:" msgstr "mida de retallat" -#: f.edit.cc:188 +#: f.edit.cc:192 msgid "Lock Ratio" msgstr "Bloquejar proporció" -#: f.edit.cc:193 +#: f.edit.cc:197 msgid "Customize" msgstr "Personalitzar" -#: f.edit.cc:201 +#: f.edit.cc:205 msgid "Rotate: degrees" msgstr "Girar : graus" -#: f.edit.cc:203 +#: f.edit.cc:207 msgid "auto-trim" msgstr "auto-retallar" -#: f.edit.cc:573 +#: f.edit.cc:581 msgid "Trim Buttons" msgstr "Botons de retallar" -#: f.edit.cc:576 +#: f.edit.cc:584 msgid "label" msgstr "etiqueta" -#: f.edit.cc:1394 +#: f.edit.cc:1405 msgid "Upright Image" msgstr "Adressar imatge" -#: f.edit.cc:1458 +#: f.edit.cc:1469 msgid "rotation unknown" msgstr "ratació desconeguda" -#: f.edit.cc:2009 f.widgets.cc:435 f.widgets.cc:674 +#: f.edit.cc:2020 f.widgets.cc:436 f.widgets.cc:679 msgid "Retouch Combo" msgstr "Retocar llum i color " -#: f.edit.cc:2030 +#: f.edit.cc:2041 msgid "Amplifier" msgstr "Amplificar" -#: f.edit.cc:2031 fotoxx.h:1079 +#: f.edit.cc:2042 fotoxx.h:1087 msgid "Brightness" msgstr "Brillantor" -#: f.edit.cc:2032 fotoxx.h:1087 +#: f.edit.cc:2043 fotoxx.h:1095 msgid "Contrast" msgstr "Contrast" -#: f.edit.cc:2033 +#: f.edit.cc:2044 msgid "Low Color" msgstr "Color -" -#: f.edit.cc:2034 +#: f.edit.cc:2045 msgid "Warmer" msgstr "Càlid" -#: f.edit.cc:2035 f.effects.cc:1009 +#: f.edit.cc:2046 f.effects.cc:1010 msgid "Dark Areas" msgstr "Ombres" -#: f.edit.cc:2044 +#: f.edit.cc:2055 msgid "Max." msgstr "Max" -#: f.edit.cc:2045 f.edit.cc:2046 f.edit.cc:2047 +#: f.edit.cc:2056 f.edit.cc:2057 f.edit.cc:2058 msgid "High" msgstr "+" -#: f.edit.cc:2048 +#: f.edit.cc:2059 msgid "Cooler" msgstr "Fred" -#: f.edit.cc:2049 +#: f.edit.cc:2060 msgid "Bright" msgstr "Llums" -#: f.edit.cc:2052 f.tools.cc:1595 +#: f.edit.cc:2063 f.tools.cc:1621 msgid "Brightness Distribution" msgstr "Distribució de la brillantor" -#: f.edit.cc:2055 +#: f.edit.cc:2066 msgid "Click for white balance or black level" msgstr "Clic per balanç de blanc o punt negre" -#: f.edit.cc:2058 +#: f.edit.cc:2069 msgid "Settings File" msgstr "Ajustaments" -#: f.edit.cc:2062 +#: f.edit.cc:2073 msgid "recall previous settings used" msgstr "recuperar ajustaments usats anteriorment" -#: f.edit.cc:2764 +#: f.edit.cc:2775 msgid "Adjust Brightness Distribution" msgstr "Ajustar histograma" -#: f.edit.cc:2801 +#: f.edit.cc:2812 msgid "Low Cutoff" msgstr "Tall baix" -#: f.edit.cc:2802 +#: f.edit.cc:2813 msgid "High Cutoff" msgstr "Tall alt" -#: f.edit.cc:2803 +#: f.edit.cc:2814 msgid "Low Flatten" msgstr "Aplanat baix" -#: f.edit.cc:2804 +#: f.edit.cc:2815 msgid "Mid Flatten" msgstr "Aplanat mitjà" -#: f.edit.cc:2805 +#: f.edit.cc:2816 msgid "High Flatten" msgstr "Aplanat alt" -#: f.edit.cc:2806 +#: f.edit.cc:2817 msgid "Low Stretch" msgstr "Tram baix" -#: f.edit.cc:2807 +#: f.edit.cc:2818 msgid "Mid Stretch" msgstr "Tram mitjà" -#: f.edit.cc:2808 +#: f.edit.cc:2819 msgid "High Stretch" msgstr "Tram alt" -#: f.edit.cc:3138 +#: f.edit.cc:3149 msgid "Zonal Flatten Brightness" msgstr "Aplanarn brillantor zonal" -#: f.edit.cc:3169 +#: f.edit.cc:3180 msgid "Zones" msgstr "Zones" -#: f.edit.cc:3176 +#: f.edit.cc:3187 msgid "Deband Dark" msgstr "Eliminar bandes fosques" -#: f.edit.cc:3179 +#: f.edit.cc:3190 msgid "Deband Bright" msgstr "Eliminar bandes lluminoses" -#: f.edit.cc:3624 f.widgets.cc:438 f.widgets.cc:677 +#: f.edit.cc:3635 f.widgets.cc:439 f.widgets.cc:682 msgid "Tone Mapping" msgstr "Mapa tonal" -#: f.edit.cc:3653 +#: f.edit.cc:3664 msgid "low" msgstr "baix" -#: f.edit.cc:3655 +#: f.edit.cc:3666 msgid "high" msgstr "alt" -#: f.edit.cc:3658 +#: f.edit.cc:3669 msgid "Amplify" msgstr "Ampliar" -#: f.edit.cc:4033 +#: f.edit.cc:4044 msgid "Lock aspect ratio" msgstr "Bloquejar proporció d'aspecte" -#: f.edit.cc:4055 +#: f.edit.cc:4066 msgid "Resize Image" msgstr "Redimensionar imatge" -#: f.edit.cc:4232 f.widgets.cc:440 +#: f.edit.cc:4243 f.widgets.cc:441 msgid "Flip" msgstr "Voltejar" -#: f.edit.cc:4338 +#: f.edit.cc:4349 msgid "+Version" msgstr "+Version" -#: f.edit.cc:4361 +#: f.edit.cc:4372 msgid "Write Text on Image" msgstr "Escriure text en una imatge" -#: f.edit.cc:4362 +#: f.edit.cc:4373 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.edit.cc:4411 f.mashup.cc:2437 +#: f.edit.cc:4422 f.mashup.cc:2437 msgid "Text" msgstr "Text" -#: f.edit.cc:4416 +#: f.edit.cc:4427 msgid "Use metadata key" msgstr "Usar clau de metadades" -#: f.edit.cc:4421 +#: f.edit.cc:4432 msgid "Use text file" msgstr "Usar arxiu de text" -#: f.edit.cc:4440 f.mashup.cc:2455 +#: f.edit.cc:4451 f.mashup.cc:2455 msgid "text" msgstr "text" -#: f.edit.cc:4441 f.edit.cc:5279 f.mashup.cc:2456 f.mashup.cc:2798 +#: f.edit.cc:4452 f.edit.cc:5290 f.mashup.cc:2456 f.mashup.cc:2798 msgid "backing" msgstr "fons" -#: f.edit.cc:4442 f.edit.cc:5280 f.mashup.cc:2457 f.mashup.cc:2799 +#: f.edit.cc:4453 f.edit.cc:5291 f.mashup.cc:2457 f.mashup.cc:2799 msgid "outline" msgstr "contorn" -#: f.edit.cc:4443 f.edit.cc:5281 f.mashup.cc:2458 f.mashup.cc:2800 +#: f.edit.cc:4454 f.edit.cc:5292 f.mashup.cc:2458 f.mashup.cc:2800 msgid "shadow" msgstr "ombra" -#: f.edit.cc:4469 +#: f.edit.cc:4480 msgid "save to current file" msgstr "guardar en l'arxiu actual" -#: f.edit.cc:4470 f.file.cc:605 +#: f.edit.cc:4481 f.file.cc:606 msgid "save as new file version" msgstr "guardar com una nova versió" -#: f.edit.cc:4471 +#: f.edit.cc:4482 msgid "" "save to current file \n" "open next file with same text" @@ -1209,15 +1247,15 @@ "guardar en l'arxiu actual \n" "obrir següent arxiu amb el mateix text" -#: f.edit.cc:4632 f.mashup.cc:2557 +#: f.edit.cc:4643 f.mashup.cc:2557 f.tools.cc:1060 msgid "select font" msgstr "seleccionar tipus de lletra" -#: f.edit.cc:4896 +#: f.edit.cc:4907 msgid "text file is defective" msgstr "arxiu de text és defectuós" -#: f.edit.cc:5219 +#: f.edit.cc:5230 msgid "" "Enter line or arrow properties in dialog, \n" "click/drag on image, right click to remove" @@ -1225,23 +1263,23 @@ "Introduïr propietats de línia o fletxa en el dialogclic/arrossegar en la " "imatge, clic dret per eliminar" -#: f.edit.cc:5250 +#: f.edit.cc:5261 msgid "Write Line or Arrow on Image" msgstr "Dibuixar línia o fletxa en una imatge" -#: f.edit.cc:5258 f.mashup.cc:2777 +#: f.edit.cc:5269 f.mashup.cc:2777 msgid "Line length" msgstr "Longitut de línia" -#: f.edit.cc:5265 f.mashup.cc:2784 +#: f.edit.cc:5276 f.mashup.cc:2784 msgid "Arrow head" msgstr "Punta de fletxa" -#: f.edit.cc:5278 f.mashup.cc:2797 +#: f.edit.cc:5289 f.mashup.cc:2797 msgid "line" msgstr "linea" -#: f.edit.cc:5307 +#: f.edit.cc:5318 msgid "" "fix line/arrow in layout \n" " start new line/arrow" @@ -1249,11 +1287,11 @@ "corretgir línia/fletxa a la capa​ \n" "iniciar nova línia/fletxa" -#: f.edit.cc:5896 f.widgets.cc:443 +#: f.edit.cc:5907 f.widgets.cc:444 msgid "Paint Edits" msgstr "Editar pintant" -#: f.edit.cc:5903 f.edit.cc:6132 fotoxx-15.08.cc:3172 +#: f.edit.cc:5914 f.edit.cc:6143 fotoxx-15.09.cc:3123 msgid "" "Select area cannot be kept.\n" "Continue?" @@ -1261,59 +1299,59 @@ "Àrea seleccionada no pot ser guardada.\n" "Continuar?" -#: f.edit.cc:5911 f.edit.cc:6140 f.tools.cc:2127 +#: f.edit.cc:5922 f.edit.cc:6151 f.tools.cc:2147 msgid "Edit function must be active" msgstr "La funció d'editar pintant ha d'estar activada" -#: f.edit.cc:5916 +#: f.edit.cc:5927 msgid "Cannot use Paint Edits" msgstr "No es pot usar Editar pintant" -#: f.edit.cc:5945 +#: f.edit.cc:5956 msgid "power: center" msgstr "força: centre" -#: f.edit.cc:5950 +#: f.edit.cc:5961 msgid "reset area" msgstr "reiniciar àrea" -#: f.edit.cc:6125 f.widgets.cc:444 +#: f.edit.cc:6136 f.widgets.cc:445 msgid "Leverage Edits" msgstr "Edició per nivells" -#: f.edit.cc:6126 +#: f.edit.cc:6137 msgid "Edit Function Amplifier" msgstr "Amplificador de la funció d'edició" -#: f.edit.cc:6145 +#: f.edit.cc:6156 msgid "Cannot use Leverage Edits" msgstr "No es pot usar Edició per nivells" -#: f.edit.cc:6178 +#: f.edit.cc:6189 msgid "minimum" msgstr "ombres" -#: f.edit.cc:6180 +#: f.edit.cc:6191 msgid "maximum" msgstr "llums" -#: f.edit.cc:6481 +#: f.edit.cc:6490 msgid "Edit Plugins" msgstr "Editar complements (Plugins)" -#: f.edit.cc:6482 +#: f.edit.cc:6491 msgid "Edit plugins menu" msgstr "Editar menú de plugins" -#: f.edit.cc:6490 +#: f.edit.cc:6499 msgid "Run as Fotoxx edit function" msgstr "Obrir com una funció d'edició de Fotoxx" -#: f.edit.cc:6728 +#: f.edit.cc:6737 msgid "Plugin working ..." msgstr "Plugin treballant ..." -#: f.edit.cc:6737 +#: f.edit.cc:6746 msgid "plugin failed" msgstr "errada de complement" @@ -1345,7 +1383,7 @@ msgid "Background" msgstr "Fons" -#: f.effects.cc:713 f.widgets.cc:480 +#: f.effects.cc:713 f.widgets.cc:481 msgid "Line Drawing" msgstr "Dibuix amb línees" @@ -1353,201 +1391,201 @@ msgid "black/white" msgstr " negre/blanc" -#: f.effects.cc:1003 f.widgets.cc:481 +#: f.effects.cc:1004 f.widgets.cc:482 msgid "Color Drawing" msgstr "Dibuix amb colors" -#: f.effects.cc:1010 +#: f.effects.cc:1011 msgid "Bright Areas" msgstr "Llums" -#: f.effects.cc:1264 f.widgets.cc:482 +#: f.effects.cc:1265 f.widgets.cc:483 msgid "Graduated Blur" msgstr "Desenfocament graduat" -#: f.effects.cc:1268 +#: f.effects.cc:1269 msgid "Contrast Limit" msgstr "Límit de contrast" -#: f.effects.cc:1271 f.repair.cc:747 +#: f.effects.cc:1272 f.repair.cc:748 msgid "Blur Radius" msgstr "Radi de desenfocament" -#: f.effects.cc:1485 +#: f.effects.cc:1486 msgid "Simulate Embossing" msgstr "Simular un relleu" -#: f.effects.cc:1502 +#: f.effects.cc:1503 msgid "depth" msgstr "profunditat" -#: f.effects.cc:1703 +#: f.effects.cc:1705 msgid "Simulate Tiles" msgstr "Simular un mosaic" -#: f.effects.cc:1707 +#: f.effects.cc:1709 msgid "tile size" msgstr "mida de la rajola" -#: f.effects.cc:1710 +#: f.effects.cc:1712 msgid "tile gap" msgstr "separació de lles rajoles" -#: f.effects.cc:1713 +#: f.effects.cc:1715 msgid "3D depth" msgstr "profunditat 3D" -#: f.effects.cc:1937 +#: f.effects.cc:1939 msgid "Convert Image to Dots" msgstr "Convertrr la imatge a punts" -#: f.effects.cc:1941 +#: f.effects.cc:1943 msgid "dot size" msgstr "mida de punt" -#: f.effects.cc:2161 +#: f.effects.cc:2168 msgid "Simulate Painting" msgstr "Simular una Pintura" -#: f.effects.cc:2165 +#: f.effects.cc:2172 msgid "color depth" msgstr "profunditat de color" -#: f.effects.cc:2169 +#: f.effects.cc:2176 msgid "patch area goal" msgstr "mida de l'àrea de color" -#: f.effects.cc:2173 +#: f.effects.cc:2180 msgid "req. color match" msgstr "correspondència de color requerida" -#: f.effects.cc:2177 +#: f.effects.cc:2184 msgid "borders" msgstr "vores" -#: f.effects.cc:2750 f.widgets.cc:487 +#: f.effects.cc:2757 f.widgets.cc:488 msgid "Vignette" msgstr "Vinyetat" -#: f.effects.cc:3118 +#: f.effects.cc:3125 msgid "Add Texture" msgstr "Afegir textura" -#: f.effects.cc:3334 +#: f.effects.cc:3341 msgid "Background Pattern" msgstr "Patrò de fons" -#: f.effects.cc:3338 +#: f.effects.cc:3345 msgid "Pattern File:" msgstr "Arxiu de patrò" -#: f.effects.cc:3343 +#: f.effects.cc:3350 msgid "Geometry" msgstr "Geometria" -#: f.effects.cc:3344 +#: f.effects.cc:3351 msgid "Calculate" msgstr "Calcular" -#: f.effects.cc:3346 +#: f.effects.cc:3353 msgid "Zoom" msgstr "Zoom" -#: f.effects.cc:3357 f.widgets.cc:489 +#: f.effects.cc:3364 f.widgets.cc:490 msgid "Pattern" msgstr "Patrò" -#: f.effects.cc:3364 +#: f.effects.cc:3371 msgid "Overlap" msgstr "Superposició" -#: f.effects.cc:3371 +#: f.effects.cc:3378 msgid "Opacity" msgstr "Opacitat" -#: f.effects.cc:3410 +#: f.effects.cc:3417 msgid "choose pattern tile" msgstr "Escollir arxiu patrò" -#: f.effects.cc:3755 +#: f.effects.cc:3762 msgid "Create Mosaic" msgstr "Crear mosaïc" -#: f.effects.cc:3841 +#: f.effects.cc:3848 msgid "Tile" msgstr "Rajola" -#: f.effects.cc:3849 f.widgets.cc:484 +#: f.effects.cc:3856 f.widgets.cc:485 msgid "Tiles" msgstr "Rajoles" -#: f.effects.cc:3855 +#: f.effects.cc:3862 msgid "Tile blending" msgstr "Mescla de rajoles" -#: f.effects.cc:3935 +#: f.effects.cc:3942 #, c-format msgid "exceeded max. tiles: %d" msgstr "excedit max. arxius: %d" -#: f.effects.cc:3950 +#: f.effects.cc:3957 #, c-format msgid "only %d tile images found" msgstr "trobades sols %d imatges" -#: f.effects.cc:4326 f.widgets.cc:491 +#: f.effects.cc:4333 f.widgets.cc:492 msgid "Custom Kernel" msgstr "Matriu de convolució" -#: f.effects.cc:4330 +#: f.effects.cc:4337 msgid "Kernel size" msgstr "Tamany de matriu" -#: f.effects.cc:4335 +#: f.effects.cc:4342 msgid "Divisor" msgstr "Divisor" -#: f.effects.cc:4340 +#: f.effects.cc:4347 msgid "Data file" msgstr "Arxiu de dades" -#: f.effects.cc:4606 f.widgets.cc:492 +#: f.effects.cc:4611 f.widgets.cc:493 msgid "Make Waves" msgstr "Ones" -#: f.effects.cc:4613 +#: f.effects.cc:4618 msgid "wavelength" msgstr "longitut d'ona" -#: f.effects.cc:4614 +#: f.effects.cc:4619 msgid "amplitude" msgstr "amplitut" -#: f.effects.cc:4615 +#: f.effects.cc:4620 msgid "variance" msgstr "variança" -#: f.effects.cc:4626 +#: f.effects.cc:4631 msgid "perspective" msgstr "prespectiva​" -#: f.effects.cc:4800 +#: f.effects.cc:4805 msgid "Pull image using the mouse." msgstr "Empènyer la imatge usant el ratolí" -#: f.effects.cc:4821 f.widgets.cc:493 +#: f.effects.cc:4826 f.widgets.cc:494 msgid "Directed Blur" msgstr "Desenfocament direccional" -#: f.effects.cc:4825 +#: f.effects.cc:4830 msgid "blur span" msgstr "quantitat de desenfocament" -#: f.effects.cc:4828 +#: f.effects.cc:4833 msgid "intensity" msgstr "intensitat" -#: f.file.cc:247 +#: f.file.cc:248 msgid "" "use EXIF photo date or \n" " file modification date" @@ -1555,103 +1593,103 @@ "utilitzar data EXIF de la foto o \n" "data de modificació de l'arxiu" -#: f.file.cc:264 f.widgets.cc:560 +#: f.file.cc:265 f.widgets.cc:565 msgid "File" msgstr "Arxiu" -#: f.file.cc:357 f.file.cc:1483 f.file.cc:1622 +#: f.file.cc:358 f.file.cc:1487 f.file.cc:1626 msgid "no more images" msgstr "no hi ha més imatges" -#: f.file.cc:417 +#: f.file.cc:418 msgid "UFraw not installed" msgstr "UFRaw no instal.lat" -#: f.file.cc:433 f.widgets.cc:679 +#: f.file.cc:434 f.widgets.cc:684 msgid "Open RAW file (ufraw)" msgstr "Obrir fitxer RAW (ufraw)" -#: f.file.cc:438 f.file.cc:509 +#: f.file.cc:439 f.file.cc:510 msgid "RAW type not registered in User Settings" msgstr "tipus RAW no registrat en Configuració d'usuari" -#: f.file.cc:504 f.widgets.cc:680 +#: f.file.cc:505 f.widgets.cc:685 msgid "Open RAW file (Raw Therapee)" msgstr "Obrir arxiu RAW amb RawTherapee" -#: f.file.cc:587 +#: f.file.cc:588 msgid "Save Image File" msgstr "Guardar imatge" -#: f.file.cc:597 +#: f.file.cc:598 msgid "new version" msgstr "nova versió" -#: f.file.cc:598 +#: f.file.cc:599 msgid "new file" msgstr "nou arxiu" -#: f.file.cc:599 +#: f.file.cc:600 msgid "replace file" msgstr "substituïr arxiu" -#: f.file.cc:606 f.file.cc:2281 +#: f.file.cc:607 f.file.cc:2344 msgid "save as new file name or type" msgstr "guardar com un nou nom o tipus d'arxiu" -#: f.file.cc:608 +#: f.file.cc:609 msgid "replace old file (OVERWRITE)" msgstr "substituïr arxiu anterior (SOBRE-ESCRIURE)" -#: f.file.cc:646 f.file.cc:2071 +#: f.file.cc:647 f.file.cc:2124 msgid "cannot save as RAW type" msgstr "no es pot guardar com a RAW" -#: f.file.cc:773 f.widgets.cc:396 +#: f.file.cc:774 f.widgets.cc:395 msgid "Rename Image File" msgstr "Re-anomenar arxiu d'imatge" -#: f.file.cc:780 +#: f.file.cc:781 msgid "Old Name" msgstr "antic nom" -#: f.file.cc:790 +#: f.file.cc:791 msgid "previous name" msgstr "nom anterior" -#: f.file.cc:791 +#: f.file.cc:792 msgid "add 1" msgstr "afegir 1" -#: f.file.cc:946 +#: f.file.cc:950 msgid "Create Blank Image" msgstr "Crear imatge buida" -#: f.file.cc:948 +#: f.file.cc:952 msgid "file name" msgstr "nom d'arxiu" -#: f.file.cc:982 +#: f.file.cc:986 msgid "supply a file name" msgstr "proporcionar nom d'àlbum" -#: f.file.cc:1114 +#: f.file.cc:1118 msgid "Copy Image File" msgstr "Copiar imatge" -#: f.file.cc:1115 +#: f.file.cc:1119 msgid "Move Image File" msgstr "Moure imarge" -#: f.file.cc:1158 +#: f.file.cc:1162 msgid "new location" msgstr "nova ubicació" -#: f.file.cc:1228 +#: f.file.cc:1232 msgid "new location is not a directory" msgstr "la nova ubicació no és un directori" -#: f.file.cc:1270 f.file.cc:1467 f.file.cc:1605 +#: f.file.cc:1274 f.file.cc:1471 f.file.cc:1609 #, c-format msgid "" "delete failed: \n" @@ -1660,15 +1698,15 @@ "l'esborrat ha fallat: \n" " %s" -#: f.file.cc:1312 f.widgets.cc:398 +#: f.file.cc:1316 f.widgets.cc:397 msgid "Trash Image File" msgstr "Imatge a la paperera" -#: f.file.cc:1313 f.file.cc:1520 +#: f.file.cc:1317 f.file.cc:1524 msgid "(automatic step to next image)" msgstr "(passi automàtic a la nova imatge)" -#: f.file.cc:1381 +#: f.file.cc:1385 msgid "" "Linux standard trash does not work. \n" "Desktop trash folder will be created." @@ -1676,7 +1714,7 @@ "Paperera estàndard de Linux no funciona. \n" "Es crearà una carpeta de paperera." -#: f.file.cc:1384 +#: f.file.cc:1388 msgid "" "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" @@ -1684,49 +1722,99 @@ "Les papereres de Linux i del Escriptori no funcionen. \n" "Esborrar permanenment la imatge?" -#: f.file.cc:1387 +#: f.file.cc:1391 #, c-format msgid "Cannot create trash folder: %s" msgstr "No es pot crear carpeta de paperera: %s" -#: f.file.cc:1399 +#: f.file.cc:1403 msgid "Move read-only file to trash?" msgstr "Moure a la paperera fitxers de nomès lectura?" -#: f.file.cc:1454 +#: f.file.cc:1458 #, c-format msgid "error: %s" msgstr "error: %s" -#: f.file.cc:1519 +#: f.file.cc:1523 msgid "Delete Image File - CANNOT BE REVERSED" msgstr "Esborrar imatge - NO ES POT TORNAR ENRERA" -#: f.file.cc:1595 +#: f.file.cc:1599 msgid "Delete read-only file?" msgstr "Esborrar arxius de només lectura?" -#: f.file.cc:1911 f.widgets.cc:390 +#: f.file.cc:1820 f.widgets.cc:547 +msgid "Quick Start" +msgstr "Inici ràpid" + +#: f.file.cc:1823 f.widgets.cc:548 +msgid "User Guide" +msgstr "Guia d'usuari" + +#: f.file.cc:1826 f.widgets.cc:549 +msgid "User Guide Changes" +msgstr "Canvis a la guia d'usuari" + +#: f.file.cc:1829 f.widgets.cc:551 +msgid "README" +msgstr "LLEGEIX-ME" + +#: f.file.cc:1832 f.widgets.cc:550 +msgid "Edit Functions Summary" +msgstr "Resum de les funcions d'edició" + +#: f.file.cc:1835 f.widgets.cc:552 +msgid "Change Log" +msgstr "Registre de canvis" + +#: f.file.cc:1838 f.widgets.cc:553 +msgid "Log File" +msgstr "Arxiu de registre" + +#: f.file.cc:1841 f.widgets.cc:554 +msgid "Translations" +msgstr "Traduccions" + +#: f.file.cc:1844 f.widgets.cc:555 +msgid "Home Page" +msgstr "Pàgina web de Fotoxx" + +#: f.file.cc:1847 f.widgets.cc:556 +msgid "About" +msgstr "Sobre Fotoxx " + +#: f.file.cc:1851 f.widgets.cc:577 f.widgets.cc:599 fotoxx.h:1119 +msgid "Help" +msgstr "Ajuda" + +#: f.file.cc:1961 f.widgets.cc:389 msgid "Open Image File" msgstr "Obrir arxiu d'imatge" -#: f.file.cc:1929 +#: f.file.cc:1979 msgid "unknown file type" msgstr "tipus d'arxiu desconegut" -#: f.file.cc:2197 +#: f.file.cc:2117 +msgid "" +"Transparency map will be lost.\n" +"save to PNG file to retain." +msgstr "" + +#: f.file.cc:2260 msgid "Unable to copy EXIF/IPTC data" msgstr "No puc copiar dades EXIF/IPTC" -#: f.file.cc:2297 +#: f.file.cc:2360 msgid "make current" msgstr "fer actual" -#: f.file.cc:2390 +#: f.file.cc:2453 msgid "jpeg quality must be 1-100" msgstr "qualitat JPEG ha de ser 1-100" -#: f.file.cc:2417 +#: f.file.cc:2480 #, c-format msgid "" "Overwrite file? \n" @@ -1735,138 +1823,138 @@ "Sobre-escriure arxiu? \n" " %s" -#: f.file.cc:2669 f.file.cc:2738 +#: f.file.cc:2732 f.file.cc:2801 #, c-format msgid "file not found: %s" msgstr "arxiu no trobat: %s" -#: f.file.cc:2675 f.file.cc:2744 +#: f.file.cc:2738 f.file.cc:2807 #, c-format msgid "file type not supported: %s" msgstr "tipus d'arxiu no suportaat: %s" -#: f.gallery.cc:921 f.gallery.cc:1010 f.widgets.cc:592 +#: f.gallery.cc:911 f.gallery.cc:1000 f.widgets.cc:597 msgid "Scroll" msgstr "Desplaçar" -#: f.gallery.cc:925 +#: f.gallery.cc:915 msgid "Sync" msgstr "Sync" -#: f.gallery.cc:935 f.repair.cc:5783 f.repair.cc:5788 fotoxx.h:1132 +#: f.gallery.cc:925 f.repair.cc:5779 f.repair.cc:5784 fotoxx.h:1140 msgid "Open" msgstr "Obrir" -#: f.gallery.cc:936 +#: f.gallery.cc:926 msgid "change directory" msgstr "canviar directori" -#: f.gallery.cc:944 +#: f.gallery.cc:934 msgid "GoTo" msgstr "Anar a" -#: f.gallery.cc:950 f.widgets.cc:587 +#: f.gallery.cc:940 f.widgets.cc:592 msgid "Sort" msgstr "Ordenar" -#: f.gallery.cc:956 f.gallery.cc:1528 f.gallery.cc:1529 f.gallery.cc:1531 -#: f.widgets.cc:585 +#: f.gallery.cc:946 f.gallery.cc:1510 f.gallery.cc:1511 f.gallery.cc:1513 +#: f.widgets.cc:590 msgid "Zoom+" msgstr "Zoom +" -#: f.gallery.cc:966 f.gallery.cc:1530 f.gallery.cc:1532 f.widgets.cc:586 +#: f.gallery.cc:956 f.gallery.cc:1512 f.gallery.cc:1514 f.widgets.cc:591 msgid "Zoom-" msgstr "Zoom -" -#: f.gallery.cc:978 f.gallery.cc:1536 +#: f.gallery.cc:968 f.gallery.cc:1518 msgid "Row↑" msgstr "Fila ↑" -#: f.gallery.cc:986 f.gallery.cc:1537 +#: f.gallery.cc:976 f.gallery.cc:1519 msgid "Row↓" msgstr "Fila ↓" -#: f.gallery.cc:994 f.gallery.cc:1534 f.gallery.cc:1541 f.widgets.cc:590 +#: f.gallery.cc:984 f.gallery.cc:1516 f.gallery.cc:1523 f.widgets.cc:595 msgid "Page↑" msgstr "Pàgina ↑" -#: f.gallery.cc:1002 f.gallery.cc:1535 f.gallery.cc:1542 f.widgets.cc:591 +#: f.gallery.cc:992 f.gallery.cc:1517 f.gallery.cc:1524 f.widgets.cc:596 msgid "Page↓" msgstr "Pàgina ↓" -#: f.gallery.cc:1016 f.gallery.cc:1539 f.widgets.cc:588 +#: f.gallery.cc:1006 f.gallery.cc:1521 f.widgets.cc:593 msgid "First" msgstr "Primera" -#: f.gallery.cc:1017 f.gallery.cc:1540 f.widgets.cc:589 +#: f.gallery.cc:1007 f.gallery.cc:1522 f.widgets.cc:594 msgid "Last" msgstr "Última" -#: f.gallery.cc:1134 +#: f.gallery.cc:1120 msgid "Choose image directory" msgstr "Escollir directori d'imatge" -#: f.gallery.cc:1141 f.gallery.cc:1155 +#: f.gallery.cc:1127 f.gallery.cc:1141 msgid "recent" msgstr " recent" -#: f.gallery.cc:1142 f.gallery.cc:1160 +#: f.gallery.cc:1128 f.gallery.cc:1146 msgid "newest" msgstr "més noves" -#: f.gallery.cc:1224 +#: f.gallery.cc:1210 msgid "no albums found" msgstr "No trobats àlbums" -#: f.gallery.cc:1231 +#: f.gallery.cc:1217 msgid "Choose album" msgstr "Escollir àlbums" -#: f.gallery.cc:1281 +#: f.gallery.cc:1267 msgid "Gallery Sort" msgstr "Ordenar galeria" -#: f.gallery.cc:1285 +#: f.gallery.cc:1271 msgid "File Name" msgstr "Nom d'arxiu" -#: f.gallery.cc:1286 +#: f.gallery.cc:1272 msgid "File Mod Date/Time" msgstr "Mode d'arxiu date/hora" -#: f.gallery.cc:1287 +#: f.gallery.cc:1273 msgid "Photo Date/Time (EXIF)" msgstr "Data/hora de la foto (EXIF)" -#: f.gallery.cc:1289 +#: f.gallery.cc:1275 msgid "ascending" msgstr "ascendent" -#: f.gallery.cc:1290 +#: f.gallery.cc:1276 msgid "descending" msgstr " descendent" -#: f.gallery.cc:2244 fotoxx.h:1157 +#: f.gallery.cc:2213 fotoxx.h:1165 msgid "Select Files" msgstr "Seleccionar arxius" -#: f.gallery.cc:2716 +#: f.gallery.cc:2684 msgid "Click list position. Click thumbnail to add." msgstr "Clic una posició de la llista. Clic una miniatura per afegir" -#: f.gallery.cc:2742 f.gallery.cc:2990 +#: f.gallery.cc:2710 f.gallery.cc:2958 msgid "Edit Bookmarks" msgstr "Editar marcadors" -#: f.gallery.cc:2917 +#: f.gallery.cc:2885 msgid "unable to save bookmarks file" msgstr "no puc guardar arxiu de marcadors" -#: f.gallery.cc:2990 +#: f.gallery.cc:2958 msgid "Go To Bookmark" msgstr "Anar a un marcador" -#: f.gallery.cc:3047 f.meta.cc:2732 f.repair.cc:7410 +#: f.gallery.cc:3015 f.meta.cc:2772 f.repair.cc:7407 msgid "file not found" msgstr "arxiu no trobat" @@ -2060,7 +2148,7 @@ msgid "Hard" msgstr "Fort" -#: f.mashup.cc:1304 f.repair.cc:5378 +#: f.mashup.cc:1304 f.repair.cc:5375 msgid "Blend" msgstr "Barrejar" @@ -2076,7 +2164,7 @@ msgid "Gradual" msgstr "Gradual" -#: f.mashup.cc:1580 fotoxx.h:1136 +#: f.mashup.cc:1580 fotoxx.h:1144 msgid "Power" msgstr "Força" @@ -2135,123 +2223,127 @@ msgid "exceeded %d line entries" msgstr "excedides %d entrades de línia" -#: f.meta.cc:179 f.widgets.cc:657 +#: f.meta.cc:179 f.widgets.cc:662 msgid "View Metadata" msgstr "Veure metadades" -#: f.meta.cc:420 f.meta.cc:1756 f.widgets.cc:408 f.widgets.cc:658 +#: f.meta.cc:419 f.meta.cc:1796 f.widgets.cc:407 f.widgets.cc:663 msgid "Edit Metadata" msgstr "Editar metadades" -#: f.meta.cc:430 +#: f.meta.cc:422 f.meta.cc:3748 +msgid "save metadata to file" +msgstr "" + +#: f.meta.cc:431 msgid "Image Date" msgstr "Data de la imatge" -#: f.meta.cc:433 +#: f.meta.cc:434 msgid "Time" msgstr "Hora" -#: f.meta.cc:439 +#: f.meta.cc:440 msgid "Rating (stars):" msgstr "Calificació (estrellas)" -#: f.meta.cc:451 +#: f.meta.cc:452 msgid "Caption" msgstr "Títol" -#: f.meta.cc:457 +#: f.meta.cc:458 msgid "Comments" msgstr "Comentaris" -#: f.meta.cc:465 +#: f.meta.cc:466 msgid "Enter New Tag" msgstr "Introduïr nova etiqueta" -#: f.meta.cc:472 f.meta.cc:4889 +#: f.meta.cc:473 f.meta.cc:4930 msgid "Matching Tags" msgstr "Construïnt etiquetes" -#: f.meta.cc:480 +#: f.meta.cc:481 msgid "Image Tags" msgstr "Etiquetes d'imatge" -#: f.meta.cc:486 +#: f.meta.cc:487 msgid "Recent Tags" msgstr "etiquetes recents" -#: f.meta.cc:495 f.meta.cc:1978 f.meta.cc:4896 +#: f.meta.cc:496 f.meta.cc:2018 f.meta.cc:4937 msgid "Defined Tags Category" msgstr "Categoria d'etiquetes definida" -#: f.meta.cc:886 +#: f.meta.cc:887 msgid "date format is YYYY-MM-DD" msgstr "format de data es AAAA-MM-DD" -#: f.meta.cc:890 +#: f.meta.cc:891 msgid "date is invalid" msgstr "data no vàlida" -#: f.meta.cc:924 +#: f.meta.cc:925 msgid "time format is HH:MM [:SS]" msgstr "fomat d'hora es HH:MM [:SS]" -#: f.meta.cc:928 +#: f.meta.cc:929 msgid "time is invalid" msgstr "hora no vàlida" -#: f.meta.cc:974 fotoxx.h:1121 +#: f.meta.cc:1014 fotoxx.h:1129 msgid "Manage Tags" msgstr "Gestionar etiquetes" -#: f.meta.cc:974 +#: f.meta.cc:1014 msgid "orphan tags" msgstr "etiquetes òrfenes" -#: f.meta.cc:978 +#: f.meta.cc:1018 msgid "category" msgstr "categoria" -#: f.meta.cc:981 +#: f.meta.cc:1021 msgid "tag" msgstr "etiqueta" -#: f.meta.cc:988 +#: f.meta.cc:1028 msgid "Defined Tags:" msgstr "etiquetes definides:" -#: f.meta.cc:1760 f.meta.cc:2418 +#: f.meta.cc:1800 f.meta.cc:2458 msgid "key name" msgstr "nom de clau" -#: f.meta.cc:1762 f.meta.cc:2419 +#: f.meta.cc:1802 f.meta.cc:2459 msgid "key value" msgstr "valor de clau" -#: f.meta.cc:1849 f.widgets.cc:410 +#: f.meta.cc:1889 f.widgets.cc:409 msgid "Delete Metadata" msgstr "Esborrar metadades" -#: f.meta.cc:1851 fotoxx.h:1070 +#: f.meta.cc:1891 fotoxx.h:1078 msgid "All" msgstr "Tot" -#: f.meta.cc:1852 +#: f.meta.cc:1892 msgid "One Key:" msgstr "Una clau:" -#: f.meta.cc:1955 f.widgets.cc:411 f.widgets.cc:530 +#: f.meta.cc:1995 f.widgets.cc:410 f.widgets.cc:533 msgid "Batch Add/Remove Tags" msgstr "Afegir/eliminar etiquetes en lot" -#: f.meta.cc:1966 +#: f.meta.cc:2006 msgid "tags to add" msgstr "Etiquetes per afegir" -#: f.meta.cc:1967 +#: f.meta.cc:2007 msgid "tags to remove" msgstr "etiquetes per eliminar" -#: f.meta.cc:2051 +#: f.meta.cc:2091 #, c-format msgid "" "%s \n" @@ -2260,15 +2352,15 @@ "%s \n" " massa etiquetes" -#: f.meta.cc:2166 +#: f.meta.cc:2206 msgid "specify files and tags" msgstr "especificar arxius i etiquetes" -#: f.meta.cc:2226 +#: f.meta.cc:2266 msgid "tag names file" msgstr "arxiu de noms d'etiqueta" -#: f.meta.cc:2298 +#: f.meta.cc:2338 #, c-format msgid "" "%d tags to rename \n" @@ -2279,32 +2371,32 @@ "en %d imatges. \n" "procedir?" -#: f.meta.cc:2409 +#: f.meta.cc:2449 msgid "Batch Metadata" msgstr "Metadades en lot" -#: f.meta.cc:2455 +#: f.meta.cc:2495 msgid "enter key names" msgstr "introduïr noms clau" -#: f.meta.cc:2461 fotoxx.h:1129 +#: f.meta.cc:2501 fotoxx.h:1137 msgid "no files selected" msgstr "no hi han arxius seleccionats" -#: f.meta.cc:3164 f.meta.cc:3899 f.meta.cc:4163 +#: f.meta.cc:3204 f.meta.cc:3940 f.meta.cc:4204 #, c-format msgid "bad latitude/longitude: %s %s" msgstr "latitud/longitud errònia: %s %s" -#: f.meta.cc:3207 f.meta.cc:3571 f.meta.cc:4372 f.meta.cc:4780 +#: f.meta.cc:3247 f.meta.cc:3611 f.meta.cc:4413 f.meta.cc:4821 msgid "-noindex in use, disabled" msgstr "-noindex en ús, ​deshabilitar" -#: f.meta.cc:3223 +#: f.meta.cc:3263 msgid "choose map file" msgstr "escollir arxiu de mapes" -#: f.meta.cc:3332 +#: f.meta.cc:3372 msgid "" "fotoxx-maps package not installed \n" "(see http://kornelix.com/packages and /tarballs)" @@ -2312,12 +2404,12 @@ "paquet fotoxx-maps no instal·lat \n" "(veure http://kornelix.com/packages i /tarballs)" -#: f.meta.cc:3337 +#: f.meta.cc:3377 #, c-format msgid "map file %s is missing" msgstr "es necessita arxiu de mapes %s" -#: f.meta.cc:3341 +#: f.meta.cc:3381 #, c-format msgid "" "map latitude/longitude data unreasonable \n" @@ -2326,39 +2418,39 @@ "dades de latitut/longitut inconsistents \n" " %.3f %.3f %.3f %.3f" -#: f.meta.cc:3620 +#: f.meta.cc:3660 msgid "No matching images found" msgstr "No s'han trobat imatges coincidents" -#: f.meta.cc:3660 +#: f.meta.cc:3700 msgid "search range (km)" msgstr "buscar rang (km)" -#: f.meta.cc:3693 f.widgets.cc:414 f.widgets.cc:659 +#: f.meta.cc:3733 f.widgets.cc:413 f.widgets.cc:664 msgid "Edit Geotags" msgstr "Editar geoetiquetes" -#: f.meta.cc:3694 +#: f.meta.cc:3734 msgid "Geocoding web service courtesy of" msgstr "Servei web de geo-codis cortesia de" -#: f.meta.cc:3709 f.meta.cc:3949 f.meta.cc:5655 +#: f.meta.cc:3750 f.meta.cc:3990 f.meta.cc:5710 msgid "city" msgstr "ciutat" -#: f.meta.cc:3712 f.meta.cc:3952 f.meta.cc:5658 +#: f.meta.cc:3753 f.meta.cc:3993 f.meta.cc:5713 msgid "country" msgstr "pais" -#: f.meta.cc:3794 f.meta.cc:4080 +#: f.meta.cc:3835 f.meta.cc:4121 msgid "city not found" msgstr "ciutat no trobada" -#: f.meta.cc:3915 f.widgets.cc:415 f.widgets.cc:533 +#: f.meta.cc:3956 f.widgets.cc:414 f.widgets.cc:536 msgid "Batch Add Geotags" msgstr "Afegir geoetiquetes" -#: f.meta.cc:4142 +#: f.meta.cc:4183 msgid "" "data is incomplete \n" " proceed?" @@ -2366,140 +2458,140 @@ "les dades són incompletas \n" " procedir?" -#: f.meta.cc:4199 +#: f.meta.cc:4240 msgid "choose city" msgstr "escollir ciutat" -#: f.meta.cc:4286 +#: f.meta.cc:4327 msgid "not found" msgstr "no trobada" -#: f.meta.cc:4287 +#: f.meta.cc:4328 msgid "city and country required" msgstr "és necessari ciutat i pais" -#: f.meta.cc:4387 +#: f.meta.cc:4428 msgid "Report Geotag Groups" msgstr "Informe de grups de geoetiquetes" -#: f.meta.cc:4388 +#: f.meta.cc:4429 msgid "Group by country" msgstr "Agrupar per pais" -#: f.meta.cc:4389 +#: f.meta.cc:4430 msgid "Group by country/city" msgstr "Agrupar per pais/ciutat" -#: f.meta.cc:4390 +#: f.meta.cc:4431 msgid "Group by country/city/date" msgstr "Agrupar pais/ciutat/data" -#: f.meta.cc:4393 +#: f.meta.cc:4434 msgid "Combine within" msgstr "Conbinar dins de" -#: f.meta.cc:4395 +#: f.meta.cc:4436 msgid "days" msgstr "dies" -#: f.meta.cc:4511 +#: f.meta.cc:4552 msgid "geotag groups" msgstr "grups de geo-etiquetes" -#: f.meta.cc:4817 +#: f.meta.cc:4858 msgid "Search Image Metadata" msgstr "Buscar metadades de la imatge" -#: f.meta.cc:4821 +#: f.meta.cc:4862 msgid "images to search:" msgstr "imatges a buscar:" -#: f.meta.cc:4822 +#: f.meta.cc:4863 msgid "all" msgstr "tot" -#: f.meta.cc:4823 +#: f.meta.cc:4864 msgid "current set only" msgstr "omés selecció actual" -#: f.meta.cc:4826 +#: f.meta.cc:4867 msgid "matching images:" msgstr "imatges coïncidents" -#: f.meta.cc:4827 +#: f.meta.cc:4868 msgid "new set" msgstr "nova selecció" -#: f.meta.cc:4828 +#: f.meta.cc:4869 msgid "add to set" msgstr "afegir a la selecció" -#: f.meta.cc:4829 +#: f.meta.cc:4870 msgid "remove" msgstr "eliminar" -#: f.meta.cc:4832 +#: f.meta.cc:4873 msgid "report type:" msgstr "tipus d'informe" -#: f.meta.cc:4833 +#: f.meta.cc:4874 msgid "gallery" msgstr "galeria" -#: f.meta.cc:4834 fotoxx-15.08.cc:801 +#: f.meta.cc:4875 fotoxx-15.09.cc:781 msgid "metadata" msgstr "metadades" -#: f.meta.cc:4840 +#: f.meta.cc:4881 msgid "date range" msgstr "rand de dates" -#: f.meta.cc:4841 +#: f.meta.cc:4882 msgid "stars range" msgstr "rang d'estrelles" -#: f.meta.cc:4842 +#: f.meta.cc:4883 msgid "search tags" msgstr "buscar etiquetes" -#: f.meta.cc:4843 +#: f.meta.cc:4884 msgid "search text" msgstr "buscar text" -#: f.meta.cc:4844 +#: f.meta.cc:4885 msgid "search files" msgstr "buscar arxius" -#: f.meta.cc:4849 +#: f.meta.cc:4890 msgid "(yyyymmdd)" msgstr "(aaaammdd)" -#: f.meta.cc:4854 +#: f.meta.cc:4895 msgid "last version only" msgstr "només última versió" -#: f.meta.cc:4856 +#: f.meta.cc:4897 msgid "all/any" msgstr "tot/qualsevol" -#: f.meta.cc:4875 +#: f.meta.cc:4916 msgid "other criteria" msgstr "altres criteris" -#: f.meta.cc:4879 +#: f.meta.cc:4920 msgid "other" msgstr "altre" -#: f.meta.cc:4885 +#: f.meta.cc:4926 msgid "Enter Search Tag" msgstr "Introduïr etiquetes de cerca" -#: f.meta.cc:5179 +#: f.meta.cc:5221 #, c-format msgid "not a defined tag: %s" msgstr "no és una etiqueta definida: %s" -#: f.meta.cc:5210 +#: f.meta.cc:5252 msgid "" "to remove images from current set, \n" "search current set" @@ -2507,7 +2599,7 @@ "per eliminar imatges de laa selecció actual, \n" "buscar en la selecció actual" -#: f.meta.cc:5217 +#: f.meta.cc:5259 msgid "" "to add images to current set, \n" "search all images" @@ -2515,32 +2607,39 @@ "per afegir imatges a la selecció actual, \n" "buscar en totes les imatges" -#: f.meta.cc:5266 +#: f.meta.cc:5303 +#, c-format +msgid "" +"search dates not reasonable \n" +" %s %s" +msgstr "" + +#: f.meta.cc:5321 msgid "stars range not reasonable" msgstr "rang d'estrellas no raonable" -#: f.meta.cc:5511 +#: f.meta.cc:5566 #, c-format msgid "images added: %d removed: %d new count: %d" msgstr "imatges afegides: %d eliminades: %d nova quantitat: %d" -#: f.meta.cc:5514 +#: f.meta.cc:5569 msgid "no changes made" msgstr "no s'han fet canvis" -#: f.meta.cc:5652 +#: f.meta.cc:5707 msgid "Add Geotags Search Criteria" msgstr "Afegir criteris de cerca de geoetiquetes" -#: f.meta.cc:5671 +#: f.meta.cc:5726 msgid "range (km)" msgstr "rang (km)" -#: f.meta.cc:5764 +#: f.meta.cc:5819 msgid "error in latitude/longitude/range" msgstr "error em latitud/longitud/rang" -#: f.meta.cc:5828 +#: f.meta.cc:5883 msgid "" "These items are always reported: \n" "date, stars, tags, caption, comment" @@ -2548,19 +2647,19 @@ "Sempre s'informa d'aquests detalls: \n" "data, estrelles, etiquetes, llegenda, comentari" -#: f.meta.cc:5852 +#: f.meta.cc:5907 msgid "Additional Items for Report" msgstr "Detalls addicionals per a l'informe" -#: f.meta.cc:5858 +#: f.meta.cc:5913 msgid "Keyword" msgstr "Paraula clau" -#: f.meta.cc:5865 +#: f.meta.cc:5920 msgid "Match Criteria" msgstr "Criteri de coincidència" -#: f.meta.cc:6425 +#: f.meta.cc:6480 msgid "image index is missing" msgstr "Necessari índex d'imatges\t" @@ -2576,47 +2675,47 @@ msgid "Kuwahara method" msgstr "Mètode Kuwahara" -#: f.repair.cc:1012 +#: f.repair.cc:1014 msgid "Apply repeatedly while watching the image." msgstr "Aplicar repetidament mentre es visualitza la imatge" -#: f.repair.cc:1013 +#: f.repair.cc:1015 msgid "Measure" msgstr "Mida" -#: f.repair.cc:1047 +#: f.repair.cc:1049 msgid "Noise Reduction" msgstr "Reducció de soroll" -#: f.repair.cc:1063 +#: f.repair.cc:1065 msgid "Flatten Outliers 1" msgstr "Aplanar contorns 1" -#: f.repair.cc:1064 +#: f.repair.cc:1066 msgid "Flatten Outliers 2" msgstr "Aplanar contorns 2" -#: f.repair.cc:1065 +#: f.repair.cc:1067 msgid "Median Brightness" msgstr "Mediana de brillantor" -#: f.repair.cc:1093 +#: f.repair.cc:1095 msgid "dark areas" msgstr "àrees fosques" -#: f.repair.cc:1095 +#: f.repair.cc:1097 msgid "all areas" msgstr "totes les àrees" -#: f.repair.cc:1193 +#: f.repair.cc:1195 msgid "Measure Noise" msgstr "Mida de soroll" -#: f.repair.cc:1194 +#: f.repair.cc:1196 msgid "Click on a monotone image area." msgstr "Clic en una àrea de la imatge monotonal" -#: f.repair.cc:2095 +#: f.repair.cc:2098 msgid "" "1. Drag mouse to select. \n" "2. Erase. 3. Repeat. " @@ -2624,23 +2723,23 @@ "1. Arrossegar el ratolí per seleccionar. \n" "2. Esborrar. 3. Repetir. " -#: f.repair.cc:2117 f.widgets.cc:451 +#: f.repair.cc:2120 f.widgets.cc:452 msgid "Smart Erase" msgstr "Esborrat intel.ligent" -#: f.repair.cc:2122 fotoxx.h:1140 +#: f.repair.cc:2125 fotoxx.h:1148 msgid "Radius" msgstr "Radi" -#: f.repair.cc:2124 f.widgets.cc:449 +#: f.repair.cc:2127 f.widgets.cc:450 msgid "Blur" msgstr "Desenfocar" -#: f.repair.cc:2127 +#: f.repair.cc:2130 msgid "New Area" msgstr "Nova àrea" -#: f.repair.cc:2475 +#: f.repair.cc:2479 msgid "" "Method 1:\n" " Left-click on red-eye to darken.\n" @@ -2658,11 +2757,11 @@ "Desfer ulls vermells:\n" " Clic dret en l'ull vermell." -#: f.repair.cc:2491 +#: f.repair.cc:2495 msgid "Red Eye Reduction" msgstr "Reducció d'ulls vermells" -#: f.repair.cc:2955 +#: f.repair.cc:2959 msgid "" "shift + left click: pick color or image position \n" "left click or drag: paint color or copy image \n" @@ -2672,40 +2771,40 @@ "clic esquerra o arrossegar:pintar amb color o copiar de la imatge \n" "clic dret o arrossegar: eliminar color o imatge" -#: f.repair.cc:2987 f.widgets.cc:453 +#: f.repair.cc:2991 f.widgets.cc:454 msgid "Paint/Clone" msgstr "Pintar/Clonar" -#: f.repair.cc:2991 +#: f.repair.cc:2995 msgid "paint color" msgstr "pintar color" -#: f.repair.cc:2994 +#: f.repair.cc:2998 msgid "copy from image" msgstr "copiar des de imatge" -#: f.repair.cc:3001 f.repair.cc:3557 +#: f.repair.cc:3005 f.repair.cc:3562 msgid "paintbrush radius" msgstr "radi del pincell" -#: f.repair.cc:3002 +#: f.repair.cc:3006 msgid "transparency center" msgstr "transparència del centre" -#: f.repair.cc:3003 +#: f.repair.cc:3007 msgid "transparency edge" msgstr "transparència de les vores" -#: f.repair.cc:3010 f.repair.cc:3564 +#: f.repair.cc:3014 f.repair.cc:3569 msgid "gradual paint" msgstr "pintat gradual" -#: f.repair.cc:3017 +#: f.repair.cc:3021 #, c-format msgid "Undo Memory %d%c" msgstr "Memmòria de desfer %d%c" -#: f.repair.cc:3352 +#: f.repair.cc:3357 msgid "" "Undo memory limit has been reached. \n" "Save work with [done], then resume painting." @@ -2713,7 +2812,7 @@ "S'ha arribat al límit de la memòria de desfer. \n" "Guardar el treball amb [Fet], i continuar pintant." -#: f.repair.cc:3517 +#: f.repair.cc:3522 msgid "" "left drag: add transparency \n" "right drag: add opacity" @@ -2721,172 +2820,172 @@ "arrossegar esquerra: afegir transparència \n" "arrossegar dret: afegir opacitat" -#: f.repair.cc:3549 f.widgets.cc:454 +#: f.repair.cc:3554 f.widgets.cc:455 msgid "Paint Transparency" msgstr "Pintar transparència" -#: f.repair.cc:3558 +#: f.repair.cc:3563 msgid "strength center" msgstr "força en el centre" -#: f.repair.cc:3559 +#: f.repair.cc:3564 msgid "strength edge" msgstr "força en els extrems" -#: f.repair.cc:3769 f.widgets.cc:455 +#: f.repair.cc:3778 f.widgets.cc:456 msgid "Color Mode" msgstr "Mode de color" -#: f.repair.cc:3772 +#: f.repair.cc:3781 msgid "black/white positive" msgstr "positiu blanc i negre" -#: f.repair.cc:3773 +#: f.repair.cc:3782 msgid "black/white negative" msgstr "negatiu blanc i negre" -#: f.repair.cc:3774 +#: f.repair.cc:3783 msgid "color positive" msgstr "positiu color" -#: f.repair.cc:3775 +#: f.repair.cc:3784 msgid "color negative" msgstr "negatiu color" -#: f.repair.cc:3776 +#: f.repair.cc:3785 msgid "sepia" msgstr "sèpia" -#: f.repair.cc:3945 f.widgets.cc:456 +#: f.repair.cc:3954 f.widgets.cc:457 msgid "Shift Colors" msgstr "Modificar colors" -#: f.repair.cc:4217 +#: f.repair.cc:4226 msgid "+Brightness" msgstr "Brillantor" -#: f.repair.cc:4218 +#: f.repair.cc:4227 msgid "+Red -Cyan" msgstr "+Vermell -Cian" -#: f.repair.cc:4219 +#: f.repair.cc:4228 msgid "+Green -Magenta" msgstr "+Verd -Magenta" -#: f.repair.cc:4220 +#: f.repair.cc:4229 msgid "+Blue -Yellow" msgstr "+Blae -Groc" -#: f.repair.cc:4226 fotoxx.h:1142 +#: f.repair.cc:4235 fotoxx.h:1150 msgid "Red" msgstr "Vermell" -#: f.repair.cc:4227 fotoxx.h:1108 +#: f.repair.cc:4236 fotoxx.h:1116 msgid "Green" msgstr "Verd" -#: f.repair.cc:4228 fotoxx.h:1077 +#: f.repair.cc:4237 fotoxx.h:1085 msgid "Blue" msgstr "Blau" -#: f.repair.cc:4527 +#: f.repair.cc:4536 msgid "Color Hue" msgstr "To de color" -#: f.repair.cc:4528 +#: f.repair.cc:4537 msgid "Saturation" msgstr "SAturació" -#: f.repair.cc:4529 +#: f.repair.cc:4538 msgid "Lightness" msgstr "Brillantor" -#: f.repair.cc:4530 +#: f.repair.cc:4539 msgid "Adjustment" msgstr "Ajustament" -#: f.repair.cc:4869 +#: f.repair.cc:4878 msgid "Ramp brightness across image" msgstr "Rampa de brillantor a través de la imatge" -#: f.repair.cc:5278 f.tools.cc:2014 +#: f.repair.cc:5286 f.tools.cc:2038 msgid "Click image to select pixels." msgstr "Clic en la imatge per seleccionar píxels." -#: f.repair.cc:5312 f.widgets.cc:460 +#: f.repair.cc:5317 f.widgets.cc:461 msgid "Color Ramp" msgstr "Rampa de color" -#: f.repair.cc:5323 +#: f.repair.cc:5328 msgid "Metric:" msgstr "Mètrica:" -#: f.repair.cc:5754 +#: f.repair.cc:5751 msgid "Color Match Images" msgstr "Concordar color d'imatges" -#: f.repair.cc:5781 +#: f.repair.cc:5777 msgid "mouse radius for color sample" msgstr "radi del ratolí per mostra de color" -#: f.repair.cc:5784 +#: f.repair.cc:5780 msgid "image for source color" msgstr "imatge per el color d'origen" -#: f.repair.cc:5786 +#: f.repair.cc:5782 msgid "click on image to get source color" msgstr "clic en la imatge per obtenir color d'origen" -#: f.repair.cc:5789 +#: f.repair.cc:5785 msgid "image to set matching color" msgstr "imatge per establir concordància de color" -#: f.repair.cc:5791 +#: f.repair.cc:5787 msgid "click on image to set matching color" msgstr "click on image to set matching color" -#: f.repair.cc:5851 +#: f.repair.cc:5848 msgid "select source image color first" msgstr "seleccionar primer el color de la imatge d'origen" -#: f.repair.cc:6036 +#: f.repair.cc:6033 msgid "Change Color Profile" msgstr "Canviar perfil de color" -#: f.repair.cc:6040 +#: f.repair.cc:6037 msgid "input profile" msgstr "perfil d'entrada" -#: f.repair.cc:6044 +#: f.repair.cc:6041 msgid "output profile" msgstr "perfil de sortida" -#: f.repair.cc:6060 +#: f.repair.cc:6057 msgid "color profile" msgstr "perfil de color" -#: f.repair.cc:6106 f.repair.cc:6112 +#: f.repair.cc:6103 f.repair.cc:6109 #, c-format msgid "unknown cms profile %s" msgstr "perfil cms desconegut %s" -#: f.repair.cc:6244 f.widgets.cc:463 +#: f.repair.cc:6241 f.widgets.cc:464 msgid "Remove Dust" msgstr "Retirar pols" -#: f.repair.cc:6248 +#: f.repair.cc:6245 msgid "spot size limit" msgstr "límit de mida del punt" -#: f.repair.cc:6251 +#: f.repair.cc:6248 msgid "max. brightness" msgstr "max. brillantor" -#: f.repair.cc:6254 +#: f.repair.cc:6251 msgid "min. contrast" msgstr "min. contrast" -#: f.repair.cc:7035 +#: f.repair.cc:7032 msgid "" " Adjust each RGB color to minimize \n" " color fringes at the image extremes. " @@ -2894,35 +2993,35 @@ " Ajustar cada color RGB per minimitzar \n" " les franges de color en els extrems de la imatge. " -#: f.repair.cc:7058 f.widgets.cc:465 +#: f.repair.cc:7055 f.widgets.cc:466 msgid "Color Fringes" msgstr "Franges de color" -#: f.repair.cc:7257 f.widgets.cc:466 +#: f.repair.cc:7254 f.widgets.cc:467 msgid "Stuck Pixels" msgstr "Píxels retinguts" -#: f.repair.cc:7263 +#: f.repair.cc:7260 msgid "pixel group" msgstr "agrupar píxels" -#: f.repair.cc:7271 f.repair.cc:7339 +#: f.repair.cc:7268 f.repair.cc:7336 msgid "stuck pixels:" msgstr "píxels defectuosos" -#: f.repair.cc:7367 +#: f.repair.cc:7364 msgid "Load Stuck Pixels" msgstr "Carregar píxels defectuosos" -#: f.repair.cc:7369 +#: f.repair.cc:7366 msgid "File:" msgstr "Arxiu:" -#: f.repair.cc:7394 f.repair.cc:7451 +#: f.repair.cc:7391 f.repair.cc:7448 msgid "Stuck Pixels file" msgstr "Arxiu de píxels defectuosos" -#: f.repair.cc:7431 +#: f.repair.cc:7428 msgid "file format error" msgstr "error de format d'arxiu" @@ -2952,7 +3051,7 @@ "L'indexat és requerit per cercar i funcions de mapa \n" "i oer fer les pàgines de galeria acceptablement ràpides." -#: f.tools.cc:106 f.widgets.cc:506 +#: f.tools.cc:106 f.widgets.cc:507 msgid "Index Image Files" msgstr "Arxiu índex d'imatges" @@ -3011,184 +3110,184 @@ " %s \n" "Si us plau esborrar." -#: f.tools.cc:394 +#: f.tools.cc:392 msgid "no thumbnails directory defined" msgstr "directori de miniatures no definit" -#: f.tools.cc:739 +#: f.tools.cc:734 msgid "COMPLETED" msgstr "COMPLETAT" -#: f.tools.cc:778 +#: f.tools.cc:775 msgid "Indexing is required for first-time startup." msgstr "L'indexat és necessari per una primera arrencada" -#: f.tools.cc:840 +#: f.tools.cc:837 msgid "Recent Files Gallery" msgstr "Galeria d'arxius recents" -#: f.tools.cc:841 +#: f.tools.cc:838 msgid "Newest Files Gallery" msgstr "Galeria d'arxius nous" -#: f.tools.cc:842 +#: f.tools.cc:839 msgid "Previous Gallery" msgstr "Galeria prèvia" -#: f.tools.cc:843 +#: f.tools.cc:840 msgid "Previous Image" msgstr "Imatge prèvia" -#: f.tools.cc:844 +#: f.tools.cc:841 msgid "Blank Window" msgstr "Finestra buida" -#: f.tools.cc:845 +#: f.tools.cc:842 msgid "Directory" msgstr "Directori" -#: f.tools.cc:846 +#: f.tools.cc:843 msgid "Image File" msgstr "Arxiu d'imatges" -#: f.tools.cc:887 f.widgets.cc:507 +#: f.tools.cc:885 f.widgets.cc:508 msgid "User Options" msgstr "Opcions d'usuari" -#: f.tools.cc:890 +#: f.tools.cc:888 msgid "Startup Display" msgstr "Pantalla d'inici" -#: f.tools.cc:901 +#: f.tools.cc:899 msgid "Menu Style" msgstr "Estil de menú" -#: f.tools.cc:902 +#: f.tools.cc:900 msgid "Icons" msgstr "Icones" -#: f.tools.cc:903 +#: f.tools.cc:901 msgid "Icons + Text" msgstr "Icones + text" -#: f.tools.cc:905 +#: f.tools.cc:903 msgid "Icon size" msgstr "tamany d'icona" -#: f.tools.cc:909 +#: f.tools.cc:907 +msgid "Dialog font and size" +msgstr "" + +#: f.tools.cc:912 msgid "Image Pan/scroll:" msgstr "Fixar/desplaçar imatge" -#: f.tools.cc:912 +#: f.tools.cc:915 msgid "Zooms for 2x" msgstr "Zooms x2" -#: f.tools.cc:921 +#: f.tools.cc:924 msgid "JPEG save quality" msgstr "qualitat de l'arxiu JPEG" -#: f.tools.cc:924 f.tools.cc:3041 -msgid "Thumbnail size" -msgstr "Tamany de miniatura" - -#: f.tools.cc:928 +#: f.tools.cc:931 msgid "show hidden directories in gallery view" msgstr "mostrar directoris ocults en la vista de galeria" -#: f.tools.cc:931 +#: f.tools.cc:934 msgid "prev/next shows last file version only" msgstr "ant/seg mostra només la última versió de l'arxiu" -#: f.tools.cc:934 +#: f.tools.cc:937 msgid "RAW command" msgstr "Comandament RAW" -#: f.tools.cc:938 +#: f.tools.cc:941 msgid "RAW file types" msgstr "Tipus d'arxius RAW" -#: f.tools.cc:1015 +#: f.tools.cc:1021 msgid "Delete present thumbnails to make effective" msgstr "Esborrar miniatura actual per fer-ho efectiu" -#: f.tools.cc:1037 +#: f.tools.cc:1043 msgid "Select startup directory" msgstr "Seleccionar directori d'inici" -#: f.tools.cc:1044 +#: f.tools.cc:1050 msgid "Select startup image file" msgstr "Seleccionarimatge d'inici" -#: f.tools.cc:1066 +#: f.tools.cc:1088 msgid "startup directory is invalid" msgstr "directori d'inici no és vàlid" -#: f.tools.cc:1077 +#: f.tools.cc:1099 msgid "startup file is invalid" msgstr "arxiu d'inici no és vàlid" -#: f.tools.cc:1211 +#: f.tools.cc:1237 msgid "Edit KB Shortcuts" msgstr "Editar tecles drecera" -#: f.tools.cc:1216 +#: f.tools.cc:1242 msgid "shortcut key:" msgstr "tecla drecera" -#: f.tools.cc:1217 +#: f.tools.cc:1243 msgid "(enter key)" msgstr "(entra tecla)" -#: f.tools.cc:1343 +#: f.tools.cc:1369 #, c-format msgid "\"%s\" Reserved, cannot be used" msgstr "\"%s\" Reservada, no es pot utilitzar" -#: f.tools.cc:1497 +#: f.tools.cc:1523 msgid "unable to save KB-shortcuts file" msgstr "no es pot guardar arxiu de tecles drecera" -#: f.tools.cc:1801 f.widgets.cc:510 +#: f.tools.cc:1827 f.widgets.cc:511 msgid "Grid Lines" msgstr "Línies de graella" -#: f.tools.cc:1810 +#: f.tools.cc:1836 msgid "x-spacing" msgstr "espaiat X" -#: f.tools.cc:1811 +#: f.tools.cc:1837 msgid "x-count" msgstr "compte X" -#: f.tools.cc:1812 +#: f.tools.cc:1838 msgid "x-enable" msgstr "habilitar X" -#: f.tools.cc:1818 +#: f.tools.cc:1844 msgid "y-spacing" msgstr "espaiat Y" -#: f.tools.cc:1819 +#: f.tools.cc:1845 msgid "y-count" msgstr "compta Y" -#: f.tools.cc:1820 +#: f.tools.cc:1846 msgid "y-enable" msgstr "habilitar Y" -#: f.tools.cc:1940 f.tools.cc:1945 f.widgets.cc:511 +#: f.tools.cc:1966 f.tools.cc:1971 f.widgets.cc:512 msgid "Line Color" msgstr "Color de línees" -#: f.tools.cc:1942 +#: f.tools.cc:1968 msgid "Area Color" msgstr "Color de l'àrea" -#: f.tools.cc:2050 f.widgets.cc:512 +#: f.tools.cc:2073 f.widgets.cc:513 msgid "Show RGB" msgstr "Mostrar RGB" -#: f.tools.cc:2345 +#: f.tools.cc:2365 msgid "" "Drag mouse on image. \n" "Left click to cancel. \n" @@ -3198,27 +3297,27 @@ "clic esquerra per cancel.lar. \n" "Tecla M per amagar diàleg." -#: f.tools.cc:2371 f.widgets.cc:513 +#: f.tools.cc:2391 f.widgets.cc:514 msgid "Magnify Image" msgstr "Augmentar imaten" -#: f.tools.cc:2380 +#: f.tools.cc:2400 msgid "X-size" msgstr "Lupa" -#: f.tools.cc:2625 +#: f.tools.cc:2645 msgid "Darkest and Brightest Pixels" msgstr "Píxels més foscos i més brillants" -#: f.tools.cc:2648 +#: f.tools.cc:2668 msgid "Dark Limit" msgstr "Ombra" -#: f.tools.cc:2649 +#: f.tools.cc:2669 msgid "Bright Limit" msgstr "Llum" -#: f.tools.cc:2744 +#: f.tools.cc:2764 msgid "" "Brightness should show a gradual ramp \n" "extending all the way to the edges." @@ -3226,112 +3325,144 @@ "la brillantor ha de mostrar una rampa gradual \n" "extenent-se fina a les vores." -#: f.tools.cc:2840 f.widgets.cc:516 +#: f.tools.cc:2860 f.widgets.cc:517 msgid "Monitor Gamma" msgstr "Gamma del monitor" -#: f.tools.cc:2900 +#: f.tools.cc:2920 msgid "Available Translations" msgstr "Traduccions disponibles" -#: f.tools.cc:2904 +#: f.tools.cc:2924 msgid "Set Language" msgstr "Seleccionar idioma" -#: f.tools.cc:3039 f.widgets.cc:519 -msgid "Find Duplicate Images" -msgstr "Trobar imatges duplicades" +#: f.tools.cc:3064 f.widgets.cc:520 +msgid "Calibrate Printer" +msgstr "" -#: f.tools.cc:3044 -msgid "pixel difference" -msgstr "diferència de píxels" +#: f.tools.cc:3087 +msgid "print color chart" +msgstr "" -#: f.tools.cc:3047 -msgid "pixel count" -msgstr "conteig de píxels" +#: f.tools.cc:3088 +msgid "scan and save color chart" +msgstr "" -#: f.tools.cc:3050 -msgid "Images:" -msgstr "Imatges:" +#: f.tools.cc:3089 +msgid "align and trim color chart" +msgstr "" -#: f.tools.cc:3051 -msgid "searching ..." -msgstr "buscant ..." +#: f.tools.cc:3090 +msgid "open and process color chart" +msgstr "" -#: f.tools.cc:3053 -msgid "Duplicates:" -msgstr "Duplicats:" +#: f.tools.cc:3091 +msgid "print image with revised colors" +msgstr "" -#: f.tools.cc:3071 +#: f.tools.cc:3258 #, c-format -msgid "only %d image thumbnails found" -msgstr "trobades tant sols % imatges" +msgid "" +"Scan the printed color chart. \n" +"Save in %s/" +msgstr "" -#: f.widgets.cc:112 -msgid "TOP" -msgstr "DALT" +#: f.tools.cc:3272 +msgid "" +"Open and edit the scanned color chart file. \n" +"Remove any skew or rotation caused by the scanner. \n" +"Trim off all margins. Be careful not to cut off \n" +"any color tile edges or leave any white margins." +msgstr "" + +#: f.tools.cc:3308 +msgid "Open the trimmed color chart file" +msgstr "" + +#: f.tools.cc:3405 +msgid "" +"Set the file name and location \n" +"for the output color map file." +msgstr "" + +#: f.tools.cc:3440 +msgid "Color map file to use" +msgstr "" + +#: f.tools.cc:3461 +msgid "Select the image file to print." +msgstr "" + +#: f.tools.cc:3588 +msgid "Image colors are converted for printing." +msgstr "" -#: f.widgets.cc:115 +#: f.widgets.cc:111 msgid "Album" msgstr "" -#: f.widgets.cc:169 +#: f.widgets.cc:113 +msgid "TOP" +msgstr "DALT" + +#: f.widgets.cc:165 msgid "Current Image File (key F)" msgstr "Arxiu d'imatge actual (tecla F)" -#: f.widgets.cc:170 +#: f.widgets.cc:166 msgid "Thumbnail Gallery (key G)" msgstr "Galería de miniatures (tecla G)" -#: f.widgets.cc:171 +#: f.widgets.cc:167 msgid "World Maps (key W)" msgstr "Mapa mundial (tecla W)" -#: f.widgets.cc:174 +#: f.widgets.cc:170 msgid "Favorite Functions" msgstr "Funcions favorites" -#: f.widgets.cc:175 +#: f.widgets.cc:171 msgid "File: Open, RAW, Rename, Trash, Print" msgstr "Arxiu: Obrir, RAW, Re-anoimenar, Paperera, Imprimir" -#: f.widgets.cc:176 +#: f.widgets.cc:172 msgid "Save modified image file to disk" msgstr "Guardar imatge modificada en el disc" -#: f.widgets.cc:177 +#: f.widgets.cc:173 msgid "Open previous or next file (left/right mouse click)" msgstr "Obrir arxiu anterior o sugüent (clic esq/dret)" -#: f.widgets.cc:178 +#: f.widgets.cc:174 msgid "Metadata: Captions, Tags, Ratings, Geotags, Search ... " msgstr "Metadades: Titols, Etiquetes, Valoracions, Geoetiquetes, Buscar ..." -#: f.widgets.cc:179 +#: f.widgets.cc:175 msgid "Areas: Select areas to edit, copy and paste" msgstr "Arees: Sel.leccionar àrees per editar, copiar i enganxar" -#: f.widgets.cc:180 +#: f.widgets.cc:176 msgid "Edit: Trim, Rotate, Resize, Brightness, Contrast, Text ..." msgstr "Editar: Retallar, Girar, Redimensionar, Brillantor, Contrast, Text ..." -#: f.widgets.cc:181 +#: f.widgets.cc:177 msgid "Repair: Sharpen, Noise, Red-eyes, Color, Paint, Clone ..." msgstr "Reparar: Enfocar, Soroll, Ulls vermells, Color, Pintar, Clonar ..." -#: f.widgets.cc:182 +#: f.widgets.cc:178 msgid "Bend: Fix Perspective, Bend/Warp image ..." msgstr "Deformar: Corretgir perspectiva, Deformar/Corretgir imatge" -#: f.widgets.cc:183 +#: f.widgets.cc:179 msgid "Effects: Special Effects, Arty Transforms" msgstr "Efectes: Efectes especials, Transformacions artístiques" -#: f.widgets.cc:184 +#: f.widgets.cc:180 msgid "Combine: HDR, HDF, Panorama, Stack, Mashup" msgstr "Combinar: HDR, HDF, Panorama, Apilar, Muntatge" -#: f.widgets.cc:185 +#: f.widgets.cc:181 msgid "" "Undo or Redo one edit (left/right mouse click) \n" " hold key A to include all edits" @@ -3339,1124 +3470,1096 @@ "Desfer o refer una edició (clic esq/dret) \n" " prèmer tecla A per incluir totes les edicions" -#: f.widgets.cc:187 +#: f.widgets.cc:183 msgid "Tools: Index, Options, Shortcuts, Magnify ..." msgstr "Eines: Indexar, Opcions, Dresseres, Augmentar ..." -#: f.widgets.cc:188 +#: f.widgets.cc:184 msgid "Help: Quick Start, User Guide, Recent Changes ..." msgstr "Ajuda: Inici ràpid, Guia d'usuari, Canvis recents" -#: f.widgets.cc:191 +#: f.widgets.cc:187 msgid "Set gallery from current image file" msgstr "Establir galeria des de l'imatge actual" -#: f.widgets.cc:192 +#: f.widgets.cc:188 msgid "Albums: Manage Albums, Slide Show, Desktop Background" msgstr "Àlbums: Administrar àlbums, Diaporama, Fons d'esciptori" -#: f.widgets.cc:193 +#: f.widgets.cc:189 msgid "go to bookmarked image" msgstr "anar a imatge marcada" -#: f.widgets.cc:194 +#: f.widgets.cc:190 msgid "increase thumbnail size" msgstr "Augmentar mida de miniatura" -#: f.widgets.cc:195 +#: f.widgets.cc:191 msgid "reduce thumbnail size" msgstr "reduir mida de miniatura" -#: f.widgets.cc:196 +#: f.widgets.cc:192 msgid "change sort order" msgstr "canviar criteri d'ordenació" -#: f.widgets.cc:197 +#: f.widgets.cc:193 msgid "jump to beginning (top)" msgstr "anar al principi (a dalt)" -#: f.widgets.cc:198 +#: f.widgets.cc:194 msgid "jump to end (bottom)" msgstr "anar al final (a baix)" -#: f.widgets.cc:199 +#: f.widgets.cc:195 msgid "previous page" msgstr "pàgina anterior" -#: f.widgets.cc:200 +#: f.widgets.cc:196 msgid "next page" msgstr "pàgina següent" -#: f.widgets.cc:201 +#: f.widgets.cc:197 msgid "slow scroll" msgstr "desplaçament lent" -#: f.widgets.cc:202 +#: f.widgets.cc:198 msgid "Batch conversion, metadata, RAW processing" msgstr "" -#: f.widgets.cc:205 +#: f.widgets.cc:201 msgid "Choose a map for image locations" msgstr "Escollir mapa per ubicar imatge" -#: f.widgets.cc:206 +#: f.widgets.cc:202 msgid "Set image search radius for map click" msgstr "Ajustar radi de cerca d'imatge per clicar en el mapa" -#: f.widgets.cc:209 +#: f.widgets.cc:205 msgid "Open another window" msgstr "Obrir una altre finestra" -#: f.widgets.cc:210 +#: f.widgets.cc:206 msgid "Open a new image file" msgstr "Obrir una nova imatge" -#: f.widgets.cc:211 +#: f.widgets.cc:207 msgid "Open the previously seen file" msgstr "Obrir arxiu vist previament" -#: f.widgets.cc:212 +#: f.widgets.cc:208 msgid "Open a recently seen file" msgstr "Obrir arxiu vist recentment" -#: f.widgets.cc:213 +#: f.widgets.cc:209 msgid "Open a newly added file" msgstr "Obrir un nou arxiu afegit" -#: f.widgets.cc:214 f.widgets.cc:215 +#: f.widgets.cc:210 f.widgets.cc:211 msgid "Open and edit a camera RAW file" msgstr "Obrir i editar un arxiu de càmera RAW" -#: f.widgets.cc:216 +#: f.widgets.cc:212 msgid "Change the image file name" msgstr "Canvia nom de la imatge" -#: f.widgets.cc:217 +#: f.widgets.cc:213 msgid "Create a blank image" msgstr "Crear una imatge buida" -#: f.widgets.cc:218 +#: f.widgets.cc:214 msgid "Move image file to Trash" msgstr "Moure imatge a la paperera" -#: f.widgets.cc:219 +#: f.widgets.cc:215 msgid "Permanently delete image file" msgstr "Esborrar imatge permanentment" -#: f.widgets.cc:220 +#: f.widgets.cc:216 msgid "Print the current image" msgstr "Impprimir la imatge actual" -#: f.widgets.cc:221 f.widgets.cc:402 +#: f.widgets.cc:217 f.widgets.cc:401 msgid "Quit Fotoxx" msgstr "Sortir de Fotoxx" -#: f.widgets.cc:224 +#: f.widgets.cc:220 msgid "List a few key metadata items" msgstr "Llistar algunes dades clau de metadades" -#: f.widgets.cc:225 +#: f.widgets.cc:221 msgid "List all metadata items" msgstr "Listar totes les metadades" -#: f.widgets.cc:226 +#: f.widgets.cc:222 msgid "(Toggle) show captions and comments" msgstr "(Canviar) mostra llegendes i comentaris" -#: f.widgets.cc:227 +#: f.widgets.cc:223 msgid "Edit image tags/caption/rating ..." msgstr "Editar etiquetes/llegenda/clasificació de la imatge" -#: f.widgets.cc:228 +#: f.widgets.cc:224 msgid "Edit any image metadata" msgstr "Editar qualsevol metadada de la imatge" -#: f.widgets.cc:229 +#: f.widgets.cc:225 msgid "Remove all metadata from an image" msgstr "Eliminar totes les metadades d'una imatge" -#: f.widgets.cc:230 +#: f.widgets.cc:226 msgid "Add/remove tags for multiple images" msgstr "Afegir/eliminar etiquetes per múltiples imatges " -#: f.widgets.cc:231 +#: f.widgets.cc:227 msgid "Convert tag names for all images" msgstr "Convertir noms d'etiqueta per totes les imatges" -#: f.widgets.cc:232 +#: f.widgets.cc:228 msgid "Add/change/delete metadata for multiple images" msgstr "Afegir/canviar/esborrar metadades a múltiples imatges" -#: f.widgets.cc:233 +#: f.widgets.cc:229 msgid "Edit image location and geotags" msgstr "Editar ubicació i geoetiquetes de la imatge" -#: f.widgets.cc:234 +#: f.widgets.cc:230 msgid "Add/revise geotags for multiple images" msgstr "Afegir/revisar geo-etiquetes a múltiples imatges" -#: f.widgets.cc:235 +#: f.widgets.cc:231 msgid "Find all images for a location [date]" msgstr "Trobar totes les imatges per una ubicació [data]" -#: f.widgets.cc:236 +#: f.widgets.cc:232 msgid "Find images meeting select criteria" msgstr "Trobar imatges que compleixin un criteri de seleccio" -#: f.widgets.cc:239 +#: f.widgets.cc:235 msgid "Select object or area for editing" msgstr "Seleccionar objecte o àrea per editar" -#: f.widgets.cc:240 +#: f.widgets.cc:236 msgid "Show (outline) existing area" msgstr "Mostrar un àrea existent (contorn)" -#: f.widgets.cc:241 +#: f.widgets.cc:237 msgid "Hide existing area" msgstr "Ocultar àrea existent" -#: f.widgets.cc:242 +#: f.widgets.cc:238 msgid "Enable area for editing" msgstr "Activar àrea per editar" -#: f.widgets.cc:243 +#: f.widgets.cc:239 msgid "Disable area for editing" msgstr "Desactivat àrea per editar" -#: f.widgets.cc:244 +#: f.widgets.cc:240 msgid "Reverse existing area" msgstr "Invertir àrea existent" -#: f.widgets.cc:245 +#: f.widgets.cc:241 msgid "Erase existing area" msgstr "Esborrar àrea existent" -#: f.widgets.cc:246 +#: f.widgets.cc:242 +msgid "Copy area for later pasting into image" +msgstr "" + +#: f.widgets.cc:243 +msgid "Paste previously copied area into image" +msgstr "" + +#: f.widgets.cc:244 msgid "Open a file and paste as area into image" msgstr "Obrir un arxiu i exnganxar-lo com un àrea en la imatge" -#: f.widgets.cc:247 +#: f.widgets.cc:245 msgid "Save area to a file with transparency" msgstr "Guardar àrea en un arxiu amb tranparència" -#: f.widgets.cc:250 +#: f.widgets.cc:248 msgid "Trim/Crop margins and/or Rotate" msgstr "Retallar/tallar marges i/o girar" -#: f.widgets.cc:251 +#: f.widgets.cc:249 msgid "Upright a rotated image" msgstr "Adressar una imatge girada" -#: f.widgets.cc:252 f.widgets.cc:253 +#: f.widgets.cc:250 f.widgets.cc:251 msgid "Fast auto enhance that may work OK" msgstr "Auto-millora ràpida" -#: f.widgets.cc:254 +#: f.widgets.cc:252 msgid "Adjust brightness, contrast, color" msgstr "Ajustar brillantor, contrast, color" -#: f.widgets.cc:255 +#: f.widgets.cc:253 msgid "Add local contrast, enhance details" msgstr "Afegir contrast local, millorar detalls" -#: f.widgets.cc:256 +#: f.widgets.cc:254 msgid "Adjust brightness distribution" msgstr "Ajustar distribució de la brillantor" -#: f.widgets.cc:257 +#: f.widgets.cc:255 msgid "Flatten zonal brightness distribution" msgstr "Aplanar zones de l'histograma" -#: f.widgets.cc:258 +#: f.widgets.cc:256 msgid "Change pixel dimensions" msgstr "Canviar dimensions de píxels" -#: f.widgets.cc:259 +#: f.widgets.cc:257 msgid "Mirror image horizontally or vertically" msgstr "Enmirallar la imatge horizontalment o verticalment" -#: f.widgets.cc:260 +#: f.widgets.cc:258 msgid "Write text on image" msgstr "Escriure un text en la imatge" -#: f.widgets.cc:261 +#: f.widgets.cc:259 msgid "Write lines or arrows on image" msgstr "Dibuixar línees o fletxes en la imatge" -#: f.widgets.cc:262 +#: f.widgets.cc:260 msgid "Fix brightness uniformity across image" msgstr "Corretgir la uniformitat de la brillantor per zones de la imatge" -#: f.widgets.cc:263 +#: f.widgets.cc:261 msgid "Paint edit function gradually with mouse" msgstr "Funció d'edició pintant gradualment amb el ratolí" -#: f.widgets.cc:264 +#: f.widgets.cc:262 msgid "Leverage edits by brightness or color" msgstr "Edició per nivells de brillantor o color" -#: f.widgets.cc:265 +#: f.widgets.cc:263 msgid "Edit plugins menu or run a plugin function" msgstr "Editar menú de plugins o executar una funció de plugin" -#: f.widgets.cc:268 +#: f.widgets.cc:266 msgid "Make the image look sharper" msgstr "Fer que la imatge es vegi més enfocada" -#: f.widgets.cc:269 +#: f.widgets.cc:267 msgid "Make the image look fuzzy" msgstr "Fer que la imatge es vegi desenfocada" -#: f.widgets.cc:270 +#: f.widgets.cc:268 msgid "Filter noise from low-light photos" msgstr "Filtrar soroll de fotografíes fetes amb poca llum" -#: f.widgets.cc:271 +#: f.widgets.cc:269 msgid "Remove unwanted objects" msgstr "Eliminar objectes no desitjats" -#: f.widgets.cc:272 +#: f.widgets.cc:270 msgid "Fix red-eyes from electronic flash" msgstr "Corretgir ulls vermells produïts per un flash electrònic" -#: f.widgets.cc:273 +#: f.widgets.cc:271 msgid "Paint image pixels using the mouse" msgstr "Pintar utilitzant el ratolí" -#: f.widgets.cc:274 +#: f.widgets.cc:272 msgid "Paint image transparency using the mouse" msgstr "Pintar transparència d'imatge amb el ratolí" -#: f.widgets.cc:275 +#: f.widgets.cc:273 msgid "Make BW/color, negative/positive, sepia" msgstr "Blanc i negre/color, negatiu/positiu, sèpia" -#: f.widgets.cc:276 +#: f.widgets.cc:274 msgid "Shift/convert colors into other colors" msgstr "Canviar/convertir uns colors en altres" -#: f.widgets.cc:277 +#: f.widgets.cc:275 msgid "Adjust color using RGB or CMY colors" msgstr "Ajustar coilor usant sistema RGB o CMY" -#: f.widgets.cc:278 +#: f.widgets.cc:276 msgid "Adjust color using HSL colors" msgstr "Ajustar color usant sistema HSL" -#: f.widgets.cc:279 +#: f.widgets.cc:277 msgid "Adjust color in selected image areas" msgstr "Ajustar color en una àrea seleccionada de una imatge" -#: f.widgets.cc:280 +#: f.widgets.cc:278 msgid "Match colors on one image with another" msgstr "Fer concordar colors d'una imatge amb els d'altra" -#: f.widgets.cc:281 +#: f.widgets.cc:279 msgid "Convert to another color profile" msgstr "Convertir a un perfil de color" -#: f.widgets.cc:282 +#: f.widgets.cc:280 msgid "Remove dust spots from scanned slides" msgstr "Eliminar pols de diapositives escanejades" -#: f.widgets.cc:283 +#: f.widgets.cc:281 msgid "Smoothen edges with jaggies" msgstr "Suavitzar vores amb dents de serr" -#: f.widgets.cc:284 +#: f.widgets.cc:282 msgid "Reduce Chromatic Abberation" msgstr "Reduïr l'aberració cromàtica" -#: f.widgets.cc:285 +#: f.widgets.cc:283 msgid "Erase known hot and dark pixels" msgstr "Esborrar píxels calents i foscos coneguts" -#: f.widgets.cc:288 +#: f.widgets.cc:286 msgid "Remove curvature, esp. panoramas" msgstr "Eliminar corbatura, especialment d'un panorama" -#: f.widgets.cc:289 +#: f.widgets.cc:287 msgid "Straighten objects seen from an angle" msgstr "Redreçar objectes vistos des d'un angle" -#: f.widgets.cc:290 +#: f.widgets.cc:288 msgid "Distort image areas using the mouse" msgstr "Distorsionar una àrea de una imatge utilitzant el ratolí" -#: f.widgets.cc:291 f.widgets.cc:292 f.widgets.cc:293 +#: f.widgets.cc:289 f.widgets.cc:290 f.widgets.cc:291 msgid "Distort the whole image using the mouse" msgstr "Distorsionar tota la imatge utilitzant el ratolí" -#: f.widgets.cc:294 +#: f.widgets.cc:292 msgid "Flatten a photographed book page" msgstr "Aplanar una pàgina impresa fotografiada" -#: f.widgets.cc:297 +#: f.widgets.cc:295 msgid "Reduce color depth (posterize)" msgstr "Reduïr profunditat de color (posteritzar)" -#: f.widgets.cc:298 +#: f.widgets.cc:296 msgid "Convert to pencil sketch" msgstr "Convertir en un esbós a llapis" -#: f.widgets.cc:299 +#: f.widgets.cc:297 msgid "Convert to line drawing (edge detection)" msgstr "Convertir a un dibuix de línees (detecció de vores)" -#: f.widgets.cc:300 +#: f.widgets.cc:298 msgid "Convert to solid color drawing" msgstr "Convertir a un dibuix de colors sòlids" -#: f.widgets.cc:301 +#: f.widgets.cc:299 msgid "Graduated Blur depending on contrast" msgstr "Desenfocament graduat depenent del contrast" -#: f.widgets.cc:302 +#: f.widgets.cc:300 msgid "Create an embossed or 3D appearance" msgstr "Crear un relleu o aparença 3D" -#: f.widgets.cc:303 +#: f.widgets.cc:301 msgid "Convert to square tiles" msgstr "Convertir a rajoles quadrades" -#: f.widgets.cc:304 +#: f.widgets.cc:302 msgid "Convert to dots (Roy Lichtenstein effect)" msgstr "Convertir a punts (efecte Roy Lichtenstein" -#: f.widgets.cc:305 +#: f.widgets.cc:303 msgid "Convert into a simulated painting" msgstr "Convertir a una pintura simulada" -#: f.widgets.cc:306 +#: f.widgets.cc:304 msgid "Change brightness or color radially" msgstr "Canviar brillantor o color radialment" -#: f.widgets.cc:307 +#: f.widgets.cc:305 msgid "Add texture to an image" msgstr "Afegir textura a una imatge" -#: f.widgets.cc:308 +#: f.widgets.cc:306 msgid "Tile image with a repeating pattern" msgstr "Enrajolñar imatge amb un patrò repetitiu" -#: f.widgets.cc:309 +#: f.widgets.cc:307 msgid "Create a mosaic with tiles made from all images" msgstr "Crear un mosaïc amb rajoles fetes de totes les imatges" -#: f.widgets.cc:310 +#: f.widgets.cc:308 msgid "Process an image using a custom kernel" msgstr "Processar una imatge fent servir una matriu personalitzada" -#: f.widgets.cc:311 +#: f.widgets.cc:309 msgid "Warp an image with a wave pattern" msgstr "Deformar una imatge amb ​un patró d'ones" -#: f.widgets.cc:312 +#: f.widgets.cc:310 msgid "Blur an image in the direction of mouse drags" msgstr "Desenfocar una imatge en la direcció del moviment del ratolí" -#: f.widgets.cc:315 +#: f.widgets.cc:313 msgid "Combine bright/dark images for better detail" msgstr "Combinar imatges fosques/il.luminadas per millorar detalls" -#: f.widgets.cc:316 +#: f.widgets.cc:314 msgid "Combine near/far focus images for deeper focus" msgstr "" "Combinar imatges enfocades aprop/lluny per obtenir major profunditat de camp" -#: f.widgets.cc:317 +#: f.widgets.cc:315 msgid "Combine images to erase passing people, etc." msgstr "Combinar imatges per esborrar vianants, cotxes, etc" -#: f.widgets.cc:318 +#: f.widgets.cc:316 msgid "Combine noisy images into a low-noise image" msgstr "Combinar imatges amb soroll en imatges amb poc soroll" -#: f.widgets.cc:319 +#: f.widgets.cc:317 msgid "Combine images into a panorama" msgstr "Combinar imatges en un panorama" -#: f.widgets.cc:320 +#: f.widgets.cc:318 msgid "Combine images into a vertical panorama" msgstr "Combinar imatges en un panorama vertical" -#: f.widgets.cc:321 +#: f.widgets.cc:319 msgid "Combine images into a panorama (panorama tools)" msgstr "Combinar imatges en un panorama (panorama tools)" -#: f.widgets.cc:322 +#: f.widgets.cc:320 msgid "Arrange images and text in a layout (montage)" msgstr "Ordenar imatges i text en una capa (muntatge)" -#: f.widgets.cc:325 +#: f.widgets.cc:323 msgid "Index new files and make thumbnails" msgstr "Indexar nous arxius i fer miniatures" -#: f.widgets.cc:326 +#: f.widgets.cc:324 msgid "Change user preferences" msgstr "Canviar preferències d'usuari" -#: f.widgets.cc:327 +#: f.widgets.cc:325 msgid "Change Keyboard Shortcut Keys" msgstr "Canviar tecles drecera" -#: f.widgets.cc:328 +#: f.widgets.cc:326 msgid "Show a brightness distribution graph" msgstr "Mostrar histograma (distribució de la brillantor)" -#: f.widgets.cc:329 +#: f.widgets.cc:327 msgid "Show or revise grid lines" msgstr "Mostrar o amagar línies de graella" -#: f.widgets.cc:330 +#: f.widgets.cc:328 msgid "Change color of foreground lines" msgstr "Canviar color a línies de contorn" -#: f.widgets.cc:331 +#: f.widgets.cc:329 msgid "Show RGB colors at mouse click" msgstr "Mostrar colors RGB amb un clic de ratolí" -#: f.widgets.cc:332 +#: f.widgets.cc:330 msgid "Magnify image around the mouse position" msgstr "Augmenta la imatge al voltant de la posició del ratolí" -#: f.widgets.cc:333 +#: f.widgets.cc:331 msgid "Highlight darkest and brightest pixels" msgstr "Resaltar píxels més foscos o més brillants" -#: f.widgets.cc:334 +#: f.widgets.cc:332 msgid "Chart to adjust monitor color" msgstr "Carta per ajustar el color del monitor" -#: f.widgets.cc:335 +#: f.widgets.cc:333 msgid "Chart to adjust monitor gamma" msgstr "Carta per ajustar la gamma del monitor" -#: f.widgets.cc:336 +#: f.widgets.cc:334 msgid "Change the GUI language" msgstr "Canviar idioma de la interfície d'usuari" -#: f.widgets.cc:337 +#: f.widgets.cc:335 msgid "Report missing translations" msgstr "Informe de traduccions que falten" -#: f.widgets.cc:338 -msgid "Search all image files and report duplicates" -msgstr "Buscar totes les imatges i informar dels duplicats" +#: f.widgets.cc:336 +msgid "Calibrate printer colors" +msgstr "" -#: f.widgets.cc:339 +#: f.widgets.cc:337 msgid "Memory and CPU (to terminal/logfile)" msgstr "Memoria i CPU (al terminal/arxiu de registre)" -#: f.widgets.cc:343 +#: f.widgets.cc:341 msgid "Rename/convert/resize/move multiple files" msgstr "Reanomenar/convertir/redimensionar/moure múltiples arxius" -#: f.widgets.cc:344 +#: f.widgets.cc:342 msgid "Upright multiple rotated image files" msgstr "Adressar múltiples imatges girades" -#: f.widgets.cc:345 +#: f.widgets.cc:343 msgid "Delete or Trash multiple files" msgstr "Esborrar/eliminar múltiples arxius" -#: f.widgets.cc:346 +#: f.widgets.cc:344 msgid "Convert camera RAW files using DCraw" msgstr "Convertir arxius RAW usant DCraw" -#: f.widgets.cc:347 +#: f.widgets.cc:345 msgid "Convert camera RAW files using Raw Therapee" msgstr "Convertir arxius RAW usant RawTherapee" -#: f.widgets.cc:348 +#: f.widgets.cc:346 msgid "Burn selected image files to CD or DVD" msgstr "Gravar imatges seleccionades en un CD/DVD" -#: f.widgets.cc:352 +#: f.widgets.cc:347 +msgid "Search all image files and report duplicates" +msgstr "Buscar totes les imatges i informar dels duplicats" + +#: f.widgets.cc:351 msgid "Quick Start mini-guide" msgstr "Minni guia d'inici ràpid" -#: f.widgets.cc:353 +#: f.widgets.cc:352 msgid "Read the user guide" msgstr "Llegir la guia d'usuari" -#: f.widgets.cc:354 +#: f.widgets.cc:353 msgid "Recent user guide changes" msgstr "Canvis recents a la guia d'usuari" -#: f.widgets.cc:355 +#: f.widgets.cc:354 msgid "Summary of image edit functions" msgstr "Resum de les funcions d'edició d'imatge" -#: f.widgets.cc:356 +#: f.widgets.cc:355 msgid "Technical installation notes" msgstr "Notes tècniques d'instal.lació " -#: f.widgets.cc:357 +#: f.widgets.cc:356 msgid "List updates by Fotoxx version" msgstr "Llistar actualitzacions per versió de Fotoxx" -#: f.widgets.cc:358 +#: f.widgets.cc:357 msgid "View the log file and error messages" msgstr "Veure l'arxiu de registre i missatges d'error" -#: f.widgets.cc:359 +#: f.widgets.cc:358 msgid "How to do Fotoxx translations" msgstr "Com fer traduccións de Fotoxx" -#: f.widgets.cc:360 +#: f.widgets.cc:359 msgid "Show the Fotoxx web page" msgstr "Mostrar la pàgina web de Fotoxx" -#: f.widgets.cc:361 +#: f.widgets.cc:360 msgid "Version, license, contact, credits" msgstr "Versió, llicència, contacte, crèdits" -#: f.widgets.cc:364 +#: f.widgets.cc:363 msgid "Organize images into albums" msgstr "Organitzar imatges en àlbums" -#: f.widgets.cc:365 +#: f.widgets.cc:364 msgid "Start a slide show" msgstr "Iniciar un diaporama" -#: f.widgets.cc:366 +#: f.widgets.cc:365 msgid "Set desktop image from current Fotoxx image" msgstr "Estaablir fons d'esciptori des de l'actual imatge de Fotoxx" -#: f.widgets.cc:367 +#: f.widgets.cc:366 msgid "Cycle desktop images from a Fotoxx album" msgstr "Fons d'escriptori cíclics de d'un àlbum de Fotoxx" -#: f.widgets.cc:389 +#: f.widgets.cc:388 msgid "New Window" msgstr "Nova finestra" -#: f.widgets.cc:391 +#: f.widgets.cc:390 msgid "Open Previous File" msgstr "Obrir arxiu anterior" -#: f.widgets.cc:392 +#: f.widgets.cc:391 msgid "Recently Seen Images" msgstr "Imatges vistes recentment " -#: f.widgets.cc:393 +#: f.widgets.cc:392 msgid "Newest Images" msgstr "Imatges més recents" -#: f.widgets.cc:394 +#: f.widgets.cc:393 msgid "Open RAW (ufraw)" msgstr "Obrir RAW (ufraw)" -#: f.widgets.cc:395 +#: f.widgets.cc:394 msgid "Open RAW (Raw Therapee)" msgstr "Obrir RAW (Raw Therapee)" -#: f.widgets.cc:397 +#: f.widgets.cc:396 msgid "New Blank Image" msgstr "Nova imatge buida" -#: f.widgets.cc:399 +#: f.widgets.cc:398 msgid "Delete Image File" msgstr "Esborrar imatge" -#: f.widgets.cc:400 +#: f.widgets.cc:399 msgid "Print Image" msgstr "Imprimir imatge" -#: f.widgets.cc:401 f.widgets.cc:538 +#: f.widgets.cc:400 f.widgets.cc:543 msgid "Set Desktop Image" msgstr "Establir fons d'escriptori" -#: f.widgets.cc:405 +#: f.widgets.cc:404 msgid "View Metadata (short)" msgstr "Veure metadades (curt)" -#: f.widgets.cc:406 +#: f.widgets.cc:405 msgid "View Metadata (long)" msgstr "Veure metadades (llarg)" -#: f.widgets.cc:407 +#: f.widgets.cc:406 msgid "Show Captions on Image" msgstr "Mostrar llegendes a la imatge" -#: f.widgets.cc:409 +#: f.widgets.cc:408 msgid "Edit Any Metadata" msgstr "Editar qualsevol metadada" -#: f.widgets.cc:412 f.widgets.cc:531 +#: f.widgets.cc:411 f.widgets.cc:534 msgid "Batch Rename Tags" msgstr "Reanomenar etiquetes en lot" -#: f.widgets.cc:413 f.widgets.cc:532 +#: f.widgets.cc:412 f.widgets.cc:535 msgid "Batch Add/Change Metadata" msgstr "Afegir/canviar metadades en lot" -#: f.widgets.cc:416 f.widgets.cc:606 +#: f.widgets.cc:415 f.widgets.cc:537 f.widgets.cc:611 msgid "Images by Geotag" msgstr "Imatges per Geotag" -#: f.widgets.cc:417 f.widgets.cc:607 +#: f.widgets.cc:416 f.widgets.cc:538 f.widgets.cc:612 msgid "Search Images" msgstr "Buscar imatges" -#: f.widgets.cc:420 fotoxx.h:1156 +#: f.widgets.cc:419 fotoxx.h:1164 msgid "Select" msgstr "Seleccionar" -#: f.widgets.cc:421 fotoxx.h:1158 +#: f.widgets.cc:420 fotoxx.h:1166 msgid "Show" msgstr "Mostrar" -#: f.widgets.cc:422 fotoxx.h:1112 +#: f.widgets.cc:421 fotoxx.h:1120 msgid "Hide" msgstr "Ocultar" -#: f.widgets.cc:423 fotoxx.h:1098 +#: f.widgets.cc:422 fotoxx.h:1106 msgid "Enable" msgstr "Activar" -#: f.widgets.cc:424 fotoxx.h:1094 +#: f.widgets.cc:423 fotoxx.h:1102 msgid "Disable" msgstr "Desactivar" -#: f.widgets.cc:425 fotoxx.h:1115 +#: f.widgets.cc:424 fotoxx.h:1123 msgid "Invert" msgstr "Invertir" -#: f.widgets.cc:426 fotoxx.h:1172 +#: f.widgets.cc:425 fotoxx.h:1180 msgid "Unselect" msgstr "Deseleccionar" +#: f.widgets.cc:426 +msgid "Copy Area" +msgstr "" + #: f.widgets.cc:427 +msgid "Paste Area" +msgstr "" + +#: f.widgets.cc:428 msgid "Open Area File" msgstr "Obrir arxiu d'àrea" -#: f.widgets.cc:428 +#: f.widgets.cc:429 msgid "Save Area File" msgstr "Desar arxiu d'àrea" -#: f.widgets.cc:433 +#: f.widgets.cc:434 msgid "Voodoo 1" msgstr "Auto-millora 1" -#: f.widgets.cc:434 +#: f.widgets.cc:435 msgid "Voodoo 2" msgstr "Auto-millora 2" -#: f.widgets.cc:436 +#: f.widgets.cc:437 msgid "Adjust Brightness Dist." msgstr "Ajustar hitograma" -#: f.widgets.cc:437 f.widgets.cc:676 +#: f.widgets.cc:438 f.widgets.cc:681 msgid "Zonal Flatten" msgstr "Aplanat zonañl" -#: f.widgets.cc:441 +#: f.widgets.cc:442 msgid "Add Text" msgstr "Afegir text" -#: f.widgets.cc:442 +#: f.widgets.cc:443 msgid "Add Lines" msgstr "Afegir línees" -#: f.widgets.cc:445 +#: f.widgets.cc:446 msgid "Plugins" msgstr "Plugins" -#: f.widgets.cc:450 +#: f.widgets.cc:451 msgid "Denoise" msgstr "Reduïr soroll" -#: f.widgets.cc:452 +#: f.widgets.cc:453 msgid "Red Eyes" msgstr "Ulls vermells" -#: f.widgets.cc:457 +#: f.widgets.cc:458 msgid "Adjust RGB/CMY" msgstr "Ajustar RGB7CMY" -#: f.widgets.cc:458 +#: f.widgets.cc:459 msgid "Adjust HSL" msgstr "Ajustar HSL" -#: f.widgets.cc:459 +#: f.widgets.cc:460 msgid "Brightness Ramp" msgstr "Rampa de brillantor" -#: f.widgets.cc:461 +#: f.widgets.cc:462 msgid "Match Colors" msgstr "Concordar colors" -#: f.widgets.cc:462 +#: f.widgets.cc:463 msgid "Color Profile" msgstr "Perfil de color" -#: f.widgets.cc:464 +#: f.widgets.cc:465 msgid "Anti-Alias" msgstr "Suavitzar contorns" -#: f.widgets.cc:470 +#: f.widgets.cc:471 msgid "Fix Perspective" msgstr "Corregir perspectiva" -#: f.widgets.cc:475 +#: f.widgets.cc:476 msgid "Flatten Book Page" msgstr "Aplanar una pàgina impresa" -#: f.widgets.cc:478 +#: f.widgets.cc:479 msgid "Color Depth" msgstr "Profunditat de color" -#: f.widgets.cc:479 +#: f.widgets.cc:480 msgid "Sketch" msgstr " Esbós" -#: f.widgets.cc:483 +#: f.widgets.cc:484 msgid "Embossing" msgstr "Relleu" -#: f.widgets.cc:485 +#: f.widgets.cc:486 msgid "Dots" msgstr "Punts" -#: f.widgets.cc:486 +#: f.widgets.cc:487 msgid "Painting" msgstr "Pintura" -#: f.widgets.cc:488 +#: f.widgets.cc:489 msgid "Texture" msgstr "Textura" -#: f.widgets.cc:490 +#: f.widgets.cc:491 msgid "Mosaic" msgstr "Mosaïc" -#: f.widgets.cc:496 +#: f.widgets.cc:497 msgid "High Dynamic Range" msgstr "HDR alt rang dinàmic" -#: f.widgets.cc:497 +#: f.widgets.cc:498 msgid "High Depth of Field" msgstr "HDF alta profunditat de camp" -#: f.widgets.cc:498 +#: f.widgets.cc:499 msgid "Stack/Paint" msgstr "Apilar/Pintar" -#: f.widgets.cc:499 +#: f.widgets.cc:500 msgid "Stack/Noise" msgstr "Apilar/Soroll" -#: f.widgets.cc:500 +#: f.widgets.cc:501 msgid "Panorama" msgstr "Panorama" -#: f.widgets.cc:501 +#: f.widgets.cc:502 msgid "Vertical Panorama" msgstr "Panorama vertical" -#: f.widgets.cc:502 +#: f.widgets.cc:503 msgid "PT Panorama" msgstr "PT panorama" -#: f.widgets.cc:503 +#: f.widgets.cc:504 msgid "Mashup" msgstr "Muntatge" -#: f.widgets.cc:508 +#: f.widgets.cc:509 msgid "Keyboard Shortcuts" msgstr "Tecles drecera" -#: f.widgets.cc:509 +#: f.widgets.cc:510 msgid "Show Brightness Dist." msgstr "Mostrar dist. de brillantor" -#: f.widgets.cc:514 +#: f.widgets.cc:515 msgid "Dark/Bright Pixels" msgstr "Sobre/subexposició" -#: f.widgets.cc:515 +#: f.widgets.cc:516 msgid "Monitor Color" msgstr "Color del monitor" -#: f.widgets.cc:517 +#: f.widgets.cc:518 msgid "Change Language" msgstr "Canviar idioma" -#: f.widgets.cc:518 +#: f.widgets.cc:519 msgid "Missing Translations" msgstr "Traduccions que falten" -#: f.widgets.cc:520 +#: f.widgets.cc:522 msgid "Resources" msgstr "Recursos" -#: f.widgets.cc:527 +#: f.widgets.cc:529 msgid "Batch RAW (DCraw)" msgstr "Convertir Raw en lot (DCraw)" -#: f.widgets.cc:528 +#: f.widgets.cc:530 msgid "Batch RAW (Raw Therapee)" msgstr "Convertir Raw en lot (RawTherapee)" -#: f.widgets.cc:529 +#: f.widgets.cc:531 msgid "Burn Images to CD/DVD" msgstr "Gravar imatges en un CD/DVD" -#: f.widgets.cc:539 +#: f.widgets.cc:544 msgid "Cycle Desktop Image" msgstr "Fons d'escriptori cíclic" -#: f.widgets.cc:542 fotoxx-15.08.cc:5513 -msgid "Quick Start" -msgstr "Inici ràpid" - -#: f.widgets.cc:543 fotoxx-15.08.cc:5516 -msgid "User Guide" -msgstr "Guia d'usuari" - -#: f.widgets.cc:544 fotoxx-15.08.cc:5519 -msgid "User Guide Changes" -msgstr "Canvis a la guia d'usuari" - -#: f.widgets.cc:545 fotoxx-15.08.cc:5525 -msgid "Edit Functions Summary" -msgstr "Resum de les funcions d'edició" - -#: f.widgets.cc:546 fotoxx-15.08.cc:5522 -msgid "README" -msgstr "LLEGEIX-ME" - -#: f.widgets.cc:547 fotoxx-15.08.cc:5528 -msgid "Change Log" -msgstr "Registre de canvis" - -#: f.widgets.cc:548 fotoxx-15.08.cc:5531 -msgid "Log File" -msgstr "Arxiu de registre" - -#: f.widgets.cc:549 fotoxx-15.08.cc:5534 -msgid "Translations" -msgstr "Traduccions" - -#: f.widgets.cc:550 fotoxx-15.08.cc:5537 -msgid "Home Page" -msgstr "Pàgina web de Fotoxx" - -#: f.widgets.cc:551 fotoxx-15.08.cc:5540 -msgid "About" -msgstr "Sobre Fotoxx " - -#: f.widgets.cc:556 f.widgets.cc:579 f.widgets.cc:601 +#: f.widgets.cc:561 f.widgets.cc:584 f.widgets.cc:606 msgid "Gallery" msgstr "Galeria" -#: f.widgets.cc:557 f.widgets.cc:580 f.widgets.cc:602 +#: f.widgets.cc:562 f.widgets.cc:585 f.widgets.cc:607 msgid "World Maps" msgstr "Mapes mundials" -#: f.widgets.cc:559 +#: f.widgets.cc:564 msgid "Favorites" msgstr "Favorits" -#: f.widgets.cc:561 fotoxx.h:1152 +#: f.widgets.cc:566 fotoxx.h:1160 msgid "Save" msgstr "Guardar" -#: f.widgets.cc:562 +#: f.widgets.cc:567 msgid "Prev/Next" msgstr "Ant/Seg" -#: f.widgets.cc:563 +#: f.widgets.cc:568 msgid "Metadata" msgstr "Metadades" -#: f.widgets.cc:564 +#: f.widgets.cc:569 msgid "Areas" msgstr "Àrees" -#: f.widgets.cc:565 fotoxx.h:1097 +#: f.widgets.cc:570 fotoxx.h:1105 msgid "Edit" msgstr "Editar" -#: f.widgets.cc:566 +#: f.widgets.cc:571 msgid "Repair" msgstr "Reparar" -#: f.widgets.cc:567 +#: f.widgets.cc:572 msgid "Bend" msgstr "Deformar" -#: f.widgets.cc:568 +#: f.widgets.cc:573 msgid "Effects" msgstr "Efectes" -#: f.widgets.cc:569 +#: f.widgets.cc:574 msgid "Combine" msgstr "Combinar" -#: f.widgets.cc:570 +#: f.widgets.cc:575 msgid "Undo/Redo" msgstr "Desfer/Refer" -#: f.widgets.cc:571 +#: f.widgets.cc:576 msgid "Tools" msgstr "Eines" -#: f.widgets.cc:572 f.widgets.cc:594 fotoxx-15.08.cc:5544 fotoxx.h:1111 -msgid "Help" -msgstr "Ajuda" - -#: f.widgets.cc:582 +#: f.widgets.cc:587 msgid "Sync.G" msgstr "Sincr.G" -#: f.widgets.cc:583 +#: f.widgets.cc:588 msgid "Albums" msgstr "Àlbums" -#: f.widgets.cc:584 +#: f.widgets.cc:589 msgid "Bookmarks" msgstr "Marques" -#: f.widgets.cc:593 +#: f.widgets.cc:598 msgid "Batch" msgstr "" -#: f.widgets.cc:604 +#: f.widgets.cc:609 msgid "Choose Map" msgstr "Escollir mapa" -#: f.widgets.cc:605 +#: f.widgets.cc:610 msgid "Search Range" msgstr "Rang de cerca" -#: f.widgets.cc:613 fotoxx.h:1170 +#: f.widgets.cc:618 fotoxx.h:1178 msgid "Undo" msgstr "Desfer" -#: f.widgets.cc:614 fotoxx.h:1143 +#: f.widgets.cc:619 fotoxx.h:1151 msgid "Redo" msgstr "Refer" -#: f.widgets.cc:655 +#: f.widgets.cc:660 msgid "Popup Image" msgstr "Imatge emergent" -#: f.widgets.cc:656 +#: f.widgets.cc:661 msgid "Popup Image (add)" msgstr "Imatge emergent (afegir)" -#: f.widgets.cc:660 fotoxx.h:1146 +#: f.widgets.cc:665 fotoxx.h:1154 msgid "Rename" msgstr "Canviar el nom" -#: f.widgets.cc:661 +#: f.widgets.cc:666 msgid "Copy to Location" msgstr "Copiar a la ubicació" -#: f.widgets.cc:662 +#: f.widgets.cc:667 msgid "Move to Location" msgstr "Moure a la ubicació" -#: f.widgets.cc:663 +#: f.widgets.cc:668 msgid "Copy to Clipboard" msgstr "Copiar al portapapers" -#: f.widgets.cc:664 +#: f.widgets.cc:669 msgid "Remove from Album" msgstr "Eliminar de l'àlbum" -#: f.widgets.cc:665 +#: f.widgets.cc:670 msgid "Cut to Image Cache" msgstr " Tallar a la cache d'imatge" -#: f.widgets.cc:666 +#: f.widgets.cc:671 msgid "Copy to Image Cache" msgstr "Copiar a la cache d'imatge " -#: f.widgets.cc:667 +#: f.widgets.cc:672 msgid "Paste Image Cache Here (clear)" msgstr "Enganxar aquí cache d'imatge (esborrar) " -#: f.widgets.cc:668 +#: f.widgets.cc:673 msgid "Paste Image Cache Here (keep)" msgstr "Enganxar aquí cache d'imatge (guardar) " -#: f.widgets.cc:669 +#: f.widgets.cc:674 msgid "Paste Current Image File Here" msgstr "Enganxar aquí la iamtge actual" -#: f.widgets.cc:673 +#: f.widgets.cc:678 msgid "Voodoo Enhance" msgstr "Millora automàtica" -#: f.widgets.cc:675 +#: f.widgets.cc:680 msgid "Brightness Dist." msgstr "Dist. de la brillantor" -#: f.widgets.cc:678 +#: f.widgets.cc:683 msgid "Select Area" msgstr "Select Area" -#: f.widgets.cc:681 fotoxx.h:1166 +#: f.widgets.cc:686 fotoxx.h:1174 msgid "Trash" msgstr "Eliminar" -#: f.widgets.cc:806 +#: f.widgets.cc:811 msgid "Image Locations" msgstr "Ubicació d'imatge" -#: fotoxx-15.08.cc:376 +#: fotoxx-15.09.cc:361 msgid "Please install missing programs:" msgstr "Si us plau instal.leu programas requerits:" -#: fotoxx-15.08.cc:667 +#: fotoxx-15.09.cc:652 msgid "Kill active dialog?" msgstr "Tancar diàleg actiu?" -#: fotoxx-15.08.cc:742 +#: fotoxx-15.09.cc:723 msgid "(reduced)" msgstr "(reduït)" -#: fotoxx-15.08.cc:743 +#: fotoxx-15.09.cc:724 msgid "area active" msgstr "àrea activa" -#: fotoxx-15.08.cc:744 +#: fotoxx-15.09.cc:725 msgid "dialog open" msgstr "dialog obert" -#: fotoxx-15.08.cc:745 -msgid "BUSY" -msgstr "TREBALLANT" - -#: fotoxx-15.08.cc:746 +#: fotoxx-15.09.cc:726 msgid "blocked" msgstr "bloquejat" -#: fotoxx-15.08.cc:796 +#: fotoxx-15.09.cc:776 msgid "edits" msgstr "edicions" -#: fotoxx-15.08.cc:2805 +#: fotoxx-15.09.cc:2756 msgid "Exceed 50 anchor points" msgstr "Excedits punts d'anclatge" -#: fotoxx-15.08.cc:3018 +#: fotoxx-15.09.cc:2969 msgid "load curve from a file" msgstr "carregar corba des d'un arxiu" -#: fotoxx-15.08.cc:3091 +#: fotoxx-15.09.cc:3042 msgid "save curve to a file" msgstr "guardar corba en un arxiu" -#: fotoxx-15.08.cc:3161 +#: fotoxx-15.09.cc:3112 msgid "Too many edits, please save image" msgstr "Massa edicions, si us plau guardeu la imatge" -#: fotoxx-15.08.cc:3180 +#: fotoxx-15.09.cc:3131 msgid "" "Select area not active.\n" "Continue?" @@ -4464,373 +4567,373 @@ "Àrea seleccionada no activa.\n" "Continuar?" -#: fotoxx-15.08.cc:3435 +#: fotoxx-15.09.cc:3385 msgid "Load settings from file" msgstr "Carregar ajustaments des d'un arxiu" -#: fotoxx-15.08.cc:3532 +#: fotoxx-15.09.cc:3482 msgid "file data does not fit dialog" msgstr "les dades d'arxiu no s'ajusten al diàleg" -#: fotoxx-15.08.cc:3542 +#: fotoxx-15.09.cc:3492 msgid "Save settings to a file" msgstr "Desar ajustos en un arxiu" -#: fotoxx-15.08.cc:3835 +#: fotoxx-15.09.cc:3781 msgid "This action will discard changes to current image" msgstr "Aquesta acció descxartarà els canvis a la imatge actual" -#: fotoxx-15.08.cc:3836 fotoxx-15.08.cc:3837 +#: fotoxx-15.09.cc:3782 fotoxx-15.09.cc:3783 msgid "prior function still active" msgstr "funció anterior encara activa" -#: fotoxx-15.08.cc:3838 fotoxx.h:1116 +#: fotoxx-15.09.cc:3784 fotoxx.h:1124 msgid "Keep" msgstr "Guardar" -#: fotoxx-15.08.cc:3839 +#: fotoxx-15.09.cc:3785 msgid "Discard" msgstr "Descartar" -#: fotoxx.h:1068 +#: fotoxx.h:1076 msgid "Add" msgstr "Afegir" -#: fotoxx.h:1069 +#: fotoxx.h:1077 msgid "Add All" msgstr "Afegir tot" -#: fotoxx.h:1071 +#: fotoxx.h:1079 msgid "Amount" msgstr "Quantitat" -#: fotoxx.h:1072 +#: fotoxx.h:1080 msgid "Angle" msgstr "Angle" -#: fotoxx.h:1073 +#: fotoxx.h:1081 msgid "Apply" msgstr "Aplicar" -#: fotoxx.h:1074 +#: fotoxx.h:1082 msgid "Auto" msgstr "Auto" -#: fotoxx.h:1075 +#: fotoxx.h:1083 msgid "Black" msgstr "Negre" -#: fotoxx.h:1076 +#: fotoxx.h:1084 msgid "Blend Width" msgstr "Barrejar per ample" -#: fotoxx.h:1078 zfuncs.cc:10061 +#: fotoxx.h:1086 zfuncs.cc:10054 msgid "bottom" msgstr "a baix" -#: fotoxx.h:1080 +#: fotoxx.h:1088 msgid "Browse" msgstr "Examinar" -#: fotoxx.h:1081 +#: fotoxx.h:1089 msgid "Cancel" msgstr "Cancel.lar" -#: fotoxx.h:1082 +#: fotoxx.h:1090 msgid "center" msgstr "centre" -#: fotoxx.h:1083 +#: fotoxx.h:1091 msgid "Choose" msgstr "Escollir" -#: fotoxx.h:1084 +#: fotoxx.h:1092 msgid "Clear" msgstr "Esborrar" -#: fotoxx.h:1085 +#: fotoxx.h:1093 msgid "Color" msgstr "Color" -#: fotoxx.h:1086 +#: fotoxx.h:1094 msgid "continue" msgstr "continuar" -#: fotoxx.h:1088 +#: fotoxx.h:1096 msgid "Copy" msgstr "Copiar" -#: fotoxx.h:1089 +#: fotoxx.h:1097 msgid "Create" msgstr "Crear" -#: fotoxx.h:1090 +#: fotoxx.h:1098 msgid "Curve File:" msgstr "Arxiu de corba:" -#: fotoxx.h:1091 +#: fotoxx.h:1099 msgid "Cut" msgstr "Tallar" -#: fotoxx.h:1092 +#: fotoxx.h:1100 msgid "Deband" msgstr "Eliminar bandes" -#: fotoxx.h:1093 +#: fotoxx.h:1101 msgid "Delete" msgstr "Esborrar" -#: fotoxx.h:1095 +#: fotoxx.h:1103 msgid "Done" msgstr "Fet" -#: fotoxx.h:1096 +#: fotoxx.h:1104 msgid "edge" msgstr "vora" -#: fotoxx.h:1099 +#: fotoxx.h:1107 msgid "Erase" msgstr "Esborrar" -#: fotoxx.h:1100 +#: fotoxx.h:1108 msgid "Fetch" msgstr "Extreure" -#: fotoxx.h:1101 +#: fotoxx.h:1109 msgid "output file already exists" msgstr "l'arxiu de sortida ja existeix" -#: fotoxx.h:1102 +#: fotoxx.h:1110 #, c-format msgid "%d files selected" msgstr "%d arxius seleccionats" -#: fotoxx.h:1103 +#: fotoxx.h:1111 msgid "Find" msgstr "Trobar" -#: fotoxx.h:1104 +#: fotoxx.h:1112 msgid "Finish" msgstr "Acabar" -#: fotoxx.h:1105 +#: fotoxx.h:1113 msgid "Flatten" msgstr "Aplanar" -#: fotoxx.h:1106 +#: fotoxx.h:1114 msgid "Font" msgstr "Tipus de lletra" -#: fotoxx.h:1107 +#: fotoxx.h:1115 msgid "Geotags" msgstr "Geo-etiquetes" -#: fotoxx.h:1109 +#: fotoxx.h:1117 msgid "Grid" msgstr "Graella" -#: fotoxx.h:1110 +#: fotoxx.h:1118 msgid "Height" msgstr "Alçada" -#: fotoxx.h:1113 +#: fotoxx.h:1121 msgid "Images" msgstr " imatges" -#: fotoxx.h:1114 +#: fotoxx.h:1122 msgid "Insert" msgstr "Insertar" -#: fotoxx.h:1117 zfuncs.cc:10065 +#: fotoxx.h:1125 zfuncs.cc:10058 msgid "left" msgstr "esquerra" -#: fotoxx.h:1118 +#: fotoxx.h:1126 msgid "limit" msgstr "limit" -#: fotoxx.h:1119 +#: fotoxx.h:1127 msgid "Load" msgstr "Carregar" -#: fotoxx.h:1120 +#: fotoxx.h:1128 msgid "Make" msgstr "Fer" -#: fotoxx.h:1122 +#: fotoxx.h:1130 msgid "Map" msgstr "Mapa" -#: fotoxx.h:1123 +#: fotoxx.h:1131 msgid "Max" msgstr "Max" -#: fotoxx.h:1124 +#: fotoxx.h:1132 msgid "Negative" msgstr "Negatiu" -#: fotoxx.h:1125 +#: fotoxx.h:1133 msgid "New" msgstr "Nou" -#: fotoxx.h:1126 +#: fotoxx.h:1134 msgid "Next" msgstr "Següent" -#: fotoxx.h:1127 zfuncs.cc:9147 +#: fotoxx.h:1135 zfuncs.cc:9148 msgid "No" msgstr "No" -#: fotoxx.h:1128 +#: fotoxx.h:1136 msgid "no images" msgstr "sense imatges" -#: fotoxx.h:1130 +#: fotoxx.h:1138 msgid "no selection" msgstr "sense selecció" -#: fotoxx.h:1131 +#: fotoxx.h:1139 msgid "OK" msgstr "OK" -#: fotoxx.h:1133 +#: fotoxx.h:1141 msgid "Paste" msgstr "Enganxar" -#: fotoxx.h:1134 +#: fotoxx.h:1142 msgid "Pause" msgstr "Pausa" -#: fotoxx.h:1135 +#: fotoxx.h:1143 msgid "Percent" msgstr "Percentatge" -#: fotoxx.h:1137 +#: fotoxx.h:1145 msgid "Presets" msgstr "Predefinits" -#: fotoxx.h:1138 +#: fotoxx.h:1146 msgid "Prev" msgstr "Anterior" -#: fotoxx.h:1139 +#: fotoxx.h:1147 msgid "Proceed" msgstr "Procedir" -#: fotoxx.h:1141 +#: fotoxx.h:1149 msgid "range" msgstr "rang" -#: fotoxx.h:1144 +#: fotoxx.h:1152 msgid "Reduce" msgstr "Reduïr" -#: fotoxx.h:1145 +#: fotoxx.h:1153 msgid "Remove" msgstr "Eliminar" -#: fotoxx.h:1147 +#: fotoxx.h:1155 msgid "Replace" msgstr "" -#: fotoxx.h:1148 +#: fotoxx.h:1156 msgid "Reserved" msgstr "Reservat" -#: fotoxx.h:1149 +#: fotoxx.h:1157 msgid "Reset" msgstr "Restablir" -#: fotoxx.h:1150 zfuncs.cc:10069 +#: fotoxx.h:1158 zfuncs.cc:10062 msgid "right" msgstr "dreta" -#: fotoxx.h:1151 +#: fotoxx.h:1159 msgid "Rotate" msgstr "Rotar" -#: fotoxx.h:1153 +#: fotoxx.h:1161 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:1154 +#: fotoxx.h:1162 msgid "Search" msgstr "Buscar" -#: fotoxx.h:1155 +#: fotoxx.h:1163 msgid "Seconds" msgstr "Segons" -#: fotoxx.h:1159 +#: fotoxx.h:1167 msgid "Size" msgstr "Tamany" -#: fotoxx.h:1160 +#: fotoxx.h:1168 msgid "Start" msgstr "Començar" -#: fotoxx.h:1161 +#: fotoxx.h:1169 msgid "Strength" msgstr "Força" -#: fotoxx.h:1162 +#: fotoxx.h:1170 msgid "Threshold" msgstr "Llindar" -#: fotoxx.h:1163 +#: fotoxx.h:1171 #, c-format msgid "exceed %d files" msgstr "excedeix %d arxius" -#: fotoxx.h:1164 zfuncs.cc:10057 +#: fotoxx.h:1172 zfuncs.cc:10050 msgid "top" msgstr "adalt" -#: fotoxx.h:1165 +#: fotoxx.h:1173 msgid "Transparency" msgstr "Transparència" -#: fotoxx.h:1167 +#: fotoxx.h:1175 msgid "Trim" msgstr "Retallar" -#: fotoxx.h:1168 +#: fotoxx.h:1176 msgid "Undo All" msgstr "Desfer-ho tot" -#: fotoxx.h:1169 +#: fotoxx.h:1177 msgid "Undo Last" msgstr "Desfer l'últim" -#: fotoxx.h:1171 +#: fotoxx.h:1179 msgid "Unfinish" msgstr "No acabat" -#: fotoxx.h:1173 +#: fotoxx.h:1181 msgid "View" msgstr "Veure" -#: fotoxx.h:1174 +#: fotoxx.h:1182 msgid "Web" msgstr "Web" -#: fotoxx.h:1175 +#: fotoxx.h:1183 msgid "White" msgstr "Blanc" -#: fotoxx.h:1176 +#: fotoxx.h:1184 msgid "Width" msgstr "Ample" -#: fotoxx.h:1177 +#: fotoxx.h:1185 msgid "x-offset" msgstr "desplaçament X" -#: fotoxx.h:1178 +#: fotoxx.h:1186 msgid "y-offset" msgstr "desplaçament Y" -#: fotoxx.h:1179 zfuncs.cc:9147 +#: fotoxx.h:1187 zfuncs.cc:9148 msgid "Yes" msgstr "Si" @@ -4845,475 +4948,71 @@ msgid "user guide not found" msgstr "no trobada la guia d'usuari" -#: zfuncs.cc:5182 +#: zfuncs.cc:5183 #, c-format msgid "cannot open file %s" msgstr "no es pot obrir l'arxiu %s" -#: zfuncs.cc:5218 +#: zfuncs.cc:5219 msgid "save screen to file" msgstr "guardar la pantalla en un arxiu" -#: zfuncs.cc:9223 zfuncs.cc:9724 zfuncs.cc:10044 +#: zfuncs.cc:9224 zfuncs.cc:9717 zfuncs.cc:10037 msgid "cancel" msgstr "cancel.lar" -#: zfuncs.cc:9685 +#: zfuncs.cc:9678 msgid "choose file" msgstr "escollir arxiu" -#: zfuncs.cc:9690 +#: zfuncs.cc:9683 msgid "choose files" msgstr "escollir arxius" -#: zfuncs.cc:9695 +#: zfuncs.cc:9688 msgid "save" msgstr "guardar" -#: zfuncs.cc:9701 +#: zfuncs.cc:9694 msgid "choose folder" msgstr "escollir carpeta" -#: zfuncs.cc:9706 +#: zfuncs.cc:9699 msgid "choose folders" msgstr "escollir carpetes" -#: zfuncs.cc:9711 +#: zfuncs.cc:9704 msgid "create folder" msgstr "crear carpeta" -#: zfuncs.cc:9718 +#: zfuncs.cc:9711 msgid "hidden" msgstr "ocult" -#: zfuncs.cc:10044 +#: zfuncs.cc:10037 msgid "done" msgstr "fet" -#: zfuncs.cc:10044 zfuncs.cc:10053 +#: zfuncs.cc:10037 zfuncs.cc:10046 msgid "margins" msgstr "marges" -#: zfuncs.cc:10074 +#: zfuncs.cc:10067 msgid "image scale" msgstr "escala de l'imatge" -#: zfuncs.cc:10076 +#: zfuncs.cc:10069 msgid "percent" msgstr "percentatge" -#: zfuncs.cc:10083 +#: zfuncs.cc:10076 msgid "image" msgstr "imatge" -#: zfuncs.cc:10087 +#: zfuncs.cc:10080 msgid "width" msgstr "amplada" -#: zfuncs.cc:10091 +#: zfuncs.cc:10084 msgid "height" msgstr "alçada" - -#~ msgid "albums" -#~ msgstr "àlbum" - -#~ msgid "Batch functions, Search Functions ..." -#~ msgstr "Funcions de lot, Funcions de cerca ..." - -#~ msgid "Newest Files" -#~ msgstr "Arxius més recents" - -#~ msgid "Size:" -#~ msgstr "Tamany" - -#~ msgid "Image Width:" -#~ msgstr "Ample de la imatge" - -#~ msgid "Height:" -#~ msgstr "Alçada" - -#~ msgid "Depth:" -#~ msgstr "profunditat" - -#~ msgid "" -#~ "Enter directories containing images below \n" -#~ "(subdirectories are included automatically)." -#~ msgstr "" -#~ "Entrar directoris contenint imatges \n" -#~ "(els subdirectoris són inclosos automàticament)" - -#~ msgid "Or use the button to browse:" -#~ msgstr "O utilitzar el botó per navegar" - -#~ msgid "Enter directory for thumbnails (or keep default)." -#~ msgstr "Entrar directori per les miniatures (o mantenir el predeterminat)" - -#~ msgid "add directory" -#~ msgstr "afegir directori" - -#~ msgid "Thumbnails" -#~ msgstr "Miniatures" - -#~ msgid "terminated by user" -#~ msgstr "acabat per l'usuari" - -#~ msgid "" -#~ "invalid top image directory: \n" -#~ " %s" -#~ msgstr "" -#~ "directori d'imatges superior invàlid: \n" -#~ " %s" - -#~ msgid "thumbnails directory not .../thumbnails" -#~ msgstr "directori de miniatures no .../miniatures" - -#~ msgid "Settings" -#~ msgstr "Ajustos" - -#~ msgid "Directory Gallery" -#~ msgstr "Galeria de directoris" - -#~ msgid "Image Pan" -#~ msgstr "Moviment de la imatge" - -#~ msgid "Drag" -#~ msgstr "Arrossegar" - -#~ msgid "Magnified" -#~ msgstr "Ampliada" - -#~ msgid "Monitor scale" -#~ msgstr "Escala del monitor" - -#~ msgid "Make Launcher" -#~ msgstr "Crear un llençador" - -#~ msgid "File: Sync, Open, Save, Trash, Rename, Print" -#~ msgstr "Arxiu: Sincronitzar, Obrir, Paperera, Reanomenar, Imprimir" - -#~ msgid "Tools: Index, Settings, Batch Funcs, Magnify ..." -#~ msgstr "Eines: Index, Preferències, Funcions de lot, Ampliació, ..." - -#~ msgid "Create a Gnome menu and launcher" -#~ msgstr "Crear un menú i llençadora de Gnome" - -#~ msgid "Change color of area outlines" -#~ msgstr "Canviar color de les línies ​delimitadores d'àrea" - -#~ msgid "Remove margins from warp, panorama, etc." -#~ msgstr "Eliminar marges d'una deformació, panorama, etc." - -#~ msgid "Sync Gallery" -#~ msgstr "Sincr. galeria" - -#~ msgid "Save to Disk" -#~ msgstr "Guardar en el disc" - -#~ msgid "User Settings" -#~ msgstr "Preferències d'usuari" - -#~ msgid "Menu and Launcher" -#~ msgstr "Menú i llençadora" - -#~ msgid "Images by Location/Date" -#~ msgstr "Imatges per ubicació/data" - -#~ msgid "Auto-Trim" -#~ msgstr "Auto-retallar" - -#~ msgid "open another directory" -#~ msgstr "obrir un altre directori" - -#~ msgid "previous row" -#~ msgstr "fila anterior" - -#~ msgid "next row" -#~ msgstr "fila següent" - -#~ msgid "Batch functions, Combine functions" -#~ msgstr "Funcions de lot, funcions de combinació" - -#~ msgid "Autocomplete" -#~ msgstr "Autocompletar" - -#~ msgid "no selection made" -#~ msgstr "no s'ha fet la selecció" - -#~ msgid "Enter text, click/drag on image." -#~ msgstr "Introduïr text, clic/arrossegar sobre la imatge" - -#~ msgid "Enter line/arrow properties, click/drag on image." -#~ msgstr "" -#~ "Introduïr propietats de la linea/fletxa, \n" -#~ "clic/arrossegar dins la imatge" - -#~ msgid "Set Blur Radius" -#~ msgstr "Establir radi de desenfocament" - -#~ msgid "Chromatic Abberation" -#~ msgstr "Aberració cromàtica" - -#~ msgid "Fix Stuck Pixels" -#~ msgstr "Corretgir píxels retinguts" - -#~ msgid "Revise RGB" -#~ msgstr "Revisar RGB" - -#~ msgid "Top Image Directories" -#~ msgstr "Directoris superiors d'imatges" - -#~ msgid "%d images remaining in cache" -#~ msgstr "%d imatges encara en caché" - -#~ msgid "" -#~ "First time Fotoxx startup. \n" -#~ "Latest version is available at: www.kornelix.com/fotoxx \n" -#~ "An image file index will be created. Your image files will \n" -#~ "not be changed, moved, or copied. This process may need \n" -#~ "considerable time if you have thousands of image files." -#~ msgstr "" -#~ "Primer inici de Fotoxx. \n" -#~ "La darrera versió està disponible a: www.kornelix.com/fotoxx \n" -#~ "Es crearà un arxiu índex. Les seves imatges no seràn \n" -#~ "canviadas, mogudes o copiades. Aquest procés pot trigar \n" -#~ "un temps considerable si teniu milers de fotos." - -#~ msgid "Tools: Index, Settings, Albums, Batch Funcs ..." -#~ msgstr "Eines: Índex, Ajustaments, Àlbums, Funcions de lot ..." - -#~ msgid "Paint/Clone Pixels" -#~ msgstr "Pintar/clonar píxels" - -#~ msgid "Fix Color Fringes" -#~ msgstr "Corretgir franges de color" - -#~ msgid "Adjust color using CMYK or RGB values" -#~ msgstr "Ajustar color utilitzant valors CMYK o RGB" - -#~ msgid "fotoxx-maps package not installed" -#~ msgstr "paquet de mapes de Fotoxx no installat" - -#~ msgid "JPG quality 0-100" -#~ msgstr "qualitat JPG he d'ésser 0-100" - -#~ msgid "quality" -#~ msgstr "qualitat" - -#~ msgid "Top" -#~ msgstr "a dalt" - -#~ msgid "Remove from Collection" -#~ msgstr "Elkiminar de la col.lecció" - -#~ msgid "Rotate 90 degrees" -#~ msgstr "Girar 90º" - -#~ msgid "Upright multiple files rotated 90º" -#~ msgstr "Adressar múltiples arxius girats 90º" - -#~ msgid "Organize images into collections" -#~ msgstr "Organitzar imatges en col.leccions" - -#~ msgid "Tools: Index, Settings, Collections, Batch Funcs ..." -#~ msgstr "Eines: Indexar, Ajustaments, Coleccions, Funcions de lot ..." - -#~ msgid "updating collections ..." -#~ msgstr "actualitzant colleccions ..." - -#~ msgid "file already exists" -#~ msgstr "ja existeix l'arxiu" - -#~ msgid "new collection created" -#~ msgstr "nova col.lecció creada" - -#~ msgid "enter a collection name" -#~ msgstr "nom de col.lecció" - -#~ msgid "make an initially empty collection" -#~ msgstr "crear una col.lecció buida" - -#~ msgid "Collection Name" -#~ msgstr "Nom de col.leccciò" - -#~ msgid "cache added to empty collection" -#~ msgstr "cachè afegit a col.lecció buïda" - -#~ msgid "Delete Collection" -#~ msgstr "Esborrar col.lecció" - -#~ msgid "Choose Collection" -#~ msgstr "Escollir col.lecció" - -#~ msgid "Delete a collection" -#~ msgstr "Esborrar una col.lecció" - -#~ msgid "Collection to view or edit" -#~ msgstr "Col.lecció per veure o editar" - -#~ msgid "Create or replace a collection" -#~ msgstr "Crear o reemplaçar una col.lecció" - -#~ msgid "Manage Collections" -#~ msgstr "Administrar col.leccións" - -#~ msgid "Drag collection thumbnail to new position." -#~ msgstr "Arrossegar miniatura de col.lecció a la nova posició" - -#~ msgid "" -#~ "Right-click collection thumbnail to cut/copy \n" -#~ "to cache, insert from cache, or remove." -#~ msgstr "" -#~ "Clic dret en una miniatira de col.lecció per tallar/copiar \n" -#~ " a la caché, inserir des de la caché, o esborrar" - -#~ msgid "open collection" -#~ msgstr "obrir col.lectió" - -#~ msgid "invalid collection" -#~ msgstr "col.lecció no vàlida" - -#~ msgid "Edge Blend" -#~ msgstr "Barreja del límits" - -#~ msgid "current image:" -#~ msgstr "imatge actual" - -#~ msgid "save project file?" -#~ msgstr "desar arxiu de projecte?" - -#~ msgid "save project data" -#~ msgstr "desar projecte" - -#~ msgid "Choose collection" -#~ msgstr "Escolliu col.lecció" - -#~ msgid "no collections found" -#~ msgstr "no s'han trobat col.leccions" - -#~ msgid "collections" -#~ msgstr "col.leccionns" - -#~ msgid "target file already exists" -#~ msgstr "l'arxiu de destí ja existeix" - -#~ msgid "Rotate 90º" -#~ msgstr "Girar 90º" - -#~ msgid "printed image width: %.1f height: %.1f cm" -#~ msgstr "imatge impresa amplada: %.1f alçada: %.1f cm" - -#~ msgid "menu locked" -#~ msgstr "menú bloquejat" - -#~ msgid "shrink" -#~ msgstr "encongir" - -#~ msgid "delete project file?" -#~ msgstr "esborrar arxiu de projecte?" - -#~ msgid "save output file" -#~ msgstr "desar arxiu de sortida" - -#~ msgid "function busy" -#~ msgstr "funció treballant" - -#~ msgid "no newly added files found" -#~ msgstr "no s'han trovat noves imatges afegides" - -#~ msgid "Pencil Sketch" -#~ msgstr "Esbós a llapis" - -#~ msgid "Save PNG" -#~ msgstr "Desar con a PNG" - -#~ msgid "Delete or Trash selected files" -#~ msgstr "Esborrar o enviar a paperera arxius sel·leccionats" - -#~ msgid "Arrange multiple images on a background image" -#~ msgstr "Organitzar múltiples imatges sobre una imatge de fons" - -#~ msgid "Save an area to a PNG file with transparency" -#~ msgstr "Desar un àrea en un arxiu PNG amb transparència" - -#~ msgid "Save an area to a file" -#~ msgstr "Guardar una àrea en un arxiu" - -#~ msgid "Open a file with a saved area" -#~ msgstr "Obrir un arxiu amb una àrea guardada" - -#~ msgid "Paste an area into the current image" -#~ msgstr "Enganxar una àrea en la imatge actual" - -#~ msgid "Copy an area for later pasting" -#~ msgstr "Copiar una àrea per enganxar més tard" - -#~ msgid "Add geotags to multiple images" -#~ msgstr "Afegir geo-etiquetes a múltiples imatges" - -#~ msgid "Convert multiple tags for all images" -#~ msgstr "Converti múltiples etiquetes per totes les imatges" - -#~ msgid "index busy" -#~ msgstr "indexat treballant" - -#~ msgid "" -#~ "area info file missing: \n" -#~ " %s" -#~ msgstr "" -#~ "requerit arxiu d'informació d'àrea: \n" -#~ " %s" - -#~ msgid "color" -#~ msgstr "color" - -#~ msgid "" -#~ "fix text in layout \n" -#~ " start new text" -#~ msgstr "" -#~ "corretgir text a la capa \n" -#~ "iniciar nou text" - -#~ msgid "Comment" -#~ msgstr "Comentari" - -#~ msgid "Metadata:" -#~ msgstr "Metadades" - -#~ msgid "Brighten" -#~ msgstr "Aclarar" - -#~ msgid "Darken" -#~ msgstr "Enfosquir" - -#~ msgid "save select area as a PNG file" -#~ msgstr "guaradr area seleccionada con a PNG" - -#~ msgid "save select area to a file" -#~ msgstr "guardar àrea seleccionada en un fitxer" - -#~ msgid "load select area from a file" -#~ msgstr "carregar àrea seleccionada des d'un fitxer" - -#~ msgid "next" -#~ msgstr "següent" - -#~ msgid "Transition" -#~ msgstr "Transició" - -#~ msgid "Zoom location" -#~ msgstr "Aproximar localitat" - -#~ msgid "Zoom type" -#~ msgstr "Tipus de zoom" - -#~ msgid "Wait" -#~ msgstr "Espereu" - -#~ msgid "Show Comments" -#~ msgstr "Mostrar comentaris" - -#~ msgid "Show Caption" -#~ msgstr "Mostrar títol" - -#~ msgid "Play tone" -#~ msgstr "Reproduïr cançò" diff -Nru fotoxx-15.08/locales/translate-de.po fotoxx-15.09/locales/translate-de.po --- fotoxx-15.08/locales/translate-de.po 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/locales/translate-de.po 2015-08-31 10:21:01.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: fotoxx 6.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-07-29 09:31+0200\n" +"POT-Creation-Date: 2015-08-30 21:14+0200\n" "PO-Revision-Date: 2009-03-06 09:57+0100\n" "Language-Team: German\n" "Language: de\n" @@ -28,7 +28,7 @@ msgid "Drag album thumbnail to new position." msgstr "Album-Thumbnail zu neuer Stelle ziehen." -#: f.albums.cc:107 f.widgets.cc:536 +#: f.albums.cc:107 f.widgets.cc:541 msgid "Manage Albums" msgstr "Alben verwalten" @@ -175,141 +175,145 @@ msgid "fallover" msgstr "Umkippen" -#: f.albums.cc:1139 f.widgets.cc:537 +#: f.albums.cc:1138 f.widgets.cc:542 msgid "Slide Show" msgstr "Dia-Show" -#: f.albums.cc:1150 +#: f.albums.cc:1149 msgid "Clip Limit" msgstr "Kappenlimit" -#: f.albums.cc:1154 +#: f.albums.cc:1153 msgid "Music File" msgstr "Musikdatei" -#: f.albums.cc:1159 +#: f.albums.cc:1158 msgid "Full Screen" msgstr "Fenster maximieren" -#: f.albums.cc:1160 +#: f.albums.cc:1159 msgid "Auto-replay" msgstr "Auto-Wiederholung" -#: f.albums.cc:1166 +#: f.albums.cc:1165 msgid "Customize:" msgstr "Anpassen:" -#: f.albums.cc:1167 +#: f.albums.cc:1166 msgid "transitions" msgstr "Übergänge" -#: f.albums.cc:1168 +#: f.albums.cc:1167 msgid "image files" msgstr "Bilddateien" -#: f.albums.cc:1173 f.albums.cc:1289 +#: f.albums.cc:1172 f.albums.cc:1286 #, c-format msgid "%d images" msgstr "%d Bilder" -#: f.albums.cc:1196 f.albums.cc:1259 f.albums.cc:1349 f.albums.cc:1462 -#: f.albums.cc:1654 f.albums.cc:1738 f.albums.cc:1755 f.albums.cc:1976 +#: f.albums.cc:1194 f.albums.cc:1256 f.albums.cc:1346 f.albums.cc:1459 +#: f.albums.cc:1652 f.albums.cc:1736 f.albums.cc:1753 f.albums.cc:1974 msgid "invalid album" msgstr "Ungültiges Album" -#: f.albums.cc:1273 +#: f.albums.cc:1270 msgid "open album" msgstr "Album öffnen" -#: f.albums.cc:1305 +#: f.albums.cc:1302 msgid "Select music file" msgstr "Musikdatei auswählen" -#: f.albums.cc:1329 +#: f.albums.cc:1326 msgid "select random (if 5+ enabled)" msgstr "Zufallsordnung (wenn 5+ freigegeben" -#: f.albums.cc:1353 +#: f.albums.cc:1350 msgid "Transition Preferences" msgstr "Übergangs Präferenzen" -#: f.albums.cc:1362 +#: f.albums.cc:1359 msgid "transition" msgstr "Übergang" -#: f.albums.cc:1363 +#: f.albums.cc:1360 msgid "enabled" msgstr "Freigegeben" -#: f.albums.cc:1364 +#: f.albums.cc:1361 msgid "slowdown" msgstr "Bremsung" -#: f.albums.cc:1365 +#: f.albums.cc:1362 msgid "preference" msgstr "Präferenz" -#: f.albums.cc:1468 +#: f.albums.cc:1465 msgid "Image Preferences" msgstr "Bild Präferenzen" -#: f.albums.cc:1472 f.file.cc:1153 f.file.cc:1349 f.file.cc:1557 f.meta.cc:425 +#: f.albums.cc:1469 f.file.cc:1157 f.file.cc:1353 f.file.cc:1561 f.meta.cc:426 msgid "Image File:" msgstr "Bilddatei:" -#: f.albums.cc:1476 +#: f.albums.cc:1473 msgid "Play tone when image shows" msgstr "Klang spielen wenn Bild erscheint" -#: f.albums.cc:1479 +#: f.albums.cc:1476 msgid "Show image caption" msgstr "Bild-Titel zeigen" -#: f.albums.cc:1484 +#: f.albums.cc:1481 msgid "Show image comments" msgstr "Bild-Kommentare zeigen" -#: f.albums.cc:1489 +#: f.albums.cc:1486 msgid "Wait before zoom" msgstr "Warten vor Zoom" -#: f.albums.cc:1494 +#: f.albums.cc:1491 msgid "Zoom type:" msgstr "Zoom Art" -#: f.albums.cc:1495 +#: f.albums.cc:1492 msgid "none" msgstr "keine" -#: f.albums.cc:1496 +#: f.albums.cc:1493 msgid "zoom-in" msgstr "zoom-hinein" -#: f.albums.cc:1497 +#: f.albums.cc:1494 msgid "zoom-out" msgstr "zoom-heraus" -#: f.albums.cc:1500 +#: f.albums.cc:1497 msgid "Zoom size (x)" msgstr "Zoomgröße" -#: f.albums.cc:1503 +#: f.albums.cc:1500 msgid "Steps" msgstr "Schritte" -#: f.albums.cc:1507 +#: f.albums.cc:1504 msgid "Zoom image location:" msgstr "Zoom Bild-Stelle" -#: f.albums.cc:1515 +#: f.albums.cc:1512 msgid "Wait after zoom" msgstr "Warten nach Zoom" -#: f.albums.cc:1520 +#: f.albums.cc:1517 msgid "Transition to next image" msgstr "Übergang zum nächsten Bild" -#: f.albums.cc:1961 f.albums.cc:2119 +#: f.albums.cc:1520 f.albums.cc:1622 +msgid "next" +msgstr "nächst" + +#: f.albums.cc:1959 f.albums.cc:2117 #, c-format msgid "" "file format error: \n" @@ -322,7 +326,7 @@ msgid "Select Area for Edits" msgstr "Ausschnitt für Bearbeitung auswählen" -#: f.area.cc:80 f.edit.cc:5897 +#: f.area.cc:80 f.edit.cc:5908 msgid "Press F1 for help" msgstr "F1 für Hilfe drucken" @@ -366,7 +370,7 @@ msgid "select all matching colors within mouse" msgstr "Alle übereinstimmenden Farben in Maus selektieren" -#: f.area.cc:139 f.edit.cc:5942 +#: f.area.cc:139 f.edit.cc:5953 msgid "mouse radius" msgstr "Mausradius" @@ -398,12 +402,12 @@ msgid "area edits fade away within edge distance" msgstr "Ausschnitt-Änderungen klingen innerhalb Randweite ab" -#: f.area.cc:353 f.area.cc:536 +#: f.area.cc:351 f.area.cc:534 #, c-format msgid "exceed %d edits" msgstr "%d Edits überschritten" -#: f.area.cc:1363 +#: f.area.cc:1355 msgid "" "Click one time inside each enclosed area \n" "(possible gaps in the outline will be found). \n" @@ -413,23 +417,23 @@ "(mögliche Lücken im Rand werden gefunden). \n" "Für Hilfe F1 drücken." -#: f.area.cc:1391 +#: f.area.cc:1383 msgid "finish area" msgstr "Ausschnitt fertigstellen" -#: f.area.cc:1399 +#: f.area.cc:1391 msgid "extend to corner:" msgstr "bis zur Ecke ausfahren:" -#: f.area.cc:1440 +#: f.area.cc:1432 msgid "searching" msgstr "wird gesucht" -#: f.area.cc:1472 +#: f.area.cc:1463 msgid "outline has a gap" msgstr "Umriss hat eine Lücke" -#: f.area.cc:1476 +#: f.area.cc:1467 msgid "success" msgstr "Erfolg" @@ -438,261 +442,295 @@ msgid "found %d pixels" msgstr "%d Pixels gefunden" -#: f.area.cc:1918 f.area.cc:1935 f.area.cc:1955 f.area.cc:2260 f.area.cc:2387 +#: f.area.cc:1926 f.area.cc:1943 f.area.cc:1963 f.area.cc:2278 f.area.cc:2354 +#: f.area.cc:2511 msgid "the area is not finished" msgstr "Der Ausschnitt ist nicht fertig" -#: f.area.cc:2049 +#: f.area.cc:2052 msgid "Edge calculation in progress" msgstr "Rand Berechnung in Arbeit" -#: f.area.cc:2058 +#: f.area.cc:2061 msgid "Area Edge Calc" msgstr "Ausschnitt Randberechnung" -#: f.area.cc:2338 +#: f.area.cc:2462 msgid "load area from a file" msgstr "Ausschnitt von Datei lesen" -#: f.area.cc:2421 +#: f.area.cc:2545 msgid "save area as a PNG file" msgstr "Ausschnitt als PNG Datei speichern" -#: f.area.cc:2449 +#: f.area.cc:2573 msgid "position with mouse click/drag" msgstr "Mit Maus klicken/ziehen positionieren" -#: f.area.cc:2493 +#: f.area.cc:2617 msgid "Paste Image" msgstr "Bild einfügen" -#: f.area.cc:2498 f.batch.cc:1135 f.batch.cc:1626 +#: f.area.cc:2622 f.batch.cc:1136 f.batch.cc:1627 msgid "resize" msgstr "Skalieren" -#: f.batch.cc:103 f.widgets.cc:524 +#: f.batch.cc:104 f.widgets.cc:526 msgid "Batch Convert" msgstr "Bilder Stapel konvertieren" -#: f.batch.cc:110 f.file.cc:781 +#: f.batch.cc:111 f.file.cc:782 msgid "New Name" msgstr "Neuer Name" -#: f.batch.cc:112 +#: f.batch.cc:113 msgid "base" msgstr "Basis" -#: f.batch.cc:114 +#: f.batch.cc:115 msgid "adder" msgstr "Zuwachs" -#: f.batch.cc:118 +#: f.batch.cc:119 msgid "New Location" msgstr "Neue Speicherstelle" -#: f.batch.cc:123 +#: f.batch.cc:124 msgid "New File Type" msgstr "Neue Dateityp" -#: f.batch.cc:127 f.batch.cc:135 +#: f.batch.cc:128 f.batch.cc:136 msgid "no change" msgstr "Keine Änderung" -#: f.batch.cc:130 +#: f.batch.cc:131 msgid "max. Width" msgstr "Max. Breite" -#: f.batch.cc:138 f.batch.cc:531 +#: f.batch.cc:139 f.batch.cc:532 msgid "Delete Originals" msgstr "Originale löschen" -#: f.batch.cc:139 f.batch.cc:528 +#: f.batch.cc:140 f.batch.cc:529 msgid "Copy Metadata" msgstr "Metadaten kopieren" -#: f.batch.cc:140 f.batch.cc:529 f.edit.cc:1396 f.widgets.cc:432 -#: f.widgets.cc:672 +#: f.batch.cc:141 f.batch.cc:530 f.edit.cc:1407 f.widgets.cc:433 +#: f.widgets.cc:677 msgid "Upright" msgstr "Aufrichten" -#: f.batch.cc:143 f.batch.cc:530 f.batch.cc:1144 f.batch.cc:1635 -#: f.repair.cc:115 f.widgets.cc:448 +#: f.batch.cc:144 f.batch.cc:531 f.batch.cc:1145 f.batch.cc:1636 +#: f.repair.cc:115 f.widgets.cc:449 msgid "Sharpen" msgstr "Schärfen" -#: f.batch.cc:145 f.batch.cc:1146 f.batch.cc:1637 +#: f.batch.cc:146 f.batch.cc:1147 f.batch.cc:1638 msgid "amount" msgstr "Wert" -#: f.batch.cc:148 f.batch.cc:1149 f.batch.cc:1640 +#: f.batch.cc:149 f.batch.cc:1150 f.batch.cc:1641 msgid "threshold" msgstr "Schwelle" -#: f.batch.cc:250 +#: f.batch.cc:251 msgid "file type not supported" msgstr "Dateityp nicht unterstützt" -#: f.batch.cc:314 +#: f.batch.cc:315 msgid "cannot create new file" msgstr "Kann neue Datei nicht erstellen" -#: f.batch.cc:361 +#: f.batch.cc:362 msgid "updating albums ..." msgstr "Alben werden aktualisiert ..." -#: f.batch.cc:434 f.batch.cc:1422 f.batch.cc:1828 f.file.cc:1202 +#: f.batch.cc:435 f.batch.cc:1423 f.batch.cc:1829 f.file.cc:1206 msgid "Select directory" msgstr "Bildverzeichnis wählen" -#: f.batch.cc:480 +#: f.batch.cc:481 msgid "" "new name/base/adder unreasonable\n" " e.g. newname ### 100 10" msgstr "Neu Name/Basis/Zuwachs nicht sinnvoll e.g. NeuName ### 100 10" -#: f.batch.cc:503 +#: f.batch.cc:504 #, c-format msgid "max. size %d x %d is not reasonable" msgstr "Max. größe %d x %d nicht sinnvoll" -#: f.batch.cc:522 +#: f.batch.cc:523 #, c-format msgid "Convert %d image files" msgstr "%d Bilddatei konvertieren" -#: f.batch.cc:523 +#: f.batch.cc:524 msgid "Rename to" msgstr "Umbenennen zu" -#: f.batch.cc:524 +#: f.batch.cc:525 msgid "Convert to" msgstr "Konvertieren zu" -#: f.batch.cc:525 +#: f.batch.cc:526 msgid "Resize within" msgstr "Skalieren innerhalb" -#: f.batch.cc:526 +#: f.batch.cc:527 msgid "Output to" msgstr "Schreiben zu" -#: f.batch.cc:532 +#: f.batch.cc:533 msgid "PROCEED?" msgstr "FORTSETZEN?" -#: f.batch.cc:686 f.widgets.cc:525 +#: f.batch.cc:687 f.widgets.cc:527 msgid "Batch Upright" msgstr "Stapel aufrichten" -#: f.batch.cc:692 +#: f.batch.cc:693 msgid "Survey all files" msgstr "Alle Dateien durchsuchen" -#: f.batch.cc:746 +#: f.batch.cc:747 msgid "file cannot be read" msgstr "Datei ist unlesbar" -#: f.batch.cc:864 +#: f.batch.cc:865 msgid "cannot select both options" msgstr "kann nicht beide Optionen auswählen" -#: f.batch.cc:908 f.widgets.cc:526 +#: f.batch.cc:909 f.widgets.cc:528 msgid "Batch Delete/Trash" msgstr "Stapel Löschen/Papierkorb" -#: f.batch.cc:913 +#: f.batch.cc:914 msgid "delete" msgstr "löschen" -#: f.batch.cc:916 +#: f.batch.cc:917 msgid "trash" msgstr "Papierkorb" -#: f.batch.cc:1078 +#: f.batch.cc:1079 msgid "Batch Convert RAW Files (DCraw)" msgstr "Stapel RAW konvertieren (DCraw)" -#: f.batch.cc:1087 +#: f.batch.cc:1088 msgid "DCraw not installed" msgstr "DCraw nicht installiert" -#: f.batch.cc:1122 f.batch.cc:1613 +#: f.batch.cc:1123 f.batch.cc:1614 msgid "output location" msgstr "Ausgabe Speicherstelle" -#: f.batch.cc:1127 f.batch.cc:1618 +#: f.batch.cc:1128 f.batch.cc:1619 msgid "output file type" msgstr "Ausgabedateityp" -#: f.batch.cc:1158 +#: f.batch.cc:1159 msgid "white balance" msgstr "Weiabgleich" -#: f.batch.cc:1159 +#: f.batch.cc:1160 msgid "interpolation" msgstr "Interpolation" -#: f.batch.cc:1160 +#: f.batch.cc:1161 msgid "color space" msgstr "Farbraum" -#: f.batch.cc:1161 +#: f.batch.cc:1162 msgid "gamma curve" msgstr "Gamma-Kurve" -#: f.batch.cc:1164 +#: f.batch.cc:1165 msgid "camera" msgstr "Kamera" -#: f.batch.cc:1165 +#: f.batch.cc:1166 msgid "fixed" msgstr "Festgelegt" -#: f.batch.cc:1166 +#: f.batch.cc:1167 msgid "calculated" msgstr "Berechnet" -#: f.batch.cc:1183 +#: f.batch.cc:1184 msgid "default" msgstr "Vorgabe" -#: f.batch.cc:1189 +#: f.batch.cc:1190 msgid "defaults" msgstr "Vorgaben" -#: f.batch.cc:1576 +#: f.batch.cc:1577 msgid "Batch Convert RAW Files (Raw Therapee)" msgstr "Stapel RAW konvertieren (Raw Therapee)" -#: f.batch.cc:1585 f.file.cc:488 +#: f.batch.cc:1586 f.file.cc:489 msgid "Raw Therapee not installed" msgstr "Raw Therapee nicht installiert" -#: f.batch.cc:1894 +#: f.batch.cc:1895 msgid "Brasero not installed" msgstr "Brasero nicht installiert" -#: f.bend.cc:82 f.widgets.cc:469 +#: f.batch.cc:1984 f.widgets.cc:532 +msgid "Find Duplicate Images" +msgstr "Duplikat-Bilder suchen" + +#: f.batch.cc:1986 f.tools.cc:927 +msgid "Thumbnail size" +msgstr "Thumbnailgröße" + +#: f.batch.cc:1989 +msgid "pixel difference" +msgstr "Pixel-Differenz" + +#: f.batch.cc:1992 +msgid "pixel count" +msgstr "Pixel-Anzahl" + +#: f.batch.cc:1995 +msgid "Images:" +msgstr "Bilder:" + +#: f.batch.cc:1996 +msgid "searching ..." +msgstr "Suchen ..." + +#: f.batch.cc:1998 +msgid "Duplicates:" +msgstr "Duplikate:" + +#: f.batch.cc:2016 +#, c-format +msgid "only %d image thumbnails found" +msgstr "Nur %d Bilder-Thumbnails gefunden" + +#: f.bend.cc:86 f.widgets.cc:470 msgid "Unbend" msgstr "Entkrümmen" -#: f.bend.cc:90 f.edit.cc:4237 f.effects.cc:4620 +#: f.bend.cc:94 f.edit.cc:4248 f.effects.cc:4625 msgid "vertical" msgstr "Vertikal" -#: f.bend.cc:91 f.edit.cc:4236 f.effects.cc:4616 +#: f.bend.cc:95 f.edit.cc:4247 f.effects.cc:4621 msgid "horizontal" msgstr "Horizontal" -#: f.bend.cc:92 +#: f.bend.cc:96 msgid "linear" msgstr "linear" -#: f.bend.cc:95 +#: f.bend.cc:99 msgid "curved" msgstr "kurvig" -#: f.bend.cc:363 +#: f.bend.cc:367 msgid "" " Click the four corners of a tetragon area. Press [apply]. \n" " The image is warped to make the tetragon into a rectangle." @@ -700,15 +738,15 @@ " Die vier Ecken eines Tetragonalbereich anklicken. [Anwenden] drücken. \n" " Das Tetragon wird zu einem geraden Rechteck verzogen." -#: f.bend.cc:376 +#: f.bend.cc:384 msgid "Perspective Correction" msgstr "Perspective Verbessern" -#: f.bend.cc:582 +#: f.bend.cc:590 msgid "must have 4 corners" msgstr "Vier Ecken sind nötig" -#: f.bend.cc:704 +#: f.bend.cc:712 msgid "" " Select an area to warp using select area function. \n" " Press [start warp] and pull area with mouse. \n" @@ -720,19 +758,19 @@ " Mehrmals ziehen/strecken bis zum erwünschten Ergebniss. \n" " Wenn fertig, anderen Ausschnitt wählen oder [Fertig] drücken." -#: f.bend.cc:717 f.widgets.cc:471 +#: f.bend.cc:725 f.widgets.cc:472 msgid "Warp area" msgstr "Ausschnitt Krümmen" -#: f.bend.cc:722 +#: f.bend.cc:730 msgid "start warp" msgstr "Krümmen starten" -#: f.bend.cc:780 +#: f.bend.cc:788 msgid "no active Select Area" msgstr "Ausschnitt nicht aktiviert" -#: f.bend.cc:1121 f.bend.cc:1431 +#: f.bend.cc:1129 f.bend.cc:1443 msgid "" " Pull an image position using the mouse. \n" " Make multiple mouse pulls until satisfied. \n" @@ -742,19 +780,19 @@ " Mehrmals ziehen bis zufriedenstellend. \n" " Wenn fertig, [Fertig] drücken." -#: f.bend.cc:1135 f.widgets.cc:472 +#: f.bend.cc:1147 f.widgets.cc:473 msgid "Warp curved" msgstr "Gebogen krümmen" -#: f.bend.cc:1144 f.mashup.cc:1836 +#: f.bend.cc:1156 f.mashup.cc:1836 msgid "warp span" msgstr "Krümmen-Spannweite" -#: f.bend.cc:1445 f.widgets.cc:473 +#: f.bend.cc:1461 f.widgets.cc:474 msgid "Warp linear" msgstr "Linear krümmen" -#: f.bend.cc:1760 +#: f.bend.cc:1776 msgid "" " Pull on an image corner using the mouse. \n" " Make multiple mouse pulls until satisfied. \n" @@ -764,15 +802,15 @@ " Mehrmals ziehen bis zufriedengestellt. \n" " Wenn fertig, [Fertig] drücken." -#: f.bend.cc:1772 f.widgets.cc:474 +#: f.bend.cc:1792 f.widgets.cc:475 msgid "Warp affine" msgstr "Affine krümmen" -#: f.bend.cc:2119 +#: f.bend.cc:2139 msgid "Flatten Book Page Photo" msgstr "Foto von Buchseite flachmachen" -#: f.bend.cc:2120 +#: f.bend.cc:2140 msgid "" "Trim image to isolate one page. \n" "Map top and bottom edges with \n" @@ -782,88 +820,88 @@ "Obere und untere Ränder mit 4+ \n" "Mausklicks markieren, dann flachmachen: " -#: f.bend.cc:2123 +#: f.bend.cc:2143 msgid "Stretch curved-down surfaces:" msgstr "Nach unten gebogenen Flächen ausdehnen:" -#: f.bend.cc:2178 +#: f.bend.cc:2198 msgid "top:" msgstr "Oben:" -#: f.bend.cc:2181 +#: f.bend.cc:2201 msgid "bottom:" msgstr "Unten:" -#: f.combine.cc:2119 f.combine.cc:2750 f.combine.cc:3406 f.combine.cc:3938 +#: f.combine.cc:2108 f.combine.cc:2739 f.combine.cc:3395 f.combine.cc:3927 msgid "Select 2 to 9 files" msgstr "2-9 Dateien auswählen" -#: f.combine.cc:2140 f.combine.cc:2771 f.combine.cc:3427 f.combine.cc:3959 +#: f.combine.cc:2129 f.combine.cc:2760 f.combine.cc:3416 f.combine.cc:3948 msgid "Images are not all the same size" msgstr "Bilder sind nicht gleich gross" -#: f.combine.cc:2484 +#: f.combine.cc:2473 msgid "Adjust Image Contributions" msgstr "Bild Beiträge einstellen" -#: f.combine.cc:2488 +#: f.combine.cc:2477 msgid "dark pixels" msgstr "dunkele Pixel" -#: f.combine.cc:2490 +#: f.combine.cc:2479 msgid "light pixels" msgstr "helle Pixel" -#: f.combine.cc:2492 +#: f.combine.cc:2481 msgid "file:" msgstr "Datei:" -#: f.combine.cc:3007 +#: f.combine.cc:2996 msgid "Paint and Warp Image" msgstr "Bild malen und krümmen" -#: f.combine.cc:3011 f.combine.cc:3656 f.combine.cc:6246 f.effects.cc:3851 -#: f.widgets.cc:555 f.widgets.cc:578 f.widgets.cc:600 +#: f.combine.cc:3000 f.combine.cc:3645 f.combine.cc:6236 f.effects.cc:3858 +#: f.widgets.cc:560 f.widgets.cc:583 f.widgets.cc:605 msgid "Image" msgstr "Bild" -#: f.combine.cc:3015 +#: f.combine.cc:3004 msgid "paint" msgstr "malen" -#: f.combine.cc:3016 +#: f.combine.cc:3005 msgid "warp" msgstr "Krümmen" -#: f.combine.cc:3654 +#: f.combine.cc:3643 msgid "Select and Paint Image" msgstr "Bild auswählen und malen" -#: f.combine.cc:4130 +#: f.combine.cc:4119 msgid "Adjust Pixel Composition" msgstr "Pixel Zusammensetzung einstellen" -#: f.combine.cc:4132 +#: f.combine.cc:4121 msgid "use average" msgstr "Durchschnitt benutzen" -#: f.combine.cc:4133 +#: f.combine.cc:4122 msgid "use median" msgstr "Mittlewert benutzen" -#: f.combine.cc:4135 +#: f.combine.cc:4124 msgid "omit low pixel" msgstr "Niedrigste Pixel weglassen" -#: f.combine.cc:4136 +#: f.combine.cc:4125 msgid "omit high pixel" msgstr "Höchste Pixel weglassen" -#: f.combine.cc:4398 f.combine.cc:5504 +#: f.combine.cc:4387 f.combine.cc:5493 msgid "Select 2 to 4 files" msgstr "2-4 Dateien auswählen" -#: f.combine.cc:4473 +#: f.combine.cc:4462 msgid "" "Drag images into rough alignment.\n" "To rotate, drag from lower edge." @@ -871,76 +909,76 @@ "Bilder zur Grobabstimmung mit der Maus ziehen.\n" "Zum Drehen unteren Rand links/rechts ziehen" -#: f.combine.cc:4475 f.combine.cc:5581 +#: f.combine.cc:4464 f.combine.cc:5570 msgid "no curve (scanned image)" msgstr "Keine Kurve (gescanntes Bild)" -#: f.combine.cc:4476 f.combine.cc:5582 +#: f.combine.cc:4465 f.combine.cc:5571 msgid "Search for lens mm" msgstr "Suche für Lense Brennweite" -#: f.combine.cc:4477 f.combine.cc:5583 +#: f.combine.cc:4466 f.combine.cc:5572 msgid "Save lens mm → image EXIF" msgstr "Lens mm in Bild EXIF speichern" -#: f.combine.cc:4538 f.combine.cc:5644 +#: f.combine.cc:4527 f.combine.cc:5633 msgid "Pre-align Images" msgstr "Bilder grob anpassen" -#: f.combine.cc:4542 f.combine.cc:5648 +#: f.combine.cc:4531 f.combine.cc:5637 msgid "lens mm" msgstr "Objektiv-Brennweite mm" -#: f.combine.cc:4547 f.combine.cc:5653 +#: f.combine.cc:4536 f.combine.cc:5642 msgid "no auto warp" msgstr "Auto-Warp ausschalten" -#: f.combine.cc:4549 f.combine.cc:5655 f.widgets.cc:439 f.widgets.cc:671 +#: f.combine.cc:4538 f.combine.cc:5644 f.widgets.cc:440 f.widgets.cc:676 msgid "Resize" msgstr "Größe verändern" -#: f.combine.cc:4550 f.combine.cc:5656 +#: f.combine.cc:4539 f.combine.cc:5645 msgid "resize window" msgstr "Fenstergröße ändern" -#: f.combine.cc:4558 f.combine.cc:5664 +#: f.combine.cc:4547 f.combine.cc:5653 msgid "do not warp images during auto-alignment" msgstr "Bilder nicht während Rand-Anpassung krümmen" -#: f.combine.cc:4603 f.combine.cc:5709 +#: f.combine.cc:4592 f.combine.cc:5698 msgid "use two images only" msgstr "Zwei Bilder benutzen" -#: f.combine.cc:4631 f.combine.cc:4835 f.combine.cc:5021 f.combine.cc:5735 -#: f.combine.cc:5940 f.combine.cc:6126 +#: f.combine.cc:4620 f.combine.cc:4824 f.combine.cc:5010 f.combine.cc:5724 +#: f.combine.cc:5928 f.combine.cc:6114 msgid "Too little overlap, cannot align" msgstr "Unzureichende Überlappung, Ausrichtung nicht möglich" -#: f.combine.cc:5096 f.combine.cc:6202 +#: f.combine.cc:5088 f.combine.cc:6192 msgid "Match Brightness and Color" msgstr "Helligkeit und Farbe anpassen" -#: f.combine.cc:5141 +#: f.combine.cc:5133 msgid "Select image" msgstr "Bild wählen" -#: f.combine.cc:5156 f.combine.cc:6261 +#: f.combine.cc:5148 f.combine.cc:6251 msgid "auto color" msgstr "Auto-Farbe" -#: f.combine.cc:5157 f.combine.cc:6262 +#: f.combine.cc:5149 f.combine.cc:6252 msgid "file color" msgstr "Datei-Farbe" -#: f.combine.cc:5163 f.combine.cc:6268 +#: f.combine.cc:5155 f.combine.cc:6258 msgid "mouse warp" msgstr "Maus verformen" -#: f.combine.cc:5166 +#: f.combine.cc:5158 msgid "curved image" msgstr "Gekurvtes Bild" -#: f.combine.cc:5579 +#: f.combine.cc:5568 msgid "" "Drag images into rough alignment.\n" "To rotate, drag from right edge." @@ -948,11 +986,11 @@ "Bilder zur Grobabstimmung mit der Maus ziehen.\n" "Zum Drehen, vom rechten Rand ziehen" -#: f.combine.cc:6482 +#: f.combine.cc:6469 msgid "pano tools (hugin) not installed" msgstr "pano tools (hugin) nicht installiert" -#: f.combine.cc:6491 +#: f.combine.cc:6478 msgid "Select at least 2 files" msgstr "Wenigstens 2 Dateien auswählen" @@ -964,240 +1002,240 @@ msgid "Minor rotate: drag right edge with mouse" msgstr "Geringe Drehung: rechten Rand mit der Maus ziehen" -#: f.edit.cc:167 f.widgets.cc:431 f.widgets.cc:670 +#: f.edit.cc:171 f.widgets.cc:432 f.widgets.cc:675 msgid "Trim/Rotate" msgstr "Schneiden/Drehen" -#: f.edit.cc:179 f.edit.cc:577 +#: f.edit.cc:183 f.edit.cc:585 msgid "ratio" msgstr "Verhältnis" -#: f.edit.cc:183 +#: f.edit.cc:187 msgid "trim size:" msgstr "Schnittgröße" -#: f.edit.cc:188 +#: f.edit.cc:192 msgid "Lock Ratio" msgstr "Seitenverhältniss fixieren" -#: f.edit.cc:193 +#: f.edit.cc:197 msgid "Customize" msgstr "Anpassen" -#: f.edit.cc:201 +#: f.edit.cc:205 msgid "Rotate: degrees" msgstr "Drehen: Grad" -#: f.edit.cc:203 +#: f.edit.cc:207 msgid "auto-trim" msgstr "Autoschnitt" -#: f.edit.cc:573 +#: f.edit.cc:581 msgid "Trim Buttons" msgstr "Schnitt-Knöpfe" -#: f.edit.cc:576 +#: f.edit.cc:584 msgid "label" msgstr "Kennsatz" -#: f.edit.cc:1394 +#: f.edit.cc:1405 msgid "Upright Image" msgstr "Bild aufrichten" -#: f.edit.cc:1458 +#: f.edit.cc:1469 msgid "rotation unknown" msgstr "Drehrichtung unbekannt" -#: f.edit.cc:2009 f.widgets.cc:435 f.widgets.cc:674 +#: f.edit.cc:2020 f.widgets.cc:436 f.widgets.cc:679 msgid "Retouch Combo" msgstr "Retusche Combo" -#: f.edit.cc:2030 +#: f.edit.cc:2041 msgid "Amplifier" msgstr "Verstärker" -#: f.edit.cc:2031 fotoxx.h:1079 +#: f.edit.cc:2042 fotoxx.h:1087 msgid "Brightness" msgstr "Helligkeit" -#: f.edit.cc:2032 fotoxx.h:1087 +#: f.edit.cc:2043 fotoxx.h:1095 msgid "Contrast" msgstr "Kontrast" -#: f.edit.cc:2033 +#: f.edit.cc:2044 msgid "Low Color" msgstr "Niedrige Farbe" -#: f.edit.cc:2034 +#: f.edit.cc:2045 msgid "Warmer" msgstr "Wärmer" -#: f.edit.cc:2035 f.effects.cc:1009 +#: f.edit.cc:2046 f.effects.cc:1010 msgid "Dark Areas" msgstr "Dunkle Bereiche" -#: f.edit.cc:2044 +#: f.edit.cc:2055 msgid "Max." msgstr "Max." -#: f.edit.cc:2045 f.edit.cc:2046 f.edit.cc:2047 +#: f.edit.cc:2056 f.edit.cc:2057 f.edit.cc:2058 msgid "High" msgstr "Hoch" -#: f.edit.cc:2048 +#: f.edit.cc:2059 msgid "Cooler" msgstr "Kühler" -#: f.edit.cc:2049 +#: f.edit.cc:2060 msgid "Bright" msgstr "Hell" -#: f.edit.cc:2052 f.tools.cc:1595 +#: f.edit.cc:2063 f.tools.cc:1621 msgid "Brightness Distribution" msgstr "Helligkeitsverteilung" -#: f.edit.cc:2055 +#: f.edit.cc:2066 msgid "Click for white balance or black level" msgstr "Anklicken für Weißabgleich oder Schwarzwert" -#: f.edit.cc:2058 +#: f.edit.cc:2069 msgid "Settings File" msgstr "Einstellungsdatei" -#: f.edit.cc:2062 +#: f.edit.cc:2073 msgid "recall previous settings used" msgstr "Vorherige Einstellungen wiederverwenden" -#: f.edit.cc:2764 +#: f.edit.cc:2775 msgid "Adjust Brightness Distribution" msgstr "Helligkeit-Verteilung Justieren" -#: f.edit.cc:2801 +#: f.edit.cc:2812 msgid "Low Cutoff" msgstr "Niedrig Verschnitt" -#: f.edit.cc:2802 +#: f.edit.cc:2813 msgid "High Cutoff" msgstr "Hoch Verschnitt" -#: f.edit.cc:2803 +#: f.edit.cc:2814 msgid "Low Flatten" msgstr "Niedrig abflachen" -#: f.edit.cc:2804 +#: f.edit.cc:2815 msgid "Mid Flatten" msgstr "Mittig abflachen" -#: f.edit.cc:2805 +#: f.edit.cc:2816 msgid "High Flatten" msgstr "Hoch abflachen" -#: f.edit.cc:2806 +#: f.edit.cc:2817 msgid "Low Stretch" msgstr "Niedrig strecken" -#: f.edit.cc:2807 +#: f.edit.cc:2818 msgid "Mid Stretch" msgstr "Mittig strecken" -#: f.edit.cc:2808 +#: f.edit.cc:2819 msgid "High Stretch" msgstr "Hoch strecken" -#: f.edit.cc:3138 +#: f.edit.cc:3149 msgid "Zonal Flatten Brightness" msgstr "Zonal Ausgleichen" -#: f.edit.cc:3169 +#: f.edit.cc:3180 msgid "Zones" msgstr "Zonen" -#: f.edit.cc:3176 +#: f.edit.cc:3187 msgid "Deband Dark" msgstr "Entstreifen Dunkel" -#: f.edit.cc:3179 +#: f.edit.cc:3190 msgid "Deband Bright" msgstr "Entstreifen Hell" -#: f.edit.cc:3624 f.widgets.cc:438 f.widgets.cc:677 +#: f.edit.cc:3635 f.widgets.cc:439 f.widgets.cc:682 msgid "Tone Mapping" msgstr "Tone Mapping" -#: f.edit.cc:3653 +#: f.edit.cc:3664 msgid "low" msgstr "niedrig" -#: f.edit.cc:3655 +#: f.edit.cc:3666 msgid "high" msgstr "hoch" -#: f.edit.cc:3658 +#: f.edit.cc:3669 msgid "Amplify" msgstr "Verstärken" -#: f.edit.cc:4033 +#: f.edit.cc:4044 msgid "Lock aspect ratio" msgstr "Breite/Höhe-Verhältnis fixieren" -#: f.edit.cc:4055 +#: f.edit.cc:4066 msgid "Resize Image" msgstr "Bildgröße verändern" -#: f.edit.cc:4232 f.widgets.cc:440 +#: f.edit.cc:4243 f.widgets.cc:441 msgid "Flip" msgstr "Spiegeln" -#: f.edit.cc:4338 +#: f.edit.cc:4349 msgid "+Version" msgstr "+Version" -#: f.edit.cc:4361 +#: f.edit.cc:4372 msgid "Write Text on Image" msgstr "Texte auf Bild schreiben" -#: f.edit.cc:4362 +#: f.edit.cc:4373 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.edit.cc:4411 f.mashup.cc:2437 +#: f.edit.cc:4422 f.mashup.cc:2437 msgid "Text" msgstr "Text" -#: f.edit.cc:4416 +#: f.edit.cc:4427 msgid "Use metadata key" msgstr "Metadata Key benutzen" -#: f.edit.cc:4421 +#: f.edit.cc:4432 msgid "Use text file" msgstr "Text-Datei benutzen" -#: f.edit.cc:4440 f.mashup.cc:2455 +#: f.edit.cc:4451 f.mashup.cc:2455 msgid "text" msgstr "Text" -#: f.edit.cc:4441 f.edit.cc:5279 f.mashup.cc:2456 f.mashup.cc:2798 +#: f.edit.cc:4452 f.edit.cc:5290 f.mashup.cc:2456 f.mashup.cc:2798 msgid "backing" msgstr "Hinterfarbe" -#: f.edit.cc:4442 f.edit.cc:5280 f.mashup.cc:2457 f.mashup.cc:2799 +#: f.edit.cc:4453 f.edit.cc:5291 f.mashup.cc:2457 f.mashup.cc:2799 msgid "outline" msgstr "Umriss" -#: f.edit.cc:4443 f.edit.cc:5281 f.mashup.cc:2458 f.mashup.cc:2800 +#: f.edit.cc:4454 f.edit.cc:5292 f.mashup.cc:2458 f.mashup.cc:2800 msgid "shadow" msgstr "Shatten" -#: f.edit.cc:4469 +#: f.edit.cc:4480 msgid "save to current file" msgstr "in aktueller Datei speichern" -#: f.edit.cc:4470 f.file.cc:605 +#: f.edit.cc:4481 f.file.cc:606 msgid "save as new file version" msgstr "Als neuen Dateiversion speichern" -#: f.edit.cc:4471 +#: f.edit.cc:4482 msgid "" "save to current file \n" "open next file with same text" @@ -1205,15 +1243,15 @@ "In aktueller Datei speichern \n" "Nächste Datei mit gleichem Text öffnen" -#: f.edit.cc:4632 f.mashup.cc:2557 +#: f.edit.cc:4643 f.mashup.cc:2557 f.tools.cc:1060 msgid "select font" msgstr "Font wählen" -#: f.edit.cc:4896 +#: f.edit.cc:4907 msgid "text file is defective" msgstr "Textdatei ist defekt" -#: f.edit.cc:5219 +#: f.edit.cc:5230 msgid "" "Enter line or arrow properties in dialog, \n" "click/drag on image, right click to remove" @@ -1221,23 +1259,23 @@ "Linie/Pfeil Attribute eingeben, am Bild klicken/ziehen, \n" "zum Entfernen rechts klicken" -#: f.edit.cc:5250 +#: f.edit.cc:5261 msgid "Write Line or Arrow on Image" msgstr "Linie/Pfeil am Bild schreiben" -#: f.edit.cc:5258 f.mashup.cc:2777 +#: f.edit.cc:5269 f.mashup.cc:2777 msgid "Line length" msgstr "Linien-Länge" -#: f.edit.cc:5265 f.mashup.cc:2784 +#: f.edit.cc:5276 f.mashup.cc:2784 msgid "Arrow head" msgstr "Pfeil-Kopf" -#: f.edit.cc:5278 f.mashup.cc:2797 +#: f.edit.cc:5289 f.mashup.cc:2797 msgid "line" msgstr "Linie" -#: f.edit.cc:5307 +#: f.edit.cc:5318 msgid "" "fix line/arrow in layout \n" " start new line/arrow" @@ -1245,11 +1283,11 @@ "Linie/Pfeil im Lageplan festsetzen \n" " Neuen Linie/Pfeil starten" -#: f.edit.cc:5896 f.widgets.cc:443 +#: f.edit.cc:5907 f.widgets.cc:444 msgid "Paint Edits" msgstr "Änderungen anmalen" -#: f.edit.cc:5903 f.edit.cc:6132 fotoxx-15.08.cc:3172 +#: f.edit.cc:5914 f.edit.cc:6143 fotoxx-15.09.cc:3123 msgid "" "Select area cannot be kept.\n" "Continue?" @@ -1257,59 +1295,59 @@ "Ausschnitt kann nicht behalten werden.\n" "Fortfahren?" -#: f.edit.cc:5911 f.edit.cc:6140 f.tools.cc:2127 +#: f.edit.cc:5922 f.edit.cc:6151 f.tools.cc:2147 msgid "Edit function must be active" msgstr "Editfunktion muss aktiv sein" -#: f.edit.cc:5916 +#: f.edit.cc:5927 msgid "Cannot use Paint Edits" msgstr "Änderungen Anmalen nicht erlaubt" -#: f.edit.cc:5945 +#: f.edit.cc:5956 msgid "power: center" msgstr "Stärke: Mitte" -#: f.edit.cc:5950 +#: f.edit.cc:5961 msgid "reset area" msgstr "zurücksetzen" -#: f.edit.cc:6125 f.widgets.cc:444 +#: f.edit.cc:6136 f.widgets.cc:445 msgid "Leverage Edits" msgstr "Änderungs-Hebelkraft" -#: f.edit.cc:6126 +#: f.edit.cc:6137 msgid "Edit Function Amplifier" msgstr "Bearbeitungs-Verstärker" -#: f.edit.cc:6145 +#: f.edit.cc:6156 msgid "Cannot use Leverage Edits" msgstr "Änderungs-Hebelkraft nicht erlaubt" -#: f.edit.cc:6178 +#: f.edit.cc:6189 msgid "minimum" msgstr "Minimum" -#: f.edit.cc:6180 +#: f.edit.cc:6191 msgid "maximum" msgstr "Maximum" -#: f.edit.cc:6481 +#: f.edit.cc:6490 msgid "Edit Plugins" msgstr "Plugins bearbeiten" -#: f.edit.cc:6482 +#: f.edit.cc:6491 msgid "Edit plugins menu" msgstr "Plugins-Menu editieren" -#: f.edit.cc:6490 +#: f.edit.cc:6499 msgid "Run as Fotoxx edit function" msgstr "Als Fotoxx-Bearbeitungsfunktion benutzen" -#: f.edit.cc:6728 +#: f.edit.cc:6737 msgid "Plugin working ..." msgstr "Plugin arbeitet ..." -#: f.edit.cc:6737 +#: f.edit.cc:6746 msgid "plugin failed" msgstr "Plug-in fehlgeschlagen" @@ -1341,7 +1379,7 @@ msgid "Background" msgstr "Hintergrund" -#: f.effects.cc:713 f.widgets.cc:480 +#: f.effects.cc:713 f.widgets.cc:481 msgid "Line Drawing" msgstr "Stift-Zeichnung" @@ -1349,201 +1387,201 @@ msgid "black/white" msgstr "schwarzweiß" -#: f.effects.cc:1003 f.widgets.cc:481 +#: f.effects.cc:1004 f.widgets.cc:482 msgid "Color Drawing" msgstr "Farb-Zeichnung" -#: f.effects.cc:1010 +#: f.effects.cc:1011 msgid "Bright Areas" msgstr "Hellere Bereiche" -#: f.effects.cc:1264 f.widgets.cc:482 +#: f.effects.cc:1265 f.widgets.cc:483 msgid "Graduated Blur" msgstr "Gestaffelte Verwischen" -#: f.effects.cc:1268 +#: f.effects.cc:1269 msgid "Contrast Limit" msgstr "Kontrast-Grenzwert" -#: f.effects.cc:1271 f.repair.cc:747 +#: f.effects.cc:1272 f.repair.cc:748 msgid "Blur Radius" msgstr "Verwisch-Radius" -#: f.effects.cc:1485 +#: f.effects.cc:1486 msgid "Simulate Embossing" msgstr "Prägen simulieren" -#: f.effects.cc:1502 +#: f.effects.cc:1503 msgid "depth" msgstr "Tiefe" -#: f.effects.cc:1703 +#: f.effects.cc:1705 msgid "Simulate Tiles" msgstr "Kacheln simulieren" -#: f.effects.cc:1707 +#: f.effects.cc:1709 msgid "tile size" msgstr "Kachelgröße" -#: f.effects.cc:1710 +#: f.effects.cc:1712 msgid "tile gap" msgstr "Spaltbreite" -#: f.effects.cc:1713 +#: f.effects.cc:1715 msgid "3D depth" msgstr "3D Tiefe" -#: f.effects.cc:1937 +#: f.effects.cc:1939 msgid "Convert Image to Dots" msgstr "Bild in Rasterpunkte umwandeln" -#: f.effects.cc:1941 +#: f.effects.cc:1943 msgid "dot size" msgstr "Punktgröße" -#: f.effects.cc:2161 +#: f.effects.cc:2168 msgid "Simulate Painting" msgstr "Malen Simulieren" -#: f.effects.cc:2165 +#: f.effects.cc:2172 msgid "color depth" msgstr "Farbtiefe" -#: f.effects.cc:2169 +#: f.effects.cc:2176 msgid "patch area goal" msgstr "Fleckgröße Ziel" -#: f.effects.cc:2173 +#: f.effects.cc:2180 msgid "req. color match" msgstr "Farbanpassung" -#: f.effects.cc:2177 +#: f.effects.cc:2184 msgid "borders" msgstr "Ränder" -#: f.effects.cc:2750 f.widgets.cc:487 +#: f.effects.cc:2757 f.widgets.cc:488 msgid "Vignette" msgstr "Vignette" -#: f.effects.cc:3118 +#: f.effects.cc:3125 msgid "Add Texture" msgstr "Textur addieren" -#: f.effects.cc:3334 +#: f.effects.cc:3341 msgid "Background Pattern" msgstr "Hintergrund Muster" -#: f.effects.cc:3338 +#: f.effects.cc:3345 msgid "Pattern File:" msgstr "Musterdatei" -#: f.effects.cc:3343 +#: f.effects.cc:3350 msgid "Geometry" msgstr "Abmaße" -#: f.effects.cc:3344 +#: f.effects.cc:3351 msgid "Calculate" msgstr "Rechnen" -#: f.effects.cc:3346 +#: f.effects.cc:3353 msgid "Zoom" msgstr "Zoom" -#: f.effects.cc:3357 f.widgets.cc:489 +#: f.effects.cc:3364 f.widgets.cc:490 msgid "Pattern" msgstr "Muster" -#: f.effects.cc:3364 +#: f.effects.cc:3371 msgid "Overlap" msgstr "Überschneidung" -#: f.effects.cc:3371 +#: f.effects.cc:3378 msgid "Opacity" msgstr "Opazität" -#: f.effects.cc:3410 +#: f.effects.cc:3417 msgid "choose pattern tile" msgstr "Musterkachel wählen" -#: f.effects.cc:3755 +#: f.effects.cc:3762 msgid "Create Mosaic" msgstr "Mosaik erstellen" -#: f.effects.cc:3841 +#: f.effects.cc:3848 msgid "Tile" msgstr "Kachel" -#: f.effects.cc:3849 f.widgets.cc:484 +#: f.effects.cc:3856 f.widgets.cc:485 msgid "Tiles" msgstr "Kacheln" -#: f.effects.cc:3855 +#: f.effects.cc:3862 msgid "Tile blending" msgstr "Kacheln einblenden" -#: f.effects.cc:3935 +#: f.effects.cc:3942 #, c-format msgid "exceeded max. tiles: %d" msgstr "Max. Kacheln überschritten: %d" -#: f.effects.cc:3950 +#: f.effects.cc:3957 #, c-format msgid "only %d tile images found" msgstr "Nur %d Kachelbilder gefunden" -#: f.effects.cc:4326 f.widgets.cc:491 +#: f.effects.cc:4333 f.widgets.cc:492 msgid "Custom Kernel" msgstr "Benutzerspezifischer Kernel" -#: f.effects.cc:4330 +#: f.effects.cc:4337 msgid "Kernel size" msgstr "Kernelgröße" -#: f.effects.cc:4335 +#: f.effects.cc:4342 msgid "Divisor" msgstr "Teiler" -#: f.effects.cc:4340 +#: f.effects.cc:4347 msgid "Data file" msgstr "Kerneldatei" -#: f.effects.cc:4606 f.widgets.cc:492 +#: f.effects.cc:4611 f.widgets.cc:493 msgid "Make Waves" msgstr "Wellen machen" -#: f.effects.cc:4613 +#: f.effects.cc:4618 msgid "wavelength" msgstr "Wellenlänge" -#: f.effects.cc:4614 +#: f.effects.cc:4619 msgid "amplitude" msgstr "Amplitude" -#: f.effects.cc:4615 +#: f.effects.cc:4620 msgid "variance" msgstr "Varianz" -#: f.effects.cc:4626 +#: f.effects.cc:4631 msgid "perspective" msgstr "Perspektive" -#: f.effects.cc:4800 +#: f.effects.cc:4805 msgid "Pull image using the mouse." msgstr "Bild mit der Maus schleppen." -#: f.effects.cc:4821 f.widgets.cc:493 +#: f.effects.cc:4826 f.widgets.cc:494 msgid "Directed Blur" msgstr "Gerichtete Verwischung" -#: f.effects.cc:4825 +#: f.effects.cc:4830 msgid "blur span" msgstr "Verwischbreite" -#: f.effects.cc:4828 +#: f.effects.cc:4833 msgid "intensity" msgstr "Stärke" -#: f.file.cc:247 +#: f.file.cc:248 msgid "" "use EXIF photo date or \n" " file modification date" @@ -1551,103 +1589,103 @@ "EXIF Fotodatum oder Datei \n" " Änderungsdatum benutzen" -#: f.file.cc:264 f.widgets.cc:560 +#: f.file.cc:265 f.widgets.cc:565 msgid "File" msgstr "Datei" -#: f.file.cc:357 f.file.cc:1483 f.file.cc:1622 +#: f.file.cc:358 f.file.cc:1487 f.file.cc:1626 msgid "no more images" msgstr "keine Bilder mehr" -#: f.file.cc:417 +#: f.file.cc:418 msgid "UFraw not installed" msgstr "UFraw nicht installiert" -#: f.file.cc:433 f.widgets.cc:679 +#: f.file.cc:434 f.widgets.cc:684 msgid "Open RAW file (ufraw)" msgstr "RAW-Datei öffnen (ufraw)" -#: f.file.cc:438 f.file.cc:509 +#: f.file.cc:439 f.file.cc:510 msgid "RAW type not registered in User Settings" msgstr "RAW-Typ nicht in Benutzereinstellungen registriert" -#: f.file.cc:504 f.widgets.cc:680 +#: f.file.cc:505 f.widgets.cc:685 msgid "Open RAW file (Raw Therapee)" msgstr "RAW-Datei öffnen (Raw Therapee)" -#: f.file.cc:587 +#: f.file.cc:588 msgid "Save Image File" msgstr "Bilddatei speichern" -#: f.file.cc:597 +#: f.file.cc:598 msgid "new version" msgstr "Neue Version" -#: f.file.cc:598 +#: f.file.cc:599 msgid "new file" msgstr "Neue Datei" -#: f.file.cc:599 +#: f.file.cc:600 msgid "replace file" msgstr "Datei ersetzen" -#: f.file.cc:606 f.file.cc:2281 +#: f.file.cc:607 f.file.cc:2344 msgid "save as new file name or type" msgstr "Als neuen Dateinamen oder Typ speichern" -#: f.file.cc:608 +#: f.file.cc:609 msgid "replace old file (OVERWRITE)" msgstr "Vorherige Datei ersetzen (ÜBERSCHREIBEN" -#: f.file.cc:646 f.file.cc:2071 +#: f.file.cc:647 f.file.cc:2124 msgid "cannot save as RAW type" msgstr "Kann nicht als RAW-Datei speichern" -#: f.file.cc:773 f.widgets.cc:396 +#: f.file.cc:774 f.widgets.cc:395 msgid "Rename Image File" msgstr "Bilddatei umbenennen" -#: f.file.cc:780 +#: f.file.cc:781 msgid "Old Name" msgstr "Vorheriger Name" -#: f.file.cc:790 +#: f.file.cc:791 msgid "previous name" msgstr "Vorheriger Name" -#: f.file.cc:791 +#: f.file.cc:792 msgid "add 1" msgstr "1 addieren" -#: f.file.cc:946 +#: f.file.cc:950 msgid "Create Blank Image" msgstr "Leerbild erstellen" -#: f.file.cc:948 +#: f.file.cc:952 msgid "file name" msgstr "Dateiname" -#: f.file.cc:982 +#: f.file.cc:986 msgid "supply a file name" msgstr "Dateinamen eingeben" -#: f.file.cc:1114 +#: f.file.cc:1118 msgid "Copy Image File" msgstr "Bilddatei kopieren" -#: f.file.cc:1115 +#: f.file.cc:1119 msgid "Move Image File" msgstr "Bilddatei versetzen" -#: f.file.cc:1158 +#: f.file.cc:1162 msgid "new location" msgstr "Neue Speicherstelle" -#: f.file.cc:1228 +#: f.file.cc:1232 msgid "new location is not a directory" msgstr "Neue Speicherstelle muß ein Verzeichnis sein" -#: f.file.cc:1270 f.file.cc:1467 f.file.cc:1605 +#: f.file.cc:1274 f.file.cc:1471 f.file.cc:1609 #, c-format msgid "" "delete failed: \n" @@ -1656,15 +1694,15 @@ "Löschen fehlgeschlagen: \n" " %s" -#: f.file.cc:1312 f.widgets.cc:398 +#: f.file.cc:1316 f.widgets.cc:397 msgid "Trash Image File" msgstr "Bilddatei in den Abfall" -#: f.file.cc:1313 f.file.cc:1520 +#: f.file.cc:1317 f.file.cc:1524 msgid "(automatic step to next image)" msgstr "(automatisch zum nächsten Bild)" -#: f.file.cc:1381 +#: f.file.cc:1385 msgid "" "Linux standard trash does not work. \n" "Desktop trash folder will be created." @@ -1672,7 +1710,7 @@ "Linux Standard-Abfall funktioniert nicht. \n" "Desktop Abfall-Ordner wird erstellt." -#: f.file.cc:1384 +#: f.file.cc:1388 msgid "" "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" @@ -1680,49 +1718,101 @@ "Linux und Desktop Abfall funktionieren nicht. \n" "Bilddatei permanent löschen?" -#: f.file.cc:1387 +#: f.file.cc:1391 #, c-format msgid "Cannot create trash folder: %s" msgstr "Kann Abfallkorb nicht erstellen: %s" -#: f.file.cc:1399 +#: f.file.cc:1403 msgid "Move read-only file to trash?" msgstr "Schreibgeschützte Datei in den Abfall?" -#: f.file.cc:1454 +#: f.file.cc:1458 #, c-format msgid "error: %s" msgstr "Fehler: %s" -#: f.file.cc:1519 +#: f.file.cc:1523 msgid "Delete Image File - CANNOT BE REVERSED" msgstr "Bilddatei löschen - NICHT UMKEHRBAR" -#: f.file.cc:1595 +#: f.file.cc:1599 msgid "Delete read-only file?" msgstr "Schreibgeschützte Datei löschen?" -#: f.file.cc:1911 f.widgets.cc:390 +#: f.file.cc:1820 f.widgets.cc:547 +msgid "Quick Start" +msgstr "Schnell-Start" + +#: f.file.cc:1823 f.widgets.cc:548 +msgid "User Guide" +msgstr "Benutzeranleitung" + +#: f.file.cc:1826 f.widgets.cc:549 +msgid "User Guide Changes" +msgstr "Benutzeranleitung Änderungen" + +#: f.file.cc:1829 f.widgets.cc:551 +msgid "README" +msgstr "LIESMICH" + +#: f.file.cc:1832 f.widgets.cc:550 +msgid "Edit Functions Summary" +msgstr "Verarbeitungsfunktionen Übersicht" + +#: f.file.cc:1835 f.widgets.cc:552 +msgid "Change Log" +msgstr "Änderungslog" + +#: f.file.cc:1838 f.widgets.cc:553 +msgid "Log File" +msgstr "Fehlerlogdatei" + +#: f.file.cc:1841 f.widgets.cc:554 +msgid "Translations" +msgstr "Übersetzungen" + +#: f.file.cc:1844 f.widgets.cc:555 +msgid "Home Page" +msgstr "Homepage" + +#: f.file.cc:1847 f.widgets.cc:556 +msgid "About" +msgstr "Über Fotoxx" + +#: f.file.cc:1851 f.widgets.cc:577 f.widgets.cc:599 fotoxx.h:1119 +msgid "Help" +msgstr "Hilfe" + +#: f.file.cc:1961 f.widgets.cc:389 msgid "Open Image File" msgstr "Bilddatei öffnen" -#: f.file.cc:1929 +#: f.file.cc:1979 msgid "unknown file type" msgstr "Dateityp unbekannt" -#: f.file.cc:2197 +#: f.file.cc:2117 +msgid "" +"Transparency map will be lost.\n" +"save to PNG file to retain." +msgstr "" +"Transparenzdaten gehen verloren.\n" +"Als PNG Datei speichern zum behalten." + +#: f.file.cc:2260 msgid "Unable to copy EXIF/IPTC data" msgstr "Kann nicht EXIF/IPTC Daten kopieren" -#: f.file.cc:2297 +#: f.file.cc:2360 msgid "make current" msgstr "aktuell machen" -#: f.file.cc:2390 +#: f.file.cc:2453 msgid "jpeg quality must be 1-100" msgstr "jpeg Qualität muss 1-100 sein" -#: f.file.cc:2417 +#: f.file.cc:2480 #, c-format msgid "" "Overwrite file? \n" @@ -1731,138 +1821,138 @@ "Datei überschreiben? \n" " %s" -#: f.file.cc:2669 f.file.cc:2738 +#: f.file.cc:2732 f.file.cc:2801 #, c-format msgid "file not found: %s" msgstr "Datei nicht gefunden: %s" -#: f.file.cc:2675 f.file.cc:2744 +#: f.file.cc:2738 f.file.cc:2807 #, c-format msgid "file type not supported: %s" msgstr "Dateityp nicht unterstützt: %s" -#: f.gallery.cc:921 f.gallery.cc:1010 f.widgets.cc:592 +#: f.gallery.cc:911 f.gallery.cc:1000 f.widgets.cc:597 msgid "Scroll" msgstr "Scrollen" -#: f.gallery.cc:925 +#: f.gallery.cc:915 msgid "Sync" msgstr "Sync" -#: f.gallery.cc:935 f.repair.cc:5783 f.repair.cc:5788 fotoxx.h:1132 +#: f.gallery.cc:925 f.repair.cc:5779 f.repair.cc:5784 fotoxx.h:1140 msgid "Open" msgstr "Öffnen" -#: f.gallery.cc:936 +#: f.gallery.cc:926 msgid "change directory" msgstr "Verzeichnis wechseln" -#: f.gallery.cc:944 +#: f.gallery.cc:934 msgid "GoTo" msgstr "GehZu" -#: f.gallery.cc:950 f.widgets.cc:587 +#: f.gallery.cc:940 f.widgets.cc:592 msgid "Sort" msgstr "Sortieren" -#: f.gallery.cc:956 f.gallery.cc:1528 f.gallery.cc:1529 f.gallery.cc:1531 -#: f.widgets.cc:585 +#: f.gallery.cc:946 f.gallery.cc:1510 f.gallery.cc:1511 f.gallery.cc:1513 +#: f.widgets.cc:590 msgid "Zoom+" msgstr "Zoom+" -#: f.gallery.cc:966 f.gallery.cc:1530 f.gallery.cc:1532 f.widgets.cc:586 +#: f.gallery.cc:956 f.gallery.cc:1512 f.gallery.cc:1514 f.widgets.cc:591 msgid "Zoom-" msgstr "Zoom-" -#: f.gallery.cc:978 f.gallery.cc:1536 +#: f.gallery.cc:968 f.gallery.cc:1518 msgid "Row↑" msgstr "Reihe↑" -#: f.gallery.cc:986 f.gallery.cc:1537 +#: f.gallery.cc:976 f.gallery.cc:1519 msgid "Row↓" msgstr "Reihe↓" -#: f.gallery.cc:994 f.gallery.cc:1534 f.gallery.cc:1541 f.widgets.cc:590 +#: f.gallery.cc:984 f.gallery.cc:1516 f.gallery.cc:1523 f.widgets.cc:595 msgid "Page↑" msgstr "Seite↑" -#: f.gallery.cc:1002 f.gallery.cc:1535 f.gallery.cc:1542 f.widgets.cc:591 +#: f.gallery.cc:992 f.gallery.cc:1517 f.gallery.cc:1524 f.widgets.cc:596 msgid "Page↓" msgstr "Seite↓" -#: f.gallery.cc:1016 f.gallery.cc:1539 f.widgets.cc:588 +#: f.gallery.cc:1006 f.gallery.cc:1521 f.widgets.cc:593 msgid "First" msgstr "Erste" -#: f.gallery.cc:1017 f.gallery.cc:1540 f.widgets.cc:589 +#: f.gallery.cc:1007 f.gallery.cc:1522 f.widgets.cc:594 msgid "Last" msgstr "Letzte" -#: f.gallery.cc:1134 +#: f.gallery.cc:1120 msgid "Choose image directory" msgstr "Bild-Verzeichnis wählen" -#: f.gallery.cc:1141 f.gallery.cc:1155 +#: f.gallery.cc:1127 f.gallery.cc:1141 msgid "recent" msgstr "kürzlich" -#: f.gallery.cc:1142 f.gallery.cc:1160 +#: f.gallery.cc:1128 f.gallery.cc:1146 msgid "newest" msgstr "neueste" -#: f.gallery.cc:1224 +#: f.gallery.cc:1210 msgid "no albums found" msgstr "Keine Alben gefunden" -#: f.gallery.cc:1231 +#: f.gallery.cc:1217 msgid "Choose album" msgstr "Album wählen" -#: f.gallery.cc:1281 +#: f.gallery.cc:1267 msgid "Gallery Sort" msgstr "Galerie-Sortierung" -#: f.gallery.cc:1285 +#: f.gallery.cc:1271 msgid "File Name" msgstr "Dateinamen" -#: f.gallery.cc:1286 +#: f.gallery.cc:1272 msgid "File Mod Date/Time" msgstr "Dateiänderungs-Datum/Zeit" -#: f.gallery.cc:1287 +#: f.gallery.cc:1273 msgid "Photo Date/Time (EXIF)" msgstr "Foto Datum/Zeit (EXIF)" -#: f.gallery.cc:1289 +#: f.gallery.cc:1275 msgid "ascending" msgstr "aufsteigend" -#: f.gallery.cc:1290 +#: f.gallery.cc:1276 msgid "descending" msgstr "absteigend" -#: f.gallery.cc:2244 fotoxx.h:1157 +#: f.gallery.cc:2213 fotoxx.h:1165 msgid "Select Files" msgstr "Dateien auswählen" -#: f.gallery.cc:2716 +#: f.gallery.cc:2684 msgid "Click list position. Click thumbnail to add." msgstr "Listenposition anklicken. Thumbnail anklicken um zu addieren." -#: f.gallery.cc:2742 f.gallery.cc:2990 +#: f.gallery.cc:2710 f.gallery.cc:2958 msgid "Edit Bookmarks" msgstr "Lesezeichen bearbeiten" -#: f.gallery.cc:2917 +#: f.gallery.cc:2885 msgid "unable to save bookmarks file" msgstr "Kann Lesezeichen-Datei nicht speichern" -#: f.gallery.cc:2990 +#: f.gallery.cc:2958 msgid "Go To Bookmark" msgstr "Zum Lesezeichen springen" -#: f.gallery.cc:3047 f.meta.cc:2732 f.repair.cc:7410 +#: f.gallery.cc:3015 f.meta.cc:2772 f.repair.cc:7407 msgid "file not found" msgstr "Datei nicht gefunden" @@ -2056,7 +2146,7 @@ msgid "Hard" msgstr "Fest" -#: f.mashup.cc:1304 f.repair.cc:5378 +#: f.mashup.cc:1304 f.repair.cc:5375 msgid "Blend" msgstr "Beimischen" @@ -2072,7 +2162,7 @@ msgid "Gradual" msgstr "Stufenweise" -#: f.mashup.cc:1580 fotoxx.h:1136 +#: f.mashup.cc:1580 fotoxx.h:1144 msgid "Power" msgstr "Stärke" @@ -2131,123 +2221,127 @@ msgid "exceeded %d line entries" msgstr "%d Linie überschritten" -#: f.meta.cc:179 f.widgets.cc:657 +#: f.meta.cc:179 f.widgets.cc:662 msgid "View Metadata" msgstr "Metadata ansehen" -#: f.meta.cc:420 f.meta.cc:1756 f.widgets.cc:408 f.widgets.cc:658 +#: f.meta.cc:419 f.meta.cc:1796 f.widgets.cc:407 f.widgets.cc:663 msgid "Edit Metadata" msgstr "Metadata bearbeiten" -#: f.meta.cc:430 +#: f.meta.cc:422 f.meta.cc:3748 +msgid "save metadata to file" +msgstr "Metadaten in Datei speichern" + +#: f.meta.cc:431 msgid "Image Date" msgstr "Bild Datum" -#: f.meta.cc:433 +#: f.meta.cc:434 msgid "Time" msgstr "Zeit" -#: f.meta.cc:439 +#: f.meta.cc:440 msgid "Rating (stars):" msgstr "Bewertung (Sterne):" -#: f.meta.cc:451 +#: f.meta.cc:452 msgid "Caption" msgstr "Titel" -#: f.meta.cc:457 +#: f.meta.cc:458 msgid "Comments" msgstr "Kommentare" -#: f.meta.cc:465 +#: f.meta.cc:466 msgid "Enter New Tag" msgstr "Neues Tag eingeben" -#: f.meta.cc:472 f.meta.cc:4889 +#: f.meta.cc:473 f.meta.cc:4930 msgid "Matching Tags" msgstr "Passende Tags" -#: f.meta.cc:480 +#: f.meta.cc:481 msgid "Image Tags" msgstr "Bild Tags" -#: f.meta.cc:486 +#: f.meta.cc:487 msgid "Recent Tags" msgstr "Kürzliche Tags" -#: f.meta.cc:495 f.meta.cc:1978 f.meta.cc:4896 +#: f.meta.cc:496 f.meta.cc:2018 f.meta.cc:4937 msgid "Defined Tags Category" msgstr "Definierte Tags Gruppe" -#: f.meta.cc:886 +#: f.meta.cc:887 msgid "date format is YYYY-MM-DD" msgstr "Datumformat ist JJJJ-MM-TT" -#: f.meta.cc:890 +#: f.meta.cc:891 msgid "date is invalid" msgstr "Datum ist ungültig" -#: f.meta.cc:924 +#: f.meta.cc:925 msgid "time format is HH:MM [:SS]" msgstr "Zeitformat ist HH:MM [:SS]" -#: f.meta.cc:928 +#: f.meta.cc:929 msgid "time is invalid" msgstr "Zeit ist ungültig" -#: f.meta.cc:974 fotoxx.h:1121 +#: f.meta.cc:1014 fotoxx.h:1129 msgid "Manage Tags" msgstr "Tags verwalten" -#: f.meta.cc:974 +#: f.meta.cc:1014 msgid "orphan tags" msgstr "verwaiste Tags" -#: f.meta.cc:978 +#: f.meta.cc:1018 msgid "category" msgstr "Gruppe" -#: f.meta.cc:981 +#: f.meta.cc:1021 msgid "tag" msgstr "Tag" -#: f.meta.cc:988 +#: f.meta.cc:1028 msgid "Defined Tags:" msgstr "Definierte Tags:" -#: f.meta.cc:1760 f.meta.cc:2418 +#: f.meta.cc:1800 f.meta.cc:2458 msgid "key name" msgstr "Schlüsselwort" -#: f.meta.cc:1762 f.meta.cc:2419 +#: f.meta.cc:1802 f.meta.cc:2459 msgid "key value" msgstr "Inhalt" -#: f.meta.cc:1849 f.widgets.cc:410 +#: f.meta.cc:1889 f.widgets.cc:409 msgid "Delete Metadata" msgstr "Metadata löschen" -#: f.meta.cc:1851 fotoxx.h:1070 +#: f.meta.cc:1891 fotoxx.h:1078 msgid "All" msgstr "Alles" -#: f.meta.cc:1852 +#: f.meta.cc:1892 msgid "One Key:" msgstr "Ein Key:" -#: f.meta.cc:1955 f.widgets.cc:411 f.widgets.cc:530 +#: f.meta.cc:1995 f.widgets.cc:410 f.widgets.cc:533 msgid "Batch Add/Remove Tags" msgstr "Tags zuweisen/entfernen Stapelbetrieb" -#: f.meta.cc:1966 +#: f.meta.cc:2006 msgid "tags to add" msgstr "Tags zum Zuweisen" -#: f.meta.cc:1967 +#: f.meta.cc:2007 msgid "tags to remove" msgstr "Tags zum Entfernen" -#: f.meta.cc:2051 +#: f.meta.cc:2091 #, c-format msgid "" "%s \n" @@ -2256,15 +2350,15 @@ "%s \n" " Zuviele Tags" -#: f.meta.cc:2166 +#: f.meta.cc:2206 msgid "specify files and tags" msgstr "Tags und Dateien angeben" -#: f.meta.cc:2226 +#: f.meta.cc:2266 msgid "tag names file" msgstr "Tag-Namen Datei" -#: f.meta.cc:2298 +#: f.meta.cc:2338 #, c-format msgid "" "%d tags to rename \n" @@ -2275,32 +2369,32 @@ "in %d Bilddateien. \n" "Ausführen?" -#: f.meta.cc:2409 +#: f.meta.cc:2449 msgid "Batch Metadata" msgstr "Metadata Stapelbetrieb" -#: f.meta.cc:2455 +#: f.meta.cc:2495 msgid "enter key names" msgstr "Key-Namen eingeben" -#: f.meta.cc:2461 fotoxx.h:1129 +#: f.meta.cc:2501 fotoxx.h:1137 msgid "no files selected" msgstr "Keine Dateien ausgewählt" -#: f.meta.cc:3164 f.meta.cc:3899 f.meta.cc:4163 +#: f.meta.cc:3204 f.meta.cc:3940 f.meta.cc:4204 #, c-format msgid "bad latitude/longitude: %s %s" msgstr "Latitude/Longitude falsch: %s %s" -#: f.meta.cc:3207 f.meta.cc:3571 f.meta.cc:4372 f.meta.cc:4780 +#: f.meta.cc:3247 f.meta.cc:3611 f.meta.cc:4413 f.meta.cc:4821 msgid "-noindex in use, disabled" msgstr "-noindex im Einsatz, gesperrt" -#: f.meta.cc:3223 +#: f.meta.cc:3263 msgid "choose map file" msgstr "Kartendatei wählen" -#: f.meta.cc:3332 +#: f.meta.cc:3372 msgid "" "fotoxx-maps package not installed \n" "(see http://kornelix.com/packages and /tarballs)" @@ -2308,51 +2402,51 @@ "fotoxx-maps Paket nicht installiert \n" "(http://kornelix.com/packages und /tarballs)" -#: f.meta.cc:3337 +#: f.meta.cc:3377 #, c-format msgid "map file %s is missing" msgstr "Kartendatei %s fehlt" -#: f.meta.cc:3341 +#: f.meta.cc:3381 #, c-format msgid "" "map latitude/longitude data unreasonable \n" " %.3f %.3f %.3f %.3f" msgstr "Karte Breitengrad/Längengrad unlogisch %.3f %.3f %.3f %.3f" -#: f.meta.cc:3620 +#: f.meta.cc:3660 msgid "No matching images found" msgstr "Keine übereinstimmenden Bilder gefunden" -#: f.meta.cc:3660 +#: f.meta.cc:3700 msgid "search range (km)" msgstr "Suchentfernung (km)" -#: f.meta.cc:3693 f.widgets.cc:414 f.widgets.cc:659 +#: f.meta.cc:3733 f.widgets.cc:413 f.widgets.cc:664 msgid "Edit Geotags" msgstr "Geotags bearbeiten" -#: f.meta.cc:3694 +#: f.meta.cc:3734 msgid "Geocoding web service courtesy of" msgstr "Geocodingdienst mit Genehmigung von" -#: f.meta.cc:3709 f.meta.cc:3949 f.meta.cc:5655 +#: f.meta.cc:3750 f.meta.cc:3990 f.meta.cc:5710 msgid "city" msgstr "Stadt" -#: f.meta.cc:3712 f.meta.cc:3952 f.meta.cc:5658 +#: f.meta.cc:3753 f.meta.cc:3993 f.meta.cc:5713 msgid "country" msgstr "Land" -#: f.meta.cc:3794 f.meta.cc:4080 +#: f.meta.cc:3835 f.meta.cc:4121 msgid "city not found" msgstr "Stadt nicht gefunden" -#: f.meta.cc:3915 f.widgets.cc:415 f.widgets.cc:533 +#: f.meta.cc:3956 f.widgets.cc:414 f.widgets.cc:536 msgid "Batch Add Geotags" msgstr "Geotags zu Bilder addieren" -#: f.meta.cc:4142 +#: f.meta.cc:4183 msgid "" "data is incomplete \n" " proceed?" @@ -2360,140 +2454,140 @@ "Daten nicht vollständig \n" " Fortsetzen?" -#: f.meta.cc:4199 +#: f.meta.cc:4240 msgid "choose city" msgstr "Stadt auswählen" -#: f.meta.cc:4286 +#: f.meta.cc:4327 msgid "not found" msgstr "Nicht gefunden" -#: f.meta.cc:4287 +#: f.meta.cc:4328 msgid "city and country required" msgstr "Stadt und Land erforderlich" -#: f.meta.cc:4387 +#: f.meta.cc:4428 msgid "Report Geotag Groups" msgstr "Geotag-Gruppen auflisten" -#: f.meta.cc:4388 +#: f.meta.cc:4429 msgid "Group by country" msgstr "Nach Land gruppieren" -#: f.meta.cc:4389 +#: f.meta.cc:4430 msgid "Group by country/city" msgstr "Nach Land/Stadt gruppieren" -#: f.meta.cc:4390 +#: f.meta.cc:4431 msgid "Group by country/city/date" msgstr "Nach Land/Stadt/Datum gruppieren" -#: f.meta.cc:4393 +#: f.meta.cc:4434 msgid "Combine within" msgstr "Kombinieren innerhalb" -#: f.meta.cc:4395 +#: f.meta.cc:4436 msgid "days" msgstr "Tage" -#: f.meta.cc:4511 +#: f.meta.cc:4552 msgid "geotag groups" msgstr "Geotaggruppen" -#: f.meta.cc:4817 +#: f.meta.cc:4858 msgid "Search Image Metadata" msgstr "Bilder-Metadaten suchen" -#: f.meta.cc:4821 +#: f.meta.cc:4862 msgid "images to search:" msgstr "Bilder durchsuchen:" -#: f.meta.cc:4822 +#: f.meta.cc:4863 msgid "all" msgstr "Alle" -#: f.meta.cc:4823 +#: f.meta.cc:4864 msgid "current set only" msgstr "nur Aktueller Satz" -#: f.meta.cc:4826 +#: f.meta.cc:4867 msgid "matching images:" msgstr "passende Bilder:" -#: f.meta.cc:4827 +#: f.meta.cc:4868 msgid "new set" msgstr "neuer Satz" -#: f.meta.cc:4828 +#: f.meta.cc:4869 msgid "add to set" msgstr "dem Satz zufügen" -#: f.meta.cc:4829 +#: f.meta.cc:4870 msgid "remove" msgstr "entfernen" -#: f.meta.cc:4832 +#: f.meta.cc:4873 msgid "report type:" msgstr "Bericht-Typ:" -#: f.meta.cc:4833 +#: f.meta.cc:4874 msgid "gallery" msgstr "Galerie" -#: f.meta.cc:4834 fotoxx-15.08.cc:801 +#: f.meta.cc:4875 fotoxx-15.09.cc:781 msgid "metadata" msgstr "Metadaten" -#: f.meta.cc:4840 +#: f.meta.cc:4881 msgid "date range" msgstr "Datumsbereich" -#: f.meta.cc:4841 +#: f.meta.cc:4882 msgid "stars range" msgstr "Sterne-Wertebereich" -#: f.meta.cc:4842 +#: f.meta.cc:4883 msgid "search tags" msgstr "Such-Tags" -#: f.meta.cc:4843 +#: f.meta.cc:4884 msgid "search text" msgstr "Text durchsuchen" -#: f.meta.cc:4844 +#: f.meta.cc:4885 msgid "search files" msgstr "Dateien suchen" -#: f.meta.cc:4849 +#: f.meta.cc:4890 msgid "(yyyymmdd)" msgstr "(jjjjmmtt)" -#: f.meta.cc:4854 +#: f.meta.cc:4895 msgid "last version only" msgstr "Nur Neueste Version" -#: f.meta.cc:4856 +#: f.meta.cc:4897 msgid "all/any" msgstr "alle/irgendeines" -#: f.meta.cc:4875 +#: f.meta.cc:4916 msgid "other criteria" msgstr "Andere Auswahlkriterien" -#: f.meta.cc:4879 +#: f.meta.cc:4920 msgid "other" msgstr "Andere" -#: f.meta.cc:4885 +#: f.meta.cc:4926 msgid "Enter Search Tag" msgstr "Such-Tag eingeben" -#: f.meta.cc:5179 +#: f.meta.cc:5221 #, c-format msgid "not a defined tag: %s" msgstr "kein definiertes Tag: %s" -#: f.meta.cc:5210 +#: f.meta.cc:5252 msgid "" "to remove images from current set, \n" "search current set" @@ -2501,7 +2595,7 @@ "Um Bilder vom aktuellen Satz zu entfernen, \n" "aktuellen Satz durchsuchen" -#: f.meta.cc:5217 +#: f.meta.cc:5259 msgid "" "to add images to current set, \n" "search all images" @@ -2509,32 +2603,41 @@ "Um Bilder dem aktuellen Satz zuzufügen, \n" "alle Bilder durchsuchen" -#: f.meta.cc:5266 +#: f.meta.cc:5303 +#, c-format +msgid "" +"search dates not reasonable \n" +" %s %s" +msgstr "" +"Suchdaten sind sinnlos \n" +" %s %s" + +#: f.meta.cc:5321 msgid "stars range not reasonable" msgstr "Stern-Spanne unvernünftig" -#: f.meta.cc:5511 +#: f.meta.cc:5566 #, c-format msgid "images added: %d removed: %d new count: %d" msgstr "Bilder zugefügt: %d entfernt: %d neue Anzahl: %d" -#: f.meta.cc:5514 +#: f.meta.cc:5569 msgid "no changes made" msgstr "keine Änderungen gemach" -#: f.meta.cc:5652 +#: f.meta.cc:5707 msgid "Add Geotags Search Criteria" msgstr "Geotags Suchkriterien addieren" -#: f.meta.cc:5671 +#: f.meta.cc:5726 msgid "range (km)" msgstr "Entfernung (km)" -#: f.meta.cc:5764 +#: f.meta.cc:5819 msgid "error in latitude/longitude/range" msgstr "Fehler in Längengrad/Breitengrad/Entfernung" -#: f.meta.cc:5828 +#: f.meta.cc:5883 msgid "" "These items are always reported: \n" "date, stars, tags, caption, comment" @@ -2542,19 +2645,19 @@ "Folgende wird immer berichtet: \n" "Datum, Sterne, Tags, Titel, Kommentare" -#: f.meta.cc:5852 +#: f.meta.cc:5907 msgid "Additional Items for Report" msgstr "Zusätzliche Metadaten im Bericht" -#: f.meta.cc:5858 +#: f.meta.cc:5913 msgid "Keyword" msgstr "Schlüsselwort" -#: f.meta.cc:5865 +#: f.meta.cc:5920 msgid "Match Criteria" msgstr "Trefferkriterien" -#: f.meta.cc:6425 +#: f.meta.cc:6480 msgid "image index is missing" msgstr "Bilddatei Index fehlt" @@ -2570,47 +2673,47 @@ msgid "Kuwahara method" msgstr "Kuwahara Methode" -#: f.repair.cc:1012 +#: f.repair.cc:1014 msgid "Apply repeatedly while watching the image." msgstr "Mehrmals anwenden während der Bildbeobachtung." -#: f.repair.cc:1013 +#: f.repair.cc:1015 msgid "Measure" msgstr "Messen" -#: f.repair.cc:1047 +#: f.repair.cc:1049 msgid "Noise Reduction" msgstr "Rauschverminderung" -#: f.repair.cc:1063 +#: f.repair.cc:1065 msgid "Flatten Outliers 1" msgstr "Ausreißer abflachen 1" -#: f.repair.cc:1064 +#: f.repair.cc:1066 msgid "Flatten Outliers 2" msgstr "Ausreißer abflachen 2" -#: f.repair.cc:1065 +#: f.repair.cc:1067 msgid "Median Brightness" msgstr "Mittlere Helligkeit" -#: f.repair.cc:1093 +#: f.repair.cc:1095 msgid "dark areas" msgstr "Dunkle Bereiche" -#: f.repair.cc:1095 +#: f.repair.cc:1097 msgid "all areas" msgstr "Alle Bereiche" -#: f.repair.cc:1193 +#: f.repair.cc:1195 msgid "Measure Noise" msgstr "Rauschen messen" -#: f.repair.cc:1194 +#: f.repair.cc:1196 msgid "Click on a monotone image area." msgstr "Gleichmäßigen Bildbereich anklicken." -#: f.repair.cc:2095 +#: f.repair.cc:2098 msgid "" "1. Drag mouse to select. \n" "2. Erase. 3. Repeat. " @@ -2618,23 +2721,23 @@ "1. Zum Selektieren, Maus ziehen. \n" "2. Löschen. 3. Wiederholen. " -#: f.repair.cc:2117 f.widgets.cc:451 +#: f.repair.cc:2120 f.widgets.cc:452 msgid "Smart Erase" msgstr "Smart löschen" -#: f.repair.cc:2122 fotoxx.h:1140 +#: f.repair.cc:2125 fotoxx.h:1148 msgid "Radius" msgstr "Radius" -#: f.repair.cc:2124 f.widgets.cc:449 +#: f.repair.cc:2127 f.widgets.cc:450 msgid "Blur" msgstr "Verwischen" -#: f.repair.cc:2127 +#: f.repair.cc:2130 msgid "New Area" msgstr "Neuer Ausschnitt" -#: f.repair.cc:2475 +#: f.repair.cc:2479 msgid "" "Method 1:\n" " Left-click on red-eye to darken.\n" @@ -2653,11 +2756,11 @@ "Zurücksetzen:\n" " Rechtsklick in das rote Auge." -#: f.repair.cc:2491 +#: f.repair.cc:2495 msgid "Red Eye Reduction" msgstr "Rote-Augen beseitigen" -#: f.repair.cc:2955 +#: f.repair.cc:2959 msgid "" "shift + left click: pick color or image position \n" "left click or drag: paint color or copy image \n" @@ -2667,40 +2770,40 @@ "Links-Klick oder Ziehen: mit Farbe malen oder vom Bild kopieren \n" "Rechts-Klick oder Ziehen: Farbe oder Bild entfernen" -#: f.repair.cc:2987 f.widgets.cc:453 +#: f.repair.cc:2991 f.widgets.cc:454 msgid "Paint/Clone" msgstr "Malen/Klonen" -#: f.repair.cc:2991 +#: f.repair.cc:2995 msgid "paint color" msgstr "Malfarbe" -#: f.repair.cc:2994 +#: f.repair.cc:2998 msgid "copy from image" msgstr "Vom Bild kopieren" -#: f.repair.cc:3001 f.repair.cc:3557 +#: f.repair.cc:3005 f.repair.cc:3562 msgid "paintbrush radius" msgstr "Pinsel-Radius" -#: f.repair.cc:3002 +#: f.repair.cc:3006 msgid "transparency center" msgstr "Transparenz Mitte" -#: f.repair.cc:3003 +#: f.repair.cc:3007 msgid "transparency edge" msgstr "Transparenz Rand" -#: f.repair.cc:3010 f.repair.cc:3564 +#: f.repair.cc:3014 f.repair.cc:3569 msgid "gradual paint" msgstr "Stufenweise malen" -#: f.repair.cc:3017 +#: f.repair.cc:3021 #, c-format msgid "Undo Memory %d%c" msgstr "Undo-Speicher %d%c" -#: f.repair.cc:3352 +#: f.repair.cc:3357 msgid "" "Undo memory limit has been reached. \n" "Save work with [done], then resume painting." @@ -2708,7 +2811,7 @@ "Undo Speicherkapazität erreicht. \n" "Arbeit mit [fertig] sichern, dann Fortfahren." -#: f.repair.cc:3517 +#: f.repair.cc:3522 msgid "" "left drag: add transparency \n" "right drag: add opacity" @@ -2716,172 +2819,172 @@ "links ziehen: Transparenz addieren \n" "rechts ziehen: Opazität addieren" -#: f.repair.cc:3549 f.widgets.cc:454 +#: f.repair.cc:3554 f.widgets.cc:455 msgid "Paint Transparency" msgstr "Transparenz malen" -#: f.repair.cc:3558 +#: f.repair.cc:3563 msgid "strength center" msgstr "Stärke Mitte" -#: f.repair.cc:3559 +#: f.repair.cc:3564 msgid "strength edge" msgstr "Stärke Rand" -#: f.repair.cc:3769 f.widgets.cc:455 +#: f.repair.cc:3778 f.widgets.cc:456 msgid "Color Mode" msgstr "Farb-Modus" -#: f.repair.cc:3772 +#: f.repair.cc:3781 msgid "black/white positive" msgstr "schwarzweiß Positiv" -#: f.repair.cc:3773 +#: f.repair.cc:3782 msgid "black/white negative" msgstr "schwarzweiß Negativ" -#: f.repair.cc:3774 +#: f.repair.cc:3783 msgid "color positive" msgstr "farbiges Positiv" -#: f.repair.cc:3775 +#: f.repair.cc:3784 msgid "color negative" msgstr "farbiges Negativ" -#: f.repair.cc:3776 +#: f.repair.cc:3785 msgid "sepia" msgstr "Sepia" -#: f.repair.cc:3945 f.widgets.cc:456 +#: f.repair.cc:3954 f.widgets.cc:457 msgid "Shift Colors" msgstr "Farben verschieben" -#: f.repair.cc:4217 +#: f.repair.cc:4226 msgid "+Brightness" msgstr "+Helligkeit" -#: f.repair.cc:4218 +#: f.repair.cc:4227 msgid "+Red -Cyan" msgstr "+Rot -Zyan" -#: f.repair.cc:4219 +#: f.repair.cc:4228 msgid "+Green -Magenta" msgstr "+Grün -Magenta" -#: f.repair.cc:4220 +#: f.repair.cc:4229 msgid "+Blue -Yellow" msgstr "+Blau -Gelb" -#: f.repair.cc:4226 fotoxx.h:1142 +#: f.repair.cc:4235 fotoxx.h:1150 msgid "Red" msgstr "Rot" -#: f.repair.cc:4227 fotoxx.h:1108 +#: f.repair.cc:4236 fotoxx.h:1116 msgid "Green" msgstr "Grün" -#: f.repair.cc:4228 fotoxx.h:1077 +#: f.repair.cc:4237 fotoxx.h:1085 msgid "Blue" msgstr "Blau" -#: f.repair.cc:4527 +#: f.repair.cc:4536 msgid "Color Hue" msgstr "Farbtöne" -#: f.repair.cc:4528 +#: f.repair.cc:4537 msgid "Saturation" msgstr "Farbsättigung" -#: f.repair.cc:4529 +#: f.repair.cc:4538 msgid "Lightness" msgstr "Helligkeit" -#: f.repair.cc:4530 +#: f.repair.cc:4539 msgid "Adjustment" msgstr "Einstellung" -#: f.repair.cc:4869 +#: f.repair.cc:4878 msgid "Ramp brightness across image" msgstr "Helligkeit an-/absteigend im Bild ändern" -#: f.repair.cc:5278 f.tools.cc:2014 +#: f.repair.cc:5286 f.tools.cc:2038 msgid "Click image to select pixels." msgstr "Bild anklicken zum Pixeln auswählen" -#: f.repair.cc:5312 f.widgets.cc:460 +#: f.repair.cc:5317 f.widgets.cc:461 msgid "Color Ramp" msgstr "Farbverlauf" -#: f.repair.cc:5323 +#: f.repair.cc:5328 msgid "Metric:" msgstr "Einheit" -#: f.repair.cc:5754 +#: f.repair.cc:5751 msgid "Color Match Images" msgstr "Bilderfarben anpassen" -#: f.repair.cc:5781 +#: f.repair.cc:5777 msgid "mouse radius for color sample" msgstr "Mausradius für Farbauswahl" -#: f.repair.cc:5784 +#: f.repair.cc:5780 msgid "image for source color" msgstr "Bild für Quellfarbe" -#: f.repair.cc:5786 +#: f.repair.cc:5782 msgid "click on image to get source color" msgstr "Bild anklicken zur Quellfarbe bestimmen" -#: f.repair.cc:5789 +#: f.repair.cc:5785 msgid "image to set matching color" msgstr "Bild zur Abgleichfarbe festlegen" -#: f.repair.cc:5791 +#: f.repair.cc:5787 msgid "click on image to set matching color" msgstr "Bild anklicken zur Abgleichfarbe festlegen" -#: f.repair.cc:5851 +#: f.repair.cc:5848 msgid "select source image color first" msgstr "Farbe vom Quellbild zuerst wählen" -#: f.repair.cc:6036 +#: f.repair.cc:6033 msgid "Change Color Profile" msgstr "Farbraum umwandeln" -#: f.repair.cc:6040 +#: f.repair.cc:6037 msgid "input profile" msgstr "Input-Farbraum" -#: f.repair.cc:6044 +#: f.repair.cc:6041 msgid "output profile" msgstr "Ausgabe-Farbraum" -#: f.repair.cc:6060 +#: f.repair.cc:6057 msgid "color profile" msgstr "Farbraum" -#: f.repair.cc:6106 f.repair.cc:6112 +#: f.repair.cc:6103 f.repair.cc:6109 #, c-format msgid "unknown cms profile %s" msgstr "CMS Farbraum unbekannt %s" -#: f.repair.cc:6244 f.widgets.cc:463 +#: f.repair.cc:6241 f.widgets.cc:464 msgid "Remove Dust" msgstr "Staub entfernen" -#: f.repair.cc:6248 +#: f.repair.cc:6245 msgid "spot size limit" msgstr "Fleckgrößen Limit" -#: f.repair.cc:6251 +#: f.repair.cc:6248 msgid "max. brightness" msgstr "max. Helligkeit" -#: f.repair.cc:6254 +#: f.repair.cc:6251 msgid "min. contrast" msgstr "Min. Kontrast" -#: f.repair.cc:7035 +#: f.repair.cc:7032 msgid "" " Adjust each RGB color to minimize \n" " color fringes at the image extremes. " @@ -2889,35 +2992,35 @@ " Die RGB-Farben einstellen um die Farbränder \n" " im äußeren Bildbereiche zu minimieren. " -#: f.repair.cc:7058 f.widgets.cc:465 +#: f.repair.cc:7055 f.widgets.cc:466 msgid "Color Fringes" msgstr "Farbsaume" -#: f.repair.cc:7257 f.widgets.cc:466 +#: f.repair.cc:7254 f.widgets.cc:467 msgid "Stuck Pixels" msgstr "Feste Pixels" -#: f.repair.cc:7263 +#: f.repair.cc:7260 msgid "pixel group" msgstr "Pixelgruppe" -#: f.repair.cc:7271 f.repair.cc:7339 +#: f.repair.cc:7268 f.repair.cc:7336 msgid "stuck pixels:" msgstr "Feste Pixels:" -#: f.repair.cc:7367 +#: f.repair.cc:7364 msgid "Load Stuck Pixels" msgstr "Festpixel laden" -#: f.repair.cc:7369 +#: f.repair.cc:7366 msgid "File:" msgstr "Datei:" -#: f.repair.cc:7394 f.repair.cc:7451 +#: f.repair.cc:7391 f.repair.cc:7448 msgid "Stuck Pixels file" msgstr "Festpixel Datei" -#: f.repair.cc:7431 +#: f.repair.cc:7428 msgid "file format error" msgstr "Dateiformat Fehler" @@ -2947,7 +3050,7 @@ "Indizieren ist für Such- und Karten-Functionen erforderlich \n" "und damit die Gallerieseiten annehmbar schnell sind." -#: f.tools.cc:106 f.widgets.cc:506 +#: f.tools.cc:106 f.widgets.cc:507 msgid "Index Image Files" msgstr "Bilddateien Indizieren" @@ -3006,184 +3109,184 @@ " %s \n" "Bitte entfernen." -#: f.tools.cc:394 +#: f.tools.cc:392 msgid "no thumbnails directory defined" msgstr "Thumbnails-Verzeichnis nicht definiert" -#: f.tools.cc:739 +#: f.tools.cc:734 msgid "COMPLETED" msgstr "FERTIG" -#: f.tools.cc:778 +#: f.tools.cc:775 msgid "Indexing is required for first-time startup." msgstr "Indizieren ist für erstmaligen Anlauf erforderlich." -#: f.tools.cc:840 +#: f.tools.cc:837 msgid "Recent Files Gallery" msgstr "Zuletzt gesehene Bilder" -#: f.tools.cc:841 +#: f.tools.cc:838 msgid "Newest Files Gallery" msgstr "Neueste Bilddateien" -#: f.tools.cc:842 +#: f.tools.cc:839 msgid "Previous Gallery" msgstr "Vorherige Galerie" -#: f.tools.cc:843 +#: f.tools.cc:840 msgid "Previous Image" msgstr "Vorheriges Bild" -#: f.tools.cc:844 +#: f.tools.cc:841 msgid "Blank Window" msgstr "Leeres Fenster" -#: f.tools.cc:845 +#: f.tools.cc:842 msgid "Directory" msgstr "Verzeichnis" -#: f.tools.cc:846 +#: f.tools.cc:843 msgid "Image File" msgstr "Bilddatei" -#: f.tools.cc:887 f.widgets.cc:507 +#: f.tools.cc:885 f.widgets.cc:508 msgid "User Options" msgstr "Benutzer Optionen" -#: f.tools.cc:890 +#: f.tools.cc:888 msgid "Startup Display" msgstr "Anfangsanzeige" -#: f.tools.cc:901 +#: f.tools.cc:899 msgid "Menu Style" msgstr "Menu-Stil" -#: f.tools.cc:902 +#: f.tools.cc:900 msgid "Icons" msgstr "Icons" -#: f.tools.cc:903 +#: f.tools.cc:901 msgid "Icons + Text" msgstr "Icons + Texte" -#: f.tools.cc:905 +#: f.tools.cc:903 msgid "Icon size" msgstr "Icon-Größe" -#: f.tools.cc:909 +#: f.tools.cc:907 +msgid "Dialog font and size" +msgstr "Dialog Font und Größe" + +#: f.tools.cc:912 msgid "Image Pan/scroll:" msgstr "Bild schwenken/scrollen:" -#: f.tools.cc:912 +#: f.tools.cc:915 msgid "Zooms for 2x" msgstr "Zooms für 2x" -#: f.tools.cc:921 +#: f.tools.cc:924 msgid "JPEG save quality" msgstr "JPEG Qualitätsgrad" -#: f.tools.cc:924 f.tools.cc:3041 -msgid "Thumbnail size" -msgstr "Thumbnailgröße" - -#: f.tools.cc:928 +#: f.tools.cc:931 msgid "show hidden directories in gallery view" msgstr "Versteckten Ordner in Galerie-Ansicht zeigen" -#: f.tools.cc:931 +#: f.tools.cc:934 msgid "prev/next shows last file version only" msgstr "Vorig/Nächst zeigt nur neueste Version" -#: f.tools.cc:934 +#: f.tools.cc:937 msgid "RAW command" msgstr "RAW Befehl" -#: f.tools.cc:938 +#: f.tools.cc:941 msgid "RAW file types" msgstr "RAW Dateitypen" -#: f.tools.cc:1015 +#: f.tools.cc:1021 msgid "Delete present thumbnails to make effective" msgstr "Aktuelle Thumbnails löschen um wirksam zu machen" -#: f.tools.cc:1037 +#: f.tools.cc:1043 msgid "Select startup directory" msgstr "Anfangsverzeichnis wählen" -#: f.tools.cc:1044 +#: f.tools.cc:1050 msgid "Select startup image file" msgstr "Anfangsbilddatei wählen" -#: f.tools.cc:1066 +#: f.tools.cc:1088 msgid "startup directory is invalid" msgstr "Anfangsverzeichnes ungültig" -#: f.tools.cc:1077 +#: f.tools.cc:1099 msgid "startup file is invalid" msgstr "Anfangsdatei ungültig" -#: f.tools.cc:1211 +#: f.tools.cc:1237 msgid "Edit KB Shortcuts" msgstr "Schnelltasten bearbeiten" -#: f.tools.cc:1216 +#: f.tools.cc:1242 msgid "shortcut key:" msgstr "Schnelltaste:" -#: f.tools.cc:1217 +#: f.tools.cc:1243 msgid "(enter key)" msgstr "(Enter-Taste)" -#: f.tools.cc:1343 +#: f.tools.cc:1369 #, c-format msgid "\"%s\" Reserved, cannot be used" msgstr "\"%s\" Reserviert, kann nicht verwendet werden" -#: f.tools.cc:1497 +#: f.tools.cc:1523 msgid "unable to save KB-shortcuts file" msgstr "Kann Schnelltasten-Datei nicht speichern" -#: f.tools.cc:1801 f.widgets.cc:510 +#: f.tools.cc:1827 f.widgets.cc:511 msgid "Grid Lines" msgstr "Gitterlinien" -#: f.tools.cc:1810 +#: f.tools.cc:1836 msgid "x-spacing" msgstr "x-Abstand" -#: f.tools.cc:1811 +#: f.tools.cc:1837 msgid "x-count" msgstr "x-Anzahl" -#: f.tools.cc:1812 +#: f.tools.cc:1838 msgid "x-enable" msgstr "x-aktivieren" -#: f.tools.cc:1818 +#: f.tools.cc:1844 msgid "y-spacing" msgstr "y-Abstand" -#: f.tools.cc:1819 +#: f.tools.cc:1845 msgid "y-count" msgstr "y-Anzahl" -#: f.tools.cc:1820 +#: f.tools.cc:1846 msgid "y-enable" msgstr "y-aktivieren" -#: f.tools.cc:1940 f.tools.cc:1945 f.widgets.cc:511 +#: f.tools.cc:1966 f.tools.cc:1971 f.widgets.cc:512 msgid "Line Color" msgstr "Linienfarbe" -#: f.tools.cc:1942 +#: f.tools.cc:1968 msgid "Area Color" msgstr "Ausschnittfarbe" -#: f.tools.cc:2050 f.widgets.cc:512 +#: f.tools.cc:2073 f.widgets.cc:513 msgid "Show RGB" msgstr "RGB-Werte zeigen" -#: f.tools.cc:2345 +#: f.tools.cc:2365 msgid "" "Drag mouse on image. \n" "Left click to cancel. \n" @@ -3193,27 +3296,27 @@ "Links klicken zum Abbrechen. \n" "Taste M zum Dialog starten/enden." -#: f.tools.cc:2371 f.widgets.cc:513 +#: f.tools.cc:2391 f.widgets.cc:514 msgid "Magnify Image" msgstr "Bild Vergrößern" -#: f.tools.cc:2380 +#: f.tools.cc:2400 msgid "X-size" msgstr "X-Größe" -#: f.tools.cc:2625 +#: f.tools.cc:2645 msgid "Darkest and Brightest Pixels" msgstr "Dunkelste und hellste Pixeln" -#: f.tools.cc:2648 +#: f.tools.cc:2668 msgid "Dark Limit" msgstr "Dunkel Grenzwert" -#: f.tools.cc:2649 +#: f.tools.cc:2669 msgid "Bright Limit" msgstr "Hell Grenzwert" -#: f.tools.cc:2744 +#: f.tools.cc:2764 msgid "" "Brightness should show a gradual ramp \n" "extending all the way to the edges." @@ -3221,114 +3324,154 @@ "Helligkeit soll einen allmählichen Ansteig \n" "zeigen, auch ganz bis zu den Rändern." -#: f.tools.cc:2840 f.widgets.cc:516 +#: f.tools.cc:2860 f.widgets.cc:517 msgid "Monitor Gamma" msgstr "Bildschirm-Gamma" -#: f.tools.cc:2900 +#: f.tools.cc:2920 msgid "Available Translations" msgstr "Vorhandene Übersetzungen" -#: f.tools.cc:2904 +#: f.tools.cc:2924 msgid "Set Language" msgstr "Sprache wechseln" -#: f.tools.cc:3039 f.widgets.cc:519 -msgid "Find Duplicate Images" -msgstr "Duplikat-Bilder suchen" +#: f.tools.cc:3064 f.widgets.cc:520 +msgid "Calibrate Printer" +msgstr "Drucker calibrieren" + +#: f.tools.cc:3087 +msgid "print color chart" +msgstr "Farbkarte drucken" + +#: f.tools.cc:3088 +msgid "scan and save color chart" +msgstr "Farbkarte einscannen und speichern" + +#: f.tools.cc:3089 +msgid "align and trim color chart" +msgstr "Farbkarte richten und schneiden" + +#: f.tools.cc:3090 +msgid "open and process color chart" +msgstr "Farbkarte öffnen und verarbeiten" + +#: f.tools.cc:3091 +msgid "print image with revised colors" +msgstr "Bilddatei mit geänderten Farben drucken" -#: f.tools.cc:3044 -msgid "pixel difference" -msgstr "Pixel-Differenz" +#: f.tools.cc:3258 +#, c-format +msgid "" +"Scan the printed color chart. \n" +"Save in %s/" +msgstr "" +"Gedruckte Farbkarte einscannen. \n" +"Speichern in %s" -#: f.tools.cc:3047 -msgid "pixel count" -msgstr "Pixel-Anzahl" +#: f.tools.cc:3272 +msgid "" +"Open and edit the scanned color chart file. \n" +"Remove any skew or rotation caused by the scanner. \n" +"Trim off all margins. Be careful not to cut off \n" +"any color tile edges or leave any white margins." +msgstr "" +"Eingescannte Farbkartedatei öffnen und bearbeiten. \n" +"Schräglauf oder Verdrehung (vom Scanner) korrigieren. \n" +"Ränder abschneiden. Seien Sie vorsichtig, die Farbkachel \n" +"nicht abzuschneiden oder Ränder übrig zu lassen." -#: f.tools.cc:3050 -msgid "Images:" -msgstr "Bilder:" +#: f.tools.cc:3308 +msgid "Open the trimmed color chart file" +msgstr "Geschnittene Farbkartendatei öffnen" -#: f.tools.cc:3051 -msgid "searching ..." -msgstr "Suchen ..." +#: f.tools.cc:3405 +msgid "" +"Set the file name and location \n" +"for the output color map file." +msgstr "" +"Dateinamen und Speicherstelle fUr die \n" +"ausgabe Farbdatendatei festlegen." -#: f.tools.cc:3053 -msgid "Duplicates:" -msgstr "Duplikate:" +#: f.tools.cc:3440 +msgid "Color map file to use" +msgstr "Farbdatendatei zur Verwendung" -#: f.tools.cc:3071 -#, c-format -msgid "only %d image thumbnails found" -msgstr "Nur %d Bilder-Thumbnails gefunden" +#: f.tools.cc:3461 +msgid "Select the image file to print." +msgstr "Bilddatei zum drucken öffnen." -#: f.widgets.cc:112 -msgid "TOP" -msgstr "TOP" +#: f.tools.cc:3588 +msgid "Image colors are converted for printing." +msgstr "Bildfarben für das Drucken sind geändert." -#: f.widgets.cc:115 +#: f.widgets.cc:111 msgid "Album" -msgstr "" +msgstr "Album" + +#: f.widgets.cc:113 +msgid "TOP" +msgstr "TOP" -#: f.widgets.cc:169 +#: f.widgets.cc:165 msgid "Current Image File (key F)" msgstr "Aktuele Bilddatei (Taste F)" -#: f.widgets.cc:170 +#: f.widgets.cc:166 msgid "Thumbnail Gallery (key G)" msgstr "Thumbnail-Galerie (Taste G)" -#: f.widgets.cc:171 +#: f.widgets.cc:167 msgid "World Maps (key W)" msgstr "Weltkarten (Taste W)" -#: f.widgets.cc:174 +#: f.widgets.cc:170 msgid "Favorite Functions" msgstr "Favoriten Funktionen" -#: f.widgets.cc:175 +#: f.widgets.cc:171 msgid "File: Open, RAW, Rename, Trash, Print" msgstr "Datei: Öffnen, RAW, Umbenennen, Papierkorb, Drucken" -#: f.widgets.cc:176 +#: f.widgets.cc:172 msgid "Save modified image file to disk" msgstr "Geänderte Bilddatei auf Festplatte speichern" -#: f.widgets.cc:177 +#: f.widgets.cc:173 msgid "Open previous or next file (left/right mouse click)" msgstr "Vorherige oder Nächste Bilddatei öffnen (links/rechts Maus-Klick)" -#: f.widgets.cc:178 +#: f.widgets.cc:174 msgid "Metadata: Captions, Tags, Ratings, Geotags, Search ... " msgstr "Metadaten: Titeln, Tags, Bewertungen, Geotags, Suchen ..." -#: f.widgets.cc:179 +#: f.widgets.cc:175 msgid "Areas: Select areas to edit, copy and paste" msgstr "Ausschnitt: Bildausschnitte wählen zum Bearbeiten, Kopieren, Einfügen" -#: f.widgets.cc:180 +#: f.widgets.cc:176 msgid "Edit: Trim, Rotate, Resize, Brightness, Contrast, Text ..." msgstr "" "Bearbeiten: Schneiden, Drehen, Skalieren, Helligkeit, Kontrast, Texte " "zufügen ..." -#: f.widgets.cc:181 +#: f.widgets.cc:177 msgid "Repair: Sharpen, Noise, Red-eyes, Color, Paint, Clone ..." msgstr "Ausbessern: Schärfen, Säubern, Rote-Augen, Farbe, Malen, Klonen ..." -#: f.widgets.cc:182 +#: f.widgets.cc:178 msgid "Bend: Fix Perspective, Bend/Warp image ..." msgstr "Biegen: Perspektive verbessern, Bild entkrümmen ..." -#: f.widgets.cc:183 +#: f.widgets.cc:179 msgid "Effects: Special Effects, Arty Transforms" msgstr "Effekte: Trickeffekte, kunstlerisch Verwandlungen" -#: f.widgets.cc:184 +#: f.widgets.cc:180 msgid "Combine: HDR, HDF, Panorama, Stack, Mashup" msgstr "Verbund: HDR, HDF, Panorama, Stack, Mashup" -#: f.widgets.cc:185 +#: f.widgets.cc:181 msgid "" "Undo or Redo one edit (left/right mouse click) \n" " hold key A to include all edits" @@ -3336,1123 +3479,1095 @@ "Eine Änderung widerrufen oder zurückholen (links/rechts Maus-Klick) \n" " Taste A drucken, um alle Änderungen einzuschließen" -#: f.widgets.cc:187 +#: f.widgets.cc:183 msgid "Tools: Index, Options, Shortcuts, Magnify ..." msgstr "Werkzeuge: Indizieren, Optionen, Abkürzungen, Vergrößern ..." -#: f.widgets.cc:188 +#: f.widgets.cc:184 msgid "Help: Quick Start, User Guide, Recent Changes ..." msgstr "Hilfe: Schnellstart, Benutzeranweisung, neueste Änderungen ..." -#: f.widgets.cc:191 +#: f.widgets.cc:187 msgid "Set gallery from current image file" msgstr "Galerie vom aktuellen Bild herbeiholen" -#: f.widgets.cc:192 +#: f.widgets.cc:188 msgid "Albums: Manage Albums, Slide Show, Desktop Background" msgstr "Alben: Verwalten, Dia-Show, Monitor Hintergrundbild" -#: f.widgets.cc:193 +#: f.widgets.cc:189 msgid "go to bookmarked image" msgstr "Zum Lesezeichen-markierten Bild gehen" -#: f.widgets.cc:194 +#: f.widgets.cc:190 msgid "increase thumbnail size" msgstr "Thumbnails vergrößern" -#: f.widgets.cc:195 +#: f.widgets.cc:191 msgid "reduce thumbnail size" msgstr "Thumbnails verkleinern" -#: f.widgets.cc:196 +#: f.widgets.cc:192 msgid "change sort order" msgstr "Reihenfolge ändern" -#: f.widgets.cc:197 +#: f.widgets.cc:193 msgid "jump to beginning (top)" msgstr "Zum Anfang springen (oben)" -#: f.widgets.cc:198 +#: f.widgets.cc:194 msgid "jump to end (bottom)" msgstr "Zu Ende springen (unten)" -#: f.widgets.cc:199 +#: f.widgets.cc:195 msgid "previous page" msgstr "Vorherige Seite" -#: f.widgets.cc:200 +#: f.widgets.cc:196 msgid "next page" msgstr "Nächste Seite" -#: f.widgets.cc:201 +#: f.widgets.cc:197 msgid "slow scroll" msgstr "Langsam scrollen" -#: f.widgets.cc:202 +#: f.widgets.cc:198 msgid "Batch conversion, metadata, RAW processing" -msgstr "" +msgstr "Stapel konvertieren, Metadaten, RAW Verarbeitung" -#: f.widgets.cc:205 +#: f.widgets.cc:201 msgid "Choose a map for image locations" msgstr "Karte für Bilder-Ortsangabe wählen" -#: f.widgets.cc:206 +#: f.widgets.cc:202 msgid "Set image search radius for map click" msgstr "Such-Radius von Karte-Anklick setzen" -#: f.widgets.cc:209 +#: f.widgets.cc:205 msgid "Open another window" msgstr "Neues Bild-Fenster aufmachen" -#: f.widgets.cc:210 +#: f.widgets.cc:206 msgid "Open a new image file" msgstr "Neue Bilddatei öffnen" -#: f.widgets.cc:211 +#: f.widgets.cc:207 msgid "Open the previously seen file" msgstr "Die vorher gesehene Bilddatei öffnen" -#: f.widgets.cc:212 +#: f.widgets.cc:208 msgid "Open a recently seen file" msgstr "Eine kürzliche gesehene Bilddatei öffnen" -#: f.widgets.cc:213 +#: f.widgets.cc:209 msgid "Open a newly added file" msgstr "neu eingefügte Datei öffnen" -#: f.widgets.cc:214 f.widgets.cc:215 +#: f.widgets.cc:210 f.widgets.cc:211 msgid "Open and edit a camera RAW file" msgstr "RAW-Datei öffnen und bearbeiten" -#: f.widgets.cc:216 +#: f.widgets.cc:212 msgid "Change the image file name" msgstr "Bilddateinamen ändern" -#: f.widgets.cc:217 +#: f.widgets.cc:213 msgid "Create a blank image" msgstr "Leerbild erstellen" -#: f.widgets.cc:218 +#: f.widgets.cc:214 msgid "Move image file to Trash" msgstr "Bilddatei in den Abfall schieben" -#: f.widgets.cc:219 +#: f.widgets.cc:215 msgid "Permanently delete image file" msgstr "Bilddatei unwiederbringlich löschen" -#: f.widgets.cc:220 +#: f.widgets.cc:216 msgid "Print the current image" msgstr "Aktuelles Bild drucken" -#: f.widgets.cc:221 f.widgets.cc:402 +#: f.widgets.cc:217 f.widgets.cc:401 msgid "Quit Fotoxx" msgstr "Fotoxx beenden" -#: f.widgets.cc:224 +#: f.widgets.cc:220 msgid "List a few key metadata items" msgstr "Wichtigste Metadaten auflisten" -#: f.widgets.cc:225 +#: f.widgets.cc:221 msgid "List all metadata items" msgstr "Alle Metadaten auflisten" -#: f.widgets.cc:226 +#: f.widgets.cc:222 msgid "(Toggle) show captions and comments" msgstr "(Knebel) Titel und Kommentare zeigen" -#: f.widgets.cc:227 +#: f.widgets.cc:223 msgid "Edit image tags/caption/rating ..." msgstr "Bild Tags, Titel, Bewertung ... verarbeiten" -#: f.widgets.cc:228 +#: f.widgets.cc:224 msgid "Edit any image metadata" msgstr "Beliebige Bild-Metadaten bearbeiten" -#: f.widgets.cc:229 +#: f.widgets.cc:225 msgid "Remove all metadata from an image" msgstr "Alle Metadaten vom Bild entfernen" -#: f.widgets.cc:230 +#: f.widgets.cc:226 msgid "Add/remove tags for multiple images" msgstr "Tags in mehreren Bilder zuweisen/entfernen" -#: f.widgets.cc:231 +#: f.widgets.cc:227 msgid "Convert tag names for all images" msgstr "Tagnamen convertieren auf alle Bilder" -#: f.widgets.cc:232 +#: f.widgets.cc:228 msgid "Add/change/delete metadata for multiple images" msgstr "Metadata addieren/ändern/löschen auf mehreren Bilder" -#: f.widgets.cc:233 +#: f.widgets.cc:229 msgid "Edit image location and geotags" msgstr "Bild Ort und Geotag verarbeiten" -#: f.widgets.cc:234 +#: f.widgets.cc:230 msgid "Add/revise geotags for multiple images" msgstr "Geotags addieren/ändern auf mehreren Bilder" -#: f.widgets.cc:235 +#: f.widgets.cc:231 msgid "Find all images for a location [date]" msgstr "Alle Bilder für einen Ort [Datum] finden" -#: f.widgets.cc:236 +#: f.widgets.cc:232 msgid "Find images meeting select criteria" msgstr "Bilder nach Auswahlkriterien finden" -#: f.widgets.cc:239 +#: f.widgets.cc:235 msgid "Select object or area for editing" msgstr "Ausschnitt zum Bearbeiten auswählen" -#: f.widgets.cc:240 +#: f.widgets.cc:236 msgid "Show (outline) existing area" msgstr "Aktuellen Ausschnitt zeigen (umranden)" -#: f.widgets.cc:241 +#: f.widgets.cc:237 msgid "Hide existing area" msgstr "Aktuellen Ausschnitt ausblenden" -#: f.widgets.cc:242 +#: f.widgets.cc:238 msgid "Enable area for editing" msgstr "Ausschnitt zum Bearbeiten aktivieren" -#: f.widgets.cc:243 +#: f.widgets.cc:239 msgid "Disable area for editing" msgstr "Ausschnitt ausschalten" -#: f.widgets.cc:244 +#: f.widgets.cc:240 msgid "Reverse existing area" msgstr "Aktuellen Ausschnitt ins Gegenteil verkehren" -#: f.widgets.cc:245 +#: f.widgets.cc:241 msgid "Erase existing area" msgstr "Aktuellen Ausschnitt löschen" -#: f.widgets.cc:246 +#: f.widgets.cc:242 +msgid "Copy area for later pasting into image" +msgstr "Ausschnitt für späteres Einfügen kopieren" + +#: f.widgets.cc:243 +msgid "Paste previously copied area into image" +msgstr "Vorher kopierten Ausschnitt ins Bild einfügen" + +#: f.widgets.cc:244 msgid "Open a file and paste as area into image" msgstr "Datei öffnen und als Auschnitt im Bild zufügen" -#: f.widgets.cc:247 +#: f.widgets.cc:245 msgid "Save area to a file with transparency" msgstr "Auschnitt mit Transparenz in Datei speichern" -#: f.widgets.cc:250 +#: f.widgets.cc:248 msgid "Trim/Crop margins and/or Rotate" msgstr "Ränder schneiden und/oder Drehen" -#: f.widgets.cc:251 +#: f.widgets.cc:249 msgid "Upright a rotated image" msgstr "Gedrehtes Bild aufrichten" -#: f.widgets.cc:252 f.widgets.cc:253 +#: f.widgets.cc:250 f.widgets.cc:251 msgid "Fast auto enhance that may work OK" msgstr "Schnelle Auto-Verbesserung die klappen könnte" -#: f.widgets.cc:254 +#: f.widgets.cc:252 msgid "Adjust brightness, contrast, color" msgstr "Helligkeit, Kontrast, Farbe einstellen" -#: f.widgets.cc:255 +#: f.widgets.cc:253 msgid "Add local contrast, enhance details" msgstr "Lokalen Kontrast erhöhen, Details hervorheben" -#: f.widgets.cc:256 +#: f.widgets.cc:254 msgid "Adjust brightness distribution" msgstr "Helligkeits-Verteilung justieren" -#: f.widgets.cc:257 +#: f.widgets.cc:255 msgid "Flatten zonal brightness distribution" msgstr "Zonal Helligkeitsverteilung ausgleichen" -#: f.widgets.cc:258 +#: f.widgets.cc:256 msgid "Change pixel dimensions" msgstr "Pixelgröße ändern" -#: f.widgets.cc:259 +#: f.widgets.cc:257 msgid "Mirror image horizontally or vertically" msgstr "Bild horizontal oder vertikal spiegeln" -#: f.widgets.cc:260 +#: f.widgets.cc:258 msgid "Write text on image" msgstr "Texte auf Bild schreiben" -#: f.widgets.cc:261 +#: f.widgets.cc:259 msgid "Write lines or arrows on image" msgstr "Linien oder Pfeile am Bild schreiben" -#: f.widgets.cc:262 +#: f.widgets.cc:260 msgid "Fix brightness uniformity across image" msgstr "Helligkeits-Ungleichheiten verbessern" -#: f.widgets.cc:263 +#: f.widgets.cc:261 msgid "Paint edit function gradually with mouse" msgstr "Änderungs-Funktion allmählich mit der Maus anmalen" -#: f.widgets.cc:264 +#: f.widgets.cc:262 msgid "Leverage edits by brightness or color" msgstr "Änderungen verstärken nach Helligkeit oder Farbwert" -#: f.widgets.cc:265 +#: f.widgets.cc:263 msgid "Edit plugins menu or run a plugin function" msgstr "Plugins-Menu editieren oder Plugin-Funktion starten" -#: f.widgets.cc:268 +#: f.widgets.cc:266 msgid "Make the image look sharper" msgstr "Bild schärfer machen" -#: f.widgets.cc:269 +#: f.widgets.cc:267 msgid "Make the image look fuzzy" msgstr "Bild verschwommen machen" -#: f.widgets.cc:270 +#: f.widgets.cc:268 msgid "Filter noise from low-light photos" msgstr "Rausch in unterbelichteten Fotos ausfiltern" -#: f.widgets.cc:271 +#: f.widgets.cc:269 msgid "Remove unwanted objects" msgstr "Unerwünschte Gegenstände entfernen" -#: f.widgets.cc:272 +#: f.widgets.cc:270 msgid "Fix red-eyes from electronic flash" msgstr "Rote Augen von Blitzfotos entfernen" -#: f.widgets.cc:273 +#: f.widgets.cc:271 msgid "Paint image pixels using the mouse" msgstr "Bild-Pixeln mit der Maus anmalen" -#: f.widgets.cc:274 +#: f.widgets.cc:272 msgid "Paint image transparency using the mouse" msgstr "Bild-Transparenz mit der Maus malen" -#: f.widgets.cc:275 +#: f.widgets.cc:273 msgid "Make BW/color, negative/positive, sepia" msgstr "SW/farbiges Negativ/Positiv, Sepia machen" -#: f.widgets.cc:276 +#: f.widgets.cc:274 msgid "Shift/convert colors into other colors" msgstr "Farben in andere Farben verwandeln" -#: f.widgets.cc:277 +#: f.widgets.cc:275 msgid "Adjust color using RGB or CMY colors" msgstr "Farben justieren mit RGB oder CMY Farben" -#: f.widgets.cc:278 +#: f.widgets.cc:276 msgid "Adjust color using HSL colors" msgstr "Farben justieren mit HSL Farben" -#: f.widgets.cc:279 +#: f.widgets.cc:277 msgid "Adjust color in selected image areas" msgstr "Farben in ausgewählten Bereichen einstellen" -#: f.widgets.cc:280 +#: f.widgets.cc:278 msgid "Match colors on one image with another" msgstr "Farben in einem Bild an ein anderes anpassen" -#: f.widgets.cc:281 +#: f.widgets.cc:279 msgid "Convert to another color profile" msgstr "In einen anderen Farbraum umwandeln" -#: f.widgets.cc:282 +#: f.widgets.cc:280 msgid "Remove dust spots from scanned slides" msgstr "Staubflecken von gescannten Dias entfernen" -#: f.widgets.cc:283 +#: f.widgets.cc:281 msgid "Smoothen edges with jaggies" msgstr "Ränder mit Treppeneffekt glätten" -#: f.widgets.cc:284 +#: f.widgets.cc:282 msgid "Reduce Chromatic Abberation" msgstr "Chromatische Aberration reduzieren" -#: f.widgets.cc:285 +#: f.widgets.cc:283 msgid "Erase known hot and dark pixels" msgstr "Bekannte heiße und dunkle Pixeln löschen" -#: f.widgets.cc:288 +#: f.widgets.cc:286 msgid "Remove curvature, esp. panoramas" msgstr "Entkrümmen, besonders bei Panoramen" -#: f.widgets.cc:289 +#: f.widgets.cc:287 msgid "Straighten objects seen from an angle" msgstr "Aus einem Winkel gesehene Objekte gerade machen" -#: f.widgets.cc:290 +#: f.widgets.cc:288 msgid "Distort image areas using the mouse" msgstr "Bild-Ausschnitt mit der Maus krümmen" -#: f.widgets.cc:291 f.widgets.cc:292 f.widgets.cc:293 +#: f.widgets.cc:289 f.widgets.cc:290 f.widgets.cc:291 msgid "Distort the whole image using the mouse" msgstr "Ganzes Bild mit der Maus krümmen" -#: f.widgets.cc:294 +#: f.widgets.cc:292 msgid "Flatten a photographed book page" msgstr "Foto von einer Buchseite flachmachen" -#: f.widgets.cc:297 +#: f.widgets.cc:295 msgid "Reduce color depth (posterize)" msgstr "Farbtiefe reduzieren (Posterisation)" -#: f.widgets.cc:298 +#: f.widgets.cc:296 msgid "Convert to pencil sketch" msgstr "In eine Stiftzeichnung verwandeln" -#: f.widgets.cc:299 +#: f.widgets.cc:297 msgid "Convert to line drawing (edge detection)" msgstr "In eine Stift-Zeichnung verwandeln" -#: f.widgets.cc:300 +#: f.widgets.cc:298 msgid "Convert to solid color drawing" msgstr "In eine Farb-Zeichnung verwandeln" -#: f.widgets.cc:301 +#: f.widgets.cc:299 msgid "Graduated Blur depending on contrast" msgstr "Gestaffelte Verwischung je nach dem Kontrast" -#: f.widgets.cc:302 +#: f.widgets.cc:300 msgid "Create an embossed or 3D appearance" msgstr "In eine Prägung mit 3D Wirkung verwandeln" -#: f.widgets.cc:303 +#: f.widgets.cc:301 msgid "Convert to square tiles" msgstr "In Kacheln verwandeln" -#: f.widgets.cc:304 +#: f.widgets.cc:302 msgid "Convert to dots (Roy Lichtenstein effect)" msgstr "In Rasterpunkte verwandeln (Roy Lichtenstein Effekt)" -#: f.widgets.cc:305 +#: f.widgets.cc:303 msgid "Convert into a simulated painting" msgstr "In ein simuliertes Gemälde verwandeln" -#: f.widgets.cc:306 +#: f.widgets.cc:304 msgid "Change brightness or color radially" msgstr "Helligkeit oder Farbwert radial ändern" -#: f.widgets.cc:307 +#: f.widgets.cc:305 msgid "Add texture to an image" msgstr "Textur auf Bild zufügen" -#: f.widgets.cc:308 +#: f.widgets.cc:306 msgid "Tile image with a repeating pattern" msgstr "Bild mit sich wiederholenden Muster fliesen" -#: f.widgets.cc:309 +#: f.widgets.cc:307 msgid "Create a mosaic with tiles made from all images" msgstr "Mosaik mit Kacheln aus allen Bilder erstellen" -#: f.widgets.cc:310 +#: f.widgets.cc:308 msgid "Process an image using a custom kernel" msgstr "Bild mit benutzerspezifischem Kernel bearbeiten" -#: f.widgets.cc:311 +#: f.widgets.cc:309 msgid "Warp an image with a wave pattern" msgstr "Bild mit Wellenmuster verformen" -#: f.widgets.cc:312 +#: f.widgets.cc:310 msgid "Blur an image in the direction of mouse drags" msgstr "Bild verwischen in Maus-Schlepp-Richtung" -#: f.widgets.cc:315 +#: f.widgets.cc:313 msgid "Combine bright/dark images for better detail" msgstr "Hell- und Dunkel-Bilder kombinieren um Details zu verbessern" -#: f.widgets.cc:316 +#: f.widgets.cc:314 msgid "Combine near/far focus images for deeper focus" msgstr "Bilder mit näher/ferner Fokus kombinieren für mehr Schärfentiefe" -#: f.widgets.cc:317 +#: f.widgets.cc:315 msgid "Combine images to erase passing people, etc." msgstr "Bilder kombinieren um vorbeigehende Menschen, usw. zu entfernen" -#: f.widgets.cc:318 +#: f.widgets.cc:316 msgid "Combine noisy images into a low-noise image" msgstr "Rauschige Bilder zu einem Niedrig-Rausch Bild kombinieren" -#: f.widgets.cc:319 +#: f.widgets.cc:317 msgid "Combine images into a panorama" msgstr "Bilder zu einem Panorama-Bild kombinieren" -#: f.widgets.cc:320 +#: f.widgets.cc:318 msgid "Combine images into a vertical panorama" msgstr "Bilder zu einem Vertikal-Panorama kombinieren" -#: f.widgets.cc:321 +#: f.widgets.cc:319 msgid "Combine images into a panorama (panorama tools)" msgstr "Bilder zu einem Panorama-Bild kombinieren (panorama tools)" -#: f.widgets.cc:322 +#: f.widgets.cc:320 msgid "Arrange images and text in a layout (montage)" msgstr "Bilder und Texte auf Lageplan ordnen (Montage)" -#: f.widgets.cc:325 +#: f.widgets.cc:323 msgid "Index new files and make thumbnails" msgstr "Neue Dateien indizieren und Thumbnails erstellen" -#: f.widgets.cc:326 +#: f.widgets.cc:324 msgid "Change user preferences" msgstr "Benutzereinstellungen ändern" -#: f.widgets.cc:327 +#: f.widgets.cc:325 msgid "Change Keyboard Shortcut Keys" msgstr "Tastatur-Schnelltasten bearbeiten" -#: f.widgets.cc:328 +#: f.widgets.cc:326 msgid "Show a brightness distribution graph" msgstr "Helligkeitsverteilungs-Grafik darstellen" -#: f.widgets.cc:329 +#: f.widgets.cc:327 msgid "Show or revise grid lines" msgstr "Gitterlinien zeigen oder ändern" -#: f.widgets.cc:330 +#: f.widgets.cc:328 msgid "Change color of foreground lines" msgstr "Vordergrund Linienfarbe ändern" -#: f.widgets.cc:331 +#: f.widgets.cc:329 msgid "Show RGB colors at mouse click" msgstr "RGB-Werte auf Maus-klick zeigen" -#: f.widgets.cc:332 +#: f.widgets.cc:330 msgid "Magnify image around the mouse position" msgstr "Bild um Maus-Position herum vergrößern" -#: f.widgets.cc:333 +#: f.widgets.cc:331 msgid "Highlight darkest and brightest pixels" msgstr "Dunkelste und hellste Pixeln hervorheben" -#: f.widgets.cc:334 +#: f.widgets.cc:332 msgid "Chart to adjust monitor color" msgstr "Grafik um Monitor-Farben einzustellen" -#: f.widgets.cc:335 +#: f.widgets.cc:333 msgid "Chart to adjust monitor gamma" msgstr "Grafik um Monitor-Gamma einzustellen" -#: f.widgets.cc:336 +#: f.widgets.cc:334 msgid "Change the GUI language" msgstr "GUI Sprache wechseln" -#: f.widgets.cc:337 +#: f.widgets.cc:335 msgid "Report missing translations" msgstr "Fehlende Übersetzungen auflisten" -#: f.widgets.cc:338 -msgid "Search all image files and report duplicates" -msgstr "Alle Bilddateien durchsuchen und Duplikate anzeigen" +#: f.widgets.cc:336 +msgid "Calibrate printer colors" +msgstr "Druckerfarben calibrieren" -#: f.widgets.cc:339 +#: f.widgets.cc:337 msgid "Memory and CPU (to terminal/logfile)" msgstr "Speicher und CPU (zu Terminal/Logdatei)" -#: f.widgets.cc:343 +#: f.widgets.cc:341 msgid "Rename/convert/resize/move multiple files" msgstr "Bilddateien umbenennen/konvertieren/skalieren/versetzen" -#: f.widgets.cc:344 +#: f.widgets.cc:342 msgid "Upright multiple rotated image files" msgstr "Mehrere gedrehte Bilddateien aufrichten" -#: f.widgets.cc:345 +#: f.widgets.cc:343 msgid "Delete or Trash multiple files" msgstr "Mehrere Dateien Löschen oder in Papierkorb" -#: f.widgets.cc:346 +#: f.widgets.cc:344 msgid "Convert camera RAW files using DCraw" msgstr "Mehrere RAW-Dateien konvertieren mit DCraw" -#: f.widgets.cc:347 +#: f.widgets.cc:345 msgid "Convert camera RAW files using Raw Therapee" msgstr "Mehrere RAW-Dateien konvertieren mit Raw Therapee" -#: f.widgets.cc:348 +#: f.widgets.cc:346 msgid "Burn selected image files to CD or DVD" msgstr "Ausgewählte Bilddateien auf CD oder DVD brennen" -#: f.widgets.cc:352 +#: f.widgets.cc:347 +msgid "Search all image files and report duplicates" +msgstr "Alle Bilddateien durchsuchen und Duplikate anzeigen" + +#: f.widgets.cc:351 msgid "Quick Start mini-guide" msgstr "Schnell-Start Mini-Anweisung" -#: f.widgets.cc:353 +#: f.widgets.cc:352 msgid "Read the user guide" msgstr "Benutzeranleitung lesen" -#: f.widgets.cc:354 +#: f.widgets.cc:353 msgid "Recent user guide changes" msgstr "Neueste Benutzeranleitungs-Änderungen" -#: f.widgets.cc:355 +#: f.widgets.cc:354 msgid "Summary of image edit functions" msgstr "Bildbearbeitungsfunktionen Zusammenfassung" -#: f.widgets.cc:356 +#: f.widgets.cc:355 msgid "Technical installation notes" msgstr "Technische Installierungsnotizen" -#: f.widgets.cc:357 +#: f.widgets.cc:356 msgid "List updates by Fotoxx version" msgstr "Änderungen nach Fotoxxversion auflisten" -#: f.widgets.cc:358 +#: f.widgets.cc:357 msgid "View the log file and error messages" msgstr "Logdatei und Fehlermeldungen auflisten" -#: f.widgets.cc:359 +#: f.widgets.cc:358 msgid "How to do Fotoxx translations" msgstr "Wie eine Fotoxx Übersetzung erstellt wird" -#: f.widgets.cc:360 +#: f.widgets.cc:359 msgid "Show the Fotoxx web page" msgstr "Fotoxx Webseite zeigen" -#: f.widgets.cc:361 +#: f.widgets.cc:360 msgid "Version, license, contact, credits" msgstr "Version, Lizens, Kontakt, Mitwirkende" -#: f.widgets.cc:364 +#: f.widgets.cc:363 msgid "Organize images into albums" msgstr "Bilder in Alben organisieren" -#: f.widgets.cc:365 +#: f.widgets.cc:364 msgid "Start a slide show" msgstr "Dia-Show starten" -#: f.widgets.cc:366 +#: f.widgets.cc:365 msgid "Set desktop image from current Fotoxx image" msgstr "Hintergrundbild vom aktuellen Fotoxx Bild bestimmen" -#: f.widgets.cc:367 +#: f.widgets.cc:366 msgid "Cycle desktop images from a Fotoxx album" msgstr "Hintergrundbilder wechseln von einem Fotoxx Album" -#: f.widgets.cc:389 +#: f.widgets.cc:388 msgid "New Window" msgstr "Neues Fenster" -#: f.widgets.cc:391 +#: f.widgets.cc:390 msgid "Open Previous File" msgstr "Vorherige Bilddatei öffnen" -#: f.widgets.cc:392 +#: f.widgets.cc:391 msgid "Recently Seen Images" msgstr "kürzlich gesehene Bilder" -#: f.widgets.cc:393 +#: f.widgets.cc:392 msgid "Newest Images" msgstr "Neueste Bilder" -#: f.widgets.cc:394 +#: f.widgets.cc:393 msgid "Open RAW (ufraw)" msgstr "RAW öffnen (ufraw)" -#: f.widgets.cc:395 +#: f.widgets.cc:394 msgid "Open RAW (Raw Therapee)" msgstr "RAW öffnen (Raw Therapee)" -#: f.widgets.cc:397 +#: f.widgets.cc:396 msgid "New Blank Image" msgstr "Neues Leerbild" -#: f.widgets.cc:399 +#: f.widgets.cc:398 msgid "Delete Image File" msgstr "Bilddatei löschen" -#: f.widgets.cc:400 +#: f.widgets.cc:399 msgid "Print Image" msgstr "Bilddatei drucken" -#: f.widgets.cc:401 f.widgets.cc:538 +#: f.widgets.cc:400 f.widgets.cc:543 msgid "Set Desktop Image" msgstr "Hintergrundbild setzen" -#: f.widgets.cc:405 +#: f.widgets.cc:404 msgid "View Metadata (short)" msgstr "Metadaten ansehen (kurz)" -#: f.widgets.cc:406 +#: f.widgets.cc:405 msgid "View Metadata (long)" msgstr "Metadaten ansehen (lang)" -#: f.widgets.cc:407 +#: f.widgets.cc:406 msgid "Show Captions on Image" msgstr "Titel am Bild zeigen" -#: f.widgets.cc:409 +#: f.widgets.cc:408 msgid "Edit Any Metadata" msgstr "Beliebige Metadaten bearbeiten" -#: f.widgets.cc:412 f.widgets.cc:531 +#: f.widgets.cc:411 f.widgets.cc:534 msgid "Batch Rename Tags" msgstr "Stapel Tags umbenennen" -#: f.widgets.cc:413 f.widgets.cc:532 +#: f.widgets.cc:412 f.widgets.cc:535 msgid "Batch Add/Change Metadata" msgstr "Metadata addieren/ändern in Stapelfunktion" -#: f.widgets.cc:416 f.widgets.cc:606 +#: f.widgets.cc:415 f.widgets.cc:537 f.widgets.cc:611 msgid "Images by Geotag" msgstr "Bilder nach Geotag" -#: f.widgets.cc:417 f.widgets.cc:607 +#: f.widgets.cc:416 f.widgets.cc:538 f.widgets.cc:612 msgid "Search Images" msgstr "Bilddatei durchsuchen" -#: f.widgets.cc:420 fotoxx.h:1156 +#: f.widgets.cc:419 fotoxx.h:1164 msgid "Select" msgstr "Auswählen" -#: f.widgets.cc:421 fotoxx.h:1158 +#: f.widgets.cc:420 fotoxx.h:1166 msgid "Show" msgstr "Zeigen" -#: f.widgets.cc:422 fotoxx.h:1112 +#: f.widgets.cc:421 fotoxx.h:1120 msgid "Hide" msgstr "Ausblenden" -#: f.widgets.cc:423 fotoxx.h:1098 +#: f.widgets.cc:422 fotoxx.h:1106 msgid "Enable" msgstr "Aktivieren" -#: f.widgets.cc:424 fotoxx.h:1094 +#: f.widgets.cc:423 fotoxx.h:1102 msgid "Disable" msgstr "Ausschalten" -#: f.widgets.cc:425 fotoxx.h:1115 +#: f.widgets.cc:424 fotoxx.h:1123 msgid "Invert" msgstr "Invertieren" -#: f.widgets.cc:426 fotoxx.h:1172 +#: f.widgets.cc:425 fotoxx.h:1180 msgid "Unselect" msgstr "Deselektieren" +#: f.widgets.cc:426 +msgid "Copy Area" +msgstr "Ausschnitt kopieren" + #: f.widgets.cc:427 +msgid "Paste Area" +msgstr "Ausschnitt einfügen" + +#: f.widgets.cc:428 msgid "Open Area File" msgstr "Ausschnitt von Datei lesen" -#: f.widgets.cc:428 +#: f.widgets.cc:429 msgid "Save Area File" msgstr "Ausschnitt in Datei speichern" -#: f.widgets.cc:433 +#: f.widgets.cc:434 msgid "Voodoo 1" msgstr "Voodoo 1" -#: f.widgets.cc:434 +#: f.widgets.cc:435 msgid "Voodoo 2" msgstr "Voodoo 2" -#: f.widgets.cc:436 +#: f.widgets.cc:437 msgid "Adjust Brightness Dist." msgstr "Helligkeitsverteilung ändern" -#: f.widgets.cc:437 f.widgets.cc:676 +#: f.widgets.cc:438 f.widgets.cc:681 msgid "Zonal Flatten" msgstr "Zonal Ausgleichen" -#: f.widgets.cc:441 +#: f.widgets.cc:442 msgid "Add Text" msgstr "Texte zufügen" -#: f.widgets.cc:442 +#: f.widgets.cc:443 msgid "Add Lines" msgstr "Linien züfugen" -#: f.widgets.cc:445 +#: f.widgets.cc:446 msgid "Plugins" msgstr "Plugins" -#: f.widgets.cc:450 +#: f.widgets.cc:451 msgid "Denoise" msgstr "Entrauschen" -#: f.widgets.cc:452 +#: f.widgets.cc:453 msgid "Red Eyes" msgstr "Rote Augen" -#: f.widgets.cc:457 +#: f.widgets.cc:458 msgid "Adjust RGB/CMY" msgstr "RGB/CMY justieren" -#: f.widgets.cc:458 +#: f.widgets.cc:459 msgid "Adjust HSL" msgstr "HSL justieren" -#: f.widgets.cc:459 +#: f.widgets.cc:460 msgid "Brightness Ramp" msgstr "Helligkeit rampen" -#: f.widgets.cc:461 +#: f.widgets.cc:462 msgid "Match Colors" msgstr "Farben anpassen" -#: f.widgets.cc:462 +#: f.widgets.cc:463 msgid "Color Profile" msgstr "Farbraum" -#: f.widgets.cc:464 +#: f.widgets.cc:465 msgid "Anti-Alias" msgstr "Kantenglättung" -#: f.widgets.cc:470 +#: f.widgets.cc:471 msgid "Fix Perspective" msgstr "Perspective verbessern" -#: f.widgets.cc:475 +#: f.widgets.cc:476 msgid "Flatten Book Page" msgstr "Buchseite flachmachen" -#: f.widgets.cc:478 +#: f.widgets.cc:479 msgid "Color Depth" msgstr "Farbtiefe" -#: f.widgets.cc:479 +#: f.widgets.cc:480 msgid "Sketch" msgstr "Skizzieren" -#: f.widgets.cc:483 +#: f.widgets.cc:484 msgid "Embossing" msgstr "Prägung" -#: f.widgets.cc:485 +#: f.widgets.cc:486 msgid "Dots" msgstr "Rasterpunkte" -#: f.widgets.cc:486 +#: f.widgets.cc:487 msgid "Painting" msgstr "Gemälde" -#: f.widgets.cc:488 +#: f.widgets.cc:489 msgid "Texture" msgstr "Textur" -#: f.widgets.cc:490 +#: f.widgets.cc:491 msgid "Mosaic" msgstr "Mosaik" -#: f.widgets.cc:496 +#: f.widgets.cc:497 msgid "High Dynamic Range" msgstr "Hoher Dynamikbereich" -#: f.widgets.cc:497 +#: f.widgets.cc:498 msgid "High Depth of Field" msgstr "Hohe Schärfentiefe" -#: f.widgets.cc:498 +#: f.widgets.cc:499 msgid "Stack/Paint" msgstr "Stapeln/malen" -#: f.widgets.cc:499 +#: f.widgets.cc:500 msgid "Stack/Noise" msgstr "Stapeln/Rauschen" -#: f.widgets.cc:500 +#: f.widgets.cc:501 msgid "Panorama" msgstr "Panorama" -#: f.widgets.cc:501 +#: f.widgets.cc:502 msgid "Vertical Panorama" msgstr "Vertikales Panorama" -#: f.widgets.cc:502 +#: f.widgets.cc:503 msgid "PT Panorama" msgstr "PT Panorama" -#: f.widgets.cc:503 +#: f.widgets.cc:504 msgid "Mashup" msgstr "Mashup" -#: f.widgets.cc:508 +#: f.widgets.cc:509 msgid "Keyboard Shortcuts" msgstr "Schnelltasten" -#: f.widgets.cc:509 +#: f.widgets.cc:510 msgid "Show Brightness Dist." msgstr "Helligkeitsvert. zeigen" -#: f.widgets.cc:514 +#: f.widgets.cc:515 msgid "Dark/Bright Pixels" msgstr "Dunkel/hell Pixeln" -#: f.widgets.cc:515 +#: f.widgets.cc:516 msgid "Monitor Color" msgstr "Monitor Farbgrafik" -#: f.widgets.cc:517 +#: f.widgets.cc:518 msgid "Change Language" msgstr "Sprache wechseln" -#: f.widgets.cc:518 +#: f.widgets.cc:519 msgid "Missing Translations" msgstr "Fehlende Übersetzungen" -#: f.widgets.cc:520 +#: f.widgets.cc:522 msgid "Resources" msgstr "Ressourcen" -#: f.widgets.cc:527 +#: f.widgets.cc:529 msgid "Batch RAW (DCraw)" msgstr "Stapel RAW (DCraw)" -#: f.widgets.cc:528 +#: f.widgets.cc:530 msgid "Batch RAW (Raw Therapee)" msgstr "Stapel RAW (Raw Therapee)" -#: f.widgets.cc:529 +#: f.widgets.cc:531 msgid "Burn Images to CD/DVD" msgstr "Bilder auf CD/DVD brennen" -#: f.widgets.cc:539 +#: f.widgets.cc:544 msgid "Cycle Desktop Image" msgstr "Hintergrundbild Wechselzyklus" -#: f.widgets.cc:542 fotoxx-15.08.cc:5513 -msgid "Quick Start" -msgstr "Schnell-Start" - -#: f.widgets.cc:543 fotoxx-15.08.cc:5516 -msgid "User Guide" -msgstr "Benutzeranleitung" - -#: f.widgets.cc:544 fotoxx-15.08.cc:5519 -msgid "User Guide Changes" -msgstr "Benutzeranleitung Änderungen" - -#: f.widgets.cc:545 fotoxx-15.08.cc:5525 -msgid "Edit Functions Summary" -msgstr "Verarbeitungsfunktionen Übersicht" - -#: f.widgets.cc:546 fotoxx-15.08.cc:5522 -msgid "README" -msgstr "LIESMICH" - -#: f.widgets.cc:547 fotoxx-15.08.cc:5528 -msgid "Change Log" -msgstr "Änderungslog" - -#: f.widgets.cc:548 fotoxx-15.08.cc:5531 -msgid "Log File" -msgstr "Fehlerlogdatei" - -#: f.widgets.cc:549 fotoxx-15.08.cc:5534 -msgid "Translations" -msgstr "Übersetzungen" - -#: f.widgets.cc:550 fotoxx-15.08.cc:5537 -msgid "Home Page" -msgstr "Homepage" - -#: f.widgets.cc:551 fotoxx-15.08.cc:5540 -msgid "About" -msgstr "Über Fotoxx" - -#: f.widgets.cc:556 f.widgets.cc:579 f.widgets.cc:601 +#: f.widgets.cc:561 f.widgets.cc:584 f.widgets.cc:606 msgid "Gallery" msgstr "Bildergalerie" -#: f.widgets.cc:557 f.widgets.cc:580 f.widgets.cc:602 +#: f.widgets.cc:562 f.widgets.cc:585 f.widgets.cc:607 msgid "World Maps" msgstr "Weltkarten" -#: f.widgets.cc:559 +#: f.widgets.cc:564 msgid "Favorites" msgstr "Favoriten" -#: f.widgets.cc:561 fotoxx.h:1152 +#: f.widgets.cc:566 fotoxx.h:1160 msgid "Save" msgstr "Speichern" -#: f.widgets.cc:562 +#: f.widgets.cc:567 msgid "Prev/Next" msgstr "Vorig/Nächst" -#: f.widgets.cc:563 +#: f.widgets.cc:568 msgid "Metadata" msgstr "Metadaten" -#: f.widgets.cc:564 +#: f.widgets.cc:569 msgid "Areas" msgstr "Ausschnitt" -#: f.widgets.cc:565 fotoxx.h:1097 +#: f.widgets.cc:570 fotoxx.h:1105 msgid "Edit" msgstr "Bearbeiten" -#: f.widgets.cc:566 +#: f.widgets.cc:571 msgid "Repair" msgstr "Ausbessern" -#: f.widgets.cc:567 +#: f.widgets.cc:572 msgid "Bend" msgstr "Biegen" -#: f.widgets.cc:568 +#: f.widgets.cc:573 msgid "Effects" msgstr "Effekte" -#: f.widgets.cc:569 +#: f.widgets.cc:574 msgid "Combine" msgstr "Verbund" -#: f.widgets.cc:570 +#: f.widgets.cc:575 msgid "Undo/Redo" msgstr "Undo/Redo" -#: f.widgets.cc:571 +#: f.widgets.cc:576 msgid "Tools" msgstr "Werkzeuge" -#: f.widgets.cc:572 f.widgets.cc:594 fotoxx-15.08.cc:5544 fotoxx.h:1111 -msgid "Help" -msgstr "Hilfe" - -#: f.widgets.cc:582 +#: f.widgets.cc:587 msgid "Sync.G" msgstr "Sync.G" -#: f.widgets.cc:583 +#: f.widgets.cc:588 msgid "Albums" msgstr "Alben" -#: f.widgets.cc:584 +#: f.widgets.cc:589 msgid "Bookmarks" msgstr "Lesezeichnen" -#: f.widgets.cc:593 +#: f.widgets.cc:598 msgid "Batch" -msgstr "" +msgstr "Stapel" -#: f.widgets.cc:604 +#: f.widgets.cc:609 msgid "Choose Map" msgstr "Karte wählen" -#: f.widgets.cc:605 +#: f.widgets.cc:610 msgid "Search Range" msgstr "Such-Umfang" -#: f.widgets.cc:613 fotoxx.h:1170 +#: f.widgets.cc:618 fotoxx.h:1178 msgid "Undo" msgstr "Undo" -#: f.widgets.cc:614 fotoxx.h:1143 +#: f.widgets.cc:619 fotoxx.h:1151 msgid "Redo" msgstr "Redo" -#: f.widgets.cc:655 +#: f.widgets.cc:660 msgid "Popup Image" msgstr "Pop-up Bild" -#: f.widgets.cc:656 +#: f.widgets.cc:661 msgid "Popup Image (add)" msgstr "Pup-up Bild (zusätzlich)" -#: f.widgets.cc:660 fotoxx.h:1146 +#: f.widgets.cc:665 fotoxx.h:1154 msgid "Rename" msgstr "Umbenennen" -#: f.widgets.cc:661 +#: f.widgets.cc:666 msgid "Copy to Location" msgstr "Zum Verzeichnis kopieren" -#: f.widgets.cc:662 +#: f.widgets.cc:667 msgid "Move to Location" msgstr "Zum Verzeichnis versetzen" -#: f.widgets.cc:663 +#: f.widgets.cc:668 msgid "Copy to Clipboard" msgstr "Auf Zwischenablage kopieren" -#: f.widgets.cc:664 +#: f.widgets.cc:669 msgid "Remove from Album" msgstr "Von Album entfernen" -#: f.widgets.cc:665 +#: f.widgets.cc:670 msgid "Cut to Image Cache" msgstr "zu Bildercache ausschneiden" -#: f.widgets.cc:666 +#: f.widgets.cc:671 msgid "Copy to Image Cache" msgstr "zu Bildercache kopieren" -#: f.widgets.cc:667 +#: f.widgets.cc:672 msgid "Paste Image Cache Here (clear)" msgstr "Bildercache hier einfügen (löschen)" -#: f.widgets.cc:668 +#: f.widgets.cc:673 msgid "Paste Image Cache Here (keep)" msgstr "Bildercache hier einfügen (behalten)" -#: f.widgets.cc:669 +#: f.widgets.cc:674 msgid "Paste Current Image File Here" msgstr "Aktuelle Bilddatei hier einfügen" -#: f.widgets.cc:673 +#: f.widgets.cc:678 msgid "Voodoo Enhance" msgstr "Voodoo Verbesserung" -#: f.widgets.cc:675 +#: f.widgets.cc:680 msgid "Brightness Dist." msgstr "Helligkeitsvert." -#: f.widgets.cc:678 +#: f.widgets.cc:683 msgid "Select Area" msgstr "Ausschnitt auswählen" -#: f.widgets.cc:681 fotoxx.h:1166 +#: f.widgets.cc:686 fotoxx.h:1174 msgid "Trash" msgstr "Abfall" -#: f.widgets.cc:806 +#: f.widgets.cc:811 msgid "Image Locations" msgstr "Bild Orte" -#: fotoxx-15.08.cc:376 +#: fotoxx-15.09.cc:361 msgid "Please install missing programs:" msgstr "Bitte fehlende Programme installieren:" -#: fotoxx-15.08.cc:667 +#: fotoxx-15.09.cc:652 msgid "Kill active dialog?" msgstr "Aktiv Dialog abbrechen?" -#: fotoxx-15.08.cc:742 +#: fotoxx-15.09.cc:723 msgid "(reduced)" msgstr "(verkleinert) " -#: fotoxx-15.08.cc:743 +#: fotoxx-15.09.cc:724 msgid "area active" msgstr "Ausschnitt aktiv" -#: fotoxx-15.08.cc:744 +#: fotoxx-15.09.cc:725 msgid "dialog open" msgstr "Dialog aktiv" -#: fotoxx-15.08.cc:745 -msgid "BUSY" -msgstr "LÄUFT" - -#: fotoxx-15.08.cc:746 +#: fotoxx-15.09.cc:726 msgid "blocked" msgstr "Gesperrt" -#: fotoxx-15.08.cc:796 +#: fotoxx-15.09.cc:776 msgid "edits" msgstr "edits" -#: fotoxx-15.08.cc:2805 +#: fotoxx-15.09.cc:2756 msgid "Exceed 50 anchor points" msgstr "50 Ankerpunkte überschritten" -#: fotoxx-15.08.cc:3018 +#: fotoxx-15.09.cc:2969 msgid "load curve from a file" msgstr "Kurven-Datei öffnen" -#: fotoxx-15.08.cc:3091 +#: fotoxx-15.09.cc:3042 msgid "save curve to a file" msgstr "Kurven-Datei speichern" -#: fotoxx-15.08.cc:3161 +#: fotoxx-15.09.cc:3112 msgid "Too many edits, please save image" msgstr "Zuviele Änderungen, bitte Bild speichern" -#: fotoxx-15.08.cc:3180 +#: fotoxx-15.09.cc:3131 msgid "" "Select area not active.\n" "Continue?" @@ -4460,373 +4575,373 @@ "Ausschnit nicht aktiviert.\n" "Fortfahren?" -#: fotoxx-15.08.cc:3435 +#: fotoxx-15.09.cc:3385 msgid "Load settings from file" msgstr "Einstellungen von Datei laden" -#: fotoxx-15.08.cc:3532 +#: fotoxx-15.09.cc:3482 msgid "file data does not fit dialog" msgstr "Datei stimmt nicht mit dem Dialog überein" -#: fotoxx-15.08.cc:3542 +#: fotoxx-15.09.cc:3492 msgid "Save settings to a file" msgstr "Einstellungen in Datei speichern" -#: fotoxx-15.08.cc:3835 +#: fotoxx-15.09.cc:3781 msgid "This action will discard changes to current image" msgstr "Dieses Vorgehen wird Änderungen im aktuellen Bild verwerfen" -#: fotoxx-15.08.cc:3836 fotoxx-15.08.cc:3837 +#: fotoxx-15.09.cc:3782 fotoxx-15.09.cc:3783 msgid "prior function still active" msgstr "Vorherige Funktion noch aktiv" -#: fotoxx-15.08.cc:3838 fotoxx.h:1116 +#: fotoxx-15.09.cc:3784 fotoxx.h:1124 msgid "Keep" msgstr "Behalten" -#: fotoxx-15.08.cc:3839 +#: fotoxx-15.09.cc:3785 msgid "Discard" msgstr "Verwerfen" -#: fotoxx.h:1068 +#: fotoxx.h:1076 msgid "Add" msgstr "Hinzufügen" -#: fotoxx.h:1069 +#: fotoxx.h:1077 msgid "Add All" msgstr "Alle einfügen" -#: fotoxx.h:1071 +#: fotoxx.h:1079 msgid "Amount" msgstr "Wert" -#: fotoxx.h:1072 +#: fotoxx.h:1080 msgid "Angle" msgstr "Winkel" -#: fotoxx.h:1073 +#: fotoxx.h:1081 msgid "Apply" msgstr "Anwenden" -#: fotoxx.h:1074 +#: fotoxx.h:1082 msgid "Auto" msgstr "Auto" -#: fotoxx.h:1075 +#: fotoxx.h:1083 msgid "Black" msgstr "Schwarz" -#: fotoxx.h:1076 +#: fotoxx.h:1084 msgid "Blend Width" msgstr "Mischbreite" -#: fotoxx.h:1078 zfuncs.cc:10061 +#: fotoxx.h:1086 zfuncs.cc:10054 msgid "bottom" msgstr "unten" -#: fotoxx.h:1080 +#: fotoxx.h:1088 msgid "Browse" msgstr "Durchsuchen" -#: fotoxx.h:1081 +#: fotoxx.h:1089 msgid "Cancel" msgstr "Abbrechen" -#: fotoxx.h:1082 +#: fotoxx.h:1090 msgid "center" msgstr "Mittig" -#: fotoxx.h:1083 +#: fotoxx.h:1091 msgid "Choose" msgstr "Wählen" -#: fotoxx.h:1084 +#: fotoxx.h:1092 msgid "Clear" msgstr "Aufräumen" -#: fotoxx.h:1085 +#: fotoxx.h:1093 msgid "Color" msgstr "Farbe" -#: fotoxx.h:1086 +#: fotoxx.h:1094 msgid "continue" msgstr "fortsetzen" -#: fotoxx.h:1088 +#: fotoxx.h:1096 msgid "Copy" msgstr "Kopieren" -#: fotoxx.h:1089 +#: fotoxx.h:1097 msgid "Create" msgstr "Erstellen" -#: fotoxx.h:1090 +#: fotoxx.h:1098 msgid "Curve File:" msgstr "Kurven-Datei" -#: fotoxx.h:1091 +#: fotoxx.h:1099 msgid "Cut" msgstr "Ausschneiden" -#: fotoxx.h:1092 +#: fotoxx.h:1100 msgid "Deband" msgstr "Entstreifen" -#: fotoxx.h:1093 +#: fotoxx.h:1101 msgid "Delete" msgstr "Löschen" -#: fotoxx.h:1095 +#: fotoxx.h:1103 msgid "Done" msgstr "Fertig" -#: fotoxx.h:1096 +#: fotoxx.h:1104 msgid "edge" msgstr "Rand" -#: fotoxx.h:1099 +#: fotoxx.h:1107 msgid "Erase" msgstr "Löschen" -#: fotoxx.h:1100 +#: fotoxx.h:1108 msgid "Fetch" msgstr "Holen" -#: fotoxx.h:1101 +#: fotoxx.h:1109 msgid "output file already exists" msgstr "Ausgabedatei existiert schon" -#: fotoxx.h:1102 +#: fotoxx.h:1110 #, c-format msgid "%d files selected" msgstr "%d Dateien ausgewählt" -#: fotoxx.h:1103 +#: fotoxx.h:1111 msgid "Find" msgstr "Suchen" -#: fotoxx.h:1104 +#: fotoxx.h:1112 msgid "Finish" msgstr "Fertigstellen" -#: fotoxx.h:1105 +#: fotoxx.h:1113 msgid "Flatten" msgstr "Ausgleichen" -#: fotoxx.h:1106 +#: fotoxx.h:1114 msgid "Font" msgstr "Font" -#: fotoxx.h:1107 +#: fotoxx.h:1115 msgid "Geotags" msgstr "Geotags" -#: fotoxx.h:1109 +#: fotoxx.h:1117 msgid "Grid" msgstr "Gitter" -#: fotoxx.h:1110 +#: fotoxx.h:1118 msgid "Height" msgstr "Höhe" -#: fotoxx.h:1113 +#: fotoxx.h:1121 msgid "Images" msgstr "Bilder" -#: fotoxx.h:1114 +#: fotoxx.h:1122 msgid "Insert" msgstr "Einfügen" -#: fotoxx.h:1117 zfuncs.cc:10065 +#: fotoxx.h:1125 zfuncs.cc:10058 msgid "left" msgstr "links" -#: fotoxx.h:1118 +#: fotoxx.h:1126 msgid "limit" msgstr "Limit" -#: fotoxx.h:1119 +#: fotoxx.h:1127 msgid "Load" msgstr "Laden" -#: fotoxx.h:1120 +#: fotoxx.h:1128 msgid "Make" msgstr "Erstellen" -#: fotoxx.h:1122 +#: fotoxx.h:1130 msgid "Map" msgstr "Karte" -#: fotoxx.h:1123 +#: fotoxx.h:1131 msgid "Max" msgstr "Max" -#: fotoxx.h:1124 +#: fotoxx.h:1132 msgid "Negative" msgstr "Negativ" -#: fotoxx.h:1125 +#: fotoxx.h:1133 msgid "New" msgstr "Neu" -#: fotoxx.h:1126 +#: fotoxx.h:1134 msgid "Next" msgstr "Nächst" -#: fotoxx.h:1127 zfuncs.cc:9147 +#: fotoxx.h:1135 zfuncs.cc:9148 msgid "No" msgstr "Nein" -#: fotoxx.h:1128 +#: fotoxx.h:1136 msgid "no images" msgstr "Keine Bilder" -#: fotoxx.h:1130 +#: fotoxx.h:1138 msgid "no selection" msgstr "Keine Auswahl" -#: fotoxx.h:1131 +#: fotoxx.h:1139 msgid "OK" msgstr "OK" -#: fotoxx.h:1133 +#: fotoxx.h:1141 msgid "Paste" msgstr "Einfügen" -#: fotoxx.h:1134 +#: fotoxx.h:1142 msgid "Pause" msgstr "Unterbrechen" -#: fotoxx.h:1135 +#: fotoxx.h:1143 msgid "Percent" msgstr "Prozent" -#: fotoxx.h:1137 +#: fotoxx.h:1145 msgid "Presets" msgstr "Voreinstellungen" -#: fotoxx.h:1138 +#: fotoxx.h:1146 msgid "Prev" msgstr "Vorig" -#: fotoxx.h:1139 +#: fotoxx.h:1147 msgid "Proceed" msgstr "Weiter" -#: fotoxx.h:1141 +#: fotoxx.h:1149 msgid "range" msgstr "Wertbereich" -#: fotoxx.h:1144 +#: fotoxx.h:1152 msgid "Reduce" msgstr "Vermindern" -#: fotoxx.h:1145 +#: fotoxx.h:1153 msgid "Remove" msgstr "Entfernen" -#: fotoxx.h:1147 +#: fotoxx.h:1155 msgid "Replace" msgstr "Ersetzen" -#: fotoxx.h:1148 +#: fotoxx.h:1156 msgid "Reserved" msgstr "Reserviert" -#: fotoxx.h:1149 +#: fotoxx.h:1157 msgid "Reset" msgstr "Zurücksetzen" -#: fotoxx.h:1150 zfuncs.cc:10069 +#: fotoxx.h:1158 zfuncs.cc:10062 msgid "right" msgstr "rechts" -#: fotoxx.h:1151 +#: fotoxx.h:1159 msgid "Rotate" msgstr "Drehen" -#: fotoxx.h:1153 +#: fotoxx.h:1161 msgid "Unknown file type, save as tiff/jpeg/png to edit" msgstr "Dateityp unbekannt, zum Bearbeiten als tiff/jpeg/png speichern" -#: fotoxx.h:1154 +#: fotoxx.h:1162 msgid "Search" msgstr "Durchsuchen" -#: fotoxx.h:1155 +#: fotoxx.h:1163 msgid "Seconds" msgstr "Sekunden" -#: fotoxx.h:1159 +#: fotoxx.h:1167 msgid "Size" msgstr "Große" -#: fotoxx.h:1160 +#: fotoxx.h:1168 msgid "Start" msgstr "Starten" -#: fotoxx.h:1161 +#: fotoxx.h:1169 msgid "Strength" msgstr "Stärke" -#: fotoxx.h:1162 +#: fotoxx.h:1170 msgid "Threshold" msgstr "Schwelle" -#: fotoxx.h:1163 +#: fotoxx.h:1171 #, c-format msgid "exceed %d files" msgstr "%d Dateien überschritten" -#: fotoxx.h:1164 zfuncs.cc:10057 +#: fotoxx.h:1172 zfuncs.cc:10050 msgid "top" msgstr "oben" -#: fotoxx.h:1165 +#: fotoxx.h:1173 msgid "Transparency" msgstr "Transparenz" -#: fotoxx.h:1167 +#: fotoxx.h:1175 msgid "Trim" msgstr "Schneiden" -#: fotoxx.h:1168 +#: fotoxx.h:1176 msgid "Undo All" msgstr "Alles rückgängig" -#: fotoxx.h:1169 +#: fotoxx.h:1177 msgid "Undo Last" msgstr "Letztes rückgängig" -#: fotoxx.h:1171 +#: fotoxx.h:1179 msgid "Unfinish" msgstr "Unfertigstellen" -#: fotoxx.h:1173 +#: fotoxx.h:1181 msgid "View" msgstr "Ansehen" -#: fotoxx.h:1174 +#: fotoxx.h:1182 msgid "Web" msgstr "Web" -#: fotoxx.h:1175 +#: fotoxx.h:1183 msgid "White" msgstr "Weiß" -#: fotoxx.h:1176 +#: fotoxx.h:1184 msgid "Width" msgstr "Breite" -#: fotoxx.h:1177 +#: fotoxx.h:1185 msgid "x-offset" msgstr "x-Verschiebung" -#: fotoxx.h:1178 +#: fotoxx.h:1186 msgid "y-offset" msgstr "y-Verschiebung" -#: fotoxx.h:1179 zfuncs.cc:9147 +#: fotoxx.h:1187 zfuncs.cc:9148 msgid "Yes" msgstr "Ja" @@ -4843,77 +4958,71 @@ msgid "user guide not found" msgstr "Benutzeranweisung nicht gefunden" -#: zfuncs.cc:5182 +#: zfuncs.cc:5183 #, c-format msgid "cannot open file %s" msgstr "Kann Datei nicht öffnen %s" -#: zfuncs.cc:5218 +#: zfuncs.cc:5219 msgid "save screen to file" msgstr "Bildschirm in Datei speichern" -#: zfuncs.cc:9223 zfuncs.cc:9724 zfuncs.cc:10044 +#: zfuncs.cc:9224 zfuncs.cc:9717 zfuncs.cc:10037 msgid "cancel" msgstr "Abbrechen" -#: zfuncs.cc:9685 +#: zfuncs.cc:9678 msgid "choose file" msgstr "Datei wählen" -#: zfuncs.cc:9690 +#: zfuncs.cc:9683 msgid "choose files" msgstr "Dateien wählen" -#: zfuncs.cc:9695 +#: zfuncs.cc:9688 msgid "save" msgstr "Speichern" -#: zfuncs.cc:9701 +#: zfuncs.cc:9694 msgid "choose folder" msgstr "Verzeichnis wählen" -#: zfuncs.cc:9706 +#: zfuncs.cc:9699 msgid "choose folders" msgstr "Verzeichnise wählen" -#: zfuncs.cc:9711 +#: zfuncs.cc:9704 msgid "create folder" msgstr "Ordner erstellen" -#: zfuncs.cc:9718 +#: zfuncs.cc:9711 msgid "hidden" msgstr "Versteckt" -#: zfuncs.cc:10044 +#: zfuncs.cc:10037 msgid "done" msgstr "fertig" -#: zfuncs.cc:10044 zfuncs.cc:10053 +#: zfuncs.cc:10037 zfuncs.cc:10046 msgid "margins" msgstr "Ränder" -#: zfuncs.cc:10074 +#: zfuncs.cc:10067 msgid "image scale" msgstr "Bildgröße" -#: zfuncs.cc:10076 +#: zfuncs.cc:10069 msgid "percent" msgstr "Prozent" -#: zfuncs.cc:10083 +#: zfuncs.cc:10076 msgid "image" msgstr "Bild" -#: zfuncs.cc:10087 +#: zfuncs.cc:10080 msgid "width" msgstr "Breite" -#: zfuncs.cc:10091 +#: zfuncs.cc:10084 msgid "height" msgstr "Höhe" - -#~ msgid "Batch functions, Search Functions ..." -#~ msgstr "Stapelfunktionen, Suchfunktionen ..." - -#~ msgid "albums" -#~ msgstr "Alben" diff -Nru fotoxx-15.08/locales/translate-en.po fotoxx-15.09/locales/translate-en.po --- fotoxx-15.08/locales/translate-en.po 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/locales/translate-en.po 2015-08-31 10:21:01.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: home 2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-07-29 09:31+0200\n" +"POT-Creation-Date: 2015-08-30 21:14+0200\n" "PO-Revision-Date: 2011-01-01 11:29+0100\n" "Last-Translator: mico \n" "Language-Team: English\n" @@ -31,7 +31,7 @@ msgid "Drag album thumbnail to new position." msgstr "Drag album thumbnail to new position." -#: f.albums.cc:107 f.widgets.cc:536 +#: f.albums.cc:107 f.widgets.cc:541 msgid "Manage Albums" msgstr "Manage Albums" @@ -178,141 +178,145 @@ msgid "fallover" msgstr "fallover" -#: f.albums.cc:1139 f.widgets.cc:537 +#: f.albums.cc:1138 f.widgets.cc:542 msgid "Slide Show" msgstr "Slide Show" -#: f.albums.cc:1150 +#: f.albums.cc:1149 msgid "Clip Limit" msgstr "Clip Limit" -#: f.albums.cc:1154 +#: f.albums.cc:1153 msgid "Music File" msgstr "Music File" -#: f.albums.cc:1159 +#: f.albums.cc:1158 msgid "Full Screen" msgstr "Full Screen" -#: f.albums.cc:1160 +#: f.albums.cc:1159 msgid "Auto-replay" msgstr "Auto-replay" -#: f.albums.cc:1166 +#: f.albums.cc:1165 msgid "Customize:" msgstr "Customize:" -#: f.albums.cc:1167 +#: f.albums.cc:1166 msgid "transitions" msgstr "transitions" -#: f.albums.cc:1168 +#: f.albums.cc:1167 msgid "image files" msgstr "image files" -#: f.albums.cc:1173 f.albums.cc:1289 +#: f.albums.cc:1172 f.albums.cc:1286 #, c-format msgid "%d images" msgstr "%d images" -#: f.albums.cc:1196 f.albums.cc:1259 f.albums.cc:1349 f.albums.cc:1462 -#: f.albums.cc:1654 f.albums.cc:1738 f.albums.cc:1755 f.albums.cc:1976 +#: f.albums.cc:1194 f.albums.cc:1256 f.albums.cc:1346 f.albums.cc:1459 +#: f.albums.cc:1652 f.albums.cc:1736 f.albums.cc:1753 f.albums.cc:1974 msgid "invalid album" msgstr "invalid album" -#: f.albums.cc:1273 +#: f.albums.cc:1270 msgid "open album" msgstr "open album" -#: f.albums.cc:1305 +#: f.albums.cc:1302 msgid "Select music file" msgstr "Select music file" -#: f.albums.cc:1329 +#: f.albums.cc:1326 msgid "select random (if 5+ enabled)" msgstr "select random (if 5+ enabled)" -#: f.albums.cc:1353 +#: f.albums.cc:1350 msgid "Transition Preferences" msgstr "Transition Preferences" -#: f.albums.cc:1362 +#: f.albums.cc:1359 msgid "transition" msgstr "transition" -#: f.albums.cc:1363 +#: f.albums.cc:1360 msgid "enabled" msgstr "enabled" -#: f.albums.cc:1364 +#: f.albums.cc:1361 msgid "slowdown" msgstr "slowdown" -#: f.albums.cc:1365 +#: f.albums.cc:1362 msgid "preference" msgstr "preference" -#: f.albums.cc:1468 +#: f.albums.cc:1465 msgid "Image Preferences" msgstr "Image Preferences" -#: f.albums.cc:1472 f.file.cc:1153 f.file.cc:1349 f.file.cc:1557 f.meta.cc:425 +#: f.albums.cc:1469 f.file.cc:1157 f.file.cc:1353 f.file.cc:1561 f.meta.cc:426 msgid "Image File:" msgstr "Image File:" -#: f.albums.cc:1476 +#: f.albums.cc:1473 msgid "Play tone when image shows" msgstr "Play tone when image shows" -#: f.albums.cc:1479 +#: f.albums.cc:1476 msgid "Show image caption" msgstr "Show image caption" -#: f.albums.cc:1484 +#: f.albums.cc:1481 msgid "Show image comments" msgstr "Show image comments" -#: f.albums.cc:1489 +#: f.albums.cc:1486 msgid "Wait before zoom" msgstr "Wait before zoom" -#: f.albums.cc:1494 +#: f.albums.cc:1491 msgid "Zoom type:" msgstr "Zoom type:" -#: f.albums.cc:1495 +#: f.albums.cc:1492 msgid "none" msgstr "none" -#: f.albums.cc:1496 +#: f.albums.cc:1493 msgid "zoom-in" msgstr "zoom-in" -#: f.albums.cc:1497 +#: f.albums.cc:1494 msgid "zoom-out" msgstr "zoom-out" -#: f.albums.cc:1500 +#: f.albums.cc:1497 msgid "Zoom size (x)" msgstr "Zoom size (x)" -#: f.albums.cc:1503 +#: f.albums.cc:1500 msgid "Steps" msgstr "Steps" -#: f.albums.cc:1507 +#: f.albums.cc:1504 msgid "Zoom image location:" msgstr "Zoom image location:" -#: f.albums.cc:1515 +#: f.albums.cc:1512 msgid "Wait after zoom" msgstr "Wait after zoom" -#: f.albums.cc:1520 +#: f.albums.cc:1517 msgid "Transition to next image" msgstr "Transition to next image" -#: f.albums.cc:1961 f.albums.cc:2119 +#: f.albums.cc:1520 f.albums.cc:1622 +msgid "next" +msgstr "next" + +#: f.albums.cc:1959 f.albums.cc:2117 #, c-format msgid "" "file format error: \n" @@ -325,7 +329,7 @@ msgid "Select Area for Edits" msgstr "Select Area for Edits" -#: f.area.cc:80 f.edit.cc:5897 +#: f.area.cc:80 f.edit.cc:5908 msgid "Press F1 for help" msgstr "Press F1 for help" @@ -369,7 +373,7 @@ msgid "select all matching colors within mouse" msgstr "select all matching colors within mouse" -#: f.area.cc:139 f.edit.cc:5942 +#: f.area.cc:139 f.edit.cc:5953 msgid "mouse radius" msgstr "mouse radius" @@ -401,12 +405,12 @@ msgid "area edits fade away within edge distance" msgstr "area edits fade away within edge distance" -#: f.area.cc:353 f.area.cc:536 +#: f.area.cc:351 f.area.cc:534 #, c-format msgid "exceed %d edits" msgstr "exceed %d edits" -#: f.area.cc:1363 +#: f.area.cc:1355 msgid "" "Click one time inside each enclosed area \n" "(possible gaps in the outline will be found). \n" @@ -416,23 +420,23 @@ "(possible gaps in the outline will be found). \n" "Press F1 for help." -#: f.area.cc:1391 +#: f.area.cc:1383 msgid "finish area" msgstr "finish area" -#: f.area.cc:1399 +#: f.area.cc:1391 msgid "extend to corner:" msgstr "extend to corner:" -#: f.area.cc:1440 +#: f.area.cc:1432 msgid "searching" msgstr "searching" -#: f.area.cc:1472 +#: f.area.cc:1463 msgid "outline has a gap" msgstr "outline has a gap" -#: f.area.cc:1476 +#: f.area.cc:1467 msgid "success" msgstr "success" @@ -441,113 +445,114 @@ msgid "found %d pixels" msgstr "found %d pixels" -#: f.area.cc:1918 f.area.cc:1935 f.area.cc:1955 f.area.cc:2260 f.area.cc:2387 +#: f.area.cc:1926 f.area.cc:1943 f.area.cc:1963 f.area.cc:2278 f.area.cc:2354 +#: f.area.cc:2511 msgid "the area is not finished" msgstr "the area is not finished" -#: f.area.cc:2049 +#: f.area.cc:2052 msgid "Edge calculation in progress" msgstr "Edge calculation in progress" -#: f.area.cc:2058 +#: f.area.cc:2061 msgid "Area Edge Calc" msgstr "Area Edge Calc" -#: f.area.cc:2338 +#: f.area.cc:2462 msgid "load area from a file" msgstr "load area from a file" -#: f.area.cc:2421 +#: f.area.cc:2545 msgid "save area as a PNG file" msgstr "save area as a PNG file" -#: f.area.cc:2449 +#: f.area.cc:2573 msgid "position with mouse click/drag" msgstr "position with mouse click/drag" -#: f.area.cc:2493 +#: f.area.cc:2617 msgid "Paste Image" msgstr "Paste Image" -#: f.area.cc:2498 f.batch.cc:1135 f.batch.cc:1626 +#: f.area.cc:2622 f.batch.cc:1136 f.batch.cc:1627 msgid "resize" msgstr "resize" -#: f.batch.cc:103 f.widgets.cc:524 +#: f.batch.cc:104 f.widgets.cc:526 msgid "Batch Convert" msgstr "Batch Convert" -#: f.batch.cc:110 f.file.cc:781 +#: f.batch.cc:111 f.file.cc:782 msgid "New Name" msgstr "New Name" -#: f.batch.cc:112 +#: f.batch.cc:113 msgid "base" msgstr "base" -#: f.batch.cc:114 +#: f.batch.cc:115 msgid "adder" msgstr "adder" -#: f.batch.cc:118 +#: f.batch.cc:119 msgid "New Location" msgstr "New Location" -#: f.batch.cc:123 +#: f.batch.cc:124 msgid "New File Type" msgstr "New File Type" -#: f.batch.cc:127 f.batch.cc:135 +#: f.batch.cc:128 f.batch.cc:136 msgid "no change" msgstr "no change" -#: f.batch.cc:130 +#: f.batch.cc:131 msgid "max. Width" msgstr "max. Width" -#: f.batch.cc:138 f.batch.cc:531 +#: f.batch.cc:139 f.batch.cc:532 msgid "Delete Originals" msgstr "Delete Originals" -#: f.batch.cc:139 f.batch.cc:528 +#: f.batch.cc:140 f.batch.cc:529 msgid "Copy Metadata" msgstr "Copy Metadata" -#: f.batch.cc:140 f.batch.cc:529 f.edit.cc:1396 f.widgets.cc:432 -#: f.widgets.cc:672 +#: f.batch.cc:141 f.batch.cc:530 f.edit.cc:1407 f.widgets.cc:433 +#: f.widgets.cc:677 msgid "Upright" msgstr "Upright" -#: f.batch.cc:143 f.batch.cc:530 f.batch.cc:1144 f.batch.cc:1635 -#: f.repair.cc:115 f.widgets.cc:448 +#: f.batch.cc:144 f.batch.cc:531 f.batch.cc:1145 f.batch.cc:1636 +#: f.repair.cc:115 f.widgets.cc:449 msgid "Sharpen" msgstr "Sharpen" -#: f.batch.cc:145 f.batch.cc:1146 f.batch.cc:1637 +#: f.batch.cc:146 f.batch.cc:1147 f.batch.cc:1638 msgid "amount" msgstr "amount" -#: f.batch.cc:148 f.batch.cc:1149 f.batch.cc:1640 +#: f.batch.cc:149 f.batch.cc:1150 f.batch.cc:1641 msgid "threshold" msgstr "threshold" -#: f.batch.cc:250 +#: f.batch.cc:251 msgid "file type not supported" msgstr "file type not supported" -#: f.batch.cc:314 +#: f.batch.cc:315 msgid "cannot create new file" msgstr "cannot create new file" -#: f.batch.cc:361 +#: f.batch.cc:362 msgid "updating albums ..." msgstr "updating albums ..." -#: f.batch.cc:434 f.batch.cc:1422 f.batch.cc:1828 f.file.cc:1202 +#: f.batch.cc:435 f.batch.cc:1423 f.batch.cc:1829 f.file.cc:1206 msgid "Select directory" msgstr "Select directory" -#: f.batch.cc:480 +#: f.batch.cc:481 msgid "" "new name/base/adder unreasonable\n" " e.g. newname ### 100 10" @@ -555,149 +560,182 @@ "new name/base/adder unreasonable\n" " e.g. newname ### 100 10" -#: f.batch.cc:503 +#: f.batch.cc:504 #, c-format msgid "max. size %d x %d is not reasonable" msgstr "max. size %d x %d is not reasonable" -#: f.batch.cc:522 +#: f.batch.cc:523 #, c-format msgid "Convert %d image files" msgstr "Convert %d image files" -#: f.batch.cc:523 +#: f.batch.cc:524 msgid "Rename to" msgstr "Rename to" -#: f.batch.cc:524 +#: f.batch.cc:525 msgid "Convert to" msgstr "Convert to" -#: f.batch.cc:525 +#: f.batch.cc:526 msgid "Resize within" msgstr "Resize within" -#: f.batch.cc:526 +#: f.batch.cc:527 msgid "Output to" msgstr "Output to" -#: f.batch.cc:532 +#: f.batch.cc:533 msgid "PROCEED?" msgstr "PROCEED?" -#: f.batch.cc:686 f.widgets.cc:525 +#: f.batch.cc:687 f.widgets.cc:527 msgid "Batch Upright" msgstr "Batch Upright" -#: f.batch.cc:692 +#: f.batch.cc:693 msgid "Survey all files" msgstr "Survey all files" -#: f.batch.cc:746 +#: f.batch.cc:747 msgid "file cannot be read" msgstr "file cannot be read" -#: f.batch.cc:864 +#: f.batch.cc:865 msgid "cannot select both options" msgstr "cannot select both options" -#: f.batch.cc:908 f.widgets.cc:526 +#: f.batch.cc:909 f.widgets.cc:528 msgid "Batch Delete/Trash" msgstr "Batch Delete/Trash" -#: f.batch.cc:913 +#: f.batch.cc:914 msgid "delete" msgstr "delete" -#: f.batch.cc:916 +#: f.batch.cc:917 msgid "trash" msgstr "trash" -#: f.batch.cc:1078 +#: f.batch.cc:1079 msgid "Batch Convert RAW Files (DCraw)" msgstr "Batch Convert RAW Files (DCraw)" -#: f.batch.cc:1087 +#: f.batch.cc:1088 msgid "DCraw not installed" msgstr "DCraw not installed" -#: f.batch.cc:1122 f.batch.cc:1613 +#: f.batch.cc:1123 f.batch.cc:1614 msgid "output location" msgstr "output location" -#: f.batch.cc:1127 f.batch.cc:1618 +#: f.batch.cc:1128 f.batch.cc:1619 msgid "output file type" msgstr "output file type" -#: f.batch.cc:1158 +#: f.batch.cc:1159 msgid "white balance" msgstr "white balance" -#: f.batch.cc:1159 +#: f.batch.cc:1160 msgid "interpolation" msgstr "interpolation" -#: f.batch.cc:1160 +#: f.batch.cc:1161 msgid "color space" msgstr "color space" -#: f.batch.cc:1161 +#: f.batch.cc:1162 msgid "gamma curve" msgstr "gamma curve" -#: f.batch.cc:1164 +#: f.batch.cc:1165 msgid "camera" msgstr "camera" -#: f.batch.cc:1165 +#: f.batch.cc:1166 msgid "fixed" msgstr "fixed" -#: f.batch.cc:1166 +#: f.batch.cc:1167 msgid "calculated" msgstr "calculated" -#: f.batch.cc:1183 +#: f.batch.cc:1184 msgid "default" msgstr "default" -#: f.batch.cc:1189 +#: f.batch.cc:1190 msgid "defaults" msgstr "defaults" -#: f.batch.cc:1576 +#: f.batch.cc:1577 msgid "Batch Convert RAW Files (Raw Therapee)" msgstr "Batch Convert RAW Files (Raw Therapee)" -#: f.batch.cc:1585 f.file.cc:488 +#: f.batch.cc:1586 f.file.cc:489 msgid "Raw Therapee not installed" msgstr "Raw Therapee not installed" -#: f.batch.cc:1894 +#: f.batch.cc:1895 msgid "Brasero not installed" msgstr "Brasero not installed" -#: f.bend.cc:82 f.widgets.cc:469 +#: f.batch.cc:1984 f.widgets.cc:532 +msgid "Find Duplicate Images" +msgstr "Find Duplicate Images" + +#: f.batch.cc:1986 f.tools.cc:927 +msgid "Thumbnail size" +msgstr "Thumbnail size" + +#: f.batch.cc:1989 +msgid "pixel difference" +msgstr "pixel difference" + +#: f.batch.cc:1992 +msgid "pixel count" +msgstr "pixel count" + +#: f.batch.cc:1995 +msgid "Images:" +msgstr "Images:" + +#: f.batch.cc:1996 +msgid "searching ..." +msgstr "searching ..." + +#: f.batch.cc:1998 +msgid "Duplicates:" +msgstr "Duplicates:" + +#: f.batch.cc:2016 +#, c-format +msgid "only %d image thumbnails found" +msgstr "only %d image thumbnails found" + +#: f.bend.cc:86 f.widgets.cc:470 msgid "Unbend" msgstr "Unbend" -#: f.bend.cc:90 f.edit.cc:4237 f.effects.cc:4620 +#: f.bend.cc:94 f.edit.cc:4248 f.effects.cc:4625 msgid "vertical" msgstr "vertical" -#: f.bend.cc:91 f.edit.cc:4236 f.effects.cc:4616 +#: f.bend.cc:95 f.edit.cc:4247 f.effects.cc:4621 msgid "horizontal" msgstr "horizontal" -#: f.bend.cc:92 +#: f.bend.cc:96 msgid "linear" msgstr "linear" -#: f.bend.cc:95 +#: f.bend.cc:99 msgid "curved" msgstr "curved" -#: f.bend.cc:363 +#: f.bend.cc:367 msgid "" " Click the four corners of a tetragon area. Press [apply]. \n" " The image is warped to make the tetragon into a rectangle." @@ -705,15 +743,15 @@ " 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:376 +#: f.bend.cc:384 msgid "Perspective Correction" msgstr "Perspective Correction" -#: f.bend.cc:582 +#: f.bend.cc:590 msgid "must have 4 corners" msgstr "must have 4 corners" -#: f.bend.cc:704 +#: f.bend.cc:712 msgid "" " Select an area to warp using select area function. \n" " Press [start warp] and pull area with mouse. \n" @@ -725,19 +763,19 @@ " Make multiple mouse pulls until satisfied. \n" " When finished, select another area or press [done]." -#: f.bend.cc:717 f.widgets.cc:471 +#: f.bend.cc:725 f.widgets.cc:472 msgid "Warp area" msgstr "Warp area" -#: f.bend.cc:722 +#: f.bend.cc:730 msgid "start warp" msgstr "start warp" -#: f.bend.cc:780 +#: f.bend.cc:788 msgid "no active Select Area" msgstr "no active Select Area" -#: f.bend.cc:1121 f.bend.cc:1431 +#: f.bend.cc:1129 f.bend.cc:1443 msgid "" " Pull an image position using the mouse. \n" " Make multiple mouse pulls until satisfied. \n" @@ -747,19 +785,19 @@ " Make multiple mouse pulls until satisfied. \n" " When finished, press [done]." -#: f.bend.cc:1135 f.widgets.cc:472 +#: f.bend.cc:1147 f.widgets.cc:473 msgid "Warp curved" msgstr "Warp curved" -#: f.bend.cc:1144 f.mashup.cc:1836 +#: f.bend.cc:1156 f.mashup.cc:1836 msgid "warp span" msgstr "warp span" -#: f.bend.cc:1445 f.widgets.cc:473 +#: f.bend.cc:1461 f.widgets.cc:474 msgid "Warp linear" msgstr "Warp linear" -#: f.bend.cc:1760 +#: f.bend.cc:1776 msgid "" " Pull on an image corner using the mouse. \n" " Make multiple mouse pulls until satisfied. \n" @@ -769,15 +807,15 @@ " Make multiple mouse pulls until satisfied. \n" " When finished, press [done]." -#: f.bend.cc:1772 f.widgets.cc:474 +#: f.bend.cc:1792 f.widgets.cc:475 msgid "Warp affine" msgstr "Warp affine" -#: f.bend.cc:2119 +#: f.bend.cc:2139 msgid "Flatten Book Page Photo" msgstr "Flatten Book Page Photo" -#: f.bend.cc:2120 +#: f.bend.cc:2140 msgid "" "Trim image to isolate one page. \n" "Map top and bottom edges with \n" @@ -787,88 +825,88 @@ "Map top and bottom edges with \n" "4+ mouse clicks, then flatten: " -#: f.bend.cc:2123 +#: f.bend.cc:2143 msgid "Stretch curved-down surfaces:" msgstr "Stretch curved-down surfaces:" -#: f.bend.cc:2178 +#: f.bend.cc:2198 msgid "top:" msgstr "top:" -#: f.bend.cc:2181 +#: f.bend.cc:2201 msgid "bottom:" msgstr "bottom:" -#: f.combine.cc:2119 f.combine.cc:2750 f.combine.cc:3406 f.combine.cc:3938 +#: f.combine.cc:2108 f.combine.cc:2739 f.combine.cc:3395 f.combine.cc:3927 msgid "Select 2 to 9 files" msgstr "Select 2 to 9 files" -#: f.combine.cc:2140 f.combine.cc:2771 f.combine.cc:3427 f.combine.cc:3959 +#: f.combine.cc:2129 f.combine.cc:2760 f.combine.cc:3416 f.combine.cc:3948 msgid "Images are not all the same size" msgstr "Images are not all the same size" -#: f.combine.cc:2484 +#: f.combine.cc:2473 msgid "Adjust Image Contributions" msgstr "Adjust Image Contributions" -#: f.combine.cc:2488 +#: f.combine.cc:2477 msgid "dark pixels" msgstr "dark pixels" -#: f.combine.cc:2490 +#: f.combine.cc:2479 msgid "light pixels" msgstr "light pixels" -#: f.combine.cc:2492 +#: f.combine.cc:2481 msgid "file:" msgstr "file:" -#: f.combine.cc:3007 +#: f.combine.cc:2996 msgid "Paint and Warp Image" msgstr "Paint and Warp Image" -#: f.combine.cc:3011 f.combine.cc:3656 f.combine.cc:6246 f.effects.cc:3851 -#: f.widgets.cc:555 f.widgets.cc:578 f.widgets.cc:600 +#: f.combine.cc:3000 f.combine.cc:3645 f.combine.cc:6236 f.effects.cc:3858 +#: f.widgets.cc:560 f.widgets.cc:583 f.widgets.cc:605 msgid "Image" msgstr "Image" -#: f.combine.cc:3015 +#: f.combine.cc:3004 msgid "paint" msgstr "paint" -#: f.combine.cc:3016 +#: f.combine.cc:3005 msgid "warp" msgstr "warp" -#: f.combine.cc:3654 +#: f.combine.cc:3643 msgid "Select and Paint Image" msgstr "Select and Paint Image" -#: f.combine.cc:4130 +#: f.combine.cc:4119 msgid "Adjust Pixel Composition" msgstr "Adjust Pixel Composition" -#: f.combine.cc:4132 +#: f.combine.cc:4121 msgid "use average" msgstr "use average" -#: f.combine.cc:4133 +#: f.combine.cc:4122 msgid "use median" msgstr "use median" -#: f.combine.cc:4135 +#: f.combine.cc:4124 msgid "omit low pixel" msgstr "omit low pixel" -#: f.combine.cc:4136 +#: f.combine.cc:4125 msgid "omit high pixel" msgstr "omit high pixel" -#: f.combine.cc:4398 f.combine.cc:5504 +#: f.combine.cc:4387 f.combine.cc:5493 msgid "Select 2 to 4 files" msgstr "Select 2 to 4 files" -#: f.combine.cc:4473 +#: f.combine.cc:4462 msgid "" "Drag images into rough alignment.\n" "To rotate, drag from lower edge." @@ -876,76 +914,76 @@ "Drag images into rough alignment.\n" "To rotate, drag from lower edge." -#: f.combine.cc:4475 f.combine.cc:5581 +#: f.combine.cc:4464 f.combine.cc:5570 msgid "no curve (scanned image)" msgstr "no curve (scanned image)" -#: f.combine.cc:4476 f.combine.cc:5582 +#: f.combine.cc:4465 f.combine.cc:5571 msgid "Search for lens mm" msgstr "Search for lens mm" -#: f.combine.cc:4477 f.combine.cc:5583 +#: f.combine.cc:4466 f.combine.cc:5572 msgid "Save lens mm → image EXIF" msgstr "Save lens mm → image EXIF" -#: f.combine.cc:4538 f.combine.cc:5644 +#: f.combine.cc:4527 f.combine.cc:5633 msgid "Pre-align Images" msgstr "Pre-align Images" -#: f.combine.cc:4542 f.combine.cc:5648 +#: f.combine.cc:4531 f.combine.cc:5637 msgid "lens mm" msgstr "lens mm" -#: f.combine.cc:4547 f.combine.cc:5653 +#: f.combine.cc:4536 f.combine.cc:5642 msgid "no auto warp" msgstr "no auto warp" -#: f.combine.cc:4549 f.combine.cc:5655 f.widgets.cc:439 f.widgets.cc:671 +#: f.combine.cc:4538 f.combine.cc:5644 f.widgets.cc:440 f.widgets.cc:676 msgid "Resize" msgstr "Resize" -#: f.combine.cc:4550 f.combine.cc:5656 +#: f.combine.cc:4539 f.combine.cc:5645 msgid "resize window" msgstr "resize window" -#: f.combine.cc:4558 f.combine.cc:5664 +#: f.combine.cc:4547 f.combine.cc:5653 msgid "do not warp images during auto-alignment" msgstr "do not warp images during auto-alignment" -#: f.combine.cc:4603 f.combine.cc:5709 +#: f.combine.cc:4592 f.combine.cc:5698 msgid "use two images only" msgstr "use two images only" -#: f.combine.cc:4631 f.combine.cc:4835 f.combine.cc:5021 f.combine.cc:5735 -#: f.combine.cc:5940 f.combine.cc:6126 +#: f.combine.cc:4620 f.combine.cc:4824 f.combine.cc:5010 f.combine.cc:5724 +#: f.combine.cc:5928 f.combine.cc:6114 msgid "Too little overlap, cannot align" msgstr "Too little overlap, cannot align" -#: f.combine.cc:5096 f.combine.cc:6202 +#: f.combine.cc:5088 f.combine.cc:6192 msgid "Match Brightness and Color" msgstr "Match Brightness and Color" -#: f.combine.cc:5141 +#: f.combine.cc:5133 msgid "Select image" msgstr "Select image" -#: f.combine.cc:5156 f.combine.cc:6261 +#: f.combine.cc:5148 f.combine.cc:6251 msgid "auto color" msgstr "auto color" -#: f.combine.cc:5157 f.combine.cc:6262 +#: f.combine.cc:5149 f.combine.cc:6252 msgid "file color" msgstr "file color" -#: f.combine.cc:5163 f.combine.cc:6268 +#: f.combine.cc:5155 f.combine.cc:6258 msgid "mouse warp" msgstr "mouse warp" -#: f.combine.cc:5166 +#: f.combine.cc:5158 msgid "curved image" msgstr "curved image" -#: f.combine.cc:5579 +#: f.combine.cc:5568 msgid "" "Drag images into rough alignment.\n" "To rotate, drag from right edge." @@ -953,11 +991,11 @@ "Drag images into rough alignment.\n" "To rotate, drag from right edge." -#: f.combine.cc:6482 +#: f.combine.cc:6469 msgid "pano tools (hugin) not installed" msgstr "pano tools (hugin) not installed" -#: f.combine.cc:6491 +#: f.combine.cc:6478 msgid "Select at least 2 files" msgstr "Select at least 2 files" @@ -969,239 +1007,239 @@ msgid "Minor rotate: drag right edge with mouse" msgstr "Minor rotate: drag right edge with mouse" -#: f.edit.cc:167 f.widgets.cc:431 f.widgets.cc:670 +#: f.edit.cc:171 f.widgets.cc:432 f.widgets.cc:675 msgid "Trim/Rotate" msgstr "Trim/Rotate" -#: f.edit.cc:179 f.edit.cc:577 +#: f.edit.cc:183 f.edit.cc:585 msgid "ratio" msgstr "ratio" -#: f.edit.cc:183 +#: f.edit.cc:187 msgid "trim size:" msgstr "trim size:" -#: f.edit.cc:188 +#: f.edit.cc:192 msgid "Lock Ratio" msgstr "Lock Ratio" -#: f.edit.cc:193 +#: f.edit.cc:197 msgid "Customize" msgstr "Customize" -#: f.edit.cc:201 +#: f.edit.cc:205 msgid "Rotate: degrees" msgstr "Rotate: degrees" -#: f.edit.cc:203 +#: f.edit.cc:207 msgid "auto-trim" msgstr "auto-trim" -#: f.edit.cc:573 +#: f.edit.cc:581 msgid "Trim Buttons" msgstr "Trim Buttons" -#: f.edit.cc:576 +#: f.edit.cc:584 msgid "label" msgstr "label" -#: f.edit.cc:1394 +#: f.edit.cc:1405 msgid "Upright Image" msgstr "Upright Image" -#: f.edit.cc:1458 +#: f.edit.cc:1469 msgid "rotation unknown" msgstr "rotation unknown" -#: f.edit.cc:2009 f.widgets.cc:435 f.widgets.cc:674 +#: f.edit.cc:2020 f.widgets.cc:436 f.widgets.cc:679 msgid "Retouch Combo" msgstr "Retouch Combo" -#: f.edit.cc:2030 +#: f.edit.cc:2041 msgid "Amplifier" msgstr "Amplifier" -#: f.edit.cc:2031 fotoxx.h:1079 +#: f.edit.cc:2042 fotoxx.h:1087 msgid "Brightness" msgstr "Brightness" -#: f.edit.cc:2032 fotoxx.h:1087 +#: f.edit.cc:2043 fotoxx.h:1095 msgid "Contrast" msgstr "Contrast" -#: f.edit.cc:2033 +#: f.edit.cc:2044 msgid "Low Color" msgstr "Low Color" -#: f.edit.cc:2034 +#: f.edit.cc:2045 msgid "Warmer" msgstr "Warmer" -#: f.edit.cc:2035 f.effects.cc:1009 +#: f.edit.cc:2046 f.effects.cc:1010 msgid "Dark Areas" msgstr "Dark Areas" -#: f.edit.cc:2044 +#: f.edit.cc:2055 msgid "Max." msgstr "Max." -#: f.edit.cc:2045 f.edit.cc:2046 f.edit.cc:2047 +#: f.edit.cc:2056 f.edit.cc:2057 f.edit.cc:2058 msgid "High" msgstr "High" -#: f.edit.cc:2048 +#: f.edit.cc:2059 msgid "Cooler" msgstr "Cooler" -#: f.edit.cc:2049 +#: f.edit.cc:2060 msgid "Bright" msgstr "Bright" -#: f.edit.cc:2052 f.tools.cc:1595 +#: f.edit.cc:2063 f.tools.cc:1621 msgid "Brightness Distribution" msgstr "Brightness Distribution" -#: f.edit.cc:2055 +#: f.edit.cc:2066 msgid "Click for white balance or black level" msgstr "Click for white balance or black level" -#: f.edit.cc:2058 +#: f.edit.cc:2069 msgid "Settings File" msgstr "Settings File" -#: f.edit.cc:2062 +#: f.edit.cc:2073 msgid "recall previous settings used" msgstr "recall previous settings used" -#: f.edit.cc:2764 +#: f.edit.cc:2775 msgid "Adjust Brightness Distribution" msgstr "Adjust Brightness Distribution" -#: f.edit.cc:2801 +#: f.edit.cc:2812 msgid "Low Cutoff" msgstr "Low Cutoff" -#: f.edit.cc:2802 +#: f.edit.cc:2813 msgid "High Cutoff" msgstr "High Cutoff" -#: f.edit.cc:2803 +#: f.edit.cc:2814 msgid "Low Flatten" msgstr "Low Flatten" -#: f.edit.cc:2804 +#: f.edit.cc:2815 msgid "Mid Flatten" msgstr "Mid Flatten" -#: f.edit.cc:2805 +#: f.edit.cc:2816 msgid "High Flatten" msgstr "High Flatten" -#: f.edit.cc:2806 +#: f.edit.cc:2817 msgid "Low Stretch" msgstr "Low Stretch" -#: f.edit.cc:2807 +#: f.edit.cc:2818 msgid "Mid Stretch" msgstr "Mid Stretch" -#: f.edit.cc:2808 +#: f.edit.cc:2819 msgid "High Stretch" msgstr "High Stretch" -#: f.edit.cc:3138 +#: f.edit.cc:3149 msgid "Zonal Flatten Brightness" msgstr "Zonal Flatten Brightness" -#: f.edit.cc:3169 +#: f.edit.cc:3180 msgid "Zones" msgstr "Zones" -#: f.edit.cc:3176 +#: f.edit.cc:3187 msgid "Deband Dark" msgstr "Deband Dark" -#: f.edit.cc:3179 +#: f.edit.cc:3190 msgid "Deband Bright" msgstr "Deband Bright" -#: f.edit.cc:3624 f.widgets.cc:438 f.widgets.cc:677 +#: f.edit.cc:3635 f.widgets.cc:439 f.widgets.cc:682 msgid "Tone Mapping" msgstr "Tone Mapping" -#: f.edit.cc:3653 +#: f.edit.cc:3664 msgid "low" msgstr "low" -#: f.edit.cc:3655 +#: f.edit.cc:3666 msgid "high" msgstr "high" -#: f.edit.cc:3658 +#: f.edit.cc:3669 msgid "Amplify" msgstr "Amplify" -#: f.edit.cc:4033 +#: f.edit.cc:4044 msgid "Lock aspect ratio" msgstr "Lock aspect ratio" -#: f.edit.cc:4055 +#: f.edit.cc:4066 msgid "Resize Image" msgstr "Resize Image" -#: f.edit.cc:4232 f.widgets.cc:440 +#: f.edit.cc:4243 f.widgets.cc:441 msgid "Flip" msgstr "Flip" -#: f.edit.cc:4338 +#: f.edit.cc:4349 msgid "+Version" msgstr "+Version" -#: f.edit.cc:4361 +#: f.edit.cc:4372 msgid "Write Text on Image" msgstr "Write Text on Image" -#: f.edit.cc:4362 +#: f.edit.cc:4373 msgid "Enter text, click/drag on image, right click to remove" msgstr "Enter text, click/drag on image, right click to remove" -#: f.edit.cc:4411 f.mashup.cc:2437 +#: f.edit.cc:4422 f.mashup.cc:2437 msgid "Text" msgstr "Text" -#: f.edit.cc:4416 +#: f.edit.cc:4427 msgid "Use metadata key" msgstr "Use metadata key" -#: f.edit.cc:4421 +#: f.edit.cc:4432 msgid "Use text file" msgstr "Use text file" -#: f.edit.cc:4440 f.mashup.cc:2455 +#: f.edit.cc:4451 f.mashup.cc:2455 msgid "text" msgstr "text" -#: f.edit.cc:4441 f.edit.cc:5279 f.mashup.cc:2456 f.mashup.cc:2798 +#: f.edit.cc:4452 f.edit.cc:5290 f.mashup.cc:2456 f.mashup.cc:2798 msgid "backing" msgstr "backing" -#: f.edit.cc:4442 f.edit.cc:5280 f.mashup.cc:2457 f.mashup.cc:2799 +#: f.edit.cc:4453 f.edit.cc:5291 f.mashup.cc:2457 f.mashup.cc:2799 msgid "outline" msgstr "outline" -#: f.edit.cc:4443 f.edit.cc:5281 f.mashup.cc:2458 f.mashup.cc:2800 +#: f.edit.cc:4454 f.edit.cc:5292 f.mashup.cc:2458 f.mashup.cc:2800 msgid "shadow" msgstr "shadow" -#: f.edit.cc:4469 +#: f.edit.cc:4480 msgid "save to current file" msgstr "save to current file" -#: f.edit.cc:4470 f.file.cc:605 +#: f.edit.cc:4481 f.file.cc:606 msgid "save as new file version" msgstr "save as new file version" -#: f.edit.cc:4471 +#: f.edit.cc:4482 msgid "" "save to current file \n" "open next file with same text" @@ -1209,15 +1247,15 @@ "save to current file \n" "open next file with same text" -#: f.edit.cc:4632 f.mashup.cc:2557 +#: f.edit.cc:4643 f.mashup.cc:2557 f.tools.cc:1060 msgid "select font" msgstr "select font" -#: f.edit.cc:4896 +#: f.edit.cc:4907 msgid "text file is defective" msgstr "text file is defective" -#: f.edit.cc:5219 +#: f.edit.cc:5230 msgid "" "Enter line or arrow properties in dialog, \n" "click/drag on image, right click to remove" @@ -1225,23 +1263,23 @@ "Enter line or arrow properties in dialog, \n" "click/drag on image, right click to remove" -#: f.edit.cc:5250 +#: f.edit.cc:5261 msgid "Write Line or Arrow on Image" msgstr "Write Line or Arrow on Image" -#: f.edit.cc:5258 f.mashup.cc:2777 +#: f.edit.cc:5269 f.mashup.cc:2777 msgid "Line length" msgstr "Line length" -#: f.edit.cc:5265 f.mashup.cc:2784 +#: f.edit.cc:5276 f.mashup.cc:2784 msgid "Arrow head" msgstr "Arrow head" -#: f.edit.cc:5278 f.mashup.cc:2797 +#: f.edit.cc:5289 f.mashup.cc:2797 msgid "line" msgstr "line" -#: f.edit.cc:5307 +#: f.edit.cc:5318 msgid "" "fix line/arrow in layout \n" " start new line/arrow" @@ -1249,11 +1287,11 @@ "fix line/arrow in layout \n" " start new line/arrow" -#: f.edit.cc:5896 f.widgets.cc:443 +#: f.edit.cc:5907 f.widgets.cc:444 msgid "Paint Edits" msgstr "Paint Edits" -#: f.edit.cc:5903 f.edit.cc:6132 fotoxx-15.08.cc:3172 +#: f.edit.cc:5914 f.edit.cc:6143 fotoxx-15.09.cc:3123 msgid "" "Select area cannot be kept.\n" "Continue?" @@ -1261,59 +1299,59 @@ "Select area cannot be kept.\n" "Continue?" -#: f.edit.cc:5911 f.edit.cc:6140 f.tools.cc:2127 +#: f.edit.cc:5922 f.edit.cc:6151 f.tools.cc:2147 msgid "Edit function must be active" msgstr "Edit function must be active" -#: f.edit.cc:5916 +#: f.edit.cc:5927 msgid "Cannot use Paint Edits" msgstr "Cannot use Paint Edits" -#: f.edit.cc:5945 +#: f.edit.cc:5956 msgid "power: center" msgstr "power: center" -#: f.edit.cc:5950 +#: f.edit.cc:5961 msgid "reset area" msgstr "reset area" -#: f.edit.cc:6125 f.widgets.cc:444 +#: f.edit.cc:6136 f.widgets.cc:445 msgid "Leverage Edits" msgstr "Leverage Edits" -#: f.edit.cc:6126 +#: f.edit.cc:6137 msgid "Edit Function Amplifier" msgstr "Edit Function Amplifier" -#: f.edit.cc:6145 +#: f.edit.cc:6156 msgid "Cannot use Leverage Edits" msgstr "Cannot use Leverage Edits" -#: f.edit.cc:6178 +#: f.edit.cc:6189 msgid "minimum" msgstr "minimum" -#: f.edit.cc:6180 +#: f.edit.cc:6191 msgid "maximum" msgstr "maximum" -#: f.edit.cc:6481 +#: f.edit.cc:6490 msgid "Edit Plugins" msgstr "Edit Plugins" -#: f.edit.cc:6482 +#: f.edit.cc:6491 msgid "Edit plugins menu" msgstr "Edit plugins menu" -#: f.edit.cc:6490 +#: f.edit.cc:6499 msgid "Run as Fotoxx edit function" msgstr "Run as Fotoxx edit function" -#: f.edit.cc:6728 +#: f.edit.cc:6737 msgid "Plugin working ..." msgstr "Plugin working ..." -#: f.edit.cc:6737 +#: f.edit.cc:6746 msgid "plugin failed" msgstr "plugin failed" @@ -1345,7 +1383,7 @@ msgid "Background" msgstr "Background" -#: f.effects.cc:713 f.widgets.cc:480 +#: f.effects.cc:713 f.widgets.cc:481 msgid "Line Drawing" msgstr "Line Drawing" @@ -1353,201 +1391,201 @@ msgid "black/white" msgstr "black/white" -#: f.effects.cc:1003 f.widgets.cc:481 +#: f.effects.cc:1004 f.widgets.cc:482 msgid "Color Drawing" msgstr "Color Drawing" -#: f.effects.cc:1010 +#: f.effects.cc:1011 msgid "Bright Areas" msgstr "Bright Areas" -#: f.effects.cc:1264 f.widgets.cc:482 +#: f.effects.cc:1265 f.widgets.cc:483 msgid "Graduated Blur" msgstr "Graduated Blur" -#: f.effects.cc:1268 +#: f.effects.cc:1269 msgid "Contrast Limit" msgstr "Contrast Limit" -#: f.effects.cc:1271 f.repair.cc:747 +#: f.effects.cc:1272 f.repair.cc:748 msgid "Blur Radius" msgstr "Blur Radius" -#: f.effects.cc:1485 +#: f.effects.cc:1486 msgid "Simulate Embossing" msgstr "Simulate Embossing" -#: f.effects.cc:1502 +#: f.effects.cc:1503 msgid "depth" msgstr "depth" -#: f.effects.cc:1703 +#: f.effects.cc:1705 msgid "Simulate Tiles" msgstr "Simulate Tiles" -#: f.effects.cc:1707 +#: f.effects.cc:1709 msgid "tile size" msgstr "tile size" -#: f.effects.cc:1710 +#: f.effects.cc:1712 msgid "tile gap" msgstr "tile gap" -#: f.effects.cc:1713 +#: f.effects.cc:1715 msgid "3D depth" msgstr "3D depth" -#: f.effects.cc:1937 +#: f.effects.cc:1939 msgid "Convert Image to Dots" msgstr "Convert Image to Dots" -#: f.effects.cc:1941 +#: f.effects.cc:1943 msgid "dot size" msgstr "dot size" -#: f.effects.cc:2161 +#: f.effects.cc:2168 msgid "Simulate Painting" msgstr "Simulate Painting" -#: f.effects.cc:2165 +#: f.effects.cc:2172 msgid "color depth" msgstr "color depth" -#: f.effects.cc:2169 +#: f.effects.cc:2176 msgid "patch area goal" msgstr "patch area goal" -#: f.effects.cc:2173 +#: f.effects.cc:2180 msgid "req. color match" msgstr "req. color match" -#: f.effects.cc:2177 +#: f.effects.cc:2184 msgid "borders" msgstr "borders" -#: f.effects.cc:2750 f.widgets.cc:487 +#: f.effects.cc:2757 f.widgets.cc:488 msgid "Vignette" msgstr "Vignette" -#: f.effects.cc:3118 +#: f.effects.cc:3125 msgid "Add Texture" msgstr "Add Texture" -#: f.effects.cc:3334 +#: f.effects.cc:3341 msgid "Background Pattern" msgstr "Background Pattern" -#: f.effects.cc:3338 +#: f.effects.cc:3345 msgid "Pattern File:" msgstr "Pattern File:" -#: f.effects.cc:3343 +#: f.effects.cc:3350 msgid "Geometry" msgstr "Geometry" -#: f.effects.cc:3344 +#: f.effects.cc:3351 msgid "Calculate" msgstr "Calculate" -#: f.effects.cc:3346 +#: f.effects.cc:3353 msgid "Zoom" msgstr "Zoom" -#: f.effects.cc:3357 f.widgets.cc:489 +#: f.effects.cc:3364 f.widgets.cc:490 msgid "Pattern" msgstr "Pattern" -#: f.effects.cc:3364 +#: f.effects.cc:3371 msgid "Overlap" msgstr "Overlap" -#: f.effects.cc:3371 +#: f.effects.cc:3378 msgid "Opacity" msgstr "Opacity" -#: f.effects.cc:3410 +#: f.effects.cc:3417 msgid "choose pattern tile" msgstr "choose pattern tile" -#: f.effects.cc:3755 +#: f.effects.cc:3762 msgid "Create Mosaic" msgstr "Create Mosaic" -#: f.effects.cc:3841 +#: f.effects.cc:3848 msgid "Tile" msgstr "Tile" -#: f.effects.cc:3849 f.widgets.cc:484 +#: f.effects.cc:3856 f.widgets.cc:485 msgid "Tiles" msgstr "Tiles" -#: f.effects.cc:3855 +#: f.effects.cc:3862 msgid "Tile blending" msgstr "Tile blending" -#: f.effects.cc:3935 +#: f.effects.cc:3942 #, c-format msgid "exceeded max. tiles: %d" msgstr "exceeded max. tiles: %d" -#: f.effects.cc:3950 +#: f.effects.cc:3957 #, c-format msgid "only %d tile images found" msgstr "only %d tile images found" -#: f.effects.cc:4326 f.widgets.cc:491 +#: f.effects.cc:4333 f.widgets.cc:492 msgid "Custom Kernel" msgstr "Custom Kernel" -#: f.effects.cc:4330 +#: f.effects.cc:4337 msgid "Kernel size" msgstr "Kernel size" -#: f.effects.cc:4335 +#: f.effects.cc:4342 msgid "Divisor" msgstr "Divisor" -#: f.effects.cc:4340 +#: f.effects.cc:4347 msgid "Data file" msgstr "Data file" -#: f.effects.cc:4606 f.widgets.cc:492 +#: f.effects.cc:4611 f.widgets.cc:493 msgid "Make Waves" msgstr "Make Waves" -#: f.effects.cc:4613 +#: f.effects.cc:4618 msgid "wavelength" msgstr "wavelength" -#: f.effects.cc:4614 +#: f.effects.cc:4619 msgid "amplitude" msgstr "amplitude" -#: f.effects.cc:4615 +#: f.effects.cc:4620 msgid "variance" msgstr "variance" -#: f.effects.cc:4626 +#: f.effects.cc:4631 msgid "perspective" msgstr "perspective" -#: f.effects.cc:4800 +#: f.effects.cc:4805 msgid "Pull image using the mouse." msgstr "Pull image using the mouse." -#: f.effects.cc:4821 f.widgets.cc:493 +#: f.effects.cc:4826 f.widgets.cc:494 msgid "Directed Blur" msgstr "Directed Blur" -#: f.effects.cc:4825 +#: f.effects.cc:4830 msgid "blur span" msgstr "blur span" -#: f.effects.cc:4828 +#: f.effects.cc:4833 msgid "intensity" msgstr "intensity" -#: f.file.cc:247 +#: f.file.cc:248 msgid "" "use EXIF photo date or \n" " file modification date" @@ -1555,103 +1593,103 @@ "use EXIF photo date or \n" " file modification date" -#: f.file.cc:264 f.widgets.cc:560 +#: f.file.cc:265 f.widgets.cc:565 msgid "File" msgstr "File" -#: f.file.cc:357 f.file.cc:1483 f.file.cc:1622 +#: f.file.cc:358 f.file.cc:1487 f.file.cc:1626 msgid "no more images" msgstr "no more images" -#: f.file.cc:417 +#: f.file.cc:418 msgid "UFraw not installed" msgstr "UFraw not installed" -#: f.file.cc:433 f.widgets.cc:679 +#: f.file.cc:434 f.widgets.cc:684 msgid "Open RAW file (ufraw)" msgstr "Open RAW file (ufraw)" -#: f.file.cc:438 f.file.cc:509 +#: f.file.cc:439 f.file.cc:510 msgid "RAW type not registered in User Settings" msgstr "RAW type not registered in User Settings" -#: f.file.cc:504 f.widgets.cc:680 +#: f.file.cc:505 f.widgets.cc:685 msgid "Open RAW file (Raw Therapee)" msgstr "Open RAW file (Raw Therapee)" -#: f.file.cc:587 +#: f.file.cc:588 msgid "Save Image File" msgstr "Save Image File" -#: f.file.cc:597 +#: f.file.cc:598 msgid "new version" msgstr "new version" -#: f.file.cc:598 +#: f.file.cc:599 msgid "new file" msgstr "new file" -#: f.file.cc:599 +#: f.file.cc:600 msgid "replace file" msgstr "replace file" -#: f.file.cc:606 f.file.cc:2281 +#: f.file.cc:607 f.file.cc:2344 msgid "save as new file name or type" msgstr "save as new file name or type" -#: f.file.cc:608 +#: f.file.cc:609 msgid "replace old file (OVERWRITE)" msgstr "replace old file (OVERWRITE)" -#: f.file.cc:646 f.file.cc:2071 +#: f.file.cc:647 f.file.cc:2124 msgid "cannot save as RAW type" msgstr "cannot save as RAW type" -#: f.file.cc:773 f.widgets.cc:396 +#: f.file.cc:774 f.widgets.cc:395 msgid "Rename Image File" msgstr "Rename Image File" -#: f.file.cc:780 +#: f.file.cc:781 msgid "Old Name" msgstr "Old Name" -#: f.file.cc:790 +#: f.file.cc:791 msgid "previous name" msgstr "previous name" -#: f.file.cc:791 +#: f.file.cc:792 msgid "add 1" msgstr "add 1" -#: f.file.cc:946 +#: f.file.cc:950 msgid "Create Blank Image" msgstr "Create Blank Image" -#: f.file.cc:948 +#: f.file.cc:952 msgid "file name" msgstr "file name" -#: f.file.cc:982 +#: f.file.cc:986 msgid "supply a file name" msgstr "supply a file name" -#: f.file.cc:1114 +#: f.file.cc:1118 msgid "Copy Image File" msgstr "Copy Image File" -#: f.file.cc:1115 +#: f.file.cc:1119 msgid "Move Image File" msgstr "Move Image File" -#: f.file.cc:1158 +#: f.file.cc:1162 msgid "new location" msgstr "new location" -#: f.file.cc:1228 +#: f.file.cc:1232 msgid "new location is not a directory" msgstr "new location is not a directory" -#: f.file.cc:1270 f.file.cc:1467 f.file.cc:1605 +#: f.file.cc:1274 f.file.cc:1471 f.file.cc:1609 #, c-format msgid "" "delete failed: \n" @@ -1660,15 +1698,15 @@ "delete failed: \n" " %s" -#: f.file.cc:1312 f.widgets.cc:398 +#: f.file.cc:1316 f.widgets.cc:397 msgid "Trash Image File" msgstr "Trash Image File" -#: f.file.cc:1313 f.file.cc:1520 +#: f.file.cc:1317 f.file.cc:1524 msgid "(automatic step to next image)" msgstr "(automatic step to next image)" -#: f.file.cc:1381 +#: f.file.cc:1385 msgid "" "Linux standard trash does not work. \n" "Desktop trash folder will be created." @@ -1676,7 +1714,7 @@ "Linux standard trash does not work. \n" "Desktop trash folder will be created." -#: f.file.cc:1384 +#: f.file.cc:1388 msgid "" "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" @@ -1684,49 +1722,101 @@ "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" -#: f.file.cc:1387 +#: f.file.cc:1391 #, c-format msgid "Cannot create trash folder: %s" msgstr "Cannot create trash folder: %s" -#: f.file.cc:1399 +#: f.file.cc:1403 msgid "Move read-only file to trash?" msgstr "Move read-only file to trash?" -#: f.file.cc:1454 +#: f.file.cc:1458 #, c-format msgid "error: %s" msgstr "error: %s" -#: f.file.cc:1519 +#: f.file.cc:1523 msgid "Delete Image File - CANNOT BE REVERSED" msgstr "Delete Image File - CANNOT BE REVERSED" -#: f.file.cc:1595 +#: f.file.cc:1599 msgid "Delete read-only file?" msgstr "Delete read-only file?" -#: f.file.cc:1911 f.widgets.cc:390 +#: f.file.cc:1820 f.widgets.cc:547 +msgid "Quick Start" +msgstr "Quick Start" + +#: f.file.cc:1823 f.widgets.cc:548 +msgid "User Guide" +msgstr "User Guide" + +#: f.file.cc:1826 f.widgets.cc:549 +msgid "User Guide Changes" +msgstr "User Guide Changes" + +#: f.file.cc:1829 f.widgets.cc:551 +msgid "README" +msgstr "README" + +#: f.file.cc:1832 f.widgets.cc:550 +msgid "Edit Functions Summary" +msgstr "Edit Functions Summary" + +#: f.file.cc:1835 f.widgets.cc:552 +msgid "Change Log" +msgstr "Change Log" + +#: f.file.cc:1838 f.widgets.cc:553 +msgid "Log File" +msgstr "Log File" + +#: f.file.cc:1841 f.widgets.cc:554 +msgid "Translations" +msgstr "Translations" + +#: f.file.cc:1844 f.widgets.cc:555 +msgid "Home Page" +msgstr "Home Page" + +#: f.file.cc:1847 f.widgets.cc:556 +msgid "About" +msgstr "About" + +#: f.file.cc:1851 f.widgets.cc:577 f.widgets.cc:599 fotoxx.h:1119 +msgid "Help" +msgstr "Help" + +#: f.file.cc:1961 f.widgets.cc:389 msgid "Open Image File" msgstr "Open Image File" -#: f.file.cc:1929 +#: f.file.cc:1979 msgid "unknown file type" msgstr "unknown file type" -#: f.file.cc:2197 +#: f.file.cc:2117 +msgid "" +"Transparency map will be lost.\n" +"save to PNG file to retain." +msgstr "" +"Transparency map will be lost.\n" +"save to PNG file to retain." + +#: f.file.cc:2260 msgid "Unable to copy EXIF/IPTC data" msgstr "Unable to copy EXIF/IPTC data" -#: f.file.cc:2297 +#: f.file.cc:2360 msgid "make current" msgstr "make current" -#: f.file.cc:2390 +#: f.file.cc:2453 msgid "jpeg quality must be 1-100" msgstr "jpeg quality must be 1-100" -#: f.file.cc:2417 +#: f.file.cc:2480 #, c-format msgid "" "Overwrite file? \n" @@ -1735,138 +1825,138 @@ "Overwrite file? \n" " %s" -#: f.file.cc:2669 f.file.cc:2738 +#: f.file.cc:2732 f.file.cc:2801 #, c-format msgid "file not found: %s" msgstr "file not found: %s" -#: f.file.cc:2675 f.file.cc:2744 +#: f.file.cc:2738 f.file.cc:2807 #, c-format msgid "file type not supported: %s" msgstr "file type not supported: %s" -#: f.gallery.cc:921 f.gallery.cc:1010 f.widgets.cc:592 +#: f.gallery.cc:911 f.gallery.cc:1000 f.widgets.cc:597 msgid "Scroll" msgstr "Scroll" -#: f.gallery.cc:925 +#: f.gallery.cc:915 msgid "Sync" msgstr "Sync" -#: f.gallery.cc:935 f.repair.cc:5783 f.repair.cc:5788 fotoxx.h:1132 +#: f.gallery.cc:925 f.repair.cc:5779 f.repair.cc:5784 fotoxx.h:1140 msgid "Open" msgstr "Open" -#: f.gallery.cc:936 +#: f.gallery.cc:926 msgid "change directory" msgstr "change directory" -#: f.gallery.cc:944 +#: f.gallery.cc:934 msgid "GoTo" msgstr "GoTo" -#: f.gallery.cc:950 f.widgets.cc:587 +#: f.gallery.cc:940 f.widgets.cc:592 msgid "Sort" msgstr "Sort" -#: f.gallery.cc:956 f.gallery.cc:1528 f.gallery.cc:1529 f.gallery.cc:1531 -#: f.widgets.cc:585 +#: f.gallery.cc:946 f.gallery.cc:1510 f.gallery.cc:1511 f.gallery.cc:1513 +#: f.widgets.cc:590 msgid "Zoom+" msgstr "Zoom+" -#: f.gallery.cc:966 f.gallery.cc:1530 f.gallery.cc:1532 f.widgets.cc:586 +#: f.gallery.cc:956 f.gallery.cc:1512 f.gallery.cc:1514 f.widgets.cc:591 msgid "Zoom-" msgstr "Zoom-" -#: f.gallery.cc:978 f.gallery.cc:1536 +#: f.gallery.cc:968 f.gallery.cc:1518 msgid "Row↑" msgstr "Row↑" -#: f.gallery.cc:986 f.gallery.cc:1537 +#: f.gallery.cc:976 f.gallery.cc:1519 msgid "Row↓" msgstr "Row↓" -#: f.gallery.cc:994 f.gallery.cc:1534 f.gallery.cc:1541 f.widgets.cc:590 +#: f.gallery.cc:984 f.gallery.cc:1516 f.gallery.cc:1523 f.widgets.cc:595 msgid "Page↑" msgstr "Page↑" -#: f.gallery.cc:1002 f.gallery.cc:1535 f.gallery.cc:1542 f.widgets.cc:591 +#: f.gallery.cc:992 f.gallery.cc:1517 f.gallery.cc:1524 f.widgets.cc:596 msgid "Page↓" msgstr "Page↓" -#: f.gallery.cc:1016 f.gallery.cc:1539 f.widgets.cc:588 +#: f.gallery.cc:1006 f.gallery.cc:1521 f.widgets.cc:593 msgid "First" msgstr "First" -#: f.gallery.cc:1017 f.gallery.cc:1540 f.widgets.cc:589 +#: f.gallery.cc:1007 f.gallery.cc:1522 f.widgets.cc:594 msgid "Last" msgstr "Last" -#: f.gallery.cc:1134 +#: f.gallery.cc:1120 msgid "Choose image directory" msgstr "Choose image directory" -#: f.gallery.cc:1141 f.gallery.cc:1155 +#: f.gallery.cc:1127 f.gallery.cc:1141 msgid "recent" msgstr "recent" -#: f.gallery.cc:1142 f.gallery.cc:1160 +#: f.gallery.cc:1128 f.gallery.cc:1146 msgid "newest" msgstr "newest" -#: f.gallery.cc:1224 +#: f.gallery.cc:1210 msgid "no albums found" msgstr "no albums found" -#: f.gallery.cc:1231 +#: f.gallery.cc:1217 msgid "Choose album" msgstr "Choose album" -#: f.gallery.cc:1281 +#: f.gallery.cc:1267 msgid "Gallery Sort" msgstr "Gallery Sort" -#: f.gallery.cc:1285 +#: f.gallery.cc:1271 msgid "File Name" msgstr "File Name" -#: f.gallery.cc:1286 +#: f.gallery.cc:1272 msgid "File Mod Date/Time" msgstr "File Mod Date/Time" -#: f.gallery.cc:1287 +#: f.gallery.cc:1273 msgid "Photo Date/Time (EXIF)" msgstr "Photo Date/Time (EXIF" -#: f.gallery.cc:1289 +#: f.gallery.cc:1275 msgid "ascending" msgstr "ascending" -#: f.gallery.cc:1290 +#: f.gallery.cc:1276 msgid "descending" msgstr "descending" -#: f.gallery.cc:2244 fotoxx.h:1157 +#: f.gallery.cc:2213 fotoxx.h:1165 msgid "Select Files" msgstr "Select Files" -#: f.gallery.cc:2716 +#: f.gallery.cc:2684 msgid "Click list position. Click thumbnail to add." msgstr "Click list position. Click thumbnail to add." -#: f.gallery.cc:2742 f.gallery.cc:2990 +#: f.gallery.cc:2710 f.gallery.cc:2958 msgid "Edit Bookmarks" msgstr "Edit Bookmarks" -#: f.gallery.cc:2917 +#: f.gallery.cc:2885 msgid "unable to save bookmarks file" msgstr "unable to save bookmarks file" -#: f.gallery.cc:2990 +#: f.gallery.cc:2958 msgid "Go To Bookmark" msgstr "Go To Bookmark" -#: f.gallery.cc:3047 f.meta.cc:2732 f.repair.cc:7410 +#: f.gallery.cc:3015 f.meta.cc:2772 f.repair.cc:7407 msgid "file not found" msgstr "file not found" @@ -2060,7 +2150,7 @@ msgid "Hard" msgstr "Hard" -#: f.mashup.cc:1304 f.repair.cc:5378 +#: f.mashup.cc:1304 f.repair.cc:5375 msgid "Blend" msgstr "Blend" @@ -2076,7 +2166,7 @@ msgid "Gradual" msgstr "Gradual" -#: f.mashup.cc:1580 fotoxx.h:1136 +#: f.mashup.cc:1580 fotoxx.h:1144 msgid "Power" msgstr "Power" @@ -2135,123 +2225,127 @@ msgid "exceeded %d line entries" msgstr "exceeded %d line entries" -#: f.meta.cc:179 f.widgets.cc:657 +#: f.meta.cc:179 f.widgets.cc:662 msgid "View Metadata" msgstr "View Metadata" -#: f.meta.cc:420 f.meta.cc:1756 f.widgets.cc:408 f.widgets.cc:658 +#: f.meta.cc:419 f.meta.cc:1796 f.widgets.cc:407 f.widgets.cc:663 msgid "Edit Metadata" msgstr "Edit Metadata" -#: f.meta.cc:430 +#: f.meta.cc:422 f.meta.cc:3748 +msgid "save metadata to file" +msgstr "save metadata to file" + +#: f.meta.cc:431 msgid "Image Date" msgstr "Image Date" -#: f.meta.cc:433 +#: f.meta.cc:434 msgid "Time" msgstr "Time" -#: f.meta.cc:439 +#: f.meta.cc:440 msgid "Rating (stars):" msgstr "Rating (stars):" -#: f.meta.cc:451 +#: f.meta.cc:452 msgid "Caption" msgstr "Caption" -#: f.meta.cc:457 +#: f.meta.cc:458 msgid "Comments" msgstr "Comments" -#: f.meta.cc:465 +#: f.meta.cc:466 msgid "Enter New Tag" msgstr "Enter New Tag" -#: f.meta.cc:472 f.meta.cc:4889 +#: f.meta.cc:473 f.meta.cc:4930 msgid "Matching Tags" msgstr "Matching Tags" -#: f.meta.cc:480 +#: f.meta.cc:481 msgid "Image Tags" msgstr "Image Tags" -#: f.meta.cc:486 +#: f.meta.cc:487 msgid "Recent Tags" msgstr "Recent Tags" -#: f.meta.cc:495 f.meta.cc:1978 f.meta.cc:4896 +#: f.meta.cc:496 f.meta.cc:2018 f.meta.cc:4937 msgid "Defined Tags Category" msgstr "Defined Tags Category" -#: f.meta.cc:886 +#: f.meta.cc:887 msgid "date format is YYYY-MM-DD" msgstr "date format is YYYY-MM-DD" -#: f.meta.cc:890 +#: f.meta.cc:891 msgid "date is invalid" msgstr "date is invalid" -#: f.meta.cc:924 +#: f.meta.cc:925 msgid "time format is HH:MM [:SS]" msgstr "time format is HH:MM [:SS]" -#: f.meta.cc:928 +#: f.meta.cc:929 msgid "time is invalid" msgstr "time is invalid" -#: f.meta.cc:974 fotoxx.h:1121 +#: f.meta.cc:1014 fotoxx.h:1129 msgid "Manage Tags" msgstr "Manage Tags" -#: f.meta.cc:974 +#: f.meta.cc:1014 msgid "orphan tags" msgstr "orphan tags" -#: f.meta.cc:978 +#: f.meta.cc:1018 msgid "category" msgstr "category" -#: f.meta.cc:981 +#: f.meta.cc:1021 msgid "tag" msgstr "tag" -#: f.meta.cc:988 +#: f.meta.cc:1028 msgid "Defined Tags:" msgstr "Defined Tags:" -#: f.meta.cc:1760 f.meta.cc:2418 +#: f.meta.cc:1800 f.meta.cc:2458 msgid "key name" msgstr "key name" -#: f.meta.cc:1762 f.meta.cc:2419 +#: f.meta.cc:1802 f.meta.cc:2459 msgid "key value" msgstr "key value" -#: f.meta.cc:1849 f.widgets.cc:410 +#: f.meta.cc:1889 f.widgets.cc:409 msgid "Delete Metadata" msgstr "Delete Metadata" -#: f.meta.cc:1851 fotoxx.h:1070 +#: f.meta.cc:1891 fotoxx.h:1078 msgid "All" msgstr "All" -#: f.meta.cc:1852 +#: f.meta.cc:1892 msgid "One Key:" msgstr "One Key:" -#: f.meta.cc:1955 f.widgets.cc:411 f.widgets.cc:530 +#: f.meta.cc:1995 f.widgets.cc:410 f.widgets.cc:533 msgid "Batch Add/Remove Tags" msgstr "Batch Add/Remove Tags" -#: f.meta.cc:1966 +#: f.meta.cc:2006 msgid "tags to add" msgstr "tags to add" -#: f.meta.cc:1967 +#: f.meta.cc:2007 msgid "tags to remove" msgstr "tags to remove" -#: f.meta.cc:2051 +#: f.meta.cc:2091 #, c-format msgid "" "%s \n" @@ -2260,15 +2354,15 @@ "%s \n" " too many tags" -#: f.meta.cc:2166 +#: f.meta.cc:2206 msgid "specify files and tags" msgstr "specify files and tags" -#: f.meta.cc:2226 +#: f.meta.cc:2266 msgid "tag names file" msgstr "tag names file" -#: f.meta.cc:2298 +#: f.meta.cc:2338 #, c-format msgid "" "%d tags to rename \n" @@ -2279,32 +2373,32 @@ "in %d image files. \n" "Proceed?" -#: f.meta.cc:2409 +#: f.meta.cc:2449 msgid "Batch Metadata" msgstr "Batch Metadata" -#: f.meta.cc:2455 +#: f.meta.cc:2495 msgid "enter key names" msgstr "enter key names" -#: f.meta.cc:2461 fotoxx.h:1129 +#: f.meta.cc:2501 fotoxx.h:1137 msgid "no files selected" msgstr "no files selected" -#: f.meta.cc:3164 f.meta.cc:3899 f.meta.cc:4163 +#: f.meta.cc:3204 f.meta.cc:3940 f.meta.cc:4204 #, c-format msgid "bad latitude/longitude: %s %s" msgstr "bad latitude/longitude: %s %s" -#: f.meta.cc:3207 f.meta.cc:3571 f.meta.cc:4372 f.meta.cc:4780 +#: f.meta.cc:3247 f.meta.cc:3611 f.meta.cc:4413 f.meta.cc:4821 msgid "-noindex in use, disabled" msgstr "-noindex in use, disabled" -#: f.meta.cc:3223 +#: f.meta.cc:3263 msgid "choose map file" msgstr "choose map file" -#: f.meta.cc:3332 +#: f.meta.cc:3372 msgid "" "fotoxx-maps package not installed \n" "(see http://kornelix.com/packages and /tarballs)" @@ -2312,12 +2406,12 @@ "fotoxx-maps package not installed \n" "(see http://kornelix.com/packages and /tarballs)" -#: f.meta.cc:3337 +#: f.meta.cc:3377 #, c-format msgid "map file %s is missing" msgstr "map file %s is missing" -#: f.meta.cc:3341 +#: f.meta.cc:3381 #, c-format msgid "" "map latitude/longitude data unreasonable \n" @@ -2326,39 +2420,39 @@ "map latitude/longitude data unreasonable \n" " %.3f %.3f %.3f %.3f" -#: f.meta.cc:3620 +#: f.meta.cc:3660 msgid "No matching images found" msgstr "No matching images found" -#: f.meta.cc:3660 +#: f.meta.cc:3700 msgid "search range (km)" msgstr "search range (km)" -#: f.meta.cc:3693 f.widgets.cc:414 f.widgets.cc:659 +#: f.meta.cc:3733 f.widgets.cc:413 f.widgets.cc:664 msgid "Edit Geotags" msgstr "Edit Geotags" -#: f.meta.cc:3694 +#: f.meta.cc:3734 msgid "Geocoding web service courtesy of" msgstr "Geocoding web service courtesy of" -#: f.meta.cc:3709 f.meta.cc:3949 f.meta.cc:5655 +#: f.meta.cc:3750 f.meta.cc:3990 f.meta.cc:5710 msgid "city" msgstr "city" -#: f.meta.cc:3712 f.meta.cc:3952 f.meta.cc:5658 +#: f.meta.cc:3753 f.meta.cc:3993 f.meta.cc:5713 msgid "country" msgstr "country" -#: f.meta.cc:3794 f.meta.cc:4080 +#: f.meta.cc:3835 f.meta.cc:4121 msgid "city not found" msgstr "city not found" -#: f.meta.cc:3915 f.widgets.cc:415 f.widgets.cc:533 +#: f.meta.cc:3956 f.widgets.cc:414 f.widgets.cc:536 msgid "Batch Add Geotags" msgstr "Batch Add Geotags" -#: f.meta.cc:4142 +#: f.meta.cc:4183 msgid "" "data is incomplete \n" " proceed?" @@ -2366,140 +2460,140 @@ "data is incomplete \n" " proceed?" -#: f.meta.cc:4199 +#: f.meta.cc:4240 msgid "choose city" msgstr "choose city" -#: f.meta.cc:4286 +#: f.meta.cc:4327 msgid "not found" msgstr "not found" -#: f.meta.cc:4287 +#: f.meta.cc:4328 msgid "city and country required" msgstr "city and country required" -#: f.meta.cc:4387 +#: f.meta.cc:4428 msgid "Report Geotag Groups" msgstr "Report Geotag Groups" -#: f.meta.cc:4388 +#: f.meta.cc:4429 msgid "Group by country" msgstr "Group by country" -#: f.meta.cc:4389 +#: f.meta.cc:4430 msgid "Group by country/city" msgstr "Group by country/city" -#: f.meta.cc:4390 +#: f.meta.cc:4431 msgid "Group by country/city/date" msgstr "Group by country/city/date" -#: f.meta.cc:4393 +#: f.meta.cc:4434 msgid "Combine within" msgstr "Combine within" -#: f.meta.cc:4395 +#: f.meta.cc:4436 msgid "days" msgstr "days" -#: f.meta.cc:4511 +#: f.meta.cc:4552 msgid "geotag groups" msgstr "geotag groups" -#: f.meta.cc:4817 +#: f.meta.cc:4858 msgid "Search Image Metadata" msgstr "Search Image Metadata" -#: f.meta.cc:4821 +#: f.meta.cc:4862 msgid "images to search:" msgstr "images to search:" -#: f.meta.cc:4822 +#: f.meta.cc:4863 msgid "all" msgstr "all" -#: f.meta.cc:4823 +#: f.meta.cc:4864 msgid "current set only" msgstr "current set only" -#: f.meta.cc:4826 +#: f.meta.cc:4867 msgid "matching images:" msgstr "matching images:" -#: f.meta.cc:4827 +#: f.meta.cc:4868 msgid "new set" msgstr "new set" -#: f.meta.cc:4828 +#: f.meta.cc:4869 msgid "add to set" msgstr "add to set" -#: f.meta.cc:4829 +#: f.meta.cc:4870 msgid "remove" msgstr "remove" -#: f.meta.cc:4832 +#: f.meta.cc:4873 msgid "report type:" msgstr "report type:" -#: f.meta.cc:4833 +#: f.meta.cc:4874 msgid "gallery" msgstr "gallery" -#: f.meta.cc:4834 fotoxx-15.08.cc:801 +#: f.meta.cc:4875 fotoxx-15.09.cc:781 msgid "metadata" msgstr "metadata" -#: f.meta.cc:4840 +#: f.meta.cc:4881 msgid "date range" msgstr "date range" -#: f.meta.cc:4841 +#: f.meta.cc:4882 msgid "stars range" msgstr "stars range" -#: f.meta.cc:4842 +#: f.meta.cc:4883 msgid "search tags" msgstr "search tags" -#: f.meta.cc:4843 +#: f.meta.cc:4884 msgid "search text" msgstr "search text" -#: f.meta.cc:4844 +#: f.meta.cc:4885 msgid "search files" msgstr "search files" -#: f.meta.cc:4849 +#: f.meta.cc:4890 msgid "(yyyymmdd)" msgstr "(yyyymmdd)" -#: f.meta.cc:4854 +#: f.meta.cc:4895 msgid "last version only" msgstr "last version only" -#: f.meta.cc:4856 +#: f.meta.cc:4897 msgid "all/any" msgstr "all/any" -#: f.meta.cc:4875 +#: f.meta.cc:4916 msgid "other criteria" msgstr "other criteria" -#: f.meta.cc:4879 +#: f.meta.cc:4920 msgid "other" msgstr "other" -#: f.meta.cc:4885 +#: f.meta.cc:4926 msgid "Enter Search Tag" msgstr "Enter Search Tag" -#: f.meta.cc:5179 +#: f.meta.cc:5221 #, c-format msgid "not a defined tag: %s" msgstr "not a defined tag: %s" -#: f.meta.cc:5210 +#: f.meta.cc:5252 msgid "" "to remove images from current set, \n" "search current set" @@ -2507,7 +2601,7 @@ "to remove images from current set, \n" "search current set" -#: f.meta.cc:5217 +#: f.meta.cc:5259 msgid "" "to add images to current set, \n" "search all images" @@ -2515,32 +2609,41 @@ "to add images to current set, \n" "search all images" -#: f.meta.cc:5266 +#: f.meta.cc:5303 +#, c-format +msgid "" +"search dates not reasonable \n" +" %s %s" +msgstr "" +"search dates not reasonable \n" +" %s %s" + +#: f.meta.cc:5321 msgid "stars range not reasonable" msgstr "stars range not reasonable" -#: f.meta.cc:5511 +#: f.meta.cc:5566 #, c-format msgid "images added: %d removed: %d new count: %d" msgstr "images added: %d removed: %d new count: %d" -#: f.meta.cc:5514 +#: f.meta.cc:5569 msgid "no changes made" msgstr "no changes made" -#: f.meta.cc:5652 +#: f.meta.cc:5707 msgid "Add Geotags Search Criteria" msgstr "Add Geotags Search Criteria" -#: f.meta.cc:5671 +#: f.meta.cc:5726 msgid "range (km)" msgstr "range (km)" -#: f.meta.cc:5764 +#: f.meta.cc:5819 msgid "error in latitude/longitude/range" msgstr "error in latitude/longitude/range" -#: f.meta.cc:5828 +#: f.meta.cc:5883 msgid "" "These items are always reported: \n" "date, stars, tags, caption, comment" @@ -2548,19 +2651,19 @@ "These items are always reported: \n" "date, stars, tags, caption, comment" -#: f.meta.cc:5852 +#: f.meta.cc:5907 msgid "Additional Items for Report" msgstr "Additional Items for Report" -#: f.meta.cc:5858 +#: f.meta.cc:5913 msgid "Keyword" msgstr "Keyword" -#: f.meta.cc:5865 +#: f.meta.cc:5920 msgid "Match Criteria" msgstr "Match Criteria" -#: f.meta.cc:6425 +#: f.meta.cc:6480 msgid "image index is missing" msgstr "image index is missing" @@ -2576,47 +2679,47 @@ msgid "Kuwahara method" msgstr "Kuwahara method" -#: f.repair.cc:1012 +#: f.repair.cc:1014 msgid "Apply repeatedly while watching the image." msgstr "Apply repeatedly while watching the image." -#: f.repair.cc:1013 +#: f.repair.cc:1015 msgid "Measure" msgstr "Measure" -#: f.repair.cc:1047 +#: f.repair.cc:1049 msgid "Noise Reduction" msgstr "Noise Reduction" -#: f.repair.cc:1063 +#: f.repair.cc:1065 msgid "Flatten Outliers 1" msgstr "Flatten Outliers 1" -#: f.repair.cc:1064 +#: f.repair.cc:1066 msgid "Flatten Outliers 2" msgstr "Flatten Outliers 2" -#: f.repair.cc:1065 +#: f.repair.cc:1067 msgid "Median Brightness" msgstr "Median Brightness" -#: f.repair.cc:1093 +#: f.repair.cc:1095 msgid "dark areas" msgstr "dark areas" -#: f.repair.cc:1095 +#: f.repair.cc:1097 msgid "all areas" msgstr "all areas" -#: f.repair.cc:1193 +#: f.repair.cc:1195 msgid "Measure Noise" msgstr "Measure Noise" -#: f.repair.cc:1194 +#: f.repair.cc:1196 msgid "Click on a monotone image area." msgstr "Click on a monotone image area." -#: f.repair.cc:2095 +#: f.repair.cc:2098 msgid "" "1. Drag mouse to select. \n" "2. Erase. 3. Repeat. " @@ -2624,23 +2727,23 @@ "1. Drag mouse to select. \n" "2. Erase. 3. Repeat. " -#: f.repair.cc:2117 f.widgets.cc:451 +#: f.repair.cc:2120 f.widgets.cc:452 msgid "Smart Erase" msgstr "Smart Erase" -#: f.repair.cc:2122 fotoxx.h:1140 +#: f.repair.cc:2125 fotoxx.h:1148 msgid "Radius" msgstr "Radius" -#: f.repair.cc:2124 f.widgets.cc:449 +#: f.repair.cc:2127 f.widgets.cc:450 msgid "Blur" msgstr "Blur" -#: f.repair.cc:2127 +#: f.repair.cc:2130 msgid "New Area" msgstr "New Area" -#: f.repair.cc:2475 +#: f.repair.cc:2479 msgid "" "Method 1:\n" " Left-click on red-eye to darken.\n" @@ -2658,11 +2761,11 @@ "Undo red-eye:\n" " Right-click on red-eye." -#: f.repair.cc:2491 +#: f.repair.cc:2495 msgid "Red Eye Reduction" msgstr "Red Eye Reduction" -#: f.repair.cc:2955 +#: f.repair.cc:2959 msgid "" "shift + left click: pick color or image position \n" "left click or drag: paint color or copy image \n" @@ -2672,40 +2775,40 @@ "left click or drag: paint color or copy image \n" "right click or drag: remove color or image" -#: f.repair.cc:2987 f.widgets.cc:453 +#: f.repair.cc:2991 f.widgets.cc:454 msgid "Paint/Clone" msgstr "Paint/Clone" -#: f.repair.cc:2991 +#: f.repair.cc:2995 msgid "paint color" msgstr "paint color" -#: f.repair.cc:2994 +#: f.repair.cc:2998 msgid "copy from image" msgstr "copy from image" -#: f.repair.cc:3001 f.repair.cc:3557 +#: f.repair.cc:3005 f.repair.cc:3562 msgid "paintbrush radius" msgstr "paintbrush radius" -#: f.repair.cc:3002 +#: f.repair.cc:3006 msgid "transparency center" msgstr "transparency center" -#: f.repair.cc:3003 +#: f.repair.cc:3007 msgid "transparency edge" msgstr "transparency edge" -#: f.repair.cc:3010 f.repair.cc:3564 +#: f.repair.cc:3014 f.repair.cc:3569 msgid "gradual paint" msgstr "gradual paint" -#: f.repair.cc:3017 +#: f.repair.cc:3021 #, c-format msgid "Undo Memory %d%c" msgstr "Undo Memory %d%c" -#: f.repair.cc:3352 +#: f.repair.cc:3357 msgid "" "Undo memory limit has been reached. \n" "Save work with [done], then resume painting." @@ -2713,7 +2816,7 @@ "Undo memory limit has been reached. \n" "Save work with [done], then resume painting." -#: f.repair.cc:3517 +#: f.repair.cc:3522 msgid "" "left drag: add transparency \n" "right drag: add opacity" @@ -2721,172 +2824,172 @@ "left drag: add transparency \n" "right drag: add opacity" -#: f.repair.cc:3549 f.widgets.cc:454 +#: f.repair.cc:3554 f.widgets.cc:455 msgid "Paint Transparency" msgstr "Paint Transparency" -#: f.repair.cc:3558 +#: f.repair.cc:3563 msgid "strength center" msgstr "strength center" -#: f.repair.cc:3559 +#: f.repair.cc:3564 msgid "strength edge" msgstr "strength edge" -#: f.repair.cc:3769 f.widgets.cc:455 +#: f.repair.cc:3778 f.widgets.cc:456 msgid "Color Mode" msgstr "Color Mode" -#: f.repair.cc:3772 +#: f.repair.cc:3781 msgid "black/white positive" msgstr "black/white positive" -#: f.repair.cc:3773 +#: f.repair.cc:3782 msgid "black/white negative" msgstr "black/white negative" -#: f.repair.cc:3774 +#: f.repair.cc:3783 msgid "color positive" msgstr "color positive" -#: f.repair.cc:3775 +#: f.repair.cc:3784 msgid "color negative" msgstr "color negative" -#: f.repair.cc:3776 +#: f.repair.cc:3785 msgid "sepia" msgstr "sepia" -#: f.repair.cc:3945 f.widgets.cc:456 +#: f.repair.cc:3954 f.widgets.cc:457 msgid "Shift Colors" msgstr "Shift Colors" -#: f.repair.cc:4217 +#: f.repair.cc:4226 msgid "+Brightness" msgstr "+Brightness" -#: f.repair.cc:4218 +#: f.repair.cc:4227 msgid "+Red -Cyan" msgstr "+Red -Cyan" -#: f.repair.cc:4219 +#: f.repair.cc:4228 msgid "+Green -Magenta" msgstr "+Green -Magenta" -#: f.repair.cc:4220 +#: f.repair.cc:4229 msgid "+Blue -Yellow" msgstr "+Blue -Yellow" -#: f.repair.cc:4226 fotoxx.h:1142 +#: f.repair.cc:4235 fotoxx.h:1150 msgid "Red" msgstr "Red" -#: f.repair.cc:4227 fotoxx.h:1108 +#: f.repair.cc:4236 fotoxx.h:1116 msgid "Green" msgstr "Green" -#: f.repair.cc:4228 fotoxx.h:1077 +#: f.repair.cc:4237 fotoxx.h:1085 msgid "Blue" msgstr "Blue" -#: f.repair.cc:4527 +#: f.repair.cc:4536 msgid "Color Hue" msgstr "Color Hue" -#: f.repair.cc:4528 +#: f.repair.cc:4537 msgid "Saturation" msgstr "Saturation" -#: f.repair.cc:4529 +#: f.repair.cc:4538 msgid "Lightness" msgstr "Lightness" -#: f.repair.cc:4530 +#: f.repair.cc:4539 msgid "Adjustment" msgstr "Adjustment" -#: f.repair.cc:4869 +#: f.repair.cc:4878 msgid "Ramp brightness across image" msgstr "Ramp brightness across image" -#: f.repair.cc:5278 f.tools.cc:2014 +#: f.repair.cc:5286 f.tools.cc:2038 msgid "Click image to select pixels." msgstr "Click image to select pixels." -#: f.repair.cc:5312 f.widgets.cc:460 +#: f.repair.cc:5317 f.widgets.cc:461 msgid "Color Ramp" msgstr "Color Ramp" -#: f.repair.cc:5323 +#: f.repair.cc:5328 msgid "Metric:" msgstr "Metric:" -#: f.repair.cc:5754 +#: f.repair.cc:5751 msgid "Color Match Images" msgstr "Color Match Images" -#: f.repair.cc:5781 +#: f.repair.cc:5777 msgid "mouse radius for color sample" msgstr "mouse radius for color sample" -#: f.repair.cc:5784 +#: f.repair.cc:5780 msgid "image for source color" msgstr "image for source color" -#: f.repair.cc:5786 +#: f.repair.cc:5782 msgid "click on image to get source color" msgstr "click on image to get source color" -#: f.repair.cc:5789 +#: f.repair.cc:5785 msgid "image to set matching color" msgstr "image to set matching color" -#: f.repair.cc:5791 +#: f.repair.cc:5787 msgid "click on image to set matching color" msgstr "click on image to set matching color" -#: f.repair.cc:5851 +#: f.repair.cc:5848 msgid "select source image color first" msgstr "select source image color first" -#: f.repair.cc:6036 +#: f.repair.cc:6033 msgid "Change Color Profile" msgstr "Change Color Profile" -#: f.repair.cc:6040 +#: f.repair.cc:6037 msgid "input profile" msgstr "input profile" -#: f.repair.cc:6044 +#: f.repair.cc:6041 msgid "output profile" msgstr "output profile" -#: f.repair.cc:6060 +#: f.repair.cc:6057 msgid "color profile" msgstr "color profile" -#: f.repair.cc:6106 f.repair.cc:6112 +#: f.repair.cc:6103 f.repair.cc:6109 #, c-format msgid "unknown cms profile %s" msgstr "unknown cms profile %s" -#: f.repair.cc:6244 f.widgets.cc:463 +#: f.repair.cc:6241 f.widgets.cc:464 msgid "Remove Dust" msgstr "Remove Dust" -#: f.repair.cc:6248 +#: f.repair.cc:6245 msgid "spot size limit" msgstr "spot size limit" -#: f.repair.cc:6251 +#: f.repair.cc:6248 msgid "max. brightness" msgstr "max. brightness" -#: f.repair.cc:6254 +#: f.repair.cc:6251 msgid "min. contrast" msgstr "min. contrast" -#: f.repair.cc:7035 +#: f.repair.cc:7032 msgid "" " Adjust each RGB color to minimize \n" " color fringes at the image extremes. " @@ -2894,35 +2997,35 @@ " Adjust each RGB color to minimize \n" " color fringes at the image extremes. " -#: f.repair.cc:7058 f.widgets.cc:465 +#: f.repair.cc:7055 f.widgets.cc:466 msgid "Color Fringes" msgstr "Color Fringes" -#: f.repair.cc:7257 f.widgets.cc:466 +#: f.repair.cc:7254 f.widgets.cc:467 msgid "Stuck Pixels" msgstr "Stuck Pixels" -#: f.repair.cc:7263 +#: f.repair.cc:7260 msgid "pixel group" msgstr "pixel group" -#: f.repair.cc:7271 f.repair.cc:7339 +#: f.repair.cc:7268 f.repair.cc:7336 msgid "stuck pixels:" msgstr "stuck pixels:" -#: f.repair.cc:7367 +#: f.repair.cc:7364 msgid "Load Stuck Pixels" msgstr "Load Stuck Pixels" -#: f.repair.cc:7369 +#: f.repair.cc:7366 msgid "File:" msgstr "File:" -#: f.repair.cc:7394 f.repair.cc:7451 +#: f.repair.cc:7391 f.repair.cc:7448 msgid "Stuck Pixels file" msgstr "Stuck Pixels file" -#: f.repair.cc:7431 +#: f.repair.cc:7428 msgid "file format error" msgstr "file format error" @@ -2952,7 +3055,7 @@ "Indexing is required for search and map functions \n" "and to make the gallery pages acceptably fast." -#: f.tools.cc:106 f.widgets.cc:506 +#: f.tools.cc:106 f.widgets.cc:507 msgid "Index Image Files" msgstr "Index Image Files" @@ -3011,184 +3114,184 @@ " %s \n" "Please remove." -#: f.tools.cc:394 +#: f.tools.cc:392 msgid "no thumbnails directory defined" msgstr "no thumbnails directory defined" -#: f.tools.cc:739 +#: f.tools.cc:734 msgid "COMPLETED" msgstr "COMPLETED" -#: f.tools.cc:778 +#: f.tools.cc:775 msgid "Indexing is required for first-time startup." msgstr "Indexing is required for first-time startup." -#: f.tools.cc:840 +#: f.tools.cc:837 msgid "Recent Files Gallery" msgstr "Recent Files Gallery" -#: f.tools.cc:841 +#: f.tools.cc:838 msgid "Newest Files Gallery" msgstr "Newest Files Gallery" -#: f.tools.cc:842 +#: f.tools.cc:839 msgid "Previous Gallery" msgstr "Previous Gallery" -#: f.tools.cc:843 +#: f.tools.cc:840 msgid "Previous Image" msgstr "Previous Image" -#: f.tools.cc:844 +#: f.tools.cc:841 msgid "Blank Window" msgstr "Blank Window" -#: f.tools.cc:845 +#: f.tools.cc:842 msgid "Directory" msgstr "Directory" -#: f.tools.cc:846 +#: f.tools.cc:843 msgid "Image File" msgstr "Image File" -#: f.tools.cc:887 f.widgets.cc:507 +#: f.tools.cc:885 f.widgets.cc:508 msgid "User Options" msgstr "User Options" -#: f.tools.cc:890 +#: f.tools.cc:888 msgid "Startup Display" msgstr "Startup Display" -#: f.tools.cc:901 +#: f.tools.cc:899 msgid "Menu Style" msgstr "Menu Style" -#: f.tools.cc:902 +#: f.tools.cc:900 msgid "Icons" msgstr "Icons" -#: f.tools.cc:903 +#: f.tools.cc:901 msgid "Icons + Text" msgstr "Icons + Text" -#: f.tools.cc:905 +#: f.tools.cc:903 msgid "Icon size" msgstr "Icon size" -#: f.tools.cc:909 +#: f.tools.cc:907 +msgid "Dialog font and size" +msgstr "Dialog font and size" + +#: f.tools.cc:912 msgid "Image Pan/scroll:" msgstr "Image Pan/scroll:" -#: f.tools.cc:912 +#: f.tools.cc:915 msgid "Zooms for 2x" msgstr "Zooms for 2x" -#: f.tools.cc:921 +#: f.tools.cc:924 msgid "JPEG save quality" msgstr "JPEG save quality" -#: f.tools.cc:924 f.tools.cc:3041 -msgid "Thumbnail size" -msgstr "Thumbnail size" - -#: f.tools.cc:928 +#: f.tools.cc:931 msgid "show hidden directories in gallery view" msgstr "show hidden directories in gallery view" -#: f.tools.cc:931 +#: f.tools.cc:934 msgid "prev/next shows last file version only" msgstr "prev/next shows last file version only" -#: f.tools.cc:934 +#: f.tools.cc:937 msgid "RAW command" msgstr "RAW command" -#: f.tools.cc:938 +#: f.tools.cc:941 msgid "RAW file types" msgstr "RAW file types" -#: f.tools.cc:1015 +#: f.tools.cc:1021 msgid "Delete present thumbnails to make effective" msgstr "Delete present thumbnails to make effective" -#: f.tools.cc:1037 +#: f.tools.cc:1043 msgid "Select startup directory" msgstr "Select startup directory" -#: f.tools.cc:1044 +#: f.tools.cc:1050 msgid "Select startup image file" msgstr "Select startup image file" -#: f.tools.cc:1066 +#: f.tools.cc:1088 msgid "startup directory is invalid" msgstr "startup directory is invalid" -#: f.tools.cc:1077 +#: f.tools.cc:1099 msgid "startup file is invalid" msgstr "startup file is invalid" -#: f.tools.cc:1211 +#: f.tools.cc:1237 msgid "Edit KB Shortcuts" msgstr "Edit KB Shortcuts" -#: f.tools.cc:1216 +#: f.tools.cc:1242 msgid "shortcut key:" msgstr "shortcut key:" -#: f.tools.cc:1217 +#: f.tools.cc:1243 msgid "(enter key)" msgstr "(enter key)" -#: f.tools.cc:1343 +#: f.tools.cc:1369 #, c-format msgid "\"%s\" Reserved, cannot be used" msgstr "\"%s\" Reserved, cannot be used" -#: f.tools.cc:1497 +#: f.tools.cc:1523 msgid "unable to save KB-shortcuts file" msgstr "unable to save KB-shortcuts file" -#: f.tools.cc:1801 f.widgets.cc:510 +#: f.tools.cc:1827 f.widgets.cc:511 msgid "Grid Lines" msgstr "Grid Lines" -#: f.tools.cc:1810 +#: f.tools.cc:1836 msgid "x-spacing" msgstr "x-spacing" -#: f.tools.cc:1811 +#: f.tools.cc:1837 msgid "x-count" msgstr "x-count" -#: f.tools.cc:1812 +#: f.tools.cc:1838 msgid "x-enable" msgstr "x-enable" -#: f.tools.cc:1818 +#: f.tools.cc:1844 msgid "y-spacing" msgstr "y-spacing" -#: f.tools.cc:1819 +#: f.tools.cc:1845 msgid "y-count" msgstr "y-count" -#: f.tools.cc:1820 +#: f.tools.cc:1846 msgid "y-enable" msgstr "y-enable" -#: f.tools.cc:1940 f.tools.cc:1945 f.widgets.cc:511 +#: f.tools.cc:1966 f.tools.cc:1971 f.widgets.cc:512 msgid "Line Color" msgstr "Line Color" -#: f.tools.cc:1942 +#: f.tools.cc:1968 msgid "Area Color" msgstr "Area Color" -#: f.tools.cc:2050 f.widgets.cc:512 +#: f.tools.cc:2073 f.widgets.cc:513 msgid "Show RGB" msgstr "Show RGB" -#: f.tools.cc:2345 +#: f.tools.cc:2365 msgid "" "Drag mouse on image. \n" "Left click to cancel. \n" @@ -3198,27 +3301,27 @@ "Left click to cancel. \n" "Key M to toggle dialog." -#: f.tools.cc:2371 f.widgets.cc:513 +#: f.tools.cc:2391 f.widgets.cc:514 msgid "Magnify Image" msgstr "Magnify Image" -#: f.tools.cc:2380 +#: f.tools.cc:2400 msgid "X-size" msgstr "X-size" -#: f.tools.cc:2625 +#: f.tools.cc:2645 msgid "Darkest and Brightest Pixels" msgstr "Darkest and Brightest Pixels" -#: f.tools.cc:2648 +#: f.tools.cc:2668 msgid "Dark Limit" msgstr "Dark Limit" -#: f.tools.cc:2649 +#: f.tools.cc:2669 msgid "Bright Limit" msgstr "Bright Limit" -#: f.tools.cc:2744 +#: f.tools.cc:2764 msgid "" "Brightness should show a gradual ramp \n" "extending all the way to the edges." @@ -3226,112 +3329,152 @@ "Brightness should show a gradual ramp \n" "extending all the way to the edges." -#: f.tools.cc:2840 f.widgets.cc:516 +#: f.tools.cc:2860 f.widgets.cc:517 msgid "Monitor Gamma" msgstr "Monitor Gamma" -#: f.tools.cc:2900 +#: f.tools.cc:2920 msgid "Available Translations" msgstr "Available Translations" -#: f.tools.cc:2904 +#: f.tools.cc:2924 msgid "Set Language" msgstr "Set Language" -#: f.tools.cc:3039 f.widgets.cc:519 -msgid "Find Duplicate Images" -msgstr "Find Duplicate Images" +#: f.tools.cc:3064 f.widgets.cc:520 +msgid "Calibrate Printer" +msgstr "Calibrate Printer" + +#: f.tools.cc:3087 +msgid "print color chart" +msgstr "print color chart" + +#: f.tools.cc:3088 +msgid "scan and save color chart" +msgstr "scan and save color chart" + +#: f.tools.cc:3089 +msgid "align and trim color chart" +msgstr "align and trim color chart" + +#: f.tools.cc:3090 +msgid "open and process color chart" +msgstr "open and process color chart" + +#: f.tools.cc:3091 +msgid "print image with revised colors" +msgstr "print image with revised color" -#: f.tools.cc:3044 -msgid "pixel difference" -msgstr "pixel difference" +#: f.tools.cc:3258 +#, c-format +msgid "" +"Scan the printed color chart. \n" +"Save in %s/" +msgstr "" +"Scan the printed color chart. \n" +"Save in %s/" -#: f.tools.cc:3047 -msgid "pixel count" -msgstr "pixel count" +#: f.tools.cc:3272 +msgid "" +"Open and edit the scanned color chart file. \n" +"Remove any skew or rotation caused by the scanner. \n" +"Trim off all margins. Be careful not to cut off \n" +"any color tile edges or leave any white margins." +msgstr "" +"Open and edit the scanned color chart file. \n" +"Remove any skew or rotation caused by the scanner. \n" +"Trim off all margins. Be careful not to cut off \n" +"any color tile edges or leave any white margins." -#: f.tools.cc:3050 -msgid "Images:" -msgstr "Images:" +#: f.tools.cc:3308 +msgid "Open the trimmed color chart file" +msgstr "Open the trimmed color chart file" -#: f.tools.cc:3051 -msgid "searching ..." -msgstr "searching ..." +#: f.tools.cc:3405 +msgid "" +"Set the file name and location \n" +"for the output color map file." +msgstr "" +"Set the file name and location \n" +"for the output color map file." -#: f.tools.cc:3053 -msgid "Duplicates:" -msgstr "Duplicates:" +#: f.tools.cc:3440 +msgid "Color map file to use" +msgstr "Color map file to use" -#: f.tools.cc:3071 -#, c-format -msgid "only %d image thumbnails found" -msgstr "only %d image thumbnails found" +#: f.tools.cc:3461 +msgid "Select the image file to print." +msgstr "Select the image file to print." -#: f.widgets.cc:112 -msgid "TOP" -msgstr "TOP" +#: f.tools.cc:3588 +msgid "Image colors are converted for printing." +msgstr "Image colors are converted for printing." -#: f.widgets.cc:115 +#: f.widgets.cc:111 msgid "Album" -msgstr "" +msgstr "Album" + +#: f.widgets.cc:113 +msgid "TOP" +msgstr "TOP" -#: f.widgets.cc:169 +#: f.widgets.cc:165 msgid "Current Image File (key F)" msgstr "Current Image File (key F)" -#: f.widgets.cc:170 +#: f.widgets.cc:166 msgid "Thumbnail Gallery (key G)" msgstr "Thumbnail Gallery (key G)" -#: f.widgets.cc:171 +#: f.widgets.cc:167 msgid "World Maps (key W)" msgstr "World Maps (key W)" -#: f.widgets.cc:174 +#: f.widgets.cc:170 msgid "Favorite Functions" msgstr "Favorite Functions" -#: f.widgets.cc:175 +#: f.widgets.cc:171 msgid "File: Open, RAW, Rename, Trash, Print" msgstr "File: Open, RAW, Rename, Trash, Print" -#: f.widgets.cc:176 +#: f.widgets.cc:172 msgid "Save modified image file to disk" msgstr "Save modified image file to disk" -#: f.widgets.cc:177 +#: f.widgets.cc:173 msgid "Open previous or next file (left/right mouse click)" msgstr "Open previous or next file (left/right mouse click)" -#: f.widgets.cc:178 +#: f.widgets.cc:174 msgid "Metadata: Captions, Tags, Ratings, Geotags, Search ... " msgstr "Metadata: Captions, Tags, Ratings, Geotags, Search ... " -#: f.widgets.cc:179 +#: f.widgets.cc:175 msgid "Areas: Select areas to edit, copy and paste" msgstr "Areas: Select areas to edit, copy and paste" -#: f.widgets.cc:180 +#: f.widgets.cc:176 msgid "Edit: Trim, Rotate, Resize, Brightness, Contrast, Text ..." msgstr "Edit: Trim, Rotate, Resize, Brightness, Contrast, Text ..." -#: f.widgets.cc:181 +#: f.widgets.cc:177 msgid "Repair: Sharpen, Noise, Red-eyes, Color, Paint, Clone ..." msgstr "Repair: Sharpen, Noise, Red-eyes, Color, Paint, Clone ..." -#: f.widgets.cc:182 +#: f.widgets.cc:178 msgid "Bend: Fix Perspective, Bend/Warp image ..." msgstr "Bend: Fix Perspective, Bend/Warp image ..." -#: f.widgets.cc:183 +#: f.widgets.cc:179 msgid "Effects: Special Effects, Arty Transforms" msgstr "Effects: Special Effects, Arty Transforms" -#: f.widgets.cc:184 +#: f.widgets.cc:180 msgid "Combine: HDR, HDF, Panorama, Stack, Mashup" msgstr "Combine: HDR, HDF, Panorama, Stack, Mashup" -#: f.widgets.cc:185 +#: f.widgets.cc:181 msgid "" "Undo or Redo one edit (left/right mouse click) \n" " hold key A to include all edits" @@ -3339,1123 +3482,1095 @@ "Undo or Redo one edit (left/right mouse click) \n" " hold key A to include all edits" -#: f.widgets.cc:187 +#: f.widgets.cc:183 msgid "Tools: Index, Options, Shortcuts, Magnify ..." msgstr "Tools: Index, Options, Shortcuts, Magnify ..." -#: f.widgets.cc:188 +#: f.widgets.cc:184 msgid "Help: Quick Start, User Guide, Recent Changes ..." msgstr "Help: Quick Start, User Guide, Recent Changes ..." -#: f.widgets.cc:191 +#: f.widgets.cc:187 msgid "Set gallery from current image file" msgstr "Set gallery from current image file" -#: f.widgets.cc:192 +#: f.widgets.cc:188 msgid "Albums: Manage Albums, Slide Show, Desktop Background" msgstr "Albums: Manage Albums, Slide Show, Desktop Background" -#: f.widgets.cc:193 +#: f.widgets.cc:189 msgid "go to bookmarked image" msgstr "go to bookmarked image" -#: f.widgets.cc:194 +#: f.widgets.cc:190 msgid "increase thumbnail size" msgstr "increase thumbnail size" -#: f.widgets.cc:195 +#: f.widgets.cc:191 msgid "reduce thumbnail size" msgstr "reduce thumbnail size" -#: f.widgets.cc:196 +#: f.widgets.cc:192 msgid "change sort order" msgstr "change sort order" -#: f.widgets.cc:197 +#: f.widgets.cc:193 msgid "jump to beginning (top)" msgstr "jump to beginning (top)" -#: f.widgets.cc:198 +#: f.widgets.cc:194 msgid "jump to end (bottom)" msgstr "jump to end (bottom)" -#: f.widgets.cc:199 +#: f.widgets.cc:195 msgid "previous page" msgstr "previous page" -#: f.widgets.cc:200 +#: f.widgets.cc:196 msgid "next page" msgstr "next page" -#: f.widgets.cc:201 +#: f.widgets.cc:197 msgid "slow scroll" msgstr "slow scroll" -#: f.widgets.cc:202 +#: f.widgets.cc:198 msgid "Batch conversion, metadata, RAW processing" -msgstr "" +msgstr "Batch conversion, metadata, RAW processing" -#: f.widgets.cc:205 +#: f.widgets.cc:201 msgid "Choose a map for image locations" msgstr "Choose a map for image locations" -#: f.widgets.cc:206 +#: f.widgets.cc:202 msgid "Set image search radius for map click" msgstr "Set image search radius for map click" -#: f.widgets.cc:209 +#: f.widgets.cc:205 msgid "Open another window" msgstr "Open another window" -#: f.widgets.cc:210 +#: f.widgets.cc:206 msgid "Open a new image file" msgstr "Open a new image file" -#: f.widgets.cc:211 +#: f.widgets.cc:207 msgid "Open the previously seen file" msgstr "Open the previously seen file" -#: f.widgets.cc:212 +#: f.widgets.cc:208 msgid "Open a recently seen file" msgstr "Open a recently seen file" -#: f.widgets.cc:213 +#: f.widgets.cc:209 msgid "Open a newly added file" msgstr "Open a newly added file" -#: f.widgets.cc:214 f.widgets.cc:215 +#: f.widgets.cc:210 f.widgets.cc:211 msgid "Open and edit a camera RAW file" msgstr "Open and edit a camera RAW file" -#: f.widgets.cc:216 +#: f.widgets.cc:212 msgid "Change the image file name" msgstr "Change the image file name" -#: f.widgets.cc:217 +#: f.widgets.cc:213 msgid "Create a blank image" msgstr "Create a blank image" -#: f.widgets.cc:218 +#: f.widgets.cc:214 msgid "Move image file to Trash" msgstr "Move image file to Trash" -#: f.widgets.cc:219 +#: f.widgets.cc:215 msgid "Permanently delete image file" msgstr "Permanently delete image file" -#: f.widgets.cc:220 +#: f.widgets.cc:216 msgid "Print the current image" msgstr "Print the current image" -#: f.widgets.cc:221 f.widgets.cc:402 +#: f.widgets.cc:217 f.widgets.cc:401 msgid "Quit Fotoxx" msgstr "Quit Fotoxx" -#: f.widgets.cc:224 +#: f.widgets.cc:220 msgid "List a few key metadata items" msgstr "List a few key metadata items" -#: f.widgets.cc:225 +#: f.widgets.cc:221 msgid "List all metadata items" msgstr "List all metadata items" -#: f.widgets.cc:226 +#: f.widgets.cc:222 msgid "(Toggle) show captions and comments" msgstr "(Toggle) show captions and comments" -#: f.widgets.cc:227 +#: f.widgets.cc:223 msgid "Edit image tags/caption/rating ..." msgstr "Edit image tags/caption/rating ..." -#: f.widgets.cc:228 +#: f.widgets.cc:224 msgid "Edit any image metadata" msgstr "Edit any image metadata" -#: f.widgets.cc:229 +#: f.widgets.cc:225 msgid "Remove all metadata from an image" msgstr "Remove all metadata from an image" -#: f.widgets.cc:230 +#: f.widgets.cc:226 msgid "Add/remove tags for multiple images" msgstr "Add/remove tags for multiple images" -#: f.widgets.cc:231 +#: f.widgets.cc:227 msgid "Convert tag names for all images" msgstr "Convert tag names for all images" -#: f.widgets.cc:232 +#: f.widgets.cc:228 msgid "Add/change/delete metadata for multiple images" msgstr "Add/change/delete metadata for multiple images" -#: f.widgets.cc:233 +#: f.widgets.cc:229 msgid "Edit image location and geotags" msgstr "Edit image location and geotags" -#: f.widgets.cc:234 +#: f.widgets.cc:230 msgid "Add/revise geotags for multiple images" msgstr "Add/revise geotags for multiple images" -#: f.widgets.cc:235 +#: f.widgets.cc:231 msgid "Find all images for a location [date]" msgstr "Find all images for a location [date]" -#: f.widgets.cc:236 +#: f.widgets.cc:232 msgid "Find images meeting select criteria" msgstr "Find images meeting select criteria" -#: f.widgets.cc:239 +#: f.widgets.cc:235 msgid "Select object or area for editing" msgstr "Select object or area for editing" -#: f.widgets.cc:240 +#: f.widgets.cc:236 msgid "Show (outline) existing area" msgstr "Show (outline) existing area" -#: f.widgets.cc:241 +#: f.widgets.cc:237 msgid "Hide existing area" msgstr "Hide existing area" -#: f.widgets.cc:242 +#: f.widgets.cc:238 msgid "Enable area for editing" msgstr "Enable area for editing" -#: f.widgets.cc:243 +#: f.widgets.cc:239 msgid "Disable area for editing" msgstr "Disable area for editing" -#: f.widgets.cc:244 +#: f.widgets.cc:240 msgid "Reverse existing area" msgstr "Reverse existing area" -#: f.widgets.cc:245 +#: f.widgets.cc:241 msgid "Erase existing area" msgstr "Erase existing area" -#: f.widgets.cc:246 +#: f.widgets.cc:242 +msgid "Copy area for later pasting into image" +msgstr "Copy area for later pasting into image" + +#: f.widgets.cc:243 +msgid "Paste previously copied area into image" +msgstr "Paste previously copied area into image" + +#: f.widgets.cc:244 msgid "Open a file and paste as area into image" msgstr "Open a file and paste as area into image" -#: f.widgets.cc:247 +#: f.widgets.cc:245 msgid "Save area to a file with transparency" msgstr "Save area to a file with transparency" -#: f.widgets.cc:250 +#: f.widgets.cc:248 msgid "Trim/Crop margins and/or Rotate" msgstr "Trim/Crop margins and/or Rotate" -#: f.widgets.cc:251 +#: f.widgets.cc:249 msgid "Upright a rotated image" msgstr "Upright a rotated image" -#: f.widgets.cc:252 f.widgets.cc:253 +#: f.widgets.cc:250 f.widgets.cc:251 msgid "Fast auto enhance that may work OK" msgstr "Fast auto enhance that may work OK" -#: f.widgets.cc:254 +#: f.widgets.cc:252 msgid "Adjust brightness, contrast, color" msgstr "Adjust brightness, contrast, color" -#: f.widgets.cc:255 +#: f.widgets.cc:253 msgid "Add local contrast, enhance details" msgstr "Add local contrast, enhance details" -#: f.widgets.cc:256 +#: f.widgets.cc:254 msgid "Adjust brightness distribution" msgstr "Adjust brightness distribution" -#: f.widgets.cc:257 +#: f.widgets.cc:255 msgid "Flatten zonal brightness distribution" msgstr "Flatten zonal brightness distribution" -#: f.widgets.cc:258 +#: f.widgets.cc:256 msgid "Change pixel dimensions" msgstr "Change pixel dimensions" -#: f.widgets.cc:259 +#: f.widgets.cc:257 msgid "Mirror image horizontally or vertically" msgstr "Mirror image horizontally or vertically" -#: f.widgets.cc:260 +#: f.widgets.cc:258 msgid "Write text on image" msgstr "Write text on image" -#: f.widgets.cc:261 +#: f.widgets.cc:259 msgid "Write lines or arrows on image" msgstr "Write lines or arrows on image" -#: f.widgets.cc:262 +#: f.widgets.cc:260 msgid "Fix brightness uniformity across image" msgstr "Fix brightness uniformity across image" -#: f.widgets.cc:263 +#: f.widgets.cc:261 msgid "Paint edit function gradually with mouse" msgstr "Paint edit function gradually with mouse" -#: f.widgets.cc:264 +#: f.widgets.cc:262 msgid "Leverage edits by brightness or color" msgstr "Leverage edits by brightness or color" -#: f.widgets.cc:265 +#: f.widgets.cc:263 msgid "Edit plugins menu or run a plugin function" msgstr "Edit plugins menu or run a plugin function" -#: f.widgets.cc:268 +#: f.widgets.cc:266 msgid "Make the image look sharper" msgstr "Make the image look sharper" -#: f.widgets.cc:269 +#: f.widgets.cc:267 msgid "Make the image look fuzzy" msgstr "Make the image look fuzzy" -#: f.widgets.cc:270 +#: f.widgets.cc:268 msgid "Filter noise from low-light photos" msgstr "Filter noise from low-light photos" -#: f.widgets.cc:271 +#: f.widgets.cc:269 msgid "Remove unwanted objects" msgstr "Remove unwanted objects" -#: f.widgets.cc:272 +#: f.widgets.cc:270 msgid "Fix red-eyes from electronic flash" msgstr "Fix red-eyes from electronic flash" -#: f.widgets.cc:273 +#: f.widgets.cc:271 msgid "Paint image pixels using the mouse" msgstr "Paint image pixels using the mouse" -#: f.widgets.cc:274 +#: f.widgets.cc:272 msgid "Paint image transparency using the mouse" msgstr "Paint image transparency using the mouse" -#: f.widgets.cc:275 +#: f.widgets.cc:273 msgid "Make BW/color, negative/positive, sepia" msgstr "Make BW/color, negative/positive, sepia" -#: f.widgets.cc:276 +#: f.widgets.cc:274 msgid "Shift/convert colors into other colors" msgstr "Shift/convert colors into other colors" -#: f.widgets.cc:277 +#: f.widgets.cc:275 msgid "Adjust color using RGB or CMY colors" msgstr "Adjust color using RGB or CMY colors" -#: f.widgets.cc:278 +#: f.widgets.cc:276 msgid "Adjust color using HSL colors" msgstr "Adjust color using HSL colors" -#: f.widgets.cc:279 +#: f.widgets.cc:277 msgid "Adjust color in selected image areas" msgstr "Adjust color in selected image areas" -#: f.widgets.cc:280 +#: f.widgets.cc:278 msgid "Match colors on one image with another" msgstr "Match colors on one image with another" -#: f.widgets.cc:281 +#: f.widgets.cc:279 msgid "Convert to another color profile" msgstr "Convert to another color profile" -#: f.widgets.cc:282 +#: f.widgets.cc:280 msgid "Remove dust spots from scanned slides" msgstr "Remove dust spots from scanned slides" -#: f.widgets.cc:283 +#: f.widgets.cc:281 msgid "Smoothen edges with jaggies" msgstr "Smoothen edges with jaggies" -#: f.widgets.cc:284 +#: f.widgets.cc:282 msgid "Reduce Chromatic Abberation" msgstr "Reduce Chromatic Abberation" -#: f.widgets.cc:285 +#: f.widgets.cc:283 msgid "Erase known hot and dark pixels" msgstr "Erase known hot and dark pixels" -#: f.widgets.cc:288 +#: f.widgets.cc:286 msgid "Remove curvature, esp. panoramas" msgstr "Remove curvature, esp. panoramas" -#: f.widgets.cc:289 +#: f.widgets.cc:287 msgid "Straighten objects seen from an angle" msgstr "Straighten objects seen from an angle" -#: f.widgets.cc:290 +#: f.widgets.cc:288 msgid "Distort image areas using the mouse" msgstr "Distort image areas using the mouse" -#: f.widgets.cc:291 f.widgets.cc:292 f.widgets.cc:293 +#: f.widgets.cc:289 f.widgets.cc:290 f.widgets.cc:291 msgid "Distort the whole image using the mouse" msgstr "Distort the whole image using the mouse" -#: f.widgets.cc:294 +#: f.widgets.cc:292 msgid "Flatten a photographed book page" msgstr "Flatten a photographed book pag" -#: f.widgets.cc:297 +#: f.widgets.cc:295 msgid "Reduce color depth (posterize)" msgstr "Reduce color depth (posterize)" -#: f.widgets.cc:298 +#: f.widgets.cc:296 msgid "Convert to pencil sketch" msgstr "Convert to pencil sketch" -#: f.widgets.cc:299 +#: f.widgets.cc:297 msgid "Convert to line drawing (edge detection)" msgstr "Convert to line drawing (edge detection)" -#: f.widgets.cc:300 +#: f.widgets.cc:298 msgid "Convert to solid color drawing" msgstr "Convert to solid color drawing" -#: f.widgets.cc:301 +#: f.widgets.cc:299 msgid "Graduated Blur depending on contrast" msgstr "Graduated Blur depending on contrast" -#: f.widgets.cc:302 +#: f.widgets.cc:300 msgid "Create an embossed or 3D appearance" msgstr "Create an embossed or 3D appearance" -#: f.widgets.cc:303 +#: f.widgets.cc:301 msgid "Convert to square tiles" msgstr "Convert to square tiles" -#: f.widgets.cc:304 +#: f.widgets.cc:302 msgid "Convert to dots (Roy Lichtenstein effect)" msgstr "Convert to dots (Roy Lichtenstein effect)" -#: f.widgets.cc:305 +#: f.widgets.cc:303 msgid "Convert into a simulated painting" msgstr "Convert into a simulated painting" -#: f.widgets.cc:306 +#: f.widgets.cc:304 msgid "Change brightness or color radially" msgstr "Change brightness or color radially" -#: f.widgets.cc:307 +#: f.widgets.cc:305 msgid "Add texture to an image" msgstr "Add texture to an image" -#: f.widgets.cc:308 +#: f.widgets.cc:306 msgid "Tile image with a repeating pattern" msgstr "Tile image with a repeating pattern" -#: f.widgets.cc:309 +#: f.widgets.cc:307 msgid "Create a mosaic with tiles made from all images" msgstr "Create a mosaic with tiles made from all images" -#: f.widgets.cc:310 +#: f.widgets.cc:308 msgid "Process an image using a custom kernel" msgstr "Process an image using a custom kernel" -#: f.widgets.cc:311 +#: f.widgets.cc:309 msgid "Warp an image with a wave pattern" msgstr "Warp an image with a wave pattern" -#: f.widgets.cc:312 +#: f.widgets.cc:310 msgid "Blur an image in the direction of mouse drags" msgstr "Blur an image in the direction of mouse drags" -#: f.widgets.cc:315 +#: f.widgets.cc:313 msgid "Combine bright/dark images for better detail" msgstr "Combine bright/dark images for better detail" -#: f.widgets.cc:316 +#: f.widgets.cc:314 msgid "Combine near/far focus images for deeper focus" msgstr "Combine near/far focus images for deeper focus" -#: f.widgets.cc:317 +#: f.widgets.cc:315 msgid "Combine images to erase passing people, etc." msgstr "Combine images to erase passing people, etc." -#: f.widgets.cc:318 +#: f.widgets.cc:316 msgid "Combine noisy images into a low-noise image" msgstr "Combine noisy images into a low-noise image" -#: f.widgets.cc:319 +#: f.widgets.cc:317 msgid "Combine images into a panorama" msgstr "Combine images into a panorama" -#: f.widgets.cc:320 +#: f.widgets.cc:318 msgid "Combine images into a vertical panorama" msgstr "Combine images into a vertical panorama" -#: f.widgets.cc:321 +#: f.widgets.cc:319 msgid "Combine images into a panorama (panorama tools)" msgstr "Combine images into a panorama (panorama tools)" -#: f.widgets.cc:322 +#: f.widgets.cc:320 msgid "Arrange images and text in a layout (montage)" msgstr "Arrange images and text in a layout (montage)" -#: f.widgets.cc:325 +#: f.widgets.cc:323 msgid "Index new files and make thumbnails" msgstr "Index new files and make thumbnails" -#: f.widgets.cc:326 +#: f.widgets.cc:324 msgid "Change user preferences" msgstr "Change user preferences" -#: f.widgets.cc:327 +#: f.widgets.cc:325 msgid "Change Keyboard Shortcut Keys" msgstr "Change Keyboard Shortcut Keys" -#: f.widgets.cc:328 +#: f.widgets.cc:326 msgid "Show a brightness distribution graph" msgstr "Show a brightness distribution graph" -#: f.widgets.cc:329 +#: f.widgets.cc:327 msgid "Show or revise grid lines" msgstr "Show or revise grid lines" -#: f.widgets.cc:330 +#: f.widgets.cc:328 msgid "Change color of foreground lines" msgstr "Change color of foreground lines" -#: f.widgets.cc:331 +#: f.widgets.cc:329 msgid "Show RGB colors at mouse click" msgstr "Show RGB colors at mouse click" -#: f.widgets.cc:332 +#: f.widgets.cc:330 msgid "Magnify image around the mouse position" msgstr "Magnify image around the mouse position" -#: f.widgets.cc:333 +#: f.widgets.cc:331 msgid "Highlight darkest and brightest pixels" msgstr "Highlight darkest and brightest pixels" -#: f.widgets.cc:334 +#: f.widgets.cc:332 msgid "Chart to adjust monitor color" msgstr "Chart to adjust monitor color" -#: f.widgets.cc:335 +#: f.widgets.cc:333 msgid "Chart to adjust monitor gamma" msgstr "Chart to adjust monitor gamma" -#: f.widgets.cc:336 +#: f.widgets.cc:334 msgid "Change the GUI language" msgstr "Change the GUI language" -#: f.widgets.cc:337 +#: f.widgets.cc:335 msgid "Report missing translations" msgstr "Report missing translations" -#: f.widgets.cc:338 -msgid "Search all image files and report duplicates" -msgstr "Search all image files and report duplicates" +#: f.widgets.cc:336 +msgid "Calibrate printer colors" +msgstr "Calibrate printer colors" -#: f.widgets.cc:339 +#: f.widgets.cc:337 msgid "Memory and CPU (to terminal/logfile)" msgstr "Memory and CPU (to terminal/logfile" -#: f.widgets.cc:343 +#: f.widgets.cc:341 msgid "Rename/convert/resize/move multiple files" msgstr "Rename/convert/resize/move multiple files" -#: f.widgets.cc:344 +#: f.widgets.cc:342 msgid "Upright multiple rotated image files" msgstr "Upright multiple rotated image files" -#: f.widgets.cc:345 +#: f.widgets.cc:343 msgid "Delete or Trash multiple files" msgstr "Delete or Trash multiple files" -#: f.widgets.cc:346 +#: f.widgets.cc:344 msgid "Convert camera RAW files using DCraw" msgstr "Convert camera RAW files using DCraw" -#: f.widgets.cc:347 +#: f.widgets.cc:345 msgid "Convert camera RAW files using Raw Therapee" msgstr "Convert camera RAW files using Raw Therapee" -#: f.widgets.cc:348 +#: f.widgets.cc:346 msgid "Burn selected image files to CD or DVD" msgstr "Burn selected image files to CD or DVD" -#: f.widgets.cc:352 +#: f.widgets.cc:347 +msgid "Search all image files and report duplicates" +msgstr "Search all image files and report duplicates" + +#: f.widgets.cc:351 msgid "Quick Start mini-guide" msgstr "Quick Start mini-guide" -#: f.widgets.cc:353 +#: f.widgets.cc:352 msgid "Read the user guide" msgstr "Read the user guide" -#: f.widgets.cc:354 +#: f.widgets.cc:353 msgid "Recent user guide changes" msgstr "Recent user guide changes" -#: f.widgets.cc:355 +#: f.widgets.cc:354 msgid "Summary of image edit functions" msgstr "Summary of image edit functions" -#: f.widgets.cc:356 +#: f.widgets.cc:355 msgid "Technical installation notes" msgstr "Technical installation notes" -#: f.widgets.cc:357 +#: f.widgets.cc:356 msgid "List updates by Fotoxx version" msgstr "List updates by Fotoxx version" -#: f.widgets.cc:358 +#: f.widgets.cc:357 msgid "View the log file and error messages" msgstr "View the log file and error messages" -#: f.widgets.cc:359 +#: f.widgets.cc:358 msgid "How to do Fotoxx translations" msgstr "How to do Fotoxx translations" -#: f.widgets.cc:360 +#: f.widgets.cc:359 msgid "Show the Fotoxx web page" msgstr "Show the Fotoxx web page" -#: f.widgets.cc:361 +#: f.widgets.cc:360 msgid "Version, license, contact, credits" msgstr "Version, license, contact, credits" -#: f.widgets.cc:364 +#: f.widgets.cc:363 msgid "Organize images into albums" msgstr "Organize images into albums" -#: f.widgets.cc:365 +#: f.widgets.cc:364 msgid "Start a slide show" msgstr "Start a slide show" -#: f.widgets.cc:366 +#: f.widgets.cc:365 msgid "Set desktop image from current Fotoxx image" msgstr "Set desktop image from current Fotoxx image" -#: f.widgets.cc:367 +#: f.widgets.cc:366 msgid "Cycle desktop images from a Fotoxx album" msgstr "Cycle desktop images from a Fotoxx album" -#: f.widgets.cc:389 +#: f.widgets.cc:388 msgid "New Window" msgstr "New Window" -#: f.widgets.cc:391 +#: f.widgets.cc:390 msgid "Open Previous File" msgstr "Open Previous File" -#: f.widgets.cc:392 +#: f.widgets.cc:391 msgid "Recently Seen Images" msgstr "Recently Seen Images" -#: f.widgets.cc:393 +#: f.widgets.cc:392 msgid "Newest Images" msgstr "Newest Images" -#: f.widgets.cc:394 +#: f.widgets.cc:393 msgid "Open RAW (ufraw)" msgstr "Open RAW (ufraw)" -#: f.widgets.cc:395 +#: f.widgets.cc:394 msgid "Open RAW (Raw Therapee)" msgstr "Open RAW (Raw Therapee" -#: f.widgets.cc:397 +#: f.widgets.cc:396 msgid "New Blank Image" msgstr "New Blank Image" -#: f.widgets.cc:399 +#: f.widgets.cc:398 msgid "Delete Image File" msgstr "Delete Image File" -#: f.widgets.cc:400 +#: f.widgets.cc:399 msgid "Print Image" msgstr "Print Image" -#: f.widgets.cc:401 f.widgets.cc:538 +#: f.widgets.cc:400 f.widgets.cc:543 msgid "Set Desktop Image" msgstr "Set Desktop Image" -#: f.widgets.cc:405 +#: f.widgets.cc:404 msgid "View Metadata (short)" msgstr "View Metadata (short)" -#: f.widgets.cc:406 +#: f.widgets.cc:405 msgid "View Metadata (long)" msgstr "View Metadata (long)" -#: f.widgets.cc:407 +#: f.widgets.cc:406 msgid "Show Captions on Image" msgstr "Show Captions on Image" -#: f.widgets.cc:409 +#: f.widgets.cc:408 msgid "Edit Any Metadata" msgstr "Edit Any Metadata" -#: f.widgets.cc:412 f.widgets.cc:531 +#: f.widgets.cc:411 f.widgets.cc:534 msgid "Batch Rename Tags" msgstr "Batch Rename Tags" -#: f.widgets.cc:413 f.widgets.cc:532 +#: f.widgets.cc:412 f.widgets.cc:535 msgid "Batch Add/Change Metadata" msgstr "Batch Add/Change Metadata" -#: f.widgets.cc:416 f.widgets.cc:606 +#: f.widgets.cc:415 f.widgets.cc:537 f.widgets.cc:611 msgid "Images by Geotag" msgstr "Images by Geotag" -#: f.widgets.cc:417 f.widgets.cc:607 +#: f.widgets.cc:416 f.widgets.cc:538 f.widgets.cc:612 msgid "Search Images" msgstr "Search Images" -#: f.widgets.cc:420 fotoxx.h:1156 +#: f.widgets.cc:419 fotoxx.h:1164 msgid "Select" msgstr "Select" -#: f.widgets.cc:421 fotoxx.h:1158 +#: f.widgets.cc:420 fotoxx.h:1166 msgid "Show" msgstr "Show" -#: f.widgets.cc:422 fotoxx.h:1112 +#: f.widgets.cc:421 fotoxx.h:1120 msgid "Hide" msgstr "Hide" -#: f.widgets.cc:423 fotoxx.h:1098 +#: f.widgets.cc:422 fotoxx.h:1106 msgid "Enable" msgstr "Enable" -#: f.widgets.cc:424 fotoxx.h:1094 +#: f.widgets.cc:423 fotoxx.h:1102 msgid "Disable" msgstr "Disable" -#: f.widgets.cc:425 fotoxx.h:1115 +#: f.widgets.cc:424 fotoxx.h:1123 msgid "Invert" msgstr "Invert" -#: f.widgets.cc:426 fotoxx.h:1172 +#: f.widgets.cc:425 fotoxx.h:1180 msgid "Unselect" msgstr "Unselect" +#: f.widgets.cc:426 +msgid "Copy Area" +msgstr "Copy Area" + #: f.widgets.cc:427 +msgid "Paste Area" +msgstr "Paste Area" + +#: f.widgets.cc:428 msgid "Open Area File" msgstr "Open Area File" -#: f.widgets.cc:428 +#: f.widgets.cc:429 msgid "Save Area File" msgstr "Save Area File" -#: f.widgets.cc:433 +#: f.widgets.cc:434 msgid "Voodoo 1" msgstr "Voodoo 1" -#: f.widgets.cc:434 +#: f.widgets.cc:435 msgid "Voodoo 2" msgstr "Voodoo 2" -#: f.widgets.cc:436 +#: f.widgets.cc:437 msgid "Adjust Brightness Dist." msgstr "Adjust Brightness Dist." -#: f.widgets.cc:437 f.widgets.cc:676 +#: f.widgets.cc:438 f.widgets.cc:681 msgid "Zonal Flatten" msgstr "Zonal Flatten" -#: f.widgets.cc:441 +#: f.widgets.cc:442 msgid "Add Text" msgstr "Add Text" -#: f.widgets.cc:442 +#: f.widgets.cc:443 msgid "Add Lines" msgstr "Add Lines" -#: f.widgets.cc:445 +#: f.widgets.cc:446 msgid "Plugins" msgstr "Plugins" -#: f.widgets.cc:450 +#: f.widgets.cc:451 msgid "Denoise" msgstr "Denoise" -#: f.widgets.cc:452 +#: f.widgets.cc:453 msgid "Red Eyes" msgstr "Red Eyes" -#: f.widgets.cc:457 +#: f.widgets.cc:458 msgid "Adjust RGB/CMY" msgstr "Adjust RGB/CMY" -#: f.widgets.cc:458 +#: f.widgets.cc:459 msgid "Adjust HSL" msgstr "Adjust HSL" -#: f.widgets.cc:459 +#: f.widgets.cc:460 msgid "Brightness Ramp" msgstr "Brightness Ramp" -#: f.widgets.cc:461 +#: f.widgets.cc:462 msgid "Match Colors" msgstr "Match Colors" -#: f.widgets.cc:462 +#: f.widgets.cc:463 msgid "Color Profile" msgstr "Color Profile" -#: f.widgets.cc:464 +#: f.widgets.cc:465 msgid "Anti-Alias" msgstr "Anti-Alias" -#: f.widgets.cc:470 +#: f.widgets.cc:471 msgid "Fix Perspective" msgstr "Fix Perspective" -#: f.widgets.cc:475 +#: f.widgets.cc:476 msgid "Flatten Book Page" msgstr "Flatten Book Page" -#: f.widgets.cc:478 +#: f.widgets.cc:479 msgid "Color Depth" msgstr "Color Depth" -#: f.widgets.cc:479 +#: f.widgets.cc:480 msgid "Sketch" msgstr "Sketch" -#: f.widgets.cc:483 +#: f.widgets.cc:484 msgid "Embossing" msgstr "Embossing" -#: f.widgets.cc:485 +#: f.widgets.cc:486 msgid "Dots" msgstr "Dots" -#: f.widgets.cc:486 +#: f.widgets.cc:487 msgid "Painting" msgstr "Painting" -#: f.widgets.cc:488 +#: f.widgets.cc:489 msgid "Texture" msgstr "Texture" -#: f.widgets.cc:490 +#: f.widgets.cc:491 msgid "Mosaic" msgstr "Mosaic" -#: f.widgets.cc:496 +#: f.widgets.cc:497 msgid "High Dynamic Range" msgstr "High Dynamic Range" -#: f.widgets.cc:497 +#: f.widgets.cc:498 msgid "High Depth of Field" msgstr "High Depth of Field" -#: f.widgets.cc:498 +#: f.widgets.cc:499 msgid "Stack/Paint" msgstr "Stack/Paint" -#: f.widgets.cc:499 +#: f.widgets.cc:500 msgid "Stack/Noise" msgstr "Stack/Noise" -#: f.widgets.cc:500 +#: f.widgets.cc:501 msgid "Panorama" msgstr "Panorama" -#: f.widgets.cc:501 +#: f.widgets.cc:502 msgid "Vertical Panorama" msgstr "Vertical Panorama" -#: f.widgets.cc:502 +#: f.widgets.cc:503 msgid "PT Panorama" msgstr "PT Panorama" -#: f.widgets.cc:503 +#: f.widgets.cc:504 msgid "Mashup" msgstr "Mashup" -#: f.widgets.cc:508 +#: f.widgets.cc:509 msgid "Keyboard Shortcuts" msgstr "Keyboard Shortcuts" -#: f.widgets.cc:509 +#: f.widgets.cc:510 msgid "Show Brightness Dist." msgstr "Show Brightness Dist." -#: f.widgets.cc:514 +#: f.widgets.cc:515 msgid "Dark/Bright Pixels" msgstr "Dark/Bright Pixels" -#: f.widgets.cc:515 +#: f.widgets.cc:516 msgid "Monitor Color" msgstr "Monitor Color" -#: f.widgets.cc:517 +#: f.widgets.cc:518 msgid "Change Language" msgstr "Change Language" -#: f.widgets.cc:518 +#: f.widgets.cc:519 msgid "Missing Translations" msgstr "Missing Translations" -#: f.widgets.cc:520 +#: f.widgets.cc:522 msgid "Resources" msgstr "Resources" -#: f.widgets.cc:527 +#: f.widgets.cc:529 msgid "Batch RAW (DCraw)" msgstr "Batch RAW (DCraw)" -#: f.widgets.cc:528 +#: f.widgets.cc:530 msgid "Batch RAW (Raw Therapee)" msgstr "Batch RAW (Raw Therapee)" -#: f.widgets.cc:529 +#: f.widgets.cc:531 msgid "Burn Images to CD/DVD" msgstr "Burn Images to CD/DVD" -#: f.widgets.cc:539 +#: f.widgets.cc:544 msgid "Cycle Desktop Image" msgstr "Cycle Desktop Image" -#: f.widgets.cc:542 fotoxx-15.08.cc:5513 -msgid "Quick Start" -msgstr "Quick Start" - -#: f.widgets.cc:543 fotoxx-15.08.cc:5516 -msgid "User Guide" -msgstr "User Guide" - -#: f.widgets.cc:544 fotoxx-15.08.cc:5519 -msgid "User Guide Changes" -msgstr "User Guide Changes" - -#: f.widgets.cc:545 fotoxx-15.08.cc:5525 -msgid "Edit Functions Summary" -msgstr "Edit Functions Summary" - -#: f.widgets.cc:546 fotoxx-15.08.cc:5522 -msgid "README" -msgstr "README" - -#: f.widgets.cc:547 fotoxx-15.08.cc:5528 -msgid "Change Log" -msgstr "Change Log" - -#: f.widgets.cc:548 fotoxx-15.08.cc:5531 -msgid "Log File" -msgstr "Log File" - -#: f.widgets.cc:549 fotoxx-15.08.cc:5534 -msgid "Translations" -msgstr "Translations" - -#: f.widgets.cc:550 fotoxx-15.08.cc:5537 -msgid "Home Page" -msgstr "Home Page" - -#: f.widgets.cc:551 fotoxx-15.08.cc:5540 -msgid "About" -msgstr "About" - -#: f.widgets.cc:556 f.widgets.cc:579 f.widgets.cc:601 +#: f.widgets.cc:561 f.widgets.cc:584 f.widgets.cc:606 msgid "Gallery" msgstr "Gallery" -#: f.widgets.cc:557 f.widgets.cc:580 f.widgets.cc:602 +#: f.widgets.cc:562 f.widgets.cc:585 f.widgets.cc:607 msgid "World Maps" msgstr "World Maps" -#: f.widgets.cc:559 +#: f.widgets.cc:564 msgid "Favorites" msgstr "Favorites" -#: f.widgets.cc:561 fotoxx.h:1152 +#: f.widgets.cc:566 fotoxx.h:1160 msgid "Save" msgstr "Save" -#: f.widgets.cc:562 +#: f.widgets.cc:567 msgid "Prev/Next" msgstr "Prev/Next" -#: f.widgets.cc:563 +#: f.widgets.cc:568 msgid "Metadata" msgstr "Metadata" -#: f.widgets.cc:564 +#: f.widgets.cc:569 msgid "Areas" msgstr "Areas" -#: f.widgets.cc:565 fotoxx.h:1097 +#: f.widgets.cc:570 fotoxx.h:1105 msgid "Edit" msgstr "Edit" -#: f.widgets.cc:566 +#: f.widgets.cc:571 msgid "Repair" msgstr "Repair" -#: f.widgets.cc:567 +#: f.widgets.cc:572 msgid "Bend" msgstr "Bend" -#: f.widgets.cc:568 +#: f.widgets.cc:573 msgid "Effects" msgstr "Effects" -#: f.widgets.cc:569 +#: f.widgets.cc:574 msgid "Combine" msgstr "Combine" -#: f.widgets.cc:570 +#: f.widgets.cc:575 msgid "Undo/Redo" msgstr "Undo/Redo" -#: f.widgets.cc:571 +#: f.widgets.cc:576 msgid "Tools" msgstr "Tools" -#: f.widgets.cc:572 f.widgets.cc:594 fotoxx-15.08.cc:5544 fotoxx.h:1111 -msgid "Help" -msgstr "Help" - -#: f.widgets.cc:582 +#: f.widgets.cc:587 msgid "Sync.G" msgstr "Sync.G" -#: f.widgets.cc:583 +#: f.widgets.cc:588 msgid "Albums" msgstr "Albums" -#: f.widgets.cc:584 +#: f.widgets.cc:589 msgid "Bookmarks" msgstr "Bookmarks" -#: f.widgets.cc:593 +#: f.widgets.cc:598 msgid "Batch" -msgstr "" +msgstr "Batch" -#: f.widgets.cc:604 +#: f.widgets.cc:609 msgid "Choose Map" msgstr "Choose Map" -#: f.widgets.cc:605 +#: f.widgets.cc:610 msgid "Search Range" msgstr "Search Range" -#: f.widgets.cc:613 fotoxx.h:1170 +#: f.widgets.cc:618 fotoxx.h:1178 msgid "Undo" msgstr "Undo" -#: f.widgets.cc:614 fotoxx.h:1143 +#: f.widgets.cc:619 fotoxx.h:1151 msgid "Redo" msgstr "Redo" -#: f.widgets.cc:655 +#: f.widgets.cc:660 msgid "Popup Image" msgstr "Popup Image" -#: f.widgets.cc:656 +#: f.widgets.cc:661 msgid "Popup Image (add)" msgstr "Popup Image (add)" -#: f.widgets.cc:660 fotoxx.h:1146 +#: f.widgets.cc:665 fotoxx.h:1154 msgid "Rename" msgstr "Rename" -#: f.widgets.cc:661 +#: f.widgets.cc:666 msgid "Copy to Location" msgstr "Copy to Location" -#: f.widgets.cc:662 +#: f.widgets.cc:667 msgid "Move to Location" msgstr "Move to Location" -#: f.widgets.cc:663 +#: f.widgets.cc:668 msgid "Copy to Clipboard" msgstr "Copy to Clipboard" -#: f.widgets.cc:664 +#: f.widgets.cc:669 msgid "Remove from Album" msgstr "Remove from Album" -#: f.widgets.cc:665 +#: f.widgets.cc:670 msgid "Cut to Image Cache" msgstr "Cut to Image Cache" -#: f.widgets.cc:666 +#: f.widgets.cc:671 msgid "Copy to Image Cache" msgstr "Copy to Image Cache" -#: f.widgets.cc:667 +#: f.widgets.cc:672 msgid "Paste Image Cache Here (clear)" msgstr "Paste Image Cache Here (clear)" -#: f.widgets.cc:668 +#: f.widgets.cc:673 msgid "Paste Image Cache Here (keep)" msgstr "Paste Image Cache Here (keep)" -#: f.widgets.cc:669 +#: f.widgets.cc:674 msgid "Paste Current Image File Here" msgstr "Paste Current Image File Here" -#: f.widgets.cc:673 +#: f.widgets.cc:678 msgid "Voodoo Enhance" msgstr "Voodoo Enhance" -#: f.widgets.cc:675 +#: f.widgets.cc:680 msgid "Brightness Dist." msgstr "Brightness Dist." -#: f.widgets.cc:678 +#: f.widgets.cc:683 msgid "Select Area" msgstr "Select Area" -#: f.widgets.cc:681 fotoxx.h:1166 +#: f.widgets.cc:686 fotoxx.h:1174 msgid "Trash" msgstr "Trash" -#: f.widgets.cc:806 +#: f.widgets.cc:811 msgid "Image Locations" msgstr "Image Locations" -#: fotoxx-15.08.cc:376 +#: fotoxx-15.09.cc:361 msgid "Please install missing programs:" msgstr "Please install missing programs:" -#: fotoxx-15.08.cc:667 +#: fotoxx-15.09.cc:652 msgid "Kill active dialog?" msgstr "Kill active dialog?" -#: fotoxx-15.08.cc:742 +#: fotoxx-15.09.cc:723 msgid "(reduced)" msgstr "(reduced" -#: fotoxx-15.08.cc:743 +#: fotoxx-15.09.cc:724 msgid "area active" msgstr "area active" -#: fotoxx-15.08.cc:744 +#: fotoxx-15.09.cc:725 msgid "dialog open" msgstr "dialog open" -#: fotoxx-15.08.cc:745 -msgid "BUSY" -msgstr "BUSY" - -#: fotoxx-15.08.cc:746 +#: fotoxx-15.09.cc:726 msgid "blocked" msgstr "blocked" -#: fotoxx-15.08.cc:796 +#: fotoxx-15.09.cc:776 msgid "edits" msgstr "edits" -#: fotoxx-15.08.cc:2805 +#: fotoxx-15.09.cc:2756 msgid "Exceed 50 anchor points" msgstr "Exceed 50 anchor points" -#: fotoxx-15.08.cc:3018 +#: fotoxx-15.09.cc:2969 msgid "load curve from a file" msgstr "load curve from a file" -#: fotoxx-15.08.cc:3091 +#: fotoxx-15.09.cc:3042 msgid "save curve to a file" msgstr "save curve to a file" -#: fotoxx-15.08.cc:3161 +#: fotoxx-15.09.cc:3112 msgid "Too many edits, please save image" msgstr "Too many edits, please save image" -#: fotoxx-15.08.cc:3180 +#: fotoxx-15.09.cc:3131 msgid "" "Select area not active.\n" "Continue?" @@ -4463,373 +4578,373 @@ "Select area not active.\n" "Continue?" -#: fotoxx-15.08.cc:3435 +#: fotoxx-15.09.cc:3385 msgid "Load settings from file" msgstr "Load settings from file" -#: fotoxx-15.08.cc:3532 +#: fotoxx-15.09.cc:3482 msgid "file data does not fit dialog" msgstr "file data does not fit dialog" -#: fotoxx-15.08.cc:3542 +#: fotoxx-15.09.cc:3492 msgid "Save settings to a file" msgstr "Save settings to a file" -#: fotoxx-15.08.cc:3835 +#: fotoxx-15.09.cc:3781 msgid "This action will discard changes to current image" msgstr "This action will discard changes to current image" -#: fotoxx-15.08.cc:3836 fotoxx-15.08.cc:3837 +#: fotoxx-15.09.cc:3782 fotoxx-15.09.cc:3783 msgid "prior function still active" msgstr "prior function still active" -#: fotoxx-15.08.cc:3838 fotoxx.h:1116 +#: fotoxx-15.09.cc:3784 fotoxx.h:1124 msgid "Keep" msgstr "Keep" -#: fotoxx-15.08.cc:3839 +#: fotoxx-15.09.cc:3785 msgid "Discard" msgstr "Discard" -#: fotoxx.h:1068 +#: fotoxx.h:1076 msgid "Add" msgstr "Add" -#: fotoxx.h:1069 +#: fotoxx.h:1077 msgid "Add All" msgstr "Add All" -#: fotoxx.h:1071 +#: fotoxx.h:1079 msgid "Amount" msgstr "Amount" -#: fotoxx.h:1072 +#: fotoxx.h:1080 msgid "Angle" msgstr "Angle" -#: fotoxx.h:1073 +#: fotoxx.h:1081 msgid "Apply" msgstr "Apply" -#: fotoxx.h:1074 +#: fotoxx.h:1082 msgid "Auto" msgstr "Auto" -#: fotoxx.h:1075 +#: fotoxx.h:1083 msgid "Black" msgstr "Black" -#: fotoxx.h:1076 +#: fotoxx.h:1084 msgid "Blend Width" msgstr "Blend Width" -#: fotoxx.h:1078 zfuncs.cc:10061 +#: fotoxx.h:1086 zfuncs.cc:10054 msgid "bottom" msgstr "bottom" -#: fotoxx.h:1080 +#: fotoxx.h:1088 msgid "Browse" msgstr "Browse" -#: fotoxx.h:1081 +#: fotoxx.h:1089 msgid "Cancel" msgstr "Cancel" -#: fotoxx.h:1082 +#: fotoxx.h:1090 msgid "center" msgstr "center" -#: fotoxx.h:1083 +#: fotoxx.h:1091 msgid "Choose" msgstr "Choose" -#: fotoxx.h:1084 +#: fotoxx.h:1092 msgid "Clear" msgstr "Clear" -#: fotoxx.h:1085 +#: fotoxx.h:1093 msgid "Color" msgstr "Color" -#: fotoxx.h:1086 +#: fotoxx.h:1094 msgid "continue" msgstr "continue" -#: fotoxx.h:1088 +#: fotoxx.h:1096 msgid "Copy" msgstr "Copy" -#: fotoxx.h:1089 +#: fotoxx.h:1097 msgid "Create" msgstr "Create" -#: fotoxx.h:1090 +#: fotoxx.h:1098 msgid "Curve File:" msgstr "Curve File:" -#: fotoxx.h:1091 +#: fotoxx.h:1099 msgid "Cut" msgstr "Cut" -#: fotoxx.h:1092 +#: fotoxx.h:1100 msgid "Deband" msgstr "Deband" -#: fotoxx.h:1093 +#: fotoxx.h:1101 msgid "Delete" msgstr "Delete" -#: fotoxx.h:1095 +#: fotoxx.h:1103 msgid "Done" msgstr "Done" -#: fotoxx.h:1096 +#: fotoxx.h:1104 msgid "edge" msgstr "edge" -#: fotoxx.h:1099 +#: fotoxx.h:1107 msgid "Erase" msgstr "Erase" -#: fotoxx.h:1100 +#: fotoxx.h:1108 msgid "Fetch" msgstr "Fetch" -#: fotoxx.h:1101 +#: fotoxx.h:1109 msgid "output file already exists" msgstr "output file already exists" -#: fotoxx.h:1102 +#: fotoxx.h:1110 #, c-format msgid "%d files selected" msgstr "%d files selected" -#: fotoxx.h:1103 +#: fotoxx.h:1111 msgid "Find" msgstr "Find" -#: fotoxx.h:1104 +#: fotoxx.h:1112 msgid "Finish" msgstr "Finish" -#: fotoxx.h:1105 +#: fotoxx.h:1113 msgid "Flatten" msgstr "Flatten" -#: fotoxx.h:1106 +#: fotoxx.h:1114 msgid "Font" msgstr "Font" -#: fotoxx.h:1107 +#: fotoxx.h:1115 msgid "Geotags" msgstr "Geotags" -#: fotoxx.h:1109 +#: fotoxx.h:1117 msgid "Grid" msgstr "Grid" -#: fotoxx.h:1110 +#: fotoxx.h:1118 msgid "Height" msgstr "Height" -#: fotoxx.h:1113 +#: fotoxx.h:1121 msgid "Images" msgstr "Images" -#: fotoxx.h:1114 +#: fotoxx.h:1122 msgid "Insert" msgstr "Insert" -#: fotoxx.h:1117 zfuncs.cc:10065 +#: fotoxx.h:1125 zfuncs.cc:10058 msgid "left" msgstr "left" -#: fotoxx.h:1118 +#: fotoxx.h:1126 msgid "limit" msgstr "limit" -#: fotoxx.h:1119 +#: fotoxx.h:1127 msgid "Load" msgstr "Load" -#: fotoxx.h:1120 +#: fotoxx.h:1128 msgid "Make" msgstr "Make" -#: fotoxx.h:1122 +#: fotoxx.h:1130 msgid "Map" msgstr "Map" -#: fotoxx.h:1123 +#: fotoxx.h:1131 msgid "Max" msgstr "Max" -#: fotoxx.h:1124 +#: fotoxx.h:1132 msgid "Negative" msgstr "Negative" -#: fotoxx.h:1125 +#: fotoxx.h:1133 msgid "New" msgstr "New" -#: fotoxx.h:1126 +#: fotoxx.h:1134 msgid "Next" msgstr "Next" -#: fotoxx.h:1127 zfuncs.cc:9147 +#: fotoxx.h:1135 zfuncs.cc:9148 msgid "No" msgstr "No" -#: fotoxx.h:1128 +#: fotoxx.h:1136 msgid "no images" msgstr "no images" -#: fotoxx.h:1130 +#: fotoxx.h:1138 msgid "no selection" msgstr "no selection" -#: fotoxx.h:1131 +#: fotoxx.h:1139 msgid "OK" msgstr "OK" -#: fotoxx.h:1133 +#: fotoxx.h:1141 msgid "Paste" msgstr "Paste" -#: fotoxx.h:1134 +#: fotoxx.h:1142 msgid "Pause" msgstr "Pause" -#: fotoxx.h:1135 +#: fotoxx.h:1143 msgid "Percent" msgstr "Percent" -#: fotoxx.h:1137 +#: fotoxx.h:1145 msgid "Presets" msgstr "Presets" -#: fotoxx.h:1138 +#: fotoxx.h:1146 msgid "Prev" msgstr "Prev" -#: fotoxx.h:1139 +#: fotoxx.h:1147 msgid "Proceed" msgstr "Proceed" -#: fotoxx.h:1141 +#: fotoxx.h:1149 msgid "range" msgstr "range" -#: fotoxx.h:1144 +#: fotoxx.h:1152 msgid "Reduce" msgstr "Reduce" -#: fotoxx.h:1145 +#: fotoxx.h:1153 msgid "Remove" msgstr "Remove" -#: fotoxx.h:1147 +#: fotoxx.h:1155 msgid "Replace" msgstr "Replace" -#: fotoxx.h:1148 +#: fotoxx.h:1156 msgid "Reserved" msgstr "Reserved" -#: fotoxx.h:1149 +#: fotoxx.h:1157 msgid "Reset" msgstr "Reset" -#: fotoxx.h:1150 zfuncs.cc:10069 +#: fotoxx.h:1158 zfuncs.cc:10062 msgid "right" msgstr "right" -#: fotoxx.h:1151 +#: fotoxx.h:1159 msgid "Rotate" msgstr "Rotate" -#: fotoxx.h:1153 +#: fotoxx.h:1161 msgid "Unknown file type, save as tiff/jpeg/png to edit" msgstr "Unknown file type, save as tiff/jpeg/png to edit" -#: fotoxx.h:1154 +#: fotoxx.h:1162 msgid "Search" msgstr "Search" -#: fotoxx.h:1155 +#: fotoxx.h:1163 msgid "Seconds" msgstr "Seconds" -#: fotoxx.h:1159 +#: fotoxx.h:1167 msgid "Size" msgstr "Size" -#: fotoxx.h:1160 +#: fotoxx.h:1168 msgid "Start" msgstr "Start" -#: fotoxx.h:1161 +#: fotoxx.h:1169 msgid "Strength" msgstr "Strength" -#: fotoxx.h:1162 +#: fotoxx.h:1170 msgid "Threshold" msgstr "Threshold" -#: fotoxx.h:1163 +#: fotoxx.h:1171 #, c-format msgid "exceed %d files" msgstr "exceed %d files" -#: fotoxx.h:1164 zfuncs.cc:10057 +#: fotoxx.h:1172 zfuncs.cc:10050 msgid "top" msgstr "top" -#: fotoxx.h:1165 +#: fotoxx.h:1173 msgid "Transparency" msgstr "Transparency" -#: fotoxx.h:1167 +#: fotoxx.h:1175 msgid "Trim" msgstr "Trim" -#: fotoxx.h:1168 +#: fotoxx.h:1176 msgid "Undo All" msgstr "Undo All" -#: fotoxx.h:1169 +#: fotoxx.h:1177 msgid "Undo Last" msgstr "Undo Last" -#: fotoxx.h:1171 +#: fotoxx.h:1179 msgid "Unfinish" msgstr "Unfinish" -#: fotoxx.h:1173 +#: fotoxx.h:1181 msgid "View" msgstr "View" -#: fotoxx.h:1174 +#: fotoxx.h:1182 msgid "Web" msgstr "Web" -#: fotoxx.h:1175 +#: fotoxx.h:1183 msgid "White" msgstr "White" -#: fotoxx.h:1176 +#: fotoxx.h:1184 msgid "Width" msgstr "Width" -#: fotoxx.h:1177 +#: fotoxx.h:1185 msgid "x-offset" msgstr "x-offset" -#: fotoxx.h:1178 +#: fotoxx.h:1186 msgid "y-offset" msgstr "y-offset" -#: fotoxx.h:1179 zfuncs.cc:9147 +#: fotoxx.h:1187 zfuncs.cc:9148 msgid "Yes" msgstr "Yes" @@ -4846,175 +4961,71 @@ msgid "user guide not found" msgstr "user guide not found" -#: zfuncs.cc:5182 +#: zfuncs.cc:5183 #, c-format msgid "cannot open file %s" msgstr "cannot open file %s" -#: zfuncs.cc:5218 +#: zfuncs.cc:5219 msgid "save screen to file" msgstr "save screen to file" -#: zfuncs.cc:9223 zfuncs.cc:9724 zfuncs.cc:10044 +#: zfuncs.cc:9224 zfuncs.cc:9717 zfuncs.cc:10037 msgid "cancel" msgstr "cancel" -#: zfuncs.cc:9685 +#: zfuncs.cc:9678 msgid "choose file" msgstr "choose file" -#: zfuncs.cc:9690 +#: zfuncs.cc:9683 msgid "choose files" msgstr "choose files" -#: zfuncs.cc:9695 +#: zfuncs.cc:9688 msgid "save" msgstr "save" -#: zfuncs.cc:9701 +#: zfuncs.cc:9694 msgid "choose folder" msgstr "choose folder" -#: zfuncs.cc:9706 +#: zfuncs.cc:9699 msgid "choose folders" msgstr "choose folders" -#: zfuncs.cc:9711 +#: zfuncs.cc:9704 msgid "create folder" msgstr "create folder" -#: zfuncs.cc:9718 +#: zfuncs.cc:9711 msgid "hidden" msgstr "hidden" -#: zfuncs.cc:10044 +#: zfuncs.cc:10037 msgid "done" msgstr "done" -#: zfuncs.cc:10044 zfuncs.cc:10053 +#: zfuncs.cc:10037 zfuncs.cc:10046 msgid "margins" msgstr "margins" -#: zfuncs.cc:10074 +#: zfuncs.cc:10067 msgid "image scale" msgstr "image scale" -#: zfuncs.cc:10076 +#: zfuncs.cc:10069 msgid "percent" msgstr "percent" -#: zfuncs.cc:10083 +#: zfuncs.cc:10076 msgid "image" msgstr "image" -#: zfuncs.cc:10087 +#: zfuncs.cc:10080 msgid "width" msgstr "width" -#: zfuncs.cc:10091 +#: zfuncs.cc:10084 msgid "height" msgstr "height" - -#~ msgid "Darken" -#~ msgstr "Darken" - -#~ msgid "Brighten" -#~ msgstr "Brighten" - -#~ msgid "index busy" -#~ msgstr "index busy" - -#~ msgid "Pencil Sketch" -#~ msgstr "Pencil Sketch" - -#~ msgid "Save PNG" -#~ msgstr "Save PN" - -#~ msgid "Delete or Trash selected files" -#~ msgstr "Delete or Trash selected files" - -#~ msgid "Arrange multiple images on a background image" -#~ msgstr "Arrange multiple images on a background image" - -#~ msgid "Save an area to a PNG file with transparency" -#~ msgstr "Save an area to a PNG file with transparency" - -#~ msgid "Save an area to a file" -#~ msgstr "Save an area to a file" - -#~ msgid "Open a file with a saved area" -#~ msgstr "Open a file with a saved area" - -#~ msgid "Paste an area into the current image" -#~ msgstr "Paste an area into the current image" - -#~ msgid "Copy an area for later pasting" -#~ msgstr "Copy an area for later pasting" - -#~ msgid "Add geotags to multiple images" -#~ msgstr "Add geotags to multiple images" - -#~ msgid "Convert multiple tags for all images" -#~ msgstr "Convert multiple tags for all images" - -#~ msgid "" -#~ "area info file missing: \n" -#~ " %s" -#~ msgstr "" -#~ "area info file missing: \n" -#~ " %s" - -#~ msgid "color" -#~ msgstr "color" - -#~ msgid "" -#~ "fix text in layout \n" -#~ " start new text" -#~ msgstr "" -#~ "fix text in layout \n" -#~ " start new text" - -#~ msgid "Comment" -#~ msgstr "Comment" - -#~ msgid "Metadata:" -#~ msgstr "Metadata:" - -#~ msgid "save select area as a PNG file" -#~ msgstr "save select area as a PNG file" - -#~ msgid "save select area to a file" -#~ msgstr "save select area to a file" - -#~ msgid "load select area from a file" -#~ msgstr "load select area from a file" - -#~ msgid "next" -#~ msgstr "next" - -#~ msgid "Transition" -#~ msgstr "Transition" - -#~ msgid "Zoom location" -#~ msgstr "Zoom location" - -#~ msgid "Zoom type" -#~ msgstr "Zoom type" - -#~ msgid "Wait" -#~ msgstr "Wait" - -#~ msgid "Show Comments" -#~ msgstr "Show Comments" - -#~ msgid "Show Caption" -#~ msgstr "Show Caption" - -#~ msgid "Play tone" -#~ msgstr "Play tone" - -#~ msgid "Batch functions, Search Functions ..." -#~ msgstr "Batch functions, Search Functions ..." - -#~ msgid "albums" -#~ msgstr "albums" diff -Nru fotoxx-15.08/locales/translate-es.po fotoxx-15.09/locales/translate-es.po --- fotoxx-15.08/locales/translate-es.po 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/locales/translate-es.po 2015-08-31 10:21:01.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: home 2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-07-29 09:59+0200\n" +"POT-Creation-Date: 2015-08-30 21:14+0200\n" "PO-Revision-Date: 2013-12-29 23:39+0100\n" "Last-Translator: Josep Antoni Miralles Puignau \n" "Language-Team: nLanguage: es\n" @@ -30,7 +30,7 @@ msgid "Drag album thumbnail to new position." msgstr "Arrastrar miniatura del álbum a la nueva posición" -#: f.albums.cc:107 f.widgets.cc:536 +#: f.albums.cc:107 f.widgets.cc:541 msgid "Manage Albums" msgstr "Gestionar álbum" @@ -177,141 +177,145 @@ msgid "fallover" msgstr "hacia abajo" -#: f.albums.cc:1139 f.widgets.cc:537 +#: f.albums.cc:1138 f.widgets.cc:542 msgid "Slide Show" msgstr "Diaporama" -#: f.albums.cc:1150 +#: f.albums.cc:1149 msgid "Clip Limit" msgstr "Límite de secuencia" -#: f.albums.cc:1154 +#: f.albums.cc:1153 msgid "Music File" msgstr "Archivo de Música" -#: f.albums.cc:1159 +#: f.albums.cc:1158 msgid "Full Screen" msgstr "Pantalla completa" -#: f.albums.cc:1160 +#: f.albums.cc:1159 msgid "Auto-replay" msgstr "Auto reiniciar" -#: f.albums.cc:1166 +#: f.albums.cc:1165 msgid "Customize:" msgstr "Personalizar:" -#: f.albums.cc:1167 +#: f.albums.cc:1166 msgid "transitions" msgstr "transiciones" -#: f.albums.cc:1168 +#: f.albums.cc:1167 msgid "image files" msgstr "archivos de imagen" -#: f.albums.cc:1173 f.albums.cc:1289 +#: f.albums.cc:1172 f.albums.cc:1286 #, c-format msgid "%d images" msgstr "%d imágenes" -#: f.albums.cc:1196 f.albums.cc:1259 f.albums.cc:1349 f.albums.cc:1462 -#: f.albums.cc:1654 f.albums.cc:1738 f.albums.cc:1755 f.albums.cc:1976 +#: f.albums.cc:1194 f.albums.cc:1256 f.albums.cc:1346 f.albums.cc:1459 +#: f.albums.cc:1652 f.albums.cc:1736 f.albums.cc:1753 f.albums.cc:1974 msgid "invalid album" msgstr "álbum inválido" -#: f.albums.cc:1273 +#: f.albums.cc:1270 msgid "open album" msgstr "abrir álbum" -#: f.albums.cc:1305 +#: f.albums.cc:1302 msgid "Select music file" msgstr "Seleccione archivo de música" -#: f.albums.cc:1329 +#: f.albums.cc:1326 msgid "select random (if 5+ enabled)" msgstr "selección aleatoria (si activado +5)" -#: f.albums.cc:1353 +#: f.albums.cc:1350 msgid "Transition Preferences" msgstr "Preferencias de transición" -#: f.albums.cc:1362 +#: f.albums.cc:1359 msgid "transition" msgstr "transición" -#: f.albums.cc:1363 +#: f.albums.cc:1360 msgid "enabled" msgstr "activado" -#: f.albums.cc:1364 +#: f.albums.cc:1361 msgid "slowdown" msgstr "ralentizar" -#: f.albums.cc:1365 +#: f.albums.cc:1362 msgid "preference" msgstr "preferencia" -#: f.albums.cc:1468 +#: f.albums.cc:1465 msgid "Image Preferences" msgstr "Preferencias de imagen" -#: f.albums.cc:1472 f.file.cc:1153 f.file.cc:1349 f.file.cc:1557 f.meta.cc:425 +#: f.albums.cc:1469 f.file.cc:1157 f.file.cc:1353 f.file.cc:1561 f.meta.cc:426 msgid "Image File:" msgstr "Imagen:" -#: f.albums.cc:1476 +#: f.albums.cc:1473 msgid "Play tone when image shows" msgstr "Reproducir música mientras se ve la imagen" -#: f.albums.cc:1479 +#: f.albums.cc:1476 msgid "Show image caption" msgstr "Mostrar título del diaporama" -#: f.albums.cc:1484 +#: f.albums.cc:1481 msgid "Show image comments" msgstr "Mostrar comentarios de la imagen" -#: f.albums.cc:1489 +#: f.albums.cc:1486 msgid "Wait before zoom" msgstr "Espera antes del zoom" -#: f.albums.cc:1494 +#: f.albums.cc:1491 msgid "Zoom type:" msgstr "Tipo de zoom:" -#: f.albums.cc:1495 +#: f.albums.cc:1492 msgid "none" msgstr "ninguno" -#: f.albums.cc:1496 +#: f.albums.cc:1493 msgid "zoom-in" msgstr "acercar" -#: f.albums.cc:1497 +#: f.albums.cc:1494 msgid "zoom-out" msgstr "alejar" -#: f.albums.cc:1500 +#: f.albums.cc:1497 msgid "Zoom size (x)" msgstr "Tamaño de zoom (x)" -#: f.albums.cc:1503 +#: f.albums.cc:1500 msgid "Steps" msgstr "Pasos" -#: f.albums.cc:1507 +#: f.albums.cc:1504 msgid "Zoom image location:" msgstr "Localización del zoom de imagen" -#: f.albums.cc:1515 +#: f.albums.cc:1512 msgid "Wait after zoom" msgstr "Espera después del zoom" -#: f.albums.cc:1520 +#: f.albums.cc:1517 msgid "Transition to next image" msgstr "Transición a la próxima imagen" -#: f.albums.cc:1961 f.albums.cc:2119 +#: f.albums.cc:1520 f.albums.cc:1622 +msgid "next" +msgstr "siguiente" + +#: f.albums.cc:1959 f.albums.cc:2117 #, c-format msgid "" "file format error: \n" @@ -324,7 +328,7 @@ msgid "Select Area for Edits" msgstr "Seleccionar área a editar" -#: f.area.cc:80 f.edit.cc:5897 +#: f.area.cc:80 f.edit.cc:5908 msgid "Press F1 for help" msgstr "Pulsar F1 para ayuda" @@ -368,7 +372,7 @@ msgid "select all matching colors within mouse" msgstr "seleccionar todos los colores coincidentes con el ratón" -#: f.area.cc:139 f.edit.cc:5942 +#: f.area.cc:139 f.edit.cc:5953 msgid "mouse radius" msgstr "radio del cursor" @@ -400,12 +404,12 @@ msgid "area edits fade away within edge distance" msgstr "las ediciones de área se desvanecen en los bordes" -#: f.area.cc:353 f.area.cc:536 +#: f.area.cc:351 f.area.cc:534 #, c-format msgid "exceed %d edits" msgstr "excedido en %d ediciones" -#: f.area.cc:1363 +#: f.area.cc:1355 msgid "" "Click one time inside each enclosed area \n" "(possible gaps in the outline will be found). \n" @@ -415,23 +419,23 @@ "(pueden ser hallados posibles huecos en el contorno). \n" "Pulsar F1 para obtener ayuda." -#: f.area.cc:1391 +#: f.area.cc:1383 msgid "finish area" msgstr "terminar área" -#: f.area.cc:1399 +#: f.area.cc:1391 msgid "extend to corner:" msgstr "extender hasta la esquina" -#: f.area.cc:1440 +#: f.area.cc:1432 msgid "searching" msgstr "buscando" -#: f.area.cc:1472 +#: f.area.cc:1463 msgid "outline has a gap" msgstr "el contorno tiene un hueco" -#: f.area.cc:1476 +#: f.area.cc:1467 msgid "success" msgstr "satisfactorio" @@ -440,113 +444,114 @@ msgid "found %d pixels" msgstr "encontrados %d pixels" -#: f.area.cc:1918 f.area.cc:1935 f.area.cc:1955 f.area.cc:2260 f.area.cc:2387 +#: f.area.cc:1926 f.area.cc:1943 f.area.cc:1963 f.area.cc:2278 f.area.cc:2354 +#: f.area.cc:2511 msgid "the area is not finished" msgstr "el área no está cerrada" -#: f.area.cc:2049 +#: f.area.cc:2052 msgid "Edge calculation in progress" msgstr "Cálculo del contorno en progreso" -#: f.area.cc:2058 +#: f.area.cc:2061 msgid "Area Edge Calc" msgstr "Cálculo del contorno del área" -#: f.area.cc:2338 +#: f.area.cc:2462 msgid "load area from a file" msgstr "Cargar área desde un archivo" -#: f.area.cc:2421 +#: f.area.cc:2545 msgid "save area as a PNG file" msgstr "guardar área como un archivo PNG" -#: f.area.cc:2449 +#: f.area.cc:2573 msgid "position with mouse click/drag" msgstr "posición con el clic/arrastre del ratón" -#: f.area.cc:2493 +#: f.area.cc:2617 msgid "Paste Image" msgstr "Pegar imagen" -#: f.area.cc:2498 f.batch.cc:1135 f.batch.cc:1626 +#: f.area.cc:2622 f.batch.cc:1136 f.batch.cc:1627 msgid "resize" msgstr "redimensionar" -#: f.batch.cc:103 f.widgets.cc:524 +#: f.batch.cc:104 f.widgets.cc:526 msgid "Batch Convert" msgstr "Convertir en lote" -#: f.batch.cc:110 f.file.cc:781 +#: f.batch.cc:111 f.file.cc:782 msgid "New Name" msgstr "nombre nuevo" -#: f.batch.cc:112 +#: f.batch.cc:113 msgid "base" msgstr "inicio" -#: f.batch.cc:114 +#: f.batch.cc:115 msgid "adder" msgstr "incremento" -#: f.batch.cc:118 +#: f.batch.cc:119 msgid "New Location" msgstr "Nueva ubicación" -#: f.batch.cc:123 +#: f.batch.cc:124 msgid "New File Type" msgstr "Nuevo tipo de archivo" -#: f.batch.cc:127 f.batch.cc:135 +#: f.batch.cc:128 f.batch.cc:136 msgid "no change" msgstr "sin cambios" -#: f.batch.cc:130 +#: f.batch.cc:131 msgid "max. Width" msgstr "Ancho máx." -#: f.batch.cc:138 f.batch.cc:531 +#: f.batch.cc:139 f.batch.cc:532 msgid "Delete Originals" msgstr "Borrar originales" -#: f.batch.cc:139 f.batch.cc:528 +#: f.batch.cc:140 f.batch.cc:529 msgid "Copy Metadata" msgstr "Copiar metadatos" -#: f.batch.cc:140 f.batch.cc:529 f.edit.cc:1396 f.widgets.cc:432 -#: f.widgets.cc:672 +#: f.batch.cc:141 f.batch.cc:530 f.edit.cc:1407 f.widgets.cc:433 +#: f.widgets.cc:677 msgid "Upright" msgstr "Enderezar" -#: f.batch.cc:143 f.batch.cc:530 f.batch.cc:1144 f.batch.cc:1635 -#: f.repair.cc:115 f.widgets.cc:448 +#: f.batch.cc:144 f.batch.cc:531 f.batch.cc:1145 f.batch.cc:1636 +#: f.repair.cc:115 f.widgets.cc:449 msgid "Sharpen" msgstr "Enfocar" -#: f.batch.cc:145 f.batch.cc:1146 f.batch.cc:1637 +#: f.batch.cc:146 f.batch.cc:1147 f.batch.cc:1638 msgid "amount" msgstr "cantidad" -#: f.batch.cc:148 f.batch.cc:1149 f.batch.cc:1640 +#: f.batch.cc:149 f.batch.cc:1150 f.batch.cc:1641 msgid "threshold" msgstr "umbral" -#: f.batch.cc:250 +#: f.batch.cc:251 msgid "file type not supported" msgstr "tipo de archivo no soportad" -#: f.batch.cc:314 +#: f.batch.cc:315 msgid "cannot create new file" msgstr "no se puede crear el nuevo archivo" -#: f.batch.cc:361 +#: f.batch.cc:362 msgid "updating albums ..." msgstr "actualizando álbums ..." -#: f.batch.cc:434 f.batch.cc:1422 f.batch.cc:1828 f.file.cc:1202 +#: f.batch.cc:435 f.batch.cc:1423 f.batch.cc:1829 f.file.cc:1206 msgid "Select directory" msgstr "seleccionar directorio" -#: f.batch.cc:480 +#: f.batch.cc:481 msgid "" "new name/base/adder unreasonable\n" " e.g. newname ### 100 10" @@ -554,149 +559,182 @@ "nuevo nombre/inicio/incremento no razonable\n" "p.e. nuevonombre ### 100 10" -#: f.batch.cc:503 +#: f.batch.cc:504 #, c-format msgid "max. size %d x %d is not reasonable" msgstr "el tamaño máximo %d x %d no es razonable" -#: f.batch.cc:522 +#: f.batch.cc:523 #, c-format msgid "Convert %d image files" msgstr "Convertit %d imágenes" -#: f.batch.cc:523 +#: f.batch.cc:524 msgid "Rename to" msgstr "Renombrar como" -#: f.batch.cc:524 +#: f.batch.cc:525 msgid "Convert to" msgstr "Convertir a" -#: f.batch.cc:525 +#: f.batch.cc:526 msgid "Resize within" msgstr "Redimensionar dentro de " -#: f.batch.cc:526 +#: f.batch.cc:527 msgid "Output to" msgstr "Salida como" -#: f.batch.cc:532 +#: f.batch.cc:533 msgid "PROCEED?" msgstr "PROCEDER?" -#: f.batch.cc:686 f.widgets.cc:525 +#: f.batch.cc:687 f.widgets.cc:527 msgid "Batch Upright" msgstr "Enderezar en lote" -#: f.batch.cc:692 +#: f.batch.cc:693 msgid "Survey all files" msgstr "Examinar todos los archivos" -#: f.batch.cc:746 +#: f.batch.cc:747 msgid "file cannot be read" msgstr "no se puede leer el archivo" -#: f.batch.cc:864 +#: f.batch.cc:865 msgid "cannot select both options" msgstr "no se pueden seleccionar ambas opciones" -#: f.batch.cc:908 f.widgets.cc:526 +#: f.batch.cc:909 f.widgets.cc:528 msgid "Batch Delete/Trash" msgstr "Borrar/papelera en lote" -#: f.batch.cc:913 +#: f.batch.cc:914 msgid "delete" msgstr "borrar" -#: f.batch.cc:916 +#: f.batch.cc:917 msgid "trash" msgstr "papelera" -#: f.batch.cc:1078 +#: f.batch.cc:1079 msgid "Batch Convert RAW Files (DCraw)" msgstr "Convertir en lote archivos RAW (DCraw)" -#: f.batch.cc:1087 +#: f.batch.cc:1088 msgid "DCraw not installed" msgstr "DCraw no instalado" -#: f.batch.cc:1122 f.batch.cc:1613 +#: f.batch.cc:1123 f.batch.cc:1614 msgid "output location" msgstr "ubicación exterior" -#: f.batch.cc:1127 f.batch.cc:1618 +#: f.batch.cc:1128 f.batch.cc:1619 msgid "output file type" msgstr "tipo de archivo de salida" -#: f.batch.cc:1158 +#: f.batch.cc:1159 msgid "white balance" msgstr "balance de blancos" -#: f.batch.cc:1159 +#: f.batch.cc:1160 msgid "interpolation" msgstr "interpolacion" -#: f.batch.cc:1160 +#: f.batch.cc:1161 msgid "color space" msgstr "espacio de color" -#: f.batch.cc:1161 +#: f.batch.cc:1162 msgid "gamma curve" msgstr "curva Gamma" -#: f.batch.cc:1164 +#: f.batch.cc:1165 msgid "camera" msgstr "cámara" -#: f.batch.cc:1165 +#: f.batch.cc:1166 msgid "fixed" msgstr "fijado" -#: f.batch.cc:1166 +#: f.batch.cc:1167 msgid "calculated" msgstr "calculado" -#: f.batch.cc:1183 +#: f.batch.cc:1184 msgid "default" msgstr "por defecto" -#: f.batch.cc:1189 +#: f.batch.cc:1190 msgid "defaults" msgstr "por defecto" -#: f.batch.cc:1576 +#: f.batch.cc:1577 msgid "Batch Convert RAW Files (Raw Therapee)" msgstr "Convertir en lote archivos RAW (RawTherapee)" -#: f.batch.cc:1585 f.file.cc:488 +#: f.batch.cc:1586 f.file.cc:489 msgid "Raw Therapee not installed" msgstr "RawTherapee no instalado" -#: f.batch.cc:1894 +#: f.batch.cc:1895 msgid "Brasero not installed" msgstr "Brasero no instalado" -#: f.bend.cc:82 f.widgets.cc:469 +#: f.batch.cc:1984 f.widgets.cc:532 +msgid "Find Duplicate Images" +msgstr "Buscar imágenes duplicadas" + +#: f.batch.cc:1986 f.tools.cc:927 +msgid "Thumbnail size" +msgstr "Tamaño de miniatura" + +#: f.batch.cc:1989 +msgid "pixel difference" +msgstr "diferencia de píxels" + +#: f.batch.cc:1992 +msgid "pixel count" +msgstr "conteo de píxels" + +#: f.batch.cc:1995 +msgid "Images:" +msgstr "Imágenes:" + +#: f.batch.cc:1996 +msgid "searching ..." +msgstr "buscando ..." + +#: f.batch.cc:1998 +msgid "Duplicates:" +msgstr "Duplicados:" + +#: f.batch.cc:2016 +#, c-format +msgid "only %d image thumbnails found" +msgstr "ercontradas sólo %d miniaturas de imágenes" + +#: f.bend.cc:86 f.widgets.cc:470 msgid "Unbend" msgstr "Enderezar" -#: f.bend.cc:90 f.edit.cc:4237 f.effects.cc:4620 +#: f.bend.cc:94 f.edit.cc:4248 f.effects.cc:4625 msgid "vertical" msgstr "vertical" -#: f.bend.cc:91 f.edit.cc:4236 f.effects.cc:4616 +#: f.bend.cc:95 f.edit.cc:4247 f.effects.cc:4621 msgid "horizontal" msgstr "horizontal" -#: f.bend.cc:92 +#: f.bend.cc:96 msgid "linear" msgstr "lineal" -#: f.bend.cc:95 +#: f.bend.cc:99 msgid "curved" msgstr "curvado" -#: f.bend.cc:363 +#: f.bend.cc:367 msgid "" " Click the four corners of a tetragon area. Press [apply]. \n" " The image is warped to make the tetragon into a rectangle." @@ -704,15 +742,15 @@ " 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:376 +#: f.bend.cc:384 msgid "Perspective Correction" msgstr "Corregir perspectiva" -#: f.bend.cc:582 +#: f.bend.cc:590 msgid "must have 4 corners" msgstr "debe tener 4 esquinas" -#: f.bend.cc:704 +#: f.bend.cc:712 msgid "" " Select an area to warp using select area function. \n" " Press [start warp] and pull area with mouse. \n" @@ -724,19 +762,19 @@ " Dar varios tirones con el ratón hasta que quede satisfecho. \n" " Cuando esté terminado, seleccionar otra área o pulsar [Hecho]." -#: f.bend.cc:717 f.widgets.cc:471 +#: f.bend.cc:725 f.widgets.cc:472 msgid "Warp area" msgstr "Deformar área" -#: f.bend.cc:722 +#: f.bend.cc:730 msgid "start warp" msgstr "comenzar deformación" -#: f.bend.cc:780 +#: f.bend.cc:788 msgid "no active Select Area" msgstr "selección de área no activada" -#: f.bend.cc:1121 f.bend.cc:1431 +#: f.bend.cc:1129 f.bend.cc:1443 msgid "" " Pull an image position using the mouse. \n" " Make multiple mouse pulls until satisfied. \n" @@ -746,19 +784,19 @@ " Dar varios tirones con el ratón hasta que quede satisfecho. \n" " Cuando haya terminado, pulsar [Hecho]." -#: f.bend.cc:1135 f.widgets.cc:472 +#: f.bend.cc:1147 f.widgets.cc:473 msgid "Warp curved" msgstr "Deformación curva" -#: f.bend.cc:1144 f.mashup.cc:1836 +#: f.bend.cc:1156 f.mashup.cc:1836 msgid "warp span" msgstr "intervalo de deformación" -#: f.bend.cc:1445 f.widgets.cc:473 +#: f.bend.cc:1461 f.widgets.cc:474 msgid "Warp linear" msgstr "Deformación lineal" -#: f.bend.cc:1760 +#: f.bend.cc:1776 msgid "" " Pull on an image corner using the mouse. \n" " Make multiple mouse pulls until satisfied. \n" @@ -768,15 +806,15 @@ " Dar varios tirones con el ratón hasta que quede satisfecho. \n" " Cuando haya terminado, pulse [Hecho]." -#: f.bend.cc:1772 f.widgets.cc:474 +#: f.bend.cc:1792 f.widgets.cc:475 msgid "Warp affine" msgstr "Deformación afín" -#: f.bend.cc:2119 +#: f.bend.cc:2139 msgid "Flatten Book Page Photo" msgstr "Aplanar foto de página impresa" -#: f.bend.cc:2120 +#: f.bend.cc:2140 msgid "" "Trim image to isolate one page. \n" "Map top and bottom edges with \n" @@ -786,88 +824,88 @@ "Señalar bordes superiores e inferiores con \n" "más de 4 clics de ratón, después aplanar : " -#: f.bend.cc:2123 +#: f.bend.cc:2143 msgid "Stretch curved-down surfaces:" msgstr "Enderezar superficies curvadas por abajo" -#: f.bend.cc:2178 +#: f.bend.cc:2198 msgid "top:" msgstr "arriba:" -#: f.bend.cc:2181 +#: f.bend.cc:2201 msgid "bottom:" msgstr "abajo" -#: f.combine.cc:2119 f.combine.cc:2750 f.combine.cc:3406 f.combine.cc:3938 +#: f.combine.cc:2108 f.combine.cc:2739 f.combine.cc:3395 f.combine.cc:3927 msgid "Select 2 to 9 files" msgstr "Seleccione de 2 a 9 imágenes" -#: f.combine.cc:2140 f.combine.cc:2771 f.combine.cc:3427 f.combine.cc:3959 +#: f.combine.cc:2129 f.combine.cc:2760 f.combine.cc:3416 f.combine.cc:3948 msgid "Images are not all the same size" msgstr "No todas las imágenes son del mismo tamaño" -#: f.combine.cc:2484 +#: f.combine.cc:2473 msgid "Adjust Image Contributions" msgstr "Ajustar aportes de imagen" -#: f.combine.cc:2488 +#: f.combine.cc:2477 msgid "dark pixels" msgstr "sombras" -#: f.combine.cc:2490 +#: f.combine.cc:2479 msgid "light pixels" msgstr "luces" -#: f.combine.cc:2492 +#: f.combine.cc:2481 msgid "file:" msgstr "archivo:" -#: f.combine.cc:3007 +#: f.combine.cc:2996 msgid "Paint and Warp Image" msgstr "Pintar y deformar imagen" -#: f.combine.cc:3011 f.combine.cc:3656 f.combine.cc:6246 f.effects.cc:3851 -#: f.widgets.cc:555 f.widgets.cc:578 f.widgets.cc:600 +#: f.combine.cc:3000 f.combine.cc:3645 f.combine.cc:6236 f.effects.cc:3858 +#: f.widgets.cc:560 f.widgets.cc:583 f.widgets.cc:605 msgid "Image" msgstr "Imagen" -#: f.combine.cc:3015 +#: f.combine.cc:3004 msgid "paint" msgstr "pintar" -#: f.combine.cc:3016 +#: f.combine.cc:3005 msgid "warp" msgstr "deformar" -#: f.combine.cc:3654 +#: f.combine.cc:3643 msgid "Select and Paint Image" msgstr "Seleccionar y pintar imagen" -#: f.combine.cc:4130 +#: f.combine.cc:4119 msgid "Adjust Pixel Composition" msgstr "Ajustar composición de píxeles" -#: f.combine.cc:4132 +#: f.combine.cc:4121 msgid "use average" msgstr "usar media" -#: f.combine.cc:4133 +#: f.combine.cc:4122 msgid "use median" msgstr "usar mediana" -#: f.combine.cc:4135 +#: f.combine.cc:4124 msgid "omit low pixel" msgstr "omitir píxeles bajos" -#: f.combine.cc:4136 +#: f.combine.cc:4125 msgid "omit high pixel" msgstr "omitir píxeles altos" -#: f.combine.cc:4398 f.combine.cc:5504 +#: f.combine.cc:4387 f.combine.cc:5493 msgid "Select 2 to 4 files" msgstr "Seleccionar de 2 a 4 imagenes" -#: f.combine.cc:4473 +#: f.combine.cc:4462 msgid "" "Drag images into rough alignment.\n" "To rotate, drag from lower edge." @@ -875,76 +913,76 @@ "Arrastre las imágenes para un alineado aproximado.\n" "Para girar, arrastre desde el borde inferior." -#: f.combine.cc:4475 f.combine.cc:5581 +#: f.combine.cc:4464 f.combine.cc:5570 msgid "no curve (scanned image)" msgstr "sin curvatura (imagen escaneada)" -#: f.combine.cc:4476 f.combine.cc:5582 +#: f.combine.cc:4465 f.combine.cc:5571 msgid "Search for lens mm" msgstr "Buscar por longitud focal (mm)" -#: f.combine.cc:4477 f.combine.cc:5583 +#: f.combine.cc:4466 f.combine.cc:5572 msgid "Save lens mm → image EXIF" msgstr "Guardar focal en EXIF" -#: f.combine.cc:4538 f.combine.cc:5644 +#: f.combine.cc:4527 f.combine.cc:5633 msgid "Pre-align Images" msgstr "Pre-alinear imágenes" -#: f.combine.cc:4542 f.combine.cc:5648 +#: f.combine.cc:4531 f.combine.cc:5637 msgid "lens mm" msgstr "longitud focal (mm)" -#: f.combine.cc:4547 f.combine.cc:5653 +#: f.combine.cc:4536 f.combine.cc:5642 msgid "no auto warp" msgstr "no auto corrección" -#: f.combine.cc:4549 f.combine.cc:5655 f.widgets.cc:439 f.widgets.cc:671 +#: f.combine.cc:4538 f.combine.cc:5644 f.widgets.cc:440 f.widgets.cc:676 msgid "Resize" msgstr "Redimensionar" -#: f.combine.cc:4550 f.combine.cc:5656 +#: f.combine.cc:4539 f.combine.cc:5645 msgid "resize window" msgstr "redimensionar ventana" -#: f.combine.cc:4558 f.combine.cc:5664 +#: f.combine.cc:4547 f.combine.cc:5653 msgid "do not warp images during auto-alignment" msgstr "no deformar imágenes durante el auto alineado" -#: f.combine.cc:4603 f.combine.cc:5709 +#: f.combine.cc:4592 f.combine.cc:5698 msgid "use two images only" msgstr "usar sólo dos imágenes" -#: f.combine.cc:4631 f.combine.cc:4835 f.combine.cc:5021 f.combine.cc:5735 -#: f.combine.cc:5940 f.combine.cc:6126 +#: f.combine.cc:4620 f.combine.cc:4824 f.combine.cc:5010 f.combine.cc:5724 +#: f.combine.cc:5928 f.combine.cc:6114 msgid "Too little overlap, cannot align" msgstr "Solapamiento demasiado pequeño, no puedo alinear" -#: f.combine.cc:5096 f.combine.cc:6202 +#: f.combine.cc:5088 f.combine.cc:6192 msgid "Match Brightness and Color" msgstr "Concordancia de brillo y color" -#: f.combine.cc:5141 +#: f.combine.cc:5133 msgid "Select image" msgstr "Seleccionar imagen" -#: f.combine.cc:5156 f.combine.cc:6261 +#: f.combine.cc:5148 f.combine.cc:6251 msgid "auto color" msgstr "color automático" -#: f.combine.cc:5157 f.combine.cc:6262 +#: f.combine.cc:5149 f.combine.cc:6252 msgid "file color" msgstr "archivo de color" -#: f.combine.cc:5163 f.combine.cc:6268 +#: f.combine.cc:5155 f.combine.cc:6258 msgid "mouse warp" msgstr "corregir con ratón" -#: f.combine.cc:5166 +#: f.combine.cc:5158 msgid "curved image" msgstr "imagen curva" -#: f.combine.cc:5579 +#: f.combine.cc:5568 msgid "" "Drag images into rough alignment.\n" "To rotate, drag from right edge." @@ -952,11 +990,11 @@ "Arrastre las imágenes para un alineado aproximado.\n" "Para girar, arrastre desde el borde derecho." -#: f.combine.cc:6482 +#: f.combine.cc:6469 msgid "pano tools (hugin) not installed" msgstr "Pano Tools (Hugin) no instalado" -#: f.combine.cc:6491 +#: f.combine.cc:6478 msgid "Select at least 2 files" msgstr "Seleccione el menos 2 archivos" @@ -969,241 +1007,241 @@ msgid "Minor rotate: drag right edge with mouse" msgstr "Giro : arrastrar al lado derecho con el ratón" -#: f.edit.cc:167 f.widgets.cc:431 f.widgets.cc:670 +#: f.edit.cc:171 f.widgets.cc:432 f.widgets.cc:675 msgid "Trim/Rotate" msgstr "Recortar/Girar" -#: f.edit.cc:179 f.edit.cc:577 +#: f.edit.cc:183 f.edit.cc:585 msgid "ratio" msgstr "relación" -#: f.edit.cc:183 +#: f.edit.cc:187 msgid "trim size:" msgstr "tamaño de recorte:" -#: f.edit.cc:188 +#: f.edit.cc:192 msgid "Lock Ratio" msgstr "Bloquear la relación" -#: f.edit.cc:193 +#: f.edit.cc:197 msgid "Customize" msgstr "Personalizar" -#: f.edit.cc:201 +#: f.edit.cc:205 msgid "Rotate: degrees" msgstr "Girar : grados" -#: f.edit.cc:203 +#: f.edit.cc:207 msgid "auto-trim" msgstr "recorte automático" -#: f.edit.cc:573 +#: f.edit.cc:581 msgid "Trim Buttons" msgstr "Botones de recorte" -#: f.edit.cc:576 +#: f.edit.cc:584 msgid "label" msgstr "etiqueta" -#: f.edit.cc:1394 +#: f.edit.cc:1405 msgid "Upright Image" msgstr "Enderezar imagen" -#: f.edit.cc:1458 +#: f.edit.cc:1469 msgid "rotation unknown" msgstr "giro desconocido" -#: f.edit.cc:2009 f.widgets.cc:435 f.widgets.cc:674 +#: f.edit.cc:2020 f.widgets.cc:436 f.widgets.cc:679 msgid "Retouch Combo" msgstr "Retocar luz y color" -#: f.edit.cc:2030 +#: f.edit.cc:2041 msgid "Amplifier" msgstr "Amplificar" -#: f.edit.cc:2031 fotoxx.h:1079 +#: f.edit.cc:2042 fotoxx.h:1087 msgid "Brightness" msgstr "Brillo" -#: f.edit.cc:2032 fotoxx.h:1087 +#: f.edit.cc:2043 fotoxx.h:1095 msgid "Contrast" msgstr "Contraste" -#: f.edit.cc:2033 +#: f.edit.cc:2044 msgid "Low Color" msgstr "Color" -#: f.edit.cc:2034 +#: f.edit.cc:2045 msgid "Warmer" msgstr "Calidez" -#: f.edit.cc:2035 f.effects.cc:1009 +#: f.edit.cc:2046 f.effects.cc:1010 msgid "Dark Areas" msgstr "Sombras" -#: f.edit.cc:2044 +#: f.edit.cc:2055 msgid "Max." msgstr "Max" -#: f.edit.cc:2045 f.edit.cc:2046 f.edit.cc:2047 +#: f.edit.cc:2056 f.edit.cc:2057 f.edit.cc:2058 msgid "High" msgstr "+" -#: f.edit.cc:2048 +#: f.edit.cc:2059 msgid "Cooler" msgstr "Frio" -#: f.edit.cc:2049 +#: f.edit.cc:2060 msgid "Bright" msgstr "Luces" -#: f.edit.cc:2052 f.tools.cc:1595 +#: f.edit.cc:2063 f.tools.cc:1621 msgid "Brightness Distribution" msgstr "Distribución del brillo" -#: f.edit.cc:2055 +#: f.edit.cc:2066 msgid "Click for white balance or black level" msgstr "Clic para balance de blancos o punto negro" -#: f.edit.cc:2058 +#: f.edit.cc:2069 msgid "Settings File" msgstr "Ajustes" -#: f.edit.cc:2062 +#: f.edit.cc:2073 msgid "recall previous settings used" msgstr "recuperar ajustes previamente usados" -#: f.edit.cc:2764 +#: f.edit.cc:2775 msgid "Adjust Brightness Distribution" msgstr "Ajustar histograma" -#: f.edit.cc:2801 +#: f.edit.cc:2812 msgid "Low Cutoff" msgstr "Corte bajo" -#: f.edit.cc:2802 +#: f.edit.cc:2813 msgid "High Cutoff" msgstr "Corte alto" -#: f.edit.cc:2803 +#: f.edit.cc:2814 msgid "Low Flatten" msgstr "Aplanado bajo" -#: f.edit.cc:2804 +#: f.edit.cc:2815 msgid "Mid Flatten" msgstr "Aplanado medio" -#: f.edit.cc:2805 +#: f.edit.cc:2816 msgid "High Flatten" msgstr "Aplanado alto" -#: f.edit.cc:2806 +#: f.edit.cc:2817 msgid "Low Stretch" msgstr "Tramo bajo" -#: f.edit.cc:2807 +#: f.edit.cc:2818 msgid "Mid Stretch" msgstr "Tramo medio" -#: f.edit.cc:2808 +#: f.edit.cc:2819 msgid "High Stretch" msgstr "Tramo alto" -#: f.edit.cc:3138 +#: f.edit.cc:3149 msgid "Zonal Flatten Brightness" msgstr "Aplanar brillo zonal" -#: f.edit.cc:3169 +#: f.edit.cc:3180 msgid "Zones" msgstr "Zonas" -#: f.edit.cc:3176 +#: f.edit.cc:3187 msgid "Deband Dark" msgstr "Eliminar bandas oscuras" -#: f.edit.cc:3179 +#: f.edit.cc:3190 msgid "Deband Bright" msgstr "Eliminar bandas brillantes" -#: f.edit.cc:3624 f.widgets.cc:438 f.widgets.cc:677 +#: f.edit.cc:3635 f.widgets.cc:439 f.widgets.cc:682 msgid "Tone Mapping" msgstr "Mapeo de tonos" -#: f.edit.cc:3653 +#: f.edit.cc:3664 msgid "low" msgstr "bajo" -#: f.edit.cc:3655 +#: f.edit.cc:3666 msgid "high" msgstr "alto" -#: f.edit.cc:3658 +#: f.edit.cc:3669 msgid "Amplify" msgstr "Ampliar" -#: f.edit.cc:4033 +#: f.edit.cc:4044 msgid "Lock aspect ratio" msgstr "Bloquear la relación de aspecto" -#: f.edit.cc:4055 +#: f.edit.cc:4066 msgid "Resize Image" msgstr "Redimensionar imagen" -#: f.edit.cc:4232 f.widgets.cc:440 +#: f.edit.cc:4243 f.widgets.cc:441 msgid "Flip" msgstr "Voltear" -#: f.edit.cc:4338 +#: f.edit.cc:4349 msgid "+Version" msgstr "+Version" -#: f.edit.cc:4361 +#: f.edit.cc:4372 msgid "Write Text on Image" msgstr "Escribir un texto sobre la imagen" -#: f.edit.cc:4362 +#: f.edit.cc:4373 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 eliminar" -#: f.edit.cc:4411 f.mashup.cc:2437 +#: f.edit.cc:4422 f.mashup.cc:2437 msgid "Text" msgstr "Texto" -#: f.edit.cc:4416 +#: f.edit.cc:4427 msgid "Use metadata key" msgstr "Usar clave de metadatos" -#: f.edit.cc:4421 +#: f.edit.cc:4432 msgid "Use text file" msgstr "Usar archivo e texto" -#: f.edit.cc:4440 f.mashup.cc:2455 +#: f.edit.cc:4451 f.mashup.cc:2455 msgid "text" msgstr "texto" -#: f.edit.cc:4441 f.edit.cc:5279 f.mashup.cc:2456 f.mashup.cc:2798 +#: f.edit.cc:4452 f.edit.cc:5290 f.mashup.cc:2456 f.mashup.cc:2798 msgid "backing" msgstr "fondo" -#: f.edit.cc:4442 f.edit.cc:5280 f.mashup.cc:2457 f.mashup.cc:2799 +#: f.edit.cc:4453 f.edit.cc:5291 f.mashup.cc:2457 f.mashup.cc:2799 msgid "outline" msgstr "contorno" -#: f.edit.cc:4443 f.edit.cc:5281 f.mashup.cc:2458 f.mashup.cc:2800 +#: f.edit.cc:4454 f.edit.cc:5292 f.mashup.cc:2458 f.mashup.cc:2800 msgid "shadow" msgstr "sombra" -#: f.edit.cc:4469 +#: f.edit.cc:4480 msgid "save to current file" msgstr "guardar en archivo actual" -#: f.edit.cc:4470 f.file.cc:605 +#: f.edit.cc:4481 f.file.cc:606 msgid "save as new file version" msgstr "guardar como una nueva versión de archivo" -#: f.edit.cc:4471 +#: f.edit.cc:4482 msgid "" "save to current file \n" "open next file with same text" @@ -1211,15 +1249,15 @@ "guardar en archivo actual \n" "abrir próximo archivo con el mismo texto" -#: f.edit.cc:4632 f.mashup.cc:2557 +#: f.edit.cc:4643 f.mashup.cc:2557 f.tools.cc:1060 msgid "select font" msgstr "seleccionar tipo de letra" -#: f.edit.cc:4896 +#: f.edit.cc:4907 msgid "text file is defective" msgstr "archivo de texto defectuoso" -#: f.edit.cc:5219 +#: f.edit.cc:5230 msgid "" "Enter line or arrow properties in dialog, \n" "click/drag on image, right click to remove" @@ -1227,23 +1265,23 @@ "Introducir propiedades de línea/flecha en el diálogo. \n" "clic/arrastrar en la imagen, clic derecho para eliminar" -#: f.edit.cc:5250 +#: f.edit.cc:5261 msgid "Write Line or Arrow on Image" msgstr "Dibujar línea o flecha en la imagen" -#: f.edit.cc:5258 f.mashup.cc:2777 +#: f.edit.cc:5269 f.mashup.cc:2777 msgid "Line length" msgstr "Longitud de línea" -#: f.edit.cc:5265 f.mashup.cc:2784 +#: f.edit.cc:5276 f.mashup.cc:2784 msgid "Arrow head" msgstr "Punta de flecha" -#: f.edit.cc:5278 f.mashup.cc:2797 +#: f.edit.cc:5289 f.mashup.cc:2797 msgid "line" msgstr "linea" -#: f.edit.cc:5307 +#: f.edit.cc:5318 msgid "" "fix line/arrow in layout \n" " start new line/arrow" @@ -1251,11 +1289,11 @@ "corregir línea/flecha en la capa \n" "iniciar nueva línea/flecha" -#: f.edit.cc:5896 f.widgets.cc:443 +#: f.edit.cc:5907 f.widgets.cc:444 msgid "Paint Edits" msgstr "Editar pintando" -#: f.edit.cc:5903 f.edit.cc:6132 fotoxx-15.08.cc:3172 +#: f.edit.cc:5914 f.edit.cc:6143 fotoxx-15.09.cc:3123 msgid "" "Select area cannot be kept.\n" "Continue?" @@ -1263,59 +1301,59 @@ "No se puede conservar la selección de área.\n" "¿Continuar" -#: f.edit.cc:5911 f.edit.cc:6140 f.tools.cc:2127 +#: f.edit.cc:5922 f.edit.cc:6151 f.tools.cc:2147 msgid "Edit function must be active" msgstr "la función de edición debe estar activa" -#: f.edit.cc:5916 +#: f.edit.cc:5927 msgid "Cannot use Paint Edits" msgstr "No se puede usar Editar pintando" -#: f.edit.cc:5945 +#: f.edit.cc:5956 msgid "power: center" msgstr "fuerza: centro" -#: f.edit.cc:5950 +#: f.edit.cc:5961 msgid "reset area" msgstr "restablecer área" -#: f.edit.cc:6125 f.widgets.cc:444 +#: f.edit.cc:6136 f.widgets.cc:445 msgid "Leverage Edits" msgstr "Editar por niveles" -#: f.edit.cc:6126 +#: f.edit.cc:6137 msgid "Edit Function Amplifier" msgstr "Amplificador de la función de edición" -#: f.edit.cc:6145 +#: f.edit.cc:6156 msgid "Cannot use Leverage Edits" msgstr "No se puede usar Edición por niveles" -#: f.edit.cc:6178 +#: f.edit.cc:6189 msgid "minimum" msgstr "sombras" -#: f.edit.cc:6180 +#: f.edit.cc:6191 msgid "maximum" msgstr "luces" -#: f.edit.cc:6481 +#: f.edit.cc:6490 msgid "Edit Plugins" msgstr "Editar complementos (plugins)" -#: f.edit.cc:6482 +#: f.edit.cc:6491 msgid "Edit plugins menu" msgstr "Editar menú de plugins" -#: f.edit.cc:6490 +#: f.edit.cc:6499 msgid "Run as Fotoxx edit function" msgstr "Abrir como una función de edición de Fotoxx" -#: f.edit.cc:6728 +#: f.edit.cc:6737 msgid "Plugin working ..." msgstr "Plugin trabajando ..." -#: f.edit.cc:6737 +#: f.edit.cc:6746 msgid "plugin failed" msgstr "falló el complemento" @@ -1347,7 +1385,7 @@ msgid "Background" msgstr "Fondo" -#: f.effects.cc:713 f.widgets.cc:480 +#: f.effects.cc:713 f.widgets.cc:481 msgid "Line Drawing" msgstr "Dibujo con líneas" @@ -1355,201 +1393,201 @@ msgid "black/white" msgstr " negro/blanco" -#: f.effects.cc:1003 f.widgets.cc:481 +#: f.effects.cc:1004 f.widgets.cc:482 msgid "Color Drawing" msgstr "Dibujo con colores" -#: f.effects.cc:1010 +#: f.effects.cc:1011 msgid "Bright Areas" msgstr "Luces" -#: f.effects.cc:1264 f.widgets.cc:482 +#: f.effects.cc:1265 f.widgets.cc:483 msgid "Graduated Blur" msgstr "Desenfoque graduado" -#: f.effects.cc:1268 +#: f.effects.cc:1269 msgid "Contrast Limit" msgstr "Límite de contraste" -#: f.effects.cc:1271 f.repair.cc:747 +#: f.effects.cc:1272 f.repair.cc:748 msgid "Blur Radius" msgstr "Radio de desenfoque" -#: f.effects.cc:1485 +#: f.effects.cc:1486 msgid "Simulate Embossing" msgstr "Simular relieve" -#: f.effects.cc:1502 +#: f.effects.cc:1503 msgid "depth" msgstr "profundidad" -#: f.effects.cc:1703 +#: f.effects.cc:1705 msgid "Simulate Tiles" msgstr "Simular un mosaico" -#: f.effects.cc:1707 +#: f.effects.cc:1709 msgid "tile size" msgstr "tamaño de baldosas" -#: f.effects.cc:1710 +#: f.effects.cc:1712 msgid "tile gap" msgstr "separación de baldosas" -#: f.effects.cc:1713 +#: f.effects.cc:1715 msgid "3D depth" msgstr "profundidad 3D" -#: f.effects.cc:1937 +#: f.effects.cc:1939 msgid "Convert Image to Dots" msgstr "Convertir imagen a puntos" -#: f.effects.cc:1941 +#: f.effects.cc:1943 msgid "dot size" msgstr "tamaño del punto" -#: f.effects.cc:2161 +#: f.effects.cc:2168 msgid "Simulate Painting" msgstr "Simular una pintura" -#: f.effects.cc:2165 +#: f.effects.cc:2172 msgid "color depth" msgstr "profundidad de color" -#: f.effects.cc:2169 +#: f.effects.cc:2176 msgid "patch area goal" msgstr "tamaño del área de color " -#: f.effects.cc:2173 +#: f.effects.cc:2180 msgid "req. color match" msgstr "correspondencia de color requerida" -#: f.effects.cc:2177 +#: f.effects.cc:2184 msgid "borders" msgstr "bordes" -#: f.effects.cc:2750 f.widgets.cc:487 +#: f.effects.cc:2757 f.widgets.cc:488 msgid "Vignette" msgstr "Viñetado" -#: f.effects.cc:3118 +#: f.effects.cc:3125 msgid "Add Texture" msgstr "Añadir textura" -#: f.effects.cc:3334 +#: f.effects.cc:3341 msgid "Background Pattern" msgstr "Patrón de fondo" -#: f.effects.cc:3338 +#: f.effects.cc:3345 msgid "Pattern File:" msgstr "Archivo de patrón" -#: f.effects.cc:3343 +#: f.effects.cc:3350 msgid "Geometry" msgstr "Geometría" -#: f.effects.cc:3344 +#: f.effects.cc:3351 msgid "Calculate" msgstr "Calcular" -#: f.effects.cc:3346 +#: f.effects.cc:3353 msgid "Zoom" msgstr "Zoom" -#: f.effects.cc:3357 f.widgets.cc:489 +#: f.effects.cc:3364 f.widgets.cc:490 msgid "Pattern" msgstr "Patrón" -#: f.effects.cc:3364 +#: f.effects.cc:3371 msgid "Overlap" msgstr "Solape" -#: f.effects.cc:3371 +#: f.effects.cc:3378 msgid "Opacity" msgstr "Opacidad" -#: f.effects.cc:3410 +#: f.effects.cc:3417 msgid "choose pattern tile" msgstr "elegir archivo patrón" -#: f.effects.cc:3755 +#: f.effects.cc:3762 msgid "Create Mosaic" msgstr "Crear mosaico" -#: f.effects.cc:3841 +#: f.effects.cc:3848 msgid "Tile" msgstr "Baldosa" -#: f.effects.cc:3849 f.widgets.cc:484 +#: f.effects.cc:3856 f.widgets.cc:485 msgid "Tiles" msgstr "Baldosas" -#: f.effects.cc:3855 +#: f.effects.cc:3862 msgid "Tile blending" msgstr "Mezcla de baldosas" -#: f.effects.cc:3935 +#: f.effects.cc:3942 #, c-format msgid "exceeded max. tiles: %d" msgstr "excedido max. baldosas: %d" -#: f.effects.cc:3950 +#: f.effects.cc:3957 #, c-format msgid "only %d tile images found" msgstr "encontradas sólo %d imágenes de baldosas" -#: f.effects.cc:4326 f.widgets.cc:491 +#: f.effects.cc:4333 f.widgets.cc:492 msgid "Custom Kernel" msgstr "Matriz de convolución" -#: f.effects.cc:4330 +#: f.effects.cc:4337 msgid "Kernel size" msgstr "Tamaño de matriz" -#: f.effects.cc:4335 +#: f.effects.cc:4342 msgid "Divisor" msgstr "Divisor" -#: f.effects.cc:4340 +#: f.effects.cc:4347 msgid "Data file" msgstr "Archivo de datos" -#: f.effects.cc:4606 f.widgets.cc:492 +#: f.effects.cc:4611 f.widgets.cc:493 msgid "Make Waves" msgstr "Ondas" -#: f.effects.cc:4613 +#: f.effects.cc:4618 msgid "wavelength" msgstr "longitud de onda" -#: f.effects.cc:4614 +#: f.effects.cc:4619 msgid "amplitude" msgstr "amplitud" -#: f.effects.cc:4615 +#: f.effects.cc:4620 msgid "variance" msgstr "varianza" -#: f.effects.cc:4626 +#: f.effects.cc:4631 msgid "perspective" msgstr "perspectiva" -#: f.effects.cc:4800 +#: f.effects.cc:4805 msgid "Pull image using the mouse." msgstr "Empujar imagen usando el ratón" -#: f.effects.cc:4821 f.widgets.cc:493 +#: f.effects.cc:4826 f.widgets.cc:494 msgid "Directed Blur" msgstr "Desenfoque direccional" -#: f.effects.cc:4825 +#: f.effects.cc:4830 msgid "blur span" msgstr "cantidad de desnfoque" -#: f.effects.cc:4828 +#: f.effects.cc:4833 msgid "intensity" msgstr "intensidad" -#: f.file.cc:247 +#: f.file.cc:248 msgid "" "use EXIF photo date or \n" " file modification date" @@ -1557,103 +1595,103 @@ "usar fecha EXIF de la foto o \n" "facha de modificación del archivo" -#: f.file.cc:264 f.widgets.cc:560 +#: f.file.cc:265 f.widgets.cc:565 msgid "File" msgstr "Archivo" -#: f.file.cc:357 f.file.cc:1483 f.file.cc:1622 +#: f.file.cc:358 f.file.cc:1487 f.file.cc:1626 msgid "no more images" msgstr "no hay más imágenes" -#: f.file.cc:417 +#: f.file.cc:418 msgid "UFraw not installed" msgstr "UFRaw no instalado" -#: f.file.cc:433 f.widgets.cc:679 +#: f.file.cc:434 f.widgets.cc:684 msgid "Open RAW file (ufraw)" msgstr "Abrir archivo RAW (ufraw)" -#: f.file.cc:438 f.file.cc:509 +#: f.file.cc:439 f.file.cc:510 msgid "RAW type not registered in User Settings" msgstr "Formato RAW no registrado en las preferencias de usuario" -#: f.file.cc:504 f.widgets.cc:680 +#: f.file.cc:505 f.widgets.cc:685 msgid "Open RAW file (Raw Therapee)" msgstr "Abrir archivo RAW con RawTherapee" -#: f.file.cc:587 +#: f.file.cc:588 msgid "Save Image File" msgstr "Guardar imagen" -#: f.file.cc:597 +#: f.file.cc:598 msgid "new version" msgstr "nueva versión" -#: f.file.cc:598 +#: f.file.cc:599 msgid "new file" msgstr "nuevo archivo" -#: f.file.cc:599 +#: f.file.cc:600 msgid "replace file" msgstr "reemplazar archivo" -#: f.file.cc:606 f.file.cc:2281 +#: f.file.cc:607 f.file.cc:2344 msgid "save as new file name or type" msgstr "guardar como un nuevo nombre o tipo de archivo" -#: f.file.cc:608 +#: f.file.cc:609 msgid "replace old file (OVERWRITE)" msgstr "reemplazar archivo antiguo (SOBREESCRIBIR)" -#: f.file.cc:646 f.file.cc:2071 +#: f.file.cc:647 f.file.cc:2124 msgid "cannot save as RAW type" msgstr "no se puede guardar como RAW" -#: f.file.cc:773 f.widgets.cc:396 +#: f.file.cc:774 f.widgets.cc:395 msgid "Rename Image File" msgstr "Renombrar archivo de imagen" -#: f.file.cc:780 +#: f.file.cc:781 msgid "Old Name" msgstr "nombre antiguo" -#: f.file.cc:790 +#: f.file.cc:791 msgid "previous name" msgstr "nombre anterior" -#: f.file.cc:791 +#: f.file.cc:792 msgid "add 1" msgstr "añadir 1" -#: f.file.cc:946 +#: f.file.cc:950 msgid "Create Blank Image" msgstr "Crear una imagen vacía" -#: f.file.cc:948 +#: f.file.cc:952 msgid "file name" msgstr "nombre de archivo" -#: f.file.cc:982 +#: f.file.cc:986 msgid "supply a file name" msgstr "proporcionar un nombre de archivo" -#: f.file.cc:1114 +#: f.file.cc:1118 msgid "Copy Image File" msgstr "Copiar imagen" -#: f.file.cc:1115 +#: f.file.cc:1119 msgid "Move Image File" msgstr "Mover imagen" -#: f.file.cc:1158 +#: f.file.cc:1162 msgid "new location" msgstr "nueva ubicación" -#: f.file.cc:1228 +#: f.file.cc:1232 msgid "new location is not a directory" msgstr "la nueva ubicación no es un directorio" -#: f.file.cc:1270 f.file.cc:1467 f.file.cc:1605 +#: f.file.cc:1274 f.file.cc:1471 f.file.cc:1609 #, c-format msgid "" "delete failed: \n" @@ -1662,15 +1700,15 @@ "fallo al borrar: \n" " %s" -#: f.file.cc:1312 f.widgets.cc:398 +#: f.file.cc:1316 f.widgets.cc:397 msgid "Trash Image File" msgstr "Enviar imagen a la papelera" -#: f.file.cc:1313 f.file.cc:1520 +#: f.file.cc:1317 f.file.cc:1524 msgid "(automatic step to next image)" msgstr "(pase automático a la nueva imagen)" -#: f.file.cc:1381 +#: f.file.cc:1385 msgid "" "Linux standard trash does not work. \n" "Desktop trash folder will be created." @@ -1678,7 +1716,7 @@ "La papelera estándar de Linux no funciona. \n" "Se creará una carpeta de papelera en el escritorio." -#: f.file.cc:1384 +#: f.file.cc:1388 msgid "" "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" @@ -1686,49 +1724,99 @@ "Las papeleras de Linux y de escritorio no funcionan. \n" "¿Borrar permanentemente la imagen" -#: f.file.cc:1387 +#: f.file.cc:1391 #, c-format msgid "Cannot create trash folder: %s" msgstr "No se puede crear la carpeta de papelera: %s" -#: f.file.cc:1399 +#: f.file.cc:1403 msgid "Move read-only file to trash?" msgstr "¿Enviar el archivo de solo lectura a la papelera?" -#: f.file.cc:1454 +#: f.file.cc:1458 #, c-format msgid "error: %s" msgstr "error: %s" -#: f.file.cc:1519 +#: f.file.cc:1523 msgid "Delete Image File - CANNOT BE REVERSED" msgstr "Borrar archivo de imagen - NO SE PUEDE REVERTIR" -#: f.file.cc:1595 +#: f.file.cc:1599 msgid "Delete read-only file?" msgstr "¿Borrar archivo de sólo lectura?" -#: f.file.cc:1911 f.widgets.cc:390 +#: f.file.cc:1820 f.widgets.cc:547 +msgid "Quick Start" +msgstr "Referencia rápida" + +#: f.file.cc:1823 f.widgets.cc:548 +msgid "User Guide" +msgstr "Guia de usuario" + +#: f.file.cc:1826 f.widgets.cc:549 +msgid "User Guide Changes" +msgstr "Cambios en la guía de usuario" + +#: f.file.cc:1829 f.widgets.cc:551 +msgid "README" +msgstr "LÉAME" + +#: f.file.cc:1832 f.widgets.cc:550 +msgid "Edit Functions Summary" +msgstr "Resumen de las funciones de edición" + +#: f.file.cc:1835 f.widgets.cc:552 +msgid "Change Log" +msgstr "Registro de cambios" + +#: f.file.cc:1838 f.widgets.cc:553 +msgid "Log File" +msgstr "Archivo de registro" + +#: f.file.cc:1841 f.widgets.cc:554 +msgid "Translations" +msgstr "Traducciones" + +#: f.file.cc:1844 f.widgets.cc:555 +msgid "Home Page" +msgstr "Página web" + +#: f.file.cc:1847 f.widgets.cc:556 +msgid "About" +msgstr "Acerca de" + +#: f.file.cc:1851 f.widgets.cc:577 f.widgets.cc:599 fotoxx.h:1119 +msgid "Help" +msgstr "Ayuda" + +#: f.file.cc:1961 f.widgets.cc:389 msgid "Open Image File" msgstr "Abrir archivo de imagen" -#: f.file.cc:1929 +#: f.file.cc:1979 msgid "unknown file type" msgstr "tipo de archivo desconocido" -#: f.file.cc:2197 +#: f.file.cc:2117 +msgid "" +"Transparency map will be lost.\n" +"save to PNG file to retain." +msgstr "" + +#: f.file.cc:2260 msgid "Unable to copy EXIF/IPTC data" msgstr "No se pueden copiar los datos EXIF/IPTC" -#: f.file.cc:2297 +#: f.file.cc:2360 msgid "make current" msgstr "hacer actual" -#: f.file.cc:2390 +#: f.file.cc:2453 msgid "jpeg quality must be 1-100" msgstr "la calidad de JPEG debe ser 1-100" -#: f.file.cc:2417 +#: f.file.cc:2480 #, c-format msgid "" "Overwrite file? \n" @@ -1737,138 +1825,138 @@ "¿Sobreescribir archivo? \n" " %s" -#: f.file.cc:2669 f.file.cc:2738 +#: f.file.cc:2732 f.file.cc:2801 #, c-format msgid "file not found: %s" msgstr "archivo no encontrado: %s" -#: f.file.cc:2675 f.file.cc:2744 +#: f.file.cc:2738 f.file.cc:2807 #, c-format msgid "file type not supported: %s" msgstr "tipo de archivo no soportado: %s" -#: f.gallery.cc:921 f.gallery.cc:1010 f.widgets.cc:592 +#: f.gallery.cc:911 f.gallery.cc:1000 f.widgets.cc:597 msgid "Scroll" msgstr "Desplazar" -#: f.gallery.cc:925 +#: f.gallery.cc:915 msgid "Sync" msgstr "Sync" -#: f.gallery.cc:935 f.repair.cc:5783 f.repair.cc:5788 fotoxx.h:1132 +#: f.gallery.cc:925 f.repair.cc:5779 f.repair.cc:5784 fotoxx.h:1140 msgid "Open" msgstr "Abrir" -#: f.gallery.cc:936 +#: f.gallery.cc:926 msgid "change directory" msgstr "cambiar directorio" -#: f.gallery.cc:944 +#: f.gallery.cc:934 msgid "GoTo" msgstr "Ir a" -#: f.gallery.cc:950 f.widgets.cc:587 +#: f.gallery.cc:940 f.widgets.cc:592 msgid "Sort" msgstr "Ordenar" -#: f.gallery.cc:956 f.gallery.cc:1528 f.gallery.cc:1529 f.gallery.cc:1531 -#: f.widgets.cc:585 +#: f.gallery.cc:946 f.gallery.cc:1510 f.gallery.cc:1511 f.gallery.cc:1513 +#: f.widgets.cc:590 msgid "Zoom+" msgstr "Zoom +" -#: f.gallery.cc:966 f.gallery.cc:1530 f.gallery.cc:1532 f.widgets.cc:586 +#: f.gallery.cc:956 f.gallery.cc:1512 f.gallery.cc:1514 f.widgets.cc:591 msgid "Zoom-" msgstr "Zoom -" -#: f.gallery.cc:978 f.gallery.cc:1536 +#: f.gallery.cc:968 f.gallery.cc:1518 msgid "Row↑" msgstr "Fila ↑" -#: f.gallery.cc:986 f.gallery.cc:1537 +#: f.gallery.cc:976 f.gallery.cc:1519 msgid "Row↓" msgstr "Fila ↓" -#: f.gallery.cc:994 f.gallery.cc:1534 f.gallery.cc:1541 f.widgets.cc:590 +#: f.gallery.cc:984 f.gallery.cc:1516 f.gallery.cc:1523 f.widgets.cc:595 msgid "Page↑" msgstr "Página ↑" -#: f.gallery.cc:1002 f.gallery.cc:1535 f.gallery.cc:1542 f.widgets.cc:591 +#: f.gallery.cc:992 f.gallery.cc:1517 f.gallery.cc:1524 f.widgets.cc:596 msgid "Page↓" msgstr "Página ↓" -#: f.gallery.cc:1016 f.gallery.cc:1539 f.widgets.cc:588 +#: f.gallery.cc:1006 f.gallery.cc:1521 f.widgets.cc:593 msgid "First" msgstr "Primera" -#: f.gallery.cc:1017 f.gallery.cc:1540 f.widgets.cc:589 +#: f.gallery.cc:1007 f.gallery.cc:1522 f.widgets.cc:594 msgid "Last" msgstr "Última" -#: f.gallery.cc:1134 +#: f.gallery.cc:1120 msgid "Choose image directory" msgstr "Elegir directorio de imagen" -#: f.gallery.cc:1141 f.gallery.cc:1155 +#: f.gallery.cc:1127 f.gallery.cc:1141 msgid "recent" msgstr "reciente" -#: f.gallery.cc:1142 f.gallery.cc:1160 +#: f.gallery.cc:1128 f.gallery.cc:1146 msgid "newest" msgstr "más reciente" -#: f.gallery.cc:1224 +#: f.gallery.cc:1210 msgid "no albums found" msgstr "no se han encontrado albums" -#: f.gallery.cc:1231 +#: f.gallery.cc:1217 msgid "Choose album" msgstr "Elegir álbum" -#: f.gallery.cc:1281 +#: f.gallery.cc:1267 msgid "Gallery Sort" msgstr "Ordenar galería " -#: f.gallery.cc:1285 +#: f.gallery.cc:1271 msgid "File Name" msgstr "Nombre de archivo" -#: f.gallery.cc:1286 +#: f.gallery.cc:1272 msgid "File Mod Date/Time" msgstr "Modo de archivo Fecha/Hora" -#: f.gallery.cc:1287 +#: f.gallery.cc:1273 msgid "Photo Date/Time (EXIF)" msgstr "Fecha/Hora de la foto (EXIF)" -#: f.gallery.cc:1289 +#: f.gallery.cc:1275 msgid "ascending" msgstr "ascendente" -#: f.gallery.cc:1290 +#: f.gallery.cc:1276 msgid "descending" msgstr "descendente" -#: f.gallery.cc:2244 fotoxx.h:1157 +#: f.gallery.cc:2213 fotoxx.h:1165 msgid "Select Files" msgstr "Seleccionar archivos" -#: f.gallery.cc:2716 +#: f.gallery.cc:2684 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.gallery.cc:2742 f.gallery.cc:2990 +#: f.gallery.cc:2710 f.gallery.cc:2958 msgid "Edit Bookmarks" msgstr "Añadir marcadores" -#: f.gallery.cc:2917 +#: f.gallery.cc:2885 msgid "unable to save bookmarks file" msgstr "incapaz de guardar archivo de marcadores" -#: f.gallery.cc:2990 +#: f.gallery.cc:2958 msgid "Go To Bookmark" msgstr "Ir a un marcador" -#: f.gallery.cc:3047 f.meta.cc:2732 f.repair.cc:7410 +#: f.gallery.cc:3015 f.meta.cc:2772 f.repair.cc:7407 msgid "file not found" msgstr "archivo no encontrado" @@ -2062,7 +2150,7 @@ msgid "Hard" msgstr "Fuerte" -#: f.mashup.cc:1304 f.repair.cc:5378 +#: f.mashup.cc:1304 f.repair.cc:5375 msgid "Blend" msgstr "Mezclar" @@ -2078,7 +2166,7 @@ msgid "Gradual" msgstr "Gradual" -#: f.mashup.cc:1580 fotoxx.h:1136 +#: f.mashup.cc:1580 fotoxx.h:1144 msgid "Power" msgstr "Fuerza" @@ -2137,123 +2225,127 @@ msgid "exceeded %d line entries" msgstr "excedidas %d entradas de línea" -#: f.meta.cc:179 f.widgets.cc:657 +#: f.meta.cc:179 f.widgets.cc:662 msgid "View Metadata" msgstr "Ver metadatos" -#: f.meta.cc:420 f.meta.cc:1756 f.widgets.cc:408 f.widgets.cc:658 +#: f.meta.cc:419 f.meta.cc:1796 f.widgets.cc:407 f.widgets.cc:663 msgid "Edit Metadata" msgstr "Editar metadatos" -#: f.meta.cc:430 +#: f.meta.cc:422 f.meta.cc:3748 +msgid "save metadata to file" +msgstr "" + +#: f.meta.cc:431 msgid "Image Date" msgstr "Fecha de la imagen" -#: f.meta.cc:433 +#: f.meta.cc:434 msgid "Time" msgstr "Hora" -#: f.meta.cc:439 +#: f.meta.cc:440 msgid "Rating (stars):" msgstr "Calificación (estrellas)" -#: f.meta.cc:451 +#: f.meta.cc:452 msgid "Caption" msgstr "Título" -#: f.meta.cc:457 +#: f.meta.cc:458 msgid "Comments" msgstr "Comentarios" -#: f.meta.cc:465 +#: f.meta.cc:466 msgid "Enter New Tag" msgstr "Introduzca nueva etiqueta" -#: f.meta.cc:472 f.meta.cc:4889 +#: f.meta.cc:473 f.meta.cc:4930 msgid "Matching Tags" msgstr "Construyendo etiquetas" -#: f.meta.cc:480 +#: f.meta.cc:481 msgid "Image Tags" msgstr "Etiquetas de la imagen" -#: f.meta.cc:486 +#: f.meta.cc:487 msgid "Recent Tags" msgstr "etiquetas recientes" -#: f.meta.cc:495 f.meta.cc:1978 f.meta.cc:4896 +#: f.meta.cc:496 f.meta.cc:2018 f.meta.cc:4937 msgid "Defined Tags Category" msgstr "Categoría de etiquetas definida" -#: f.meta.cc:886 +#: f.meta.cc:887 msgid "date format is YYYY-MM-DD" msgstr "Formato de fecha es AAAA-MM-DD" -#: f.meta.cc:890 +#: f.meta.cc:891 msgid "date is invalid" msgstr "fecha no válida" -#: f.meta.cc:924 +#: f.meta.cc:925 msgid "time format is HH:MM [:SS]" msgstr "formato de hora es HH:MM [:SS]" -#: f.meta.cc:928 +#: f.meta.cc:929 msgid "time is invalid" msgstr "hora no válida" -#: f.meta.cc:974 fotoxx.h:1121 +#: f.meta.cc:1014 fotoxx.h:1129 msgid "Manage Tags" msgstr "Administrar etiquetas" -#: f.meta.cc:974 +#: f.meta.cc:1014 msgid "orphan tags" msgstr "etiquetas huérfanas" -#: f.meta.cc:978 +#: f.meta.cc:1018 msgid "category" msgstr "categoria" -#: f.meta.cc:981 +#: f.meta.cc:1021 msgid "tag" msgstr "etiqueta" -#: f.meta.cc:988 +#: f.meta.cc:1028 msgid "Defined Tags:" msgstr "etiquetas definidas:" -#: f.meta.cc:1760 f.meta.cc:2418 +#: f.meta.cc:1800 f.meta.cc:2458 msgid "key name" msgstr "nombre clave" -#: f.meta.cc:1762 f.meta.cc:2419 +#: f.meta.cc:1802 f.meta.cc:2459 msgid "key value" msgstr "valor clave" -#: f.meta.cc:1849 f.widgets.cc:410 +#: f.meta.cc:1889 f.widgets.cc:409 msgid "Delete Metadata" msgstr "Borrar metadatos" -#: f.meta.cc:1851 fotoxx.h:1070 +#: f.meta.cc:1891 fotoxx.h:1078 msgid "All" msgstr "Todo" -#: f.meta.cc:1852 +#: f.meta.cc:1892 msgid "One Key:" msgstr "Una clave:" -#: f.meta.cc:1955 f.widgets.cc:411 f.widgets.cc:530 +#: f.meta.cc:1995 f.widgets.cc:410 f.widgets.cc:533 msgid "Batch Add/Remove Tags" msgstr "Añadir/eliminar etiquetas en lote" -#: f.meta.cc:1966 +#: f.meta.cc:2006 msgid "tags to add" msgstr "etiquetas para añadir" -#: f.meta.cc:1967 +#: f.meta.cc:2007 msgid "tags to remove" msgstr "etquetas para eliminar" -#: f.meta.cc:2051 +#: f.meta.cc:2091 #, c-format msgid "" "%s \n" @@ -2262,15 +2354,15 @@ "%s \n" " demasiadas etiquetas" -#: f.meta.cc:2166 +#: f.meta.cc:2206 msgid "specify files and tags" msgstr "especificar archivos y etiquetas" -#: f.meta.cc:2226 +#: f.meta.cc:2266 msgid "tag names file" msgstr "archgivo de nombres de etiqueta" -#: f.meta.cc:2298 +#: f.meta.cc:2338 #, c-format msgid "" "%d tags to rename \n" @@ -2281,32 +2373,32 @@ "en %d imágenes. \n" "¿Proceder?" -#: f.meta.cc:2409 +#: f.meta.cc:2449 msgid "Batch Metadata" msgstr "Metadatos en lote" -#: f.meta.cc:2455 +#: f.meta.cc:2495 msgid "enter key names" msgstr "entrar nombres clave" -#: f.meta.cc:2461 fotoxx.h:1129 +#: f.meta.cc:2501 fotoxx.h:1137 msgid "no files selected" msgstr "no hay archivos seleccionados" -#: f.meta.cc:3164 f.meta.cc:3899 f.meta.cc:4163 +#: f.meta.cc:3204 f.meta.cc:3940 f.meta.cc:4204 #, c-format msgid "bad latitude/longitude: %s %s" msgstr "latitud/longitud incorrecta: %s %s" -#: f.meta.cc:3207 f.meta.cc:3571 f.meta.cc:4372 f.meta.cc:4780 +#: f.meta.cc:3247 f.meta.cc:3611 f.meta.cc:4413 f.meta.cc:4821 msgid "-noindex in use, disabled" msgstr "-noindex en uso, ​deshabilitar" -#: f.meta.cc:3223 +#: f.meta.cc:3263 msgid "choose map file" msgstr "elegir archivo de mapas" -#: f.meta.cc:3332 +#: f.meta.cc:3372 msgid "" "fotoxx-maps package not installed \n" "(see http://kornelix.com/packages and /tarballs)" @@ -2314,12 +2406,12 @@ "no instalado paquete de mapas de fotox \n" "(ver http://kornelix.com/packages y /tarballs" -#: f.meta.cc:3337 +#: f.meta.cc:3377 #, c-format msgid "map file %s is missing" msgstr "necesario archivo de mapas %s" -#: f.meta.cc:3341 +#: f.meta.cc:3381 #, c-format msgid "" "map latitude/longitude data unreasonable \n" @@ -2328,39 +2420,39 @@ "datos de latitud/longitud no consistentes \n" " %.3f %.3f %.3f %.3f" -#: f.meta.cc:3620 +#: f.meta.cc:3660 msgid "No matching images found" msgstr "No encontradas imagenes coincidentes" -#: f.meta.cc:3660 +#: f.meta.cc:3700 msgid "search range (km)" msgstr "buscar en un rango (km)" -#: f.meta.cc:3693 f.widgets.cc:414 f.widgets.cc:659 +#: f.meta.cc:3733 f.widgets.cc:413 f.widgets.cc:664 msgid "Edit Geotags" msgstr "Editar Geoetiquetas" -#: f.meta.cc:3694 +#: f.meta.cc:3734 msgid "Geocoding web service courtesy of" msgstr "Servicio web de geocódigos cortesía de" -#: f.meta.cc:3709 f.meta.cc:3949 f.meta.cc:5655 +#: f.meta.cc:3750 f.meta.cc:3990 f.meta.cc:5710 msgid "city" msgstr "ciudad" -#: f.meta.cc:3712 f.meta.cc:3952 f.meta.cc:5658 +#: f.meta.cc:3753 f.meta.cc:3993 f.meta.cc:5713 msgid "country" msgstr "pais" -#: f.meta.cc:3794 f.meta.cc:4080 +#: f.meta.cc:3835 f.meta.cc:4121 msgid "city not found" msgstr "ciudad no encontrada" -#: f.meta.cc:3915 f.widgets.cc:415 f.widgets.cc:533 +#: f.meta.cc:3956 f.widgets.cc:414 f.widgets.cc:536 msgid "Batch Add Geotags" msgstr "Añadir geoetiquetas en lote" -#: f.meta.cc:4142 +#: f.meta.cc:4183 msgid "" "data is incomplete \n" " proceed?" @@ -2368,140 +2460,140 @@ "los datos están incompletos \n" " ¿proceder?" -#: f.meta.cc:4199 +#: f.meta.cc:4240 msgid "choose city" msgstr "escoger ciudad" -#: f.meta.cc:4286 +#: f.meta.cc:4327 msgid "not found" msgstr "no encontrada" -#: f.meta.cc:4287 +#: f.meta.cc:4328 msgid "city and country required" msgstr "ciudad y pais requeridos" -#: f.meta.cc:4387 +#: f.meta.cc:4428 msgid "Report Geotag Groups" msgstr "Informe de grupos de etiquetas" -#: f.meta.cc:4388 +#: f.meta.cc:4429 msgid "Group by country" msgstr "Agrupar por país" -#: f.meta.cc:4389 +#: f.meta.cc:4430 msgid "Group by country/city" msgstr "Agrupar por país/ciudad" -#: f.meta.cc:4390 +#: f.meta.cc:4431 msgid "Group by country/city/date" msgstr "Agrupar por país/ciudad/fecha" -#: f.meta.cc:4393 +#: f.meta.cc:4434 msgid "Combine within" msgstr "Combinar dentro" -#: f.meta.cc:4395 +#: f.meta.cc:4436 msgid "days" msgstr "dias" -#: f.meta.cc:4511 +#: f.meta.cc:4552 msgid "geotag groups" msgstr "grupos de geoetiquetas" -#: f.meta.cc:4817 +#: f.meta.cc:4858 msgid "Search Image Metadata" msgstr "Buscar los metadatos de la imagen" -#: f.meta.cc:4821 +#: f.meta.cc:4862 msgid "images to search:" msgstr "imágenes a buscar:" -#: f.meta.cc:4822 +#: f.meta.cc:4863 msgid "all" msgstr "todo" -#: f.meta.cc:4823 +#: f.meta.cc:4864 msgid "current set only" msgstr "sólo selección actual" -#: f.meta.cc:4826 +#: f.meta.cc:4867 msgid "matching images:" msgstr "imágenes coincidentes" -#: f.meta.cc:4827 +#: f.meta.cc:4868 msgid "new set" msgstr "nueva selección" -#: f.meta.cc:4828 +#: f.meta.cc:4869 msgid "add to set" msgstr "añadir a la selección" -#: f.meta.cc:4829 +#: f.meta.cc:4870 msgid "remove" msgstr "eliminar" -#: f.meta.cc:4832 +#: f.meta.cc:4873 msgid "report type:" msgstr "tipo de imforme:" -#: f.meta.cc:4833 +#: f.meta.cc:4874 msgid "gallery" msgstr "galería" -#: f.meta.cc:4834 fotoxx-15.08.cc:801 +#: f.meta.cc:4875 fotoxx-15.09.cc:781 msgid "metadata" msgstr "metadatos" -#: f.meta.cc:4840 +#: f.meta.cc:4881 msgid "date range" msgstr "rango de fechas" -#: f.meta.cc:4841 +#: f.meta.cc:4882 msgid "stars range" msgstr "rango de estrellas" -#: f.meta.cc:4842 +#: f.meta.cc:4883 msgid "search tags" msgstr "buscar etiquetas" -#: f.meta.cc:4843 +#: f.meta.cc:4884 msgid "search text" msgstr "buscar texto" -#: f.meta.cc:4844 +#: f.meta.cc:4885 msgid "search files" msgstr "buscar archivos" -#: f.meta.cc:4849 +#: f.meta.cc:4890 msgid "(yyyymmdd)" msgstr "(aaaammdd)" -#: f.meta.cc:4854 +#: f.meta.cc:4895 msgid "last version only" msgstr "sólo última versión" -#: f.meta.cc:4856 +#: f.meta.cc:4897 msgid "all/any" msgstr "todo/cualquiera" -#: f.meta.cc:4875 +#: f.meta.cc:4916 msgid "other criteria" msgstr "otro criterio" -#: f.meta.cc:4879 +#: f.meta.cc:4920 msgid "other" msgstr "otro" -#: f.meta.cc:4885 +#: f.meta.cc:4926 msgid "Enter Search Tag" msgstr "Introducir etiqueta de búsqueda" -#: f.meta.cc:5179 +#: f.meta.cc:5221 #, c-format msgid "not a defined tag: %s" msgstr "no está definida la etiqueta: %s" -#: f.meta.cc:5210 +#: f.meta.cc:5252 msgid "" "to remove images from current set, \n" "search current set" @@ -2509,7 +2601,7 @@ "para eliminar imágenes de la selección actual, \n" "buscar en la selección actual" -#: f.meta.cc:5217 +#: f.meta.cc:5259 msgid "" "to add images to current set, \n" "search all images" @@ -2517,32 +2609,39 @@ "para añadir imágenes a la selección actual, \n" "buscar en todas las imágenes" -#: f.meta.cc:5266 +#: f.meta.cc:5303 +#, c-format +msgid "" +"search dates not reasonable \n" +" %s %s" +msgstr "" + +#: f.meta.cc:5321 msgid "stars range not reasonable" msgstr "rango de estrellas no razonable" -#: f.meta.cc:5511 +#: f.meta.cc:5566 #, 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:5514 +#: f.meta.cc:5569 msgid "no changes made" msgstr "no se han efectuado cambios" -#: f.meta.cc:5652 +#: f.meta.cc:5707 msgid "Add Geotags Search Criteria" msgstr "Añadir criterios de búsqueda de geoetiquetas" -#: f.meta.cc:5671 +#: f.meta.cc:5726 msgid "range (km)" msgstr "rango (km)" -#: f.meta.cc:5764 +#: f.meta.cc:5819 msgid "error in latitude/longitude/range" msgstr "error en latitud/longitud/rango" -#: f.meta.cc:5828 +#: f.meta.cc:5883 msgid "" "These items are always reported: \n" "date, stars, tags, caption, comment" @@ -2550,19 +2649,19 @@ "Siempre se informa de estos elementos: \n" "fecha, estrellas, etiquetas, leyenda, comentario" -#: f.meta.cc:5852 +#: f.meta.cc:5907 msgid "Additional Items for Report" msgstr "Elementos adicionales para el informe" -#: f.meta.cc:5858 +#: f.meta.cc:5913 msgid "Keyword" msgstr "Palabra clave" -#: f.meta.cc:5865 +#: f.meta.cc:5920 msgid "Match Criteria" msgstr "Criterio de coincidencia" -#: f.meta.cc:6425 +#: f.meta.cc:6480 msgid "image index is missing" msgstr "necesario indexar imágenes" @@ -2578,47 +2677,47 @@ msgid "Kuwahara method" msgstr "Método Kuwahara" -#: f.repair.cc:1012 +#: f.repair.cc:1014 msgid "Apply repeatedly while watching the image." msgstr "Aplicar repetidamente mientras se observe la imagen" -#: f.repair.cc:1013 +#: f.repair.cc:1015 msgid "Measure" msgstr "Medir" -#: f.repair.cc:1047 +#: f.repair.cc:1049 msgid "Noise Reduction" msgstr "reducción de ruido" -#: f.repair.cc:1063 +#: f.repair.cc:1065 msgid "Flatten Outliers 1" msgstr "Aplanar bordes 1" -#: f.repair.cc:1064 +#: f.repair.cc:1066 msgid "Flatten Outliers 2" msgstr "aplanar bordes 2" -#: f.repair.cc:1065 +#: f.repair.cc:1067 msgid "Median Brightness" msgstr "Mediana de brillo" -#: f.repair.cc:1093 +#: f.repair.cc:1095 msgid "dark areas" msgstr "áreas oscuras" -#: f.repair.cc:1095 +#: f.repair.cc:1097 msgid "all areas" msgstr "todas las áreas" -#: f.repair.cc:1193 +#: f.repair.cc:1195 msgid "Measure Noise" msgstr "Medir ruído" -#: f.repair.cc:1194 +#: f.repair.cc:1196 msgid "Click on a monotone image area." msgstr "Clic en un área monotono de la imagen" -#: f.repair.cc:2095 +#: f.repair.cc:2098 msgid "" "1. Drag mouse to select. \n" "2. Erase. 3. Repeat. " @@ -2626,23 +2725,23 @@ "1. Arrastre el ratón para seleccionar. \n" "2. Borrar. 3. Repetir." -#: f.repair.cc:2117 f.widgets.cc:451 +#: f.repair.cc:2120 f.widgets.cc:452 msgid "Smart Erase" msgstr "Borrado inteligente" -#: f.repair.cc:2122 fotoxx.h:1140 +#: f.repair.cc:2125 fotoxx.h:1148 msgid "Radius" msgstr "Radio" -#: f.repair.cc:2124 f.widgets.cc:449 +#: f.repair.cc:2127 f.widgets.cc:450 msgid "Blur" msgstr "Desenfocar" -#: f.repair.cc:2127 +#: f.repair.cc:2130 msgid "New Area" msgstr "Nueva área" -#: f.repair.cc:2475 +#: f.repair.cc:2479 msgid "" "Method 1:\n" " Left-click on red-eye to darken.\n" @@ -2660,11 +2759,11 @@ "Deshacer ojos rojos:\n" " Clic-derecho en el ojo rojo." -#: f.repair.cc:2491 +#: f.repair.cc:2495 msgid "Red Eye Reduction" msgstr "Reducción de ojos rojos" -#: f.repair.cc:2955 +#: f.repair.cc:2959 msgid "" "shift + left click: pick color or image position \n" "left click or drag: paint color or copy image \n" @@ -2674,40 +2773,40 @@ "clic izquierdo o arrastrar: pintar color o copiar imagen \n" "clic derecho o arrastrar: borrar color o imagen" -#: f.repair.cc:2987 f.widgets.cc:453 +#: f.repair.cc:2991 f.widgets.cc:454 msgid "Paint/Clone" msgstr "Pintar/Clonar" -#: f.repair.cc:2991 +#: f.repair.cc:2995 msgid "paint color" msgstr "color de la pintura" -#: f.repair.cc:2994 +#: f.repair.cc:2998 msgid "copy from image" msgstr "copiar desde la imagen" -#: f.repair.cc:3001 f.repair.cc:3557 +#: f.repair.cc:3005 f.repair.cc:3562 msgid "paintbrush radius" msgstr "radio del pincel" -#: f.repair.cc:3002 +#: f.repair.cc:3006 msgid "transparency center" msgstr "transparencia del centro" -#: f.repair.cc:3003 +#: f.repair.cc:3007 msgid "transparency edge" msgstr "transparencia de los bordes" -#: f.repair.cc:3010 f.repair.cc:3564 +#: f.repair.cc:3014 f.repair.cc:3569 msgid "gradual paint" msgstr "pintado gradual" -#: f.repair.cc:3017 +#: f.repair.cc:3021 #, c-format msgid "Undo Memory %d%c" msgstr "Memoria de deshacer %d%c" -#: f.repair.cc:3352 +#: f.repair.cc:3357 msgid "" "Undo memory limit has been reached. \n" "Save work with [done], then resume painting." @@ -2715,7 +2814,7 @@ "Se alcanzó el límite de memoria para deshacer. \n" "Guarde el trabajo con [Hecho], y siga pintando." -#: f.repair.cc:3517 +#: f.repair.cc:3522 msgid "" "left drag: add transparency \n" "right drag: add opacity" @@ -2723,172 +2822,172 @@ "arrastre izquierdo: añadir transparencia \n" "arrastre derecho: añadir opacidad" -#: f.repair.cc:3549 f.widgets.cc:454 +#: f.repair.cc:3554 f.widgets.cc:455 msgid "Paint Transparency" msgstr "Pintar transparencia" -#: f.repair.cc:3558 +#: f.repair.cc:3563 msgid "strength center" msgstr "fuerza en el centro" -#: f.repair.cc:3559 +#: f.repair.cc:3564 msgid "strength edge" msgstr "fuerza en bordes" -#: f.repair.cc:3769 f.widgets.cc:455 +#: f.repair.cc:3778 f.widgets.cc:456 msgid "Color Mode" msgstr "Modo de color" -#: f.repair.cc:3772 +#: f.repair.cc:3781 msgid "black/white positive" msgstr "positivo en blanco y negro" -#: f.repair.cc:3773 +#: f.repair.cc:3782 msgid "black/white negative" msgstr "negativo en blanco y negro" -#: f.repair.cc:3774 +#: f.repair.cc:3783 msgid "color positive" msgstr "Positivo en color" -#: f.repair.cc:3775 +#: f.repair.cc:3784 msgid "color negative" msgstr "Negativo en color" -#: f.repair.cc:3776 +#: f.repair.cc:3785 msgid "sepia" msgstr "sepia" -#: f.repair.cc:3945 f.widgets.cc:456 +#: f.repair.cc:3954 f.widgets.cc:457 msgid "Shift Colors" msgstr "Modificar colores" -#: f.repair.cc:4217 +#: f.repair.cc:4226 msgid "+Brightness" msgstr "Brillo" -#: f.repair.cc:4218 +#: f.repair.cc:4227 msgid "+Red -Cyan" msgstr "+Rojo -Cyan" -#: f.repair.cc:4219 +#: f.repair.cc:4228 msgid "+Green -Magenta" msgstr "+Verde -Magenta" -#: f.repair.cc:4220 +#: f.repair.cc:4229 msgid "+Blue -Yellow" msgstr "+Azul -Amarillo" -#: f.repair.cc:4226 fotoxx.h:1142 +#: f.repair.cc:4235 fotoxx.h:1150 msgid "Red" msgstr "R" -#: f.repair.cc:4227 fotoxx.h:1108 +#: f.repair.cc:4236 fotoxx.h:1116 msgid "Green" msgstr "V" -#: f.repair.cc:4228 fotoxx.h:1077 +#: f.repair.cc:4237 fotoxx.h:1085 msgid "Blue" msgstr "A" -#: f.repair.cc:4527 +#: f.repair.cc:4536 msgid "Color Hue" msgstr "Tono de color" -#: f.repair.cc:4528 +#: f.repair.cc:4537 msgid "Saturation" msgstr "Saturación" -#: f.repair.cc:4529 +#: f.repair.cc:4538 msgid "Lightness" msgstr "Luminosidad" -#: f.repair.cc:4530 +#: f.repair.cc:4539 msgid "Adjustment" msgstr "Ajuste" -#: f.repair.cc:4869 +#: f.repair.cc:4878 msgid "Ramp brightness across image" msgstr "Rampa de brillo a traves de la imagen" -#: f.repair.cc:5278 f.tools.cc:2014 +#: f.repair.cc:5286 f.tools.cc:2038 msgid "Click image to select pixels." msgstr "Pulsar en la imagen para seleccionar los píxeles." -#: f.repair.cc:5312 f.widgets.cc:460 +#: f.repair.cc:5317 f.widgets.cc:461 msgid "Color Ramp" msgstr "Rampa de color" -#: f.repair.cc:5323 +#: f.repair.cc:5328 msgid "Metric:" msgstr "Métrica:" -#: f.repair.cc:5754 +#: f.repair.cc:5751 msgid "Color Match Images" msgstr "Concordar color de imágenes" -#: f.repair.cc:5781 +#: f.repair.cc:5777 msgid "mouse radius for color sample" msgstr "radio del ratón para muestra de color" -#: f.repair.cc:5784 +#: f.repair.cc:5780 msgid "image for source color" msgstr "imagen para el color de origen" -#: f.repair.cc:5786 +#: f.repair.cc:5782 msgid "click on image to get source color" msgstr "Pulse en la imagen para obtener color de origen" -#: f.repair.cc:5789 +#: f.repair.cc:5785 msgid "image to set matching color" msgstr "imagen para establecer concordancia de color" -#: f.repair.cc:5791 +#: f.repair.cc:5787 msgid "click on image to set matching color" msgstr "Pulse en la imagen para establecer la concordancia de color" -#: f.repair.cc:5851 +#: f.repair.cc:5848 msgid "select source image color first" msgstr "seleccionar primero el color de la imagen de origen" -#: f.repair.cc:6036 +#: f.repair.cc:6033 msgid "Change Color Profile" msgstr "Cambiar perfil de color" -#: f.repair.cc:6040 +#: f.repair.cc:6037 msgid "input profile" msgstr "perfil de entrada" -#: f.repair.cc:6044 +#: f.repair.cc:6041 msgid "output profile" msgstr "perfil de salida" -#: f.repair.cc:6060 +#: f.repair.cc:6057 msgid "color profile" msgstr "perfil de color" -#: f.repair.cc:6106 f.repair.cc:6112 +#: f.repair.cc:6103 f.repair.cc:6109 #, c-format msgid "unknown cms profile %s" msgstr "perfil cms desconocido %s" -#: f.repair.cc:6244 f.widgets.cc:463 +#: f.repair.cc:6241 f.widgets.cc:464 msgid "Remove Dust" msgstr "Retirar polvo" -#: f.repair.cc:6248 +#: f.repair.cc:6245 msgid "spot size limit" msgstr "límite de tamaño de punto" -#: f.repair.cc:6251 +#: f.repair.cc:6248 msgid "max. brightness" msgstr "máximo brillo" -#: f.repair.cc:6254 +#: f.repair.cc:6251 msgid "min. contrast" msgstr "mínimo contraste" -#: f.repair.cc:7035 +#: f.repair.cc:7032 msgid "" " Adjust each RGB color to minimize \n" " color fringes at the image extremes. " @@ -2896,35 +2995,35 @@ " Ajustar cada color RGB para minimizar \n" " franjas de color en los extremos de la imagen. " -#: f.repair.cc:7058 f.widgets.cc:465 +#: f.repair.cc:7055 f.widgets.cc:466 msgid "Color Fringes" msgstr "Bandas de color" -#: f.repair.cc:7257 f.widgets.cc:466 +#: f.repair.cc:7254 f.widgets.cc:467 msgid "Stuck Pixels" msgstr "Píxeles retenidos" -#: f.repair.cc:7263 +#: f.repair.cc:7260 msgid "pixel group" msgstr "agrupar píxeles" -#: f.repair.cc:7271 f.repair.cc:7339 +#: f.repair.cc:7268 f.repair.cc:7336 msgid "stuck pixels:" msgstr "píxeles defectuosos" -#: f.repair.cc:7367 +#: f.repair.cc:7364 msgid "Load Stuck Pixels" msgstr "Cargar píxeles defectuosos" -#: f.repair.cc:7369 +#: f.repair.cc:7366 msgid "File:" msgstr "Archivo:" -#: f.repair.cc:7394 f.repair.cc:7451 +#: f.repair.cc:7391 f.repair.cc:7448 msgid "Stuck Pixels file" msgstr "Archivo de píxeles defectuosos" -#: f.repair.cc:7431 +#: f.repair.cc:7428 msgid "file format error" msgstr "error de formato de archivo" @@ -2954,7 +3053,7 @@ "Se requiere el indexado para las búsquedas y funciones de mapa \n" "y para hacer las páginas de galería aceptablemente rápidas." -#: f.tools.cc:106 f.widgets.cc:506 +#: f.tools.cc:106 f.widgets.cc:507 msgid "Index Image Files" msgstr "Indexar imágenes" @@ -3013,184 +3112,184 @@ " %s \n" "Por favor borrar" -#: f.tools.cc:394 +#: f.tools.cc:392 msgid "no thumbnails directory defined" msgstr "no definido directorio de miniaturas" -#: f.tools.cc:739 +#: f.tools.cc:734 msgid "COMPLETED" msgstr "COMPLETADO" -#: f.tools.cc:778 +#: f.tools.cc:775 msgid "Indexing is required for first-time startup." msgstr "El indexado es necesario para el primer arranque" -#: f.tools.cc:840 +#: f.tools.cc:837 msgid "Recent Files Gallery" msgstr "Galería de archivos recientes" -#: f.tools.cc:841 +#: f.tools.cc:838 msgid "Newest Files Gallery" msgstr "Galería de archivos más recientes" -#: f.tools.cc:842 +#: f.tools.cc:839 msgid "Previous Gallery" msgstr "Galería previa" -#: f.tools.cc:843 +#: f.tools.cc:840 msgid "Previous Image" msgstr "Imagen previa" -#: f.tools.cc:844 +#: f.tools.cc:841 msgid "Blank Window" msgstr "Ventana vacía" -#: f.tools.cc:845 +#: f.tools.cc:842 msgid "Directory" msgstr "Directorio" -#: f.tools.cc:846 +#: f.tools.cc:843 msgid "Image File" msgstr "Archivo de imagen" -#: f.tools.cc:887 f.widgets.cc:507 +#: f.tools.cc:885 f.widgets.cc:508 msgid "User Options" msgstr "Opciones de usuario" -#: f.tools.cc:890 +#: f.tools.cc:888 msgid "Startup Display" msgstr "Pantalla de inicio" -#: f.tools.cc:901 +#: f.tools.cc:899 msgid "Menu Style" msgstr "Estilo de menú" -#: f.tools.cc:902 +#: f.tools.cc:900 msgid "Icons" msgstr "Iconos" -#: f.tools.cc:903 +#: f.tools.cc:901 msgid "Icons + Text" msgstr "Iconos + texto" -#: f.tools.cc:905 +#: f.tools.cc:903 msgid "Icon size" msgstr "Tamaño de icono" -#: f.tools.cc:909 +#: f.tools.cc:907 +msgid "Dialog font and size" +msgstr "" + +#: f.tools.cc:912 msgid "Image Pan/scroll:" msgstr "Fijar/deslizar imagen" -#: f.tools.cc:912 +#: f.tools.cc:915 msgid "Zooms for 2x" msgstr "Zooms x2" -#: f.tools.cc:921 +#: f.tools.cc:924 msgid "JPEG save quality" msgstr "calidad de guardado JPEG" -#: f.tools.cc:924 f.tools.cc:3041 -msgid "Thumbnail size" -msgstr "Tamaño de miniatura" - -#: f.tools.cc:928 +#: f.tools.cc:931 msgid "show hidden directories in gallery view" msgstr "mostrar directorios ocultos en la vista de galería" -#: f.tools.cc:931 +#: f.tools.cc:934 msgid "prev/next shows last file version only" msgstr "ant/sig muestra sólo la última versión del archivo" -#: f.tools.cc:934 +#: f.tools.cc:937 msgid "RAW command" msgstr "Comando RAW" -#: f.tools.cc:938 +#: f.tools.cc:941 msgid "RAW file types" msgstr "Tipos de archivos RAW" -#: f.tools.cc:1015 +#: f.tools.cc:1021 msgid "Delete present thumbnails to make effective" msgstr "Borrar la diapositiva actual para hacerlo efectivo" -#: f.tools.cc:1037 +#: f.tools.cc:1043 msgid "Select startup directory" msgstr "Seleccionar el directorio de inicio" -#: f.tools.cc:1044 +#: f.tools.cc:1050 msgid "Select startup image file" msgstr "Seleccionar el archivo de imagen de inicio" -#: f.tools.cc:1066 +#: f.tools.cc:1088 msgid "startup directory is invalid" msgstr "El directorio de inicio no es correcto" -#: f.tools.cc:1077 +#: f.tools.cc:1099 msgid "startup file is invalid" msgstr "El archivo de inicio no es correcto" -#: f.tools.cc:1211 +#: f.tools.cc:1237 msgid "Edit KB Shortcuts" msgstr "Editar atajos de teclado" -#: f.tools.cc:1216 +#: f.tools.cc:1242 msgid "shortcut key:" msgstr "atajo de teclado" -#: f.tools.cc:1217 +#: f.tools.cc:1243 msgid "(enter key)" msgstr "(entrar tecla)" -#: f.tools.cc:1343 +#: f.tools.cc:1369 #, c-format msgid "\"%s\" Reserved, cannot be used" msgstr "\"%s\" Reservada, no se puede utilizar" -#: f.tools.cc:1497 +#: f.tools.cc:1523 msgid "unable to save KB-shortcuts file" msgstr "imposible guardar archivos de atajos de teclado" -#: f.tools.cc:1801 f.widgets.cc:510 +#: f.tools.cc:1827 f.widgets.cc:511 msgid "Grid Lines" msgstr "Lineas de rejilla" -#: f.tools.cc:1810 +#: f.tools.cc:1836 msgid "x-spacing" msgstr "espaciado X" -#: f.tools.cc:1811 +#: f.tools.cc:1837 msgid "x-count" msgstr "conteo X" -#: f.tools.cc:1812 +#: f.tools.cc:1838 msgid "x-enable" msgstr "activar X" -#: f.tools.cc:1818 +#: f.tools.cc:1844 msgid "y-spacing" msgstr "espaciado Y" -#: f.tools.cc:1819 +#: f.tools.cc:1845 msgid "y-count" msgstr "conteo Y" -#: f.tools.cc:1820 +#: f.tools.cc:1846 msgid "y-enable" msgstr "activar Y" -#: f.tools.cc:1940 f.tools.cc:1945 f.widgets.cc:511 +#: f.tools.cc:1966 f.tools.cc:1971 f.widgets.cc:512 msgid "Line Color" msgstr "Color de línea" -#: f.tools.cc:1942 +#: f.tools.cc:1968 msgid "Area Color" msgstr "Color de área" -#: f.tools.cc:2050 f.widgets.cc:512 +#: f.tools.cc:2073 f.widgets.cc:513 msgid "Show RGB" msgstr "Mostrar RGB" -#: f.tools.cc:2345 +#: f.tools.cc:2365 msgid "" "Drag mouse on image. \n" "Left click to cancel. \n" @@ -3200,27 +3299,27 @@ "Clic izquierdo para cancelar. \n" "Tecla M para esconder diálogo." -#: f.tools.cc:2371 f.widgets.cc:513 +#: f.tools.cc:2391 f.widgets.cc:514 msgid "Magnify Image" msgstr "Aumentar imagen" -#: f.tools.cc:2380 +#: f.tools.cc:2400 msgid "X-size" msgstr "Lupa" -#: f.tools.cc:2625 +#: f.tools.cc:2645 msgid "Darkest and Brightest Pixels" msgstr "Píxeles más oscuros y más brillantes" -#: f.tools.cc:2648 +#: f.tools.cc:2668 msgid "Dark Limit" msgstr "Sombra" -#: f.tools.cc:2649 +#: f.tools.cc:2669 msgid "Bright Limit" msgstr "Luz" -#: f.tools.cc:2744 +#: f.tools.cc:2764 msgid "" "Brightness should show a gradual ramp \n" "extending all the way to the edges." @@ -3228,113 +3327,145 @@ "El brillo debe mostrar una rampa gradual \n" "Extender hasta el final de los bordes." -#: f.tools.cc:2840 f.widgets.cc:516 +#: f.tools.cc:2860 f.widgets.cc:517 msgid "Monitor Gamma" msgstr "Gamma del monitor" -#: f.tools.cc:2900 +#: f.tools.cc:2920 msgid "Available Translations" msgstr "Traducciones disponibles" -#: f.tools.cc:2904 +#: f.tools.cc:2924 msgid "Set Language" msgstr "Seleccionar el idioma" -#: f.tools.cc:3039 f.widgets.cc:519 -msgid "Find Duplicate Images" -msgstr "Buscar imágenes duplicadas" +#: f.tools.cc:3064 f.widgets.cc:520 +msgid "Calibrate Printer" +msgstr "" -#: f.tools.cc:3044 -msgid "pixel difference" -msgstr "diferencia de píxels" +#: f.tools.cc:3087 +msgid "print color chart" +msgstr "" -#: f.tools.cc:3047 -msgid "pixel count" -msgstr "conteo de píxels" +#: f.tools.cc:3088 +msgid "scan and save color chart" +msgstr "" -#: f.tools.cc:3050 -msgid "Images:" -msgstr "Imágenes:" +#: f.tools.cc:3089 +msgid "align and trim color chart" +msgstr "" -#: f.tools.cc:3051 -msgid "searching ..." -msgstr "buscando ..." +#: f.tools.cc:3090 +msgid "open and process color chart" +msgstr "" -#: f.tools.cc:3053 -msgid "Duplicates:" -msgstr "Duplicados:" +#: f.tools.cc:3091 +msgid "print image with revised colors" +msgstr "" -#: f.tools.cc:3071 +#: f.tools.cc:3258 #, c-format -msgid "only %d image thumbnails found" -msgstr "ercontradas sólo %d miniaturas de imágenes" +msgid "" +"Scan the printed color chart. \n" +"Save in %s/" +msgstr "" -#: f.widgets.cc:112 -msgid "TOP" -msgstr "ARRIBA" +#: f.tools.cc:3272 +msgid "" +"Open and edit the scanned color chart file. \n" +"Remove any skew or rotation caused by the scanner. \n" +"Trim off all margins. Be careful not to cut off \n" +"any color tile edges or leave any white margins." +msgstr "" + +#: f.tools.cc:3308 +msgid "Open the trimmed color chart file" +msgstr "" + +#: f.tools.cc:3405 +msgid "" +"Set the file name and location \n" +"for the output color map file." +msgstr "" + +#: f.tools.cc:3440 +msgid "Color map file to use" +msgstr "" + +#: f.tools.cc:3461 +msgid "Select the image file to print." +msgstr "" + +#: f.tools.cc:3588 +msgid "Image colors are converted for printing." +msgstr "" -#: f.widgets.cc:115 +#: f.widgets.cc:111 msgid "Album" msgstr "" -#: f.widgets.cc:169 +#: f.widgets.cc:113 +msgid "TOP" +msgstr "ARRIBA" + +#: f.widgets.cc:165 msgid "Current Image File (key F)" msgstr "Archivo de imagen actual (tecla F)" -#: f.widgets.cc:170 +#: f.widgets.cc:166 msgid "Thumbnail Gallery (key G)" msgstr "Galería de mi​niaturas (tecla G)" -#: f.widgets.cc:171 +#: f.widgets.cc:167 msgid "World Maps (key W)" msgstr "Mapa mundial (tecla W)​" -#: f.widgets.cc:174 +#: f.widgets.cc:170 msgid "Favorite Functions" msgstr "Funciones favoritas" -#: f.widgets.cc:175 +#: f.widgets.cc:171 msgid "File: Open, RAW, Rename, Trash, Print" msgstr "Archivo: Abrir, RAW, Renombrar, Papelera, Imprimir" -#: f.widgets.cc:176 +#: f.widgets.cc:172 msgid "Save modified image file to disk" msgstr "Guardar imagen modificada en el disco" -#: f.widgets.cc:177 +#: f.widgets.cc:173 msgid "Open previous or next file (left/right mouse click)" msgstr "Abrir archivo anterior o siguiente ​(clic izquierdo/derecho del ratón)" -#: f.widgets.cc:178 +#: f.widgets.cc:174 msgid "Metadata: Captions, Tags, Ratings, Geotags, Search ... " msgstr "" "Metadatos: leyendas, Etiquetas, Valoraciones, Geoetiquetas, Búsqueda ..." -#: f.widgets.cc:179 +#: f.widgets.cc:175 msgid "Areas: Select areas to edit, copy and paste" msgstr "Areas: Seleccionar áreas para editar, copiar y pegar" -#: f.widgets.cc:180 +#: f.widgets.cc:176 msgid "Edit: Trim, Rotate, Resize, Brightness, Contrast, Text ..." msgstr "Editar: Recortar, Girar,​ Brillo, Contraste, Texto ..." -#: f.widgets.cc:181 +#: f.widgets.cc:177 msgid "Repair: Sharpen, Noise, Red-eyes, Color, Paint, Clone ..." msgstr "Reparar: Enfocar, Ruido, Ojos rojos, Color, Pintar, Clonar ..." -#: f.widgets.cc:182 +#: f.widgets.cc:178 msgid "Bend: Fix Perspective, Bend/Warp image ..." msgstr "Deformar: Corregir perspectiva, Deformar imágenes ..." -#: f.widgets.cc:183 +#: f.widgets.cc:179 msgid "Effects: Special Effects, Arty Transforms" msgstr "Efectos: Efectos especiales, Transformaciones artísticas" -#: f.widgets.cc:184 +#: f.widgets.cc:180 msgid "Combine: HDR, HDF, Panorama, Stack, Mashup" msgstr "Combinar: HDR, HDF, Panorama, Pila, Montaje" -#: f.widgets.cc:185 +#: f.widgets.cc:181 msgid "" "Undo or Redo one edit (left/right mouse click) \n" " hold key A to include all edits" @@ -3342,1124 +3473,1096 @@ "Deshacer o rehacer una edición (clic izquierdo/derecho del ratón)​ \n" " presionar tecla A para incluir todas las ediciones" -#: f.widgets.cc:187 +#: f.widgets.cc:183 msgid "Tools: Index, Options, Shortcuts, Magnify ..." msgstr "Herramientas: Indexar, Opciones, Atajos, Aumentar ..." -#: f.widgets.cc:188 +#: f.widgets.cc:184 msgid "Help: Quick Start, User Guide, Recent Changes ..." msgstr "Ayuda: Inicio rápido, Guía de usuario, Cambios recientes ..." -#: f.widgets.cc:191 +#: f.widgets.cc:187 msgid "Set gallery from current image file" msgstr "Establecer galería desde la imagen actual" -#: f.widgets.cc:192 +#: f.widgets.cc:188 msgid "Albums: Manage Albums, Slide Show, Desktop Background" msgstr "Albumes: Administrar álbumes, Diaporama, Fondo de escritorio" -#: f.widgets.cc:193 +#: f.widgets.cc:189 msgid "go to bookmarked image" msgstr "ir a una imagen marcada" -#: f.widgets.cc:194 +#: f.widgets.cc:190 msgid "increase thumbnail size" msgstr "aumentar tamaño de miniatura" -#: f.widgets.cc:195 +#: f.widgets.cc:191 msgid "reduce thumbnail size" msgstr "reducir tamaño de la miniatura" -#: f.widgets.cc:196 +#: f.widgets.cc:192 msgid "change sort order" msgstr "cambiar criterio de ordenación" -#: f.widgets.cc:197 +#: f.widgets.cc:193 msgid "jump to beginning (top)" msgstr "ir al principio (arriba)" -#: f.widgets.cc:198 +#: f.widgets.cc:194 msgid "jump to end (bottom)" msgstr "ir al final (abajo)" -#: f.widgets.cc:199 +#: f.widgets.cc:195 msgid "previous page" msgstr "página anterior" -#: f.widgets.cc:200 +#: f.widgets.cc:196 msgid "next page" msgstr "página siguiente" -#: f.widgets.cc:201 +#: f.widgets.cc:197 msgid "slow scroll" msgstr "desplazamiento lento" -#: f.widgets.cc:202 +#: f.widgets.cc:198 msgid "Batch conversion, metadata, RAW processing" msgstr "" -#: f.widgets.cc:205 +#: f.widgets.cc:201 msgid "Choose a map for image locations" msgstr "Elegir un mapa para ubicar imagen" -#: f.widgets.cc:206 +#: f.widgets.cc:202 msgid "Set image search radius for map click" msgstr "Ajustar radio de búsqueda de imagen para clicar en el mapa" -#: f.widgets.cc:209 +#: f.widgets.cc:205 msgid "Open another window" msgstr "Abrir otra ventana" -#: f.widgets.cc:210 +#: f.widgets.cc:206 msgid "Open a new image file" msgstr "Abrir nueva imagen" -#: f.widgets.cc:211 +#: f.widgets.cc:207 msgid "Open the previously seen file" msgstr "Abrir archivo previamente visto" -#: f.widgets.cc:212 +#: f.widgets.cc:208 msgid "Open a recently seen file" msgstr "Abrir archivo recientemente visto" -#: f.widgets.cc:213 +#: f.widgets.cc:209 msgid "Open a newly added file" msgstr "Abrir un archivo añadido nuevo" -#: f.widgets.cc:214 f.widgets.cc:215 +#: f.widgets.cc:210 f.widgets.cc:211 msgid "Open and edit a camera RAW file" msgstr "Abrir y editar un archivo de cámara RAW" -#: f.widgets.cc:216 +#: f.widgets.cc:212 msgid "Change the image file name" msgstr "Cambiar el nombre de la imagen" -#: f.widgets.cc:217 +#: f.widgets.cc:213 msgid "Create a blank image" msgstr "Crear una imagen en blanco" -#: f.widgets.cc:218 +#: f.widgets.cc:214 msgid "Move image file to Trash" msgstr "Mover imagen a la papelera" -#: f.widgets.cc:219 +#: f.widgets.cc:215 msgid "Permanently delete image file" msgstr "Borrar imagen permanentemente " -#: f.widgets.cc:220 +#: f.widgets.cc:216 msgid "Print the current image" msgstr "Imprimir la imagen actual" -#: f.widgets.cc:221 f.widgets.cc:402 +#: f.widgets.cc:217 f.widgets.cc:401 msgid "Quit Fotoxx" msgstr "Salir de Fotoxx" -#: f.widgets.cc:224 +#: f.widgets.cc:220 msgid "List a few key metadata items" msgstr "Listar algunos datos clave de metadatos" -#: f.widgets.cc:225 +#: f.widgets.cc:221 msgid "List all metadata items" msgstr "Listar todos los items de metadatos" -#: f.widgets.cc:226 +#: f.widgets.cc:222 msgid "(Toggle) show captions and comments" msgstr "(Cambiar) muestra leyendas y comentarios" -#: f.widgets.cc:227 +#: f.widgets.cc:223 msgid "Edit image tags/caption/rating ..." msgstr "Editar etiquetas/leyenda/clasificación de la imagen ..." -#: f.widgets.cc:228 +#: f.widgets.cc:224 msgid "Edit any image metadata" msgstr "Editar cualquier metadato de la imagen" -#: f.widgets.cc:229 +#: f.widgets.cc:225 msgid "Remove all metadata from an image" msgstr "Quitar todos los metadatos de una imagen" -#: f.widgets.cc:230 +#: f.widgets.cc:226 msgid "Add/remove tags for multiple images" msgstr "Añadir/eliminar etiquetas para múltiples imágenes " -#: f.widgets.cc:231 +#: f.widgets.cc:227 msgid "Convert tag names for all images" msgstr "Convertir nombres de etiquetas para todas las imágenes" -#: f.widgets.cc:232 +#: f.widgets.cc:228 msgid "Add/change/delete metadata for multiple images" msgstr "Añadir/cambiar/borrar metadatos en múltiples imágenes" -#: f.widgets.cc:233 +#: f.widgets.cc:229 msgid "Edit image location and geotags" msgstr "Editar ubicación y geoetiquetas de la " -#: f.widgets.cc:234 +#: f.widgets.cc:230 msgid "Add/revise geotags for multiple images" msgstr "Añadir/revisar geoetiquetas en múltiples imágenes" -#: f.widgets.cc:235 +#: f.widgets.cc:231 msgid "Find all images for a location [date]" msgstr "Encontrar todas las imágenes para una localización (fecha)" -#: f.widgets.cc:236 +#: f.widgets.cc:232 msgid "Find images meeting select criteria" msgstr "Encontrar imágenes que cumplan un criterio de selección" -#: f.widgets.cc:239 +#: f.widgets.cc:235 msgid "Select object or area for editing" msgstr "Seleccionar objeto o área para editar" -#: f.widgets.cc:240 +#: f.widgets.cc:236 msgid "Show (outline) existing area" msgstr "Mostrar un área existente (contorno)" -#: f.widgets.cc:241 +#: f.widgets.cc:237 msgid "Hide existing area" msgstr "Ocultar áreas existentes" -#: f.widgets.cc:242 +#: f.widgets.cc:238 msgid "Enable area for editing" msgstr "activar áre para editar" -#: f.widgets.cc:243 +#: f.widgets.cc:239 msgid "Disable area for editing" msgstr "Desactivar área para editar" -#: f.widgets.cc:244 +#: f.widgets.cc:240 msgid "Reverse existing area" msgstr "Invertir área existente" -#: f.widgets.cc:245 +#: f.widgets.cc:241 msgid "Erase existing area" msgstr "Borrar área existente" -#: f.widgets.cc:246 +#: f.widgets.cc:242 +msgid "Copy area for later pasting into image" +msgstr "" + +#: f.widgets.cc:243 +msgid "Paste previously copied area into image" +msgstr "" + +#: f.widgets.cc:244 msgid "Open a file and paste as area into image" msgstr "Abrir un archivo y pegar como área en la imagen" -#: f.widgets.cc:247 +#: f.widgets.cc:245 msgid "Save area to a file with transparency" msgstr "Guardar área como un archivo con transparencia" -#: f.widgets.cc:250 +#: f.widgets.cc:248 msgid "Trim/Crop margins and/or Rotate" msgstr "Recortar/cortar márgenes y/o girar" -#: f.widgets.cc:251 +#: f.widgets.cc:249 msgid "Upright a rotated image" msgstr "Enderezar una imagen girada" -#: f.widgets.cc:252 f.widgets.cc:253 +#: f.widgets.cc:250 f.widgets.cc:251 msgid "Fast auto enhance that may work OK" msgstr "Mejora automática rápida" -#: f.widgets.cc:254 +#: f.widgets.cc:252 msgid "Adjust brightness, contrast, color" msgstr "Ajustar brillo, contraste, color" -#: f.widgets.cc:255 +#: f.widgets.cc:253 msgid "Add local contrast, enhance details" msgstr "Añadir contraste local, mejorar detalles" -#: f.widgets.cc:256 +#: f.widgets.cc:254 msgid "Adjust brightness distribution" msgstr "Ajustar distribución del brillo" -#: f.widgets.cc:257 +#: f.widgets.cc:255 msgid "Flatten zonal brightness distribution" msgstr "Aplanar histograma zonal" -#: f.widgets.cc:258 +#: f.widgets.cc:256 msgid "Change pixel dimensions" msgstr "Cambiar dimensiones en píxeles" -#: f.widgets.cc:259 +#: f.widgets.cc:257 msgid "Mirror image horizontally or vertically" msgstr "Reflejar horizontal o verticalmente la imagen" -#: f.widgets.cc:260 +#: f.widgets.cc:258 msgid "Write text on image" msgstr "Escribir un texto sobre la imagen" -#: f.widgets.cc:261 +#: f.widgets.cc:259 msgid "Write lines or arrows on image" msgstr "Dibujar líneas o flechas en la imagen" -#: f.widgets.cc:262 +#: f.widgets.cc:260 msgid "Fix brightness uniformity across image" msgstr "Corregir la uniformidad de brillo por zonas en la imagen" -#: f.widgets.cc:263 +#: f.widgets.cc:261 msgid "Paint edit function gradually with mouse" msgstr "Función de edición pintando gradualmente con el ratón" -#: f.widgets.cc:264 +#: f.widgets.cc:262 msgid "Leverage edits by brightness or color" msgstr "Edición por niveles de brillo o color" -#: f.widgets.cc:265 +#: f.widgets.cc:263 msgid "Edit plugins menu or run a plugin function" msgstr "Editar men​​ú de plugins o ejecutar una función de plugin" -#: f.widgets.cc:268 +#: f.widgets.cc:266 msgid "Make the image look sharper" msgstr "Hacer que la imagen se vea más enfocada" -#: f.widgets.cc:269 +#: f.widgets.cc:267 msgid "Make the image look fuzzy" msgstr "Hacer que la imagen se vea desenfocada" -#: f.widgets.cc:270 +#: f.widgets.cc:268 msgid "Filter noise from low-light photos" msgstr "Filtrar ruido de fotos hechas con poca luz" -#: f.widgets.cc:271 +#: f.widgets.cc:269 msgid "Remove unwanted objects" msgstr "Eliminar objetos no deseados" -#: f.widgets.cc:272 +#: f.widgets.cc:270 msgid "Fix red-eyes from electronic flash" msgstr "Corregir ojos rojos producidos por un flash electrónico" -#: f.widgets.cc:273 +#: f.widgets.cc:271 msgid "Paint image pixels using the mouse" msgstr "Pintar usando el ratón" -#: f.widgets.cc:274 +#: f.widgets.cc:272 msgid "Paint image transparency using the mouse" msgstr "Pintar transparencia de la imagen con el ratón" -#: f.widgets.cc:275 +#: f.widgets.cc:273 msgid "Make BW/color, negative/positive, sepia" msgstr "Cambiar blanco y negro/color, negativo/positivo, sepia" -#: f.widgets.cc:276 +#: f.widgets.cc:274 msgid "Shift/convert colors into other colors" msgstr "Cambiar/convertir colores en otros" -#: f.widgets.cc:277 +#: f.widgets.cc:275 msgid "Adjust color using RGB or CMY colors" msgstr "Ajustar colores usando sistema RGB o CMY" -#: f.widgets.cc:278 +#: f.widgets.cc:276 msgid "Adjust color using HSL colors" msgstr "Ajustar color usando sistema HSL" -#: f.widgets.cc:279 +#: f.widgets.cc:277 msgid "Adjust color in selected image areas" msgstr "Ajustar color en áreas seleccionadas de la imagen" -#: f.widgets.cc:280 +#: f.widgets.cc:278 msgid "Match colors on one image with another" msgstr "Concordar colores de una imagen con los de otra" -#: f.widgets.cc:281 +#: f.widgets.cc:279 msgid "Convert to another color profile" msgstr "Convertir a otro perfil de color" -#: f.widgets.cc:282 +#: f.widgets.cc:280 msgid "Remove dust spots from scanned slides" msgstr "Eliminar motas de polvo de diapositivas escaneadas" -#: f.widgets.cc:283 +#: f.widgets.cc:281 msgid "Smoothen edges with jaggies" msgstr "Suavizar bordes con dientes de sierra" -#: f.widgets.cc:284 +#: f.widgets.cc:282 msgid "Reduce Chromatic Abberation" msgstr "Reducir aberración cromática" -#: f.widgets.cc:285 +#: f.widgets.cc:283 msgid "Erase known hot and dark pixels" msgstr "Eliminar píxeles calientes y negros conocidos" -#: f.widgets.cc:288 +#: f.widgets.cc:286 msgid "Remove curvature, esp. panoramas" msgstr "Eliminar curvatura, esp. panoramas" -#: f.widgets.cc:289 +#: f.widgets.cc:287 msgid "Straighten objects seen from an angle" msgstr "Enderezar objetos vistos desde un ángulo" -#: f.widgets.cc:290 +#: f.widgets.cc:288 msgid "Distort image areas using the mouse" msgstr "Deformar áreas de la imagen usando el ratón" -#: f.widgets.cc:291 f.widgets.cc:292 f.widgets.cc:293 +#: f.widgets.cc:289 f.widgets.cc:290 f.widgets.cc:291 msgid "Distort the whole image using the mouse" msgstr "Deformar toda la imagen usando el ratón" -#: f.widgets.cc:294 +#: f.widgets.cc:292 msgid "Flatten a photographed book page" msgstr "Aplanar foto de una página impresa " -#: f.widgets.cc:297 +#: f.widgets.cc:295 msgid "Reduce color depth (posterize)" msgstr "Reducir profundidad de color (posterizar)" -#: f.widgets.cc:298 +#: f.widgets.cc:296 msgid "Convert to pencil sketch" msgstr "Convertir a un esbozo a lápiz" -#: f.widgets.cc:299 +#: f.widgets.cc:297 msgid "Convert to line drawing (edge detection)" msgstr "Convertir a un dibujo de líneas (detección de bordes)" -#: f.widgets.cc:300 +#: f.widgets.cc:298 msgid "Convert to solid color drawing" msgstr "Convertir a dibujo de colores sólidos" -#: f.widgets.cc:301 +#: f.widgets.cc:299 msgid "Graduated Blur depending on contrast" msgstr "Desenfoque graduado dependiendo del contraste" -#: f.widgets.cc:302 +#: f.widgets.cc:300 msgid "Create an embossed or 3D appearance" msgstr "Crear un relieve o apariencia 3D" -#: f.widgets.cc:303 +#: f.widgets.cc:301 msgid "Convert to square tiles" msgstr "Convertir a baldosas cuadradas" -#: f.widgets.cc:304 +#: f.widgets.cc:302 msgid "Convert to dots (Roy Lichtenstein effect)" msgstr "Convertir a puntos (efecto Roy Lichtenstein)" -#: f.widgets.cc:305 +#: f.widgets.cc:303 msgid "Convert into a simulated painting" msgstr "Convertir a pintura simulada" -#: f.widgets.cc:306 +#: f.widgets.cc:304 msgid "Change brightness or color radially" msgstr "Cambiar radialmente el brillo o el color" -#: f.widgets.cc:307 +#: f.widgets.cc:305 msgid "Add texture to an image" msgstr "Añadir textura a una imagen" -#: f.widgets.cc:308 +#: f.widgets.cc:306 msgid "Tile image with a repeating pattern" msgstr "Embaldosar imagen con un patrón repetitivo" -#: f.widgets.cc:309 +#: f.widgets.cc:307 msgid "Create a mosaic with tiles made from all images" msgstr "Crear un mosaico con baldosas hechas de todas las imágenes" -#: f.widgets.cc:310 +#: f.widgets.cc:308 msgid "Process an image using a custom kernel" msgstr "Procesar una imagen usando una matriz personalizada" -#: f.widgets.cc:311 +#: f.widgets.cc:309 msgid "Warp an image with a wave pattern" msgstr "Deformar una imagencon un patrón de ondas" -#: f.widgets.cc:312 +#: f.widgets.cc:310 msgid "Blur an image in the direction of mouse drags" msgstr "Desenfocar una imagen en la dirección del movimiento del ratón" -#: f.widgets.cc:315 +#: f.widgets.cc:313 msgid "Combine bright/dark images for better detail" msgstr "Combinar imágenes brillantes/oscuras para mejorar detalles" -#: f.widgets.cc:316 +#: f.widgets.cc:314 msgid "Combine near/far focus images for deeper focus" msgstr "" "Combinar imágenes enfocadas cerca/lejos para mayor profundidad de campo" -#: f.widgets.cc:317 +#: f.widgets.cc:315 msgid "Combine images to erase passing people, etc." msgstr "Combinar imágenes para borrar gente, coches, etc" -#: f.widgets.cc:318 +#: f.widgets.cc:316 msgid "Combine noisy images into a low-noise image" msgstr "Combinaar imágenes ruidosas en una imagen de bajo ruido" -#: f.widgets.cc:319 +#: f.widgets.cc:317 msgid "Combine images into a panorama" msgstr "Combinar imágenes en una panorámica" -#: f.widgets.cc:320 +#: f.widgets.cc:318 msgid "Combine images into a vertical panorama" msgstr "Combinar imágenes en un panorama vertical" -#: f.widgets.cc:321 +#: f.widgets.cc:319 msgid "Combine images into a panorama (panorama tools)" msgstr "Combinar imágenes en una panorámica (panorama tools)" -#: f.widgets.cc:322 +#: f.widgets.cc:320 msgid "Arrange images and text in a layout (montage)" msgstr "Ordenar imágenes y texto en una capa (montaje)" -#: f.widgets.cc:325 +#: f.widgets.cc:323 msgid "Index new files and make thumbnails" msgstr "Indexar nuevos archivos y crear miniaturas" -#: f.widgets.cc:326 +#: f.widgets.cc:324 msgid "Change user preferences" msgstr "Cambiar preferencias del usuario" -#: f.widgets.cc:327 +#: f.widgets.cc:325 msgid "Change Keyboard Shortcut Keys" msgstr "Canmbiar teclas de atajos de teclado" -#: f.widgets.cc:328 +#: f.widgets.cc:326 msgid "Show a brightness distribution graph" msgstr "Mostrar histograma (distribución del brillo)" -#: f.widgets.cc:329 +#: f.widgets.cc:327 msgid "Show or revise grid lines" msgstr "Mostrar o revisar líneas de rejilla" -#: f.widgets.cc:330 +#: f.widgets.cc:328 msgid "Change color of foreground lines" msgstr "Cambiar color de líneas de contorno" -#: f.widgets.cc:331 +#: f.widgets.cc:329 msgid "Show RGB colors at mouse click" msgstr "Mostrar colores RGB con un clic del ratón" -#: f.widgets.cc:332 +#: f.widgets.cc:330 msgid "Magnify image around the mouse position" msgstr "Aumenta la imagen alrededor de la posición del ratón" -#: f.widgets.cc:333 +#: f.widgets.cc:331 msgid "Highlight darkest and brightest pixels" msgstr "Resaltar píxeles más brillantes o más oscuros" -#: f.widgets.cc:334 +#: f.widgets.cc:332 msgid "Chart to adjust monitor color" msgstr "Carta para ajustar el color del monitor" -#: f.widgets.cc:335 +#: f.widgets.cc:333 msgid "Chart to adjust monitor gamma" msgstr "Carta para ajustar la gamma del monitor" -#: f.widgets.cc:336 +#: f.widgets.cc:334 msgid "Change the GUI language" msgstr "cambiar el idioma de la interfaz de usuario" -#: f.widgets.cc:337 +#: f.widgets.cc:335 msgid "Report missing translations" msgstr "Informe de traducciones que faltan" -#: f.widgets.cc:338 -msgid "Search all image files and report duplicates" -msgstr "Buscar en todas las imágenes e informar de duplicados" +#: f.widgets.cc:336 +msgid "Calibrate printer colors" +msgstr "" -#: f.widgets.cc:339 +#: f.widgets.cc:337 msgid "Memory and CPU (to terminal/logfile)" msgstr "Memoria y CPU (al terminal/archivo de registro)" -#: f.widgets.cc:343 +#: f.widgets.cc:341 msgid "Rename/convert/resize/move multiple files" msgstr "Renombrar/convertir/redimensionar/mover múltiples archivos" -#: f.widgets.cc:344 +#: f.widgets.cc:342 msgid "Upright multiple rotated image files" msgstr "Enderezar múltiples imagenes giradas" -#: f.widgets.cc:345 +#: f.widgets.cc:343 msgid "Delete or Trash multiple files" msgstr "Borrar o eliminar múltiples imágenes" -#: f.widgets.cc:346 +#: f.widgets.cc:344 msgid "Convert camera RAW files using DCraw" msgstr "Convertir archivos RAW usando DCraw" -#: f.widgets.cc:347 +#: f.widgets.cc:345 msgid "Convert camera RAW files using Raw Therapee" msgstr "Convertir archivos RAW usando RawTherapee" -#: f.widgets.cc:348 +#: f.widgets.cc:346 msgid "Burn selected image files to CD or DVD" msgstr "Grabar imágenes seleccionadas en un CD o DVD" -#: f.widgets.cc:352 +#: f.widgets.cc:347 +msgid "Search all image files and report duplicates" +msgstr "Buscar en todas las imágenes e informar de duplicados" + +#: f.widgets.cc:351 msgid "Quick Start mini-guide" msgstr "Mini guía de referencia rápida" -#: f.widgets.cc:353 +#: f.widgets.cc:352 msgid "Read the user guide" msgstr "Leer la guía de usuario" -#: f.widgets.cc:354 +#: f.widgets.cc:353 msgid "Recent user guide changes" msgstr "Cambios recientes en la guia de usuario" -#: f.widgets.cc:355 +#: f.widgets.cc:354 msgid "Summary of image edit functions" msgstr "Resumen de las funciones de edición de imágenes" -#: f.widgets.cc:356 +#: f.widgets.cc:355 msgid "Technical installation notes" msgstr "Notas técnicas de instalación" -#: f.widgets.cc:357 +#: f.widgets.cc:356 msgid "List updates by Fotoxx version" msgstr "Listar actualizaciones por versión de Fotoxx" -#: f.widgets.cc:358 +#: f.widgets.cc:357 msgid "View the log file and error messages" msgstr "Ver el archivo de registro y mensajes de error" -#: f.widgets.cc:359 +#: f.widgets.cc:358 msgid "How to do Fotoxx translations" msgstr "Cómo hacer traducciones de Fotoxx" -#: f.widgets.cc:360 +#: f.widgets.cc:359 msgid "Show the Fotoxx web page" msgstr "Muestra la página web de Fotoxx" -#: f.widgets.cc:361 +#: f.widgets.cc:360 msgid "Version, license, contact, credits" msgstr "Versión, licencia, contacto, créditos" -#: f.widgets.cc:364 +#: f.widgets.cc:363 msgid "Organize images into albums" msgstr "Organizar imágenes en álbumes" -#: f.widgets.cc:365 +#: f.widgets.cc:364 msgid "Start a slide show" msgstr "Iniciar un diaporama" -#: f.widgets.cc:366 +#: f.widgets.cc:365 msgid "Set desktop image from current Fotoxx image" msgstr "Establecer fondo de escritorio con la imagen actual" -#: f.widgets.cc:367 +#: f.widgets.cc:366 msgid "Cycle desktop images from a Fotoxx album" msgstr "Fondos de escritorio cíclicos desde un álbum de Fotoxx" -#: f.widgets.cc:389 +#: f.widgets.cc:388 msgid "New Window" msgstr "Nueva ventana" -#: f.widgets.cc:391 +#: f.widgets.cc:390 msgid "Open Previous File" msgstr "Abrir archivo anterior" -#: f.widgets.cc:392 +#: f.widgets.cc:391 msgid "Recently Seen Images" msgstr "Imágenes vistas recientemente " -#: f.widgets.cc:393 +#: f.widgets.cc:392 msgid "Newest Images" msgstr "Imágenes más recientes" -#: f.widgets.cc:394 +#: f.widgets.cc:393 msgid "Open RAW (ufraw)" msgstr "Abrir RAW (ufraw)" -#: f.widgets.cc:395 +#: f.widgets.cc:394 msgid "Open RAW (Raw Therapee)" msgstr "Abrir RAW (Raw Therapee)" -#: f.widgets.cc:397 +#: f.widgets.cc:396 msgid "New Blank Image" msgstr "Nueva imagen en blanco" -#: f.widgets.cc:399 +#: f.widgets.cc:398 msgid "Delete Image File" msgstr "Borrar imagen" -#: f.widgets.cc:400 +#: f.widgets.cc:399 msgid "Print Image" msgstr "Imprimir imagen" -#: f.widgets.cc:401 f.widgets.cc:538 +#: f.widgets.cc:400 f.widgets.cc:543 msgid "Set Desktop Image" msgstr "Establecer fondo de escritorio" -#: f.widgets.cc:405 +#: f.widgets.cc:404 msgid "View Metadata (short)" msgstr "Ver metadatos (corto)" -#: f.widgets.cc:406 +#: f.widgets.cc:405 msgid "View Metadata (long)" msgstr "Ver metadatos (largo)" -#: f.widgets.cc:407 +#: f.widgets.cc:406 msgid "Show Captions on Image" msgstr "Mostrar leyendas en la imagen" -#: f.widgets.cc:409 +#: f.widgets.cc:408 msgid "Edit Any Metadata" msgstr "Editar cualquier metadato" -#: f.widgets.cc:412 f.widgets.cc:531 +#: f.widgets.cc:411 f.widgets.cc:534 msgid "Batch Rename Tags" msgstr "Renombrar etiquetas en lote" -#: f.widgets.cc:413 f.widgets.cc:532 +#: f.widgets.cc:412 f.widgets.cc:535 msgid "Batch Add/Change Metadata" msgstr "Añadir/cambiar metadatos en lote" -#: f.widgets.cc:416 f.widgets.cc:606 +#: f.widgets.cc:415 f.widgets.cc:537 f.widgets.cc:611 msgid "Images by Geotag" msgstr "Imágenes por Geoetiquetas" -#: f.widgets.cc:417 f.widgets.cc:607 +#: f.widgets.cc:416 f.widgets.cc:538 f.widgets.cc:612 msgid "Search Images" msgstr "Buscar imágenes" -#: f.widgets.cc:420 fotoxx.h:1156 +#: f.widgets.cc:419 fotoxx.h:1164 msgid "Select" msgstr "Seleccionar" -#: f.widgets.cc:421 fotoxx.h:1158 +#: f.widgets.cc:420 fotoxx.h:1166 msgid "Show" msgstr "Mostrar" -#: f.widgets.cc:422 fotoxx.h:1112 +#: f.widgets.cc:421 fotoxx.h:1120 msgid "Hide" msgstr "Ocultar" -#: f.widgets.cc:423 fotoxx.h:1098 +#: f.widgets.cc:422 fotoxx.h:1106 msgid "Enable" msgstr "Activar" -#: f.widgets.cc:424 fotoxx.h:1094 +#: f.widgets.cc:423 fotoxx.h:1102 msgid "Disable" msgstr "Desactivar" -#: f.widgets.cc:425 fotoxx.h:1115 +#: f.widgets.cc:424 fotoxx.h:1123 msgid "Invert" msgstr "Invertir" -#: f.widgets.cc:426 fotoxx.h:1172 +#: f.widgets.cc:425 fotoxx.h:1180 msgid "Unselect" msgstr "Deseleccionar" +#: f.widgets.cc:426 +msgid "Copy Area" +msgstr "" + #: f.widgets.cc:427 +msgid "Paste Area" +msgstr "" + +#: f.widgets.cc:428 msgid "Open Area File" msgstr "Abrir archivo de área" -#: f.widgets.cc:428 +#: f.widgets.cc:429 msgid "Save Area File" msgstr "Guardar archivo de área" -#: f.widgets.cc:433 +#: f.widgets.cc:434 msgid "Voodoo 1" msgstr "Automejora 1" -#: f.widgets.cc:434 +#: f.widgets.cc:435 msgid "Voodoo 2" msgstr "Automejora 2" -#: f.widgets.cc:436 +#: f.widgets.cc:437 msgid "Adjust Brightness Dist." msgstr "Ajustar histograma" -#: f.widgets.cc:437 f.widgets.cc:676 +#: f.widgets.cc:438 f.widgets.cc:681 msgid "Zonal Flatten" msgstr "Aplanado zonal" -#: f.widgets.cc:441 +#: f.widgets.cc:442 msgid "Add Text" msgstr "Añadir texto" -#: f.widgets.cc:442 +#: f.widgets.cc:443 msgid "Add Lines" msgstr "Añadir líneas" -#: f.widgets.cc:445 +#: f.widgets.cc:446 msgid "Plugins" msgstr "Plugins" -#: f.widgets.cc:450 +#: f.widgets.cc:451 msgid "Denoise" msgstr "Reducir ruido" -#: f.widgets.cc:452 +#: f.widgets.cc:453 msgid "Red Eyes" msgstr "Ojos rojos" -#: f.widgets.cc:457 +#: f.widgets.cc:458 msgid "Adjust RGB/CMY" msgstr "Ajustar RGB/CMY" -#: f.widgets.cc:458 +#: f.widgets.cc:459 msgid "Adjust HSL" msgstr "Ajystar HSL" -#: f.widgets.cc:459 +#: f.widgets.cc:460 msgid "Brightness Ramp" msgstr "Rampa de brillo" -#: f.widgets.cc:461 +#: f.widgets.cc:462 msgid "Match Colors" msgstr "Concordar colores" -#: f.widgets.cc:462 +#: f.widgets.cc:463 msgid "Color Profile" msgstr "perfil de color" -#: f.widgets.cc:464 +#: f.widgets.cc:465 msgid "Anti-Alias" msgstr "Suavizar bordes" -#: f.widgets.cc:470 +#: f.widgets.cc:471 msgid "Fix Perspective" msgstr "Corregir perspectiva" -#: f.widgets.cc:475 +#: f.widgets.cc:476 msgid "Flatten Book Page" msgstr "Aplanar página impresa" -#: f.widgets.cc:478 +#: f.widgets.cc:479 msgid "Color Depth" msgstr "Profundidad de color" -#: f.widgets.cc:479 +#: f.widgets.cc:480 msgid "Sketch" msgstr "Esbozo" -#: f.widgets.cc:483 +#: f.widgets.cc:484 msgid "Embossing" msgstr "Relieve" -#: f.widgets.cc:485 +#: f.widgets.cc:486 msgid "Dots" msgstr "Puntos" -#: f.widgets.cc:486 +#: f.widgets.cc:487 msgid "Painting" msgstr "Pintura" -#: f.widgets.cc:488 +#: f.widgets.cc:489 msgid "Texture" msgstr "Textura" -#: f.widgets.cc:490 +#: f.widgets.cc:491 msgid "Mosaic" msgstr "Mosaico" -#: f.widgets.cc:496 +#: f.widgets.cc:497 msgid "High Dynamic Range" msgstr "HDR alto rango dinámico" -#: f.widgets.cc:497 +#: f.widgets.cc:498 msgid "High Depth of Field" msgstr "HDF alta profundidad de campo" -#: f.widgets.cc:498 +#: f.widgets.cc:499 msgid "Stack/Paint" msgstr "Apilar/pintar" -#: f.widgets.cc:499 +#: f.widgets.cc:500 msgid "Stack/Noise" msgstr "Apilar/ruido" -#: f.widgets.cc:500 +#: f.widgets.cc:501 msgid "Panorama" msgstr "Panorama" -#: f.widgets.cc:501 +#: f.widgets.cc:502 msgid "Vertical Panorama" msgstr "Panorama vertical " -#: f.widgets.cc:502 +#: f.widgets.cc:503 msgid "PT Panorama" msgstr "PT panorama" -#: f.widgets.cc:503 +#: f.widgets.cc:504 msgid "Mashup" msgstr "Montaje" -#: f.widgets.cc:508 +#: f.widgets.cc:509 msgid "Keyboard Shortcuts" msgstr "Atajos de teclado" -#: f.widgets.cc:509 +#: f.widgets.cc:510 msgid "Show Brightness Dist." msgstr "Mostrar histograma" -#: f.widgets.cc:514 +#: f.widgets.cc:515 msgid "Dark/Bright Pixels" msgstr "Sobre/subexposición" -#: f.widgets.cc:515 +#: f.widgets.cc:516 msgid "Monitor Color" msgstr "Color del monitor" -#: f.widgets.cc:517 +#: f.widgets.cc:518 msgid "Change Language" msgstr "Cambiar idioma" -#: f.widgets.cc:518 +#: f.widgets.cc:519 msgid "Missing Translations" msgstr "Traducciones que faltan" -#: f.widgets.cc:520 +#: f.widgets.cc:522 msgid "Resources" msgstr "Recursos" -#: f.widgets.cc:527 +#: f.widgets.cc:529 msgid "Batch RAW (DCraw)" msgstr "Convertir Raw en lote (DCraw)" -#: f.widgets.cc:528 +#: f.widgets.cc:530 msgid "Batch RAW (Raw Therapee)" msgstr "Convertir RAW en lote (RawTherapee)" -#: f.widgets.cc:529 +#: f.widgets.cc:531 msgid "Burn Images to CD/DVD" msgstr "Grabar imágenes en un CD/DVD" -#: f.widgets.cc:539 +#: f.widgets.cc:544 msgid "Cycle Desktop Image" msgstr "Fondo de escritorio cíclico" -#: f.widgets.cc:542 fotoxx-15.08.cc:5513 -msgid "Quick Start" -msgstr "Referencia rápida" - -#: f.widgets.cc:543 fotoxx-15.08.cc:5516 -msgid "User Guide" -msgstr "Guia de usuario" - -#: f.widgets.cc:544 fotoxx-15.08.cc:5519 -msgid "User Guide Changes" -msgstr "Cambios en la guía de usuario" - -#: f.widgets.cc:545 fotoxx-15.08.cc:5525 -msgid "Edit Functions Summary" -msgstr "Resumen de las funciones de edición" - -#: f.widgets.cc:546 fotoxx-15.08.cc:5522 -msgid "README" -msgstr "LÉAME" - -#: f.widgets.cc:547 fotoxx-15.08.cc:5528 -msgid "Change Log" -msgstr "Registro de cambios" - -#: f.widgets.cc:548 fotoxx-15.08.cc:5531 -msgid "Log File" -msgstr "Archivo de registro" - -#: f.widgets.cc:549 fotoxx-15.08.cc:5534 -msgid "Translations" -msgstr "Traducciones" - -#: f.widgets.cc:550 fotoxx-15.08.cc:5537 -msgid "Home Page" -msgstr "Página web" - -#: f.widgets.cc:551 fotoxx-15.08.cc:5540 -msgid "About" -msgstr "Acerca de" - -#: f.widgets.cc:556 f.widgets.cc:579 f.widgets.cc:601 +#: f.widgets.cc:561 f.widgets.cc:584 f.widgets.cc:606 msgid "Gallery" msgstr "Galeria" -#: f.widgets.cc:557 f.widgets.cc:580 f.widgets.cc:602 +#: f.widgets.cc:562 f.widgets.cc:585 f.widgets.cc:607 msgid "World Maps" msgstr "Mapas mundiales" -#: f.widgets.cc:559 +#: f.widgets.cc:564 msgid "Favorites" msgstr "Favoritos" -#: f.widgets.cc:561 fotoxx.h:1152 +#: f.widgets.cc:566 fotoxx.h:1160 msgid "Save" msgstr "Guardar" -#: f.widgets.cc:562 +#: f.widgets.cc:567 msgid "Prev/Next" msgstr "Ant/Sig" -#: f.widgets.cc:563 +#: f.widgets.cc:568 msgid "Metadata" msgstr "Metadatos" -#: f.widgets.cc:564 +#: f.widgets.cc:569 msgid "Areas" msgstr "Areas" -#: f.widgets.cc:565 fotoxx.h:1097 +#: f.widgets.cc:570 fotoxx.h:1105 msgid "Edit" msgstr "Editar" -#: f.widgets.cc:566 +#: f.widgets.cc:571 msgid "Repair" msgstr "Reparar" -#: f.widgets.cc:567 +#: f.widgets.cc:572 msgid "Bend" msgstr "Deformar" -#: f.widgets.cc:568 +#: f.widgets.cc:573 msgid "Effects" msgstr "Efectos" -#: f.widgets.cc:569 +#: f.widgets.cc:574 msgid "Combine" msgstr "Combinar" -#: f.widgets.cc:570 +#: f.widgets.cc:575 msgid "Undo/Redo" msgstr "Desh/Reh" -#: f.widgets.cc:571 +#: f.widgets.cc:576 msgid "Tools" msgstr "Herramientas" -#: f.widgets.cc:572 f.widgets.cc:594 fotoxx-15.08.cc:5544 fotoxx.h:1111 -msgid "Help" -msgstr "Ayuda" - -#: f.widgets.cc:582 +#: f.widgets.cc:587 msgid "Sync.G" msgstr "Sincr.G" -#: f.widgets.cc:583 +#: f.widgets.cc:588 msgid "Albums" msgstr "Álbums" -#: f.widgets.cc:584 +#: f.widgets.cc:589 msgid "Bookmarks" msgstr "Marcas" -#: f.widgets.cc:593 +#: f.widgets.cc:598 msgid "Batch" msgstr "" -#: f.widgets.cc:604 +#: f.widgets.cc:609 msgid "Choose Map" msgstr "Elegir mapa" -#: f.widgets.cc:605 +#: f.widgets.cc:610 msgid "Search Range" msgstr "Rango de búsqueda" -#: f.widgets.cc:613 fotoxx.h:1170 +#: f.widgets.cc:618 fotoxx.h:1178 msgid "Undo" msgstr "Deshacer" -#: f.widgets.cc:614 fotoxx.h:1143 +#: f.widgets.cc:619 fotoxx.h:1151 msgid "Redo" msgstr "Rehacer" -#: f.widgets.cc:655 +#: f.widgets.cc:660 msgid "Popup Image" msgstr "Imagen emergente" -#: f.widgets.cc:656 +#: f.widgets.cc:661 msgid "Popup Image (add)" msgstr "Imagen emergente (añadir)" -#: f.widgets.cc:660 fotoxx.h:1146 +#: f.widgets.cc:665 fotoxx.h:1154 msgid "Rename" msgstr "Renombrar" -#: f.widgets.cc:661 +#: f.widgets.cc:666 msgid "Copy to Location" msgstr "Cambiar a la ubicación" -#: f.widgets.cc:662 +#: f.widgets.cc:667 msgid "Move to Location" msgstr "Mover a la ubicación" -#: f.widgets.cc:663 +#: f.widgets.cc:668 msgid "Copy to Clipboard" msgstr "Copiar al portapapeles" -#: f.widgets.cc:664 +#: f.widgets.cc:669 msgid "Remove from Album" msgstr "Eliminar del álbum" -#: f.widgets.cc:665 +#: f.widgets.cc:670 msgid "Cut to Image Cache" msgstr " Cortar al caché de imagen" -#: f.widgets.cc:666 +#: f.widgets.cc:671 msgid "Copy to Image Cache" msgstr "Copiar al caché de imagen " -#: f.widgets.cc:667 +#: f.widgets.cc:672 msgid "Paste Image Cache Here (clear)" msgstr "Pegar caché de imagen aquí (borrar)" -#: f.widgets.cc:668 +#: f.widgets.cc:673 msgid "Paste Image Cache Here (keep)" msgstr "Pegar caché de imagen aquí (guardar)" -#: f.widgets.cc:669 +#: f.widgets.cc:674 msgid "Paste Current Image File Here" msgstr "Pegar aqui imagen actual" -#: f.widgets.cc:673 +#: f.widgets.cc:678 msgid "Voodoo Enhance" msgstr "Mejora automática" -#: f.widgets.cc:675 +#: f.widgets.cc:680 msgid "Brightness Dist." msgstr "Histograma" -#: f.widgets.cc:678 +#: f.widgets.cc:683 msgid "Select Area" msgstr "Seleccionar área" -#: f.widgets.cc:681 fotoxx.h:1166 +#: f.widgets.cc:686 fotoxx.h:1174 msgid "Trash" msgstr "Papelera" -#: f.widgets.cc:806 +#: f.widgets.cc:811 msgid "Image Locations" msgstr "Ubicación de imágenes" -#: fotoxx-15.08.cc:376 +#: fotoxx-15.09.cc:361 msgid "Please install missing programs:" msgstr "Por favor instalar los programas necesarios:" -#: fotoxx-15.08.cc:667 +#: fotoxx-15.09.cc:652 msgid "Kill active dialog?" msgstr "¿Cerrar diálogo activo?" -#: fotoxx-15.08.cc:742 +#: fotoxx-15.09.cc:723 msgid "(reduced)" msgstr "(reducido)" -#: fotoxx-15.08.cc:743 +#: fotoxx-15.09.cc:724 msgid "area active" msgstr "área activa" -#: fotoxx-15.08.cc:744 +#: fotoxx-15.09.cc:725 msgid "dialog open" msgstr "diálogo abierto" -#: fotoxx-15.08.cc:745 -msgid "BUSY" -msgstr "TRABAJANDO" - -#: fotoxx-15.08.cc:746 +#: fotoxx-15.09.cc:726 msgid "blocked" msgstr "bloqueado" -#: fotoxx-15.08.cc:796 +#: fotoxx-15.09.cc:776 msgid "edits" msgstr "ediciones" -#: fotoxx-15.08.cc:2805 +#: fotoxx-15.09.cc:2756 msgid "Exceed 50 anchor points" msgstr "Excedidos 50 puntos de anclaje" -#: fotoxx-15.08.cc:3018 +#: fotoxx-15.09.cc:2969 msgid "load curve from a file" msgstr "Cargar curva desde un archivo" -#: fotoxx-15.08.cc:3091 +#: fotoxx-15.09.cc:3042 msgid "save curve to a file" msgstr "Guardar la curva como un archivo" -#: fotoxx-15.08.cc:3161 +#: fotoxx-15.09.cc:3112 msgid "Too many edits, please save image" msgstr "Demasiadas ediciones, por favcor guarde la imagen" -#: fotoxx-15.08.cc:3180 +#: fotoxx-15.09.cc:3131 msgid "" "Select area not active.\n" "Continue?" @@ -4467,373 +4570,373 @@ "La selección de área no está activada.\n" "¿Continuar?" -#: fotoxx-15.08.cc:3435 +#: fotoxx-15.09.cc:3385 msgid "Load settings from file" msgstr "Cargar ajustes desde un archivo" -#: fotoxx-15.08.cc:3532 +#: fotoxx-15.09.cc:3482 msgid "file data does not fit dialog" msgstr "los datos del archivo no se ajustan al diálogo" -#: fotoxx-15.08.cc:3542 +#: fotoxx-15.09.cc:3492 msgid "Save settings to a file" msgstr "Guardar ajustes en un archivo" -#: fotoxx-15.08.cc:3835 +#: fotoxx-15.09.cc:3781 msgid "This action will discard changes to current image" msgstr "Esta acción descartará los cambios a la imagen actual" -#: fotoxx-15.08.cc:3836 fotoxx-15.08.cc:3837 +#: fotoxx-15.09.cc:3782 fotoxx-15.09.cc:3783 msgid "prior function still active" msgstr "función anterior todavía activa" -#: fotoxx-15.08.cc:3838 fotoxx.h:1116 +#: fotoxx-15.09.cc:3784 fotoxx.h:1124 msgid "Keep" msgstr "Guardar" -#: fotoxx-15.08.cc:3839 +#: fotoxx-15.09.cc:3785 msgid "Discard" msgstr "Descartar" -#: fotoxx.h:1068 +#: fotoxx.h:1076 msgid "Add" msgstr "Añadir" -#: fotoxx.h:1069 +#: fotoxx.h:1077 msgid "Add All" msgstr "Añadir todo" -#: fotoxx.h:1071 +#: fotoxx.h:1079 msgid "Amount" msgstr "Cantidad" -#: fotoxx.h:1072 +#: fotoxx.h:1080 msgid "Angle" msgstr "Ángulo" -#: fotoxx.h:1073 +#: fotoxx.h:1081 msgid "Apply" msgstr "Aplicar" -#: fotoxx.h:1074 +#: fotoxx.h:1082 msgid "Auto" msgstr "Auto" -#: fotoxx.h:1075 +#: fotoxx.h:1083 msgid "Black" msgstr "Negro" -#: fotoxx.h:1076 +#: fotoxx.h:1084 msgid "Blend Width" msgstr "Ancho de mezclado" -#: fotoxx.h:1078 zfuncs.cc:10061 +#: fotoxx.h:1086 zfuncs.cc:10054 msgid "bottom" msgstr "abajo" -#: fotoxx.h:1080 +#: fotoxx.h:1088 msgid "Browse" msgstr "Examinar" -#: fotoxx.h:1081 +#: fotoxx.h:1089 msgid "Cancel" msgstr "Cancelar" -#: fotoxx.h:1082 +#: fotoxx.h:1090 msgid "center" msgstr "centro" -#: fotoxx.h:1083 +#: fotoxx.h:1091 msgid "Choose" msgstr "Elegir" -#: fotoxx.h:1084 +#: fotoxx.h:1092 msgid "Clear" msgstr "Limpiar" -#: fotoxx.h:1085 +#: fotoxx.h:1093 msgid "Color" msgstr "Color" -#: fotoxx.h:1086 +#: fotoxx.h:1094 msgid "continue" msgstr "continuar" -#: fotoxx.h:1088 +#: fotoxx.h:1096 msgid "Copy" msgstr "Copiar" -#: fotoxx.h:1089 +#: fotoxx.h:1097 msgid "Create" msgstr "Crear" -#: fotoxx.h:1090 +#: fotoxx.h:1098 msgid "Curve File:" msgstr "Archivo de curva:" -#: fotoxx.h:1091 +#: fotoxx.h:1099 msgid "Cut" msgstr "Cortar" -#: fotoxx.h:1092 +#: fotoxx.h:1100 msgid "Deband" msgstr "Eliminar bandas" -#: fotoxx.h:1093 +#: fotoxx.h:1101 msgid "Delete" msgstr "Borrar" -#: fotoxx.h:1095 +#: fotoxx.h:1103 msgid "Done" msgstr "Hecho" -#: fotoxx.h:1096 +#: fotoxx.h:1104 msgid "edge" msgstr "borde" -#: fotoxx.h:1099 +#: fotoxx.h:1107 msgid "Erase" msgstr "Borrar" -#: fotoxx.h:1100 +#: fotoxx.h:1108 msgid "Fetch" msgstr "Extraer" -#: fotoxx.h:1101 +#: fotoxx.h:1109 msgid "output file already exists" msgstr "el archivo de salida ya existe" -#: fotoxx.h:1102 +#: fotoxx.h:1110 #, c-format msgid "%d files selected" msgstr "%d archivos seleccionados" -#: fotoxx.h:1103 +#: fotoxx.h:1111 msgid "Find" msgstr "Encontrar" -#: fotoxx.h:1104 +#: fotoxx.h:1112 msgid "Finish" msgstr "Terminar" -#: fotoxx.h:1105 +#: fotoxx.h:1113 msgid "Flatten" msgstr "Aplanar" -#: fotoxx.h:1106 +#: fotoxx.h:1114 msgid "Font" msgstr "Tipo de letra" -#: fotoxx.h:1107 +#: fotoxx.h:1115 msgid "Geotags" msgstr "Geoetiquetas" -#: fotoxx.h:1109 +#: fotoxx.h:1117 msgid "Grid" msgstr "Rejilla" -#: fotoxx.h:1110 +#: fotoxx.h:1118 msgid "Height" msgstr "Alto" -#: fotoxx.h:1113 +#: fotoxx.h:1121 msgid "Images" msgstr " Imágenes" -#: fotoxx.h:1114 +#: fotoxx.h:1122 msgid "Insert" msgstr "Insertar" -#: fotoxx.h:1117 zfuncs.cc:10065 +#: fotoxx.h:1125 zfuncs.cc:10058 msgid "left" msgstr "izquierda" -#: fotoxx.h:1118 +#: fotoxx.h:1126 msgid "limit" msgstr "límite" -#: fotoxx.h:1119 +#: fotoxx.h:1127 msgid "Load" msgstr "Cargar" -#: fotoxx.h:1120 +#: fotoxx.h:1128 msgid "Make" msgstr "Hacer" -#: fotoxx.h:1122 +#: fotoxx.h:1130 msgid "Map" msgstr "Mapa" -#: fotoxx.h:1123 +#: fotoxx.h:1131 msgid "Max" msgstr "Máx" -#: fotoxx.h:1124 +#: fotoxx.h:1132 msgid "Negative" msgstr "Negativo" -#: fotoxx.h:1125 +#: fotoxx.h:1133 msgid "New" msgstr "Nuevo" -#: fotoxx.h:1126 +#: fotoxx.h:1134 msgid "Next" msgstr "Siguiente" -#: fotoxx.h:1127 zfuncs.cc:9147 +#: fotoxx.h:1135 zfuncs.cc:9148 msgid "No" msgstr "No" -#: fotoxx.h:1128 +#: fotoxx.h:1136 msgid "no images" msgstr "sin imágenes" -#: fotoxx.h:1130 +#: fotoxx.h:1138 msgid "no selection" msgstr "sin selección" -#: fotoxx.h:1131 +#: fotoxx.h:1139 msgid "OK" msgstr "OK" -#: fotoxx.h:1133 +#: fotoxx.h:1141 msgid "Paste" msgstr "Pegar" -#: fotoxx.h:1134 +#: fotoxx.h:1142 msgid "Pause" msgstr "Pausa" -#: fotoxx.h:1135 +#: fotoxx.h:1143 msgid "Percent" msgstr "Porcentaje" -#: fotoxx.h:1137 +#: fotoxx.h:1145 msgid "Presets" msgstr "Predefinidos" -#: fotoxx.h:1138 +#: fotoxx.h:1146 msgid "Prev" msgstr "Anterior" -#: fotoxx.h:1139 +#: fotoxx.h:1147 msgid "Proceed" msgstr "Proceder" -#: fotoxx.h:1141 +#: fotoxx.h:1149 msgid "range" msgstr "rango" -#: fotoxx.h:1144 +#: fotoxx.h:1152 msgid "Reduce" msgstr "Reducir" -#: fotoxx.h:1145 +#: fotoxx.h:1153 msgid "Remove" msgstr "Eliminar" -#: fotoxx.h:1147 +#: fotoxx.h:1155 msgid "Replace" msgstr "" -#: fotoxx.h:1148 +#: fotoxx.h:1156 msgid "Reserved" msgstr "Reservado" -#: fotoxx.h:1149 +#: fotoxx.h:1157 msgid "Reset" msgstr "Restablecer" -#: fotoxx.h:1150 zfuncs.cc:10069 +#: fotoxx.h:1158 zfuncs.cc:10062 msgid "right" msgstr "derecha" -#: fotoxx.h:1151 +#: fotoxx.h:1159 msgid "Rotate" msgstr "Rotar" -#: fotoxx.h:1153 +#: fotoxx.h:1161 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:1154 +#: fotoxx.h:1162 msgid "Search" msgstr "Buscar" -#: fotoxx.h:1155 +#: fotoxx.h:1163 msgid "Seconds" msgstr "Segundos" -#: fotoxx.h:1159 +#: fotoxx.h:1167 msgid "Size" msgstr "Tamaño" -#: fotoxx.h:1160 +#: fotoxx.h:1168 msgid "Start" msgstr "Comenzar" -#: fotoxx.h:1161 +#: fotoxx.h:1169 msgid "Strength" msgstr "Fuerza" -#: fotoxx.h:1162 +#: fotoxx.h:1170 msgid "Threshold" msgstr "Umbral" -#: fotoxx.h:1163 +#: fotoxx.h:1171 #, c-format msgid "exceed %d files" msgstr "se excedió en %d archivos" -#: fotoxx.h:1164 zfuncs.cc:10057 +#: fotoxx.h:1172 zfuncs.cc:10050 msgid "top" msgstr "arriba" -#: fotoxx.h:1165 +#: fotoxx.h:1173 msgid "Transparency" msgstr "Transparencia" -#: fotoxx.h:1167 +#: fotoxx.h:1175 msgid "Trim" msgstr "Recortar" -#: fotoxx.h:1168 +#: fotoxx.h:1176 msgid "Undo All" msgstr "Deshacer todo" -#: fotoxx.h:1169 +#: fotoxx.h:1177 msgid "Undo Last" msgstr "Deshacer el último" -#: fotoxx.h:1171 +#: fotoxx.h:1179 msgid "Unfinish" msgstr "Sin cerrar" -#: fotoxx.h:1173 +#: fotoxx.h:1181 msgid "View" msgstr "Ver" -#: fotoxx.h:1174 +#: fotoxx.h:1182 msgid "Web" msgstr "Web" -#: fotoxx.h:1175 +#: fotoxx.h:1183 msgid "White" msgstr "Blanco" -#: fotoxx.h:1176 +#: fotoxx.h:1184 msgid "Width" msgstr "Ancho" -#: fotoxx.h:1177 +#: fotoxx.h:1185 msgid "x-offset" msgstr "desplazamiento X" -#: fotoxx.h:1178 +#: fotoxx.h:1186 msgid "y-offset" msgstr "desplazamiento Y" -#: fotoxx.h:1179 zfuncs.cc:9147 +#: fotoxx.h:1187 zfuncs.cc:9148 msgid "Yes" msgstr "Sí" @@ -4850,475 +4953,71 @@ msgid "user guide not found" msgstr "guia de usuario no encontrada" -#: zfuncs.cc:5182 +#: zfuncs.cc:5183 #, c-format msgid "cannot open file %s" msgstr "No puedo abrir el archivo %s" -#: zfuncs.cc:5218 +#: zfuncs.cc:5219 msgid "save screen to file" msgstr "guardar pantalla a archivo" -#: zfuncs.cc:9223 zfuncs.cc:9724 zfuncs.cc:10044 +#: zfuncs.cc:9224 zfuncs.cc:9717 zfuncs.cc:10037 msgid "cancel" msgstr "cancelar" -#: zfuncs.cc:9685 +#: zfuncs.cc:9678 msgid "choose file" msgstr "elegir archivo" -#: zfuncs.cc:9690 +#: zfuncs.cc:9683 msgid "choose files" msgstr "elegir archivos" -#: zfuncs.cc:9695 +#: zfuncs.cc:9688 msgid "save" msgstr "guardar" -#: zfuncs.cc:9701 +#: zfuncs.cc:9694 msgid "choose folder" msgstr "elegir carpeta" -#: zfuncs.cc:9706 +#: zfuncs.cc:9699 msgid "choose folders" msgstr "elegir carpetas" -#: zfuncs.cc:9711 +#: zfuncs.cc:9704 msgid "create folder" msgstr "crear carpeta" -#: zfuncs.cc:9718 +#: zfuncs.cc:9711 msgid "hidden" msgstr "ocultar" -#: zfuncs.cc:10044 +#: zfuncs.cc:10037 msgid "done" msgstr "hecho" -#: zfuncs.cc:10044 zfuncs.cc:10053 +#: zfuncs.cc:10037 zfuncs.cc:10046 msgid "margins" msgstr "márgenes" -#: zfuncs.cc:10074 +#: zfuncs.cc:10067 msgid "image scale" msgstr "escalar imagen" -#: zfuncs.cc:10076 +#: zfuncs.cc:10069 msgid "percent" msgstr "porcentual" -#: zfuncs.cc:10083 +#: zfuncs.cc:10076 msgid "image" msgstr "imagen" -#: zfuncs.cc:10087 +#: zfuncs.cc:10080 msgid "width" msgstr "ancho" -#: zfuncs.cc:10091 +#: zfuncs.cc:10084 msgid "height" msgstr "alto" - -#~ msgid "albums" -#~ msgstr "albums" - -#~ msgid "Batch functions, Search Functions ..." -#~ msgstr "Funciones nde lote, Funciones de búsqueda" - -#~ msgid "Enter text, click/drag on image." -#~ msgstr "Introducir texto, lic/arrastrar en la imagen" - -#~ msgid "Enter line/arrow properties, click/drag on image." -#~ msgstr "" -#~ "Introducir propiedades de las línes/flechas, \n" -#~ "clic/arrastrar en la imagen" - -#~ msgid "Set Blur Radius" -#~ msgstr "Establecer radio de desenfoque" - -#~ msgid "Chromatic Abberation" -#~ msgstr "Aberración cromática" - -#~ msgid "Fix Stuck Pixels" -#~ msgstr "Corregir los píxeles retenidos" - -#~ msgid "Revise RGB" -#~ msgstr "Revisar RGB" - -#~ msgid "Top Image Directories" -#~ msgstr "directorios principales de imágenes" - -#~ msgid "%d images remaining in cache" -#~ msgstr "%d imágenes permanecen en caché" - -#~ msgid "" -#~ "First time Fotoxx startup. \n" -#~ "Latest version is available at: www.kornelix.com/fotoxx \n" -#~ "An image file index will be created. Your image files will \n" -#~ "not be changed, moved, or copied. This process may need \n" -#~ "considerable time if you have thousands of image files." -#~ msgstr "" -#~ "Primera vez que se inicia Fotoxx. \n" -#~ "Última versión disponible en: www.kornelix.com/fotoxx \n" -#~ "Se creará un archivo índice. Sus imágenes no serán \n" -#~ "cambiadas, movidas o copiadas. Este proceso puede tardar \n" -#~ "un tiempo considerable si tiene miles de fotos." - -#~ msgid "Tools: Index, Settings, Albums, Batch Funcs ..." -#~ msgstr "Herramientas: Índice, Ajustes, Funciones de lote ..." - -#~ msgid "Paint/Clone Pixels" -#~ msgstr "Pintar/clonar píxels" - -#~ msgid "Fix Color Fringes" -#~ msgstr "Corregir franjas de color" - -#~ msgid "Adjust color using CMYK or RGB values" -#~ msgstr "Ajustar color usando valores CMYK o RGB" - -#~ msgid "fotoxx-maps package not installed" -#~ msgstr "paquete de mapas de Fotoxx no instalado" - -#~ msgid "JPG quality 0-100" -#~ msgstr "Calidad de JPG 0-100" - -#~ msgid "quality" -#~ msgstr "calidad" - -#~ msgid "Top" -#~ msgstr "Arriba" - -#~ msgid "Remove from Collection" -#~ msgstr "Eliminar de la colección" - -#~ msgid "Rotate 90 degrees" -#~ msgstr "Girar 90º" - -#~ msgid "Upright multiple files rotated 90º" -#~ msgstr "Enderezar múltiples archivos girados 90º" - -#~ msgid "Organize images into collections" -#~ msgstr "Organizar imágenes en una colección" - -#~ msgid "Tools: Index, Settings, Collections, Batch Funcs ..." -#~ msgstr "Herramientas: Indice, Ajustes, Colecciones, Funciones de lote ... " - -#~ msgid "updating collections ..." -#~ msgstr "actualizar colecciones..." - -#~ msgid "file already exists" -#~ msgstr "el archivo ya existe" - -#~ msgid "new collection created" -#~ msgstr "nueva colección creada" - -#~ msgid "enter a collection name" -#~ msgstr "introducir nombre de colección" - -#~ msgid "make an initially empty collection" -#~ msgstr "iniciar una colección vacía" - -#~ msgid "Collection Name" -#~ msgstr "Nombre de colección" - -#~ msgid "cache added to empty collection" -#~ msgstr "caché añadido a colección vacía" - -#~ msgid "Delete Collection" -#~ msgstr "Borrar colección" - -#~ msgid "Choose Collection" -#~ msgstr "Elegir colección" - -#~ msgid "Delete a collection" -#~ msgstr "Borrar una colección" - -#~ msgid "Collection to view or edit" -#~ msgstr "Colección para ver o editar" - -#~ msgid "Create or replace a collection" -#~ msgstr "​Crear o reemplazar una colección" - -#~ msgid "Manage Collections" -#~ msgstr "Administrar colecciones" - -#~ msgid "Drag collection thumbnail to new position." -#~ msgstr "Arrastrar ​miniatura de colección a la nueva posición" - -#~ msgid "" -#~ "Right-click collection thumbnail to cut/copy \n" -#~ "to cache, insert from cache, or remove." -#~ msgstr "" -#~ "Clic derecho en la miniatura de la colección para cortar/copiar \n" -#~ "al caché, insertar desde el caché, o borrar" - -#~ msgid "open collection" -#~ msgstr "abrir colección" - -#~ msgid "invalid collection" -#~ msgstr "colección no nválida" - -#~ msgid "Edge Blend" -#~ msgstr "Mezcla de bordes" - -#~ msgid "current image:" -#~ msgstr "Imagen actual" - -#~ msgid "save project file?" -#~ msgstr "¿guardar archivo de proyecto?" - -#~ msgid "save project data" -#~ msgstr "guardar proyecto" - -#~ msgid "Choose collection" -#~ msgstr "escoger colección" - -#~ msgid "no collections found" -#~ msgstr "no se han encontrado colecciones" - -#~ msgid "collections" -#~ msgstr "colecciones" - -#~ msgid "target file already exists" -#~ msgstr "archivo destino ya existe" - -#~ msgid "Rotate 90º" -#~ msgstr "Girar 90º" - -#~ msgid "printed image width: %.1f height: %.1f cm" -#~ msgstr "imagen impresa, ancho: %.1f alto: %.1f cm" - -#~ msgid "menu locked" -#~ msgstr "menú bloqueado" - -#~ msgid "shrink" -#~ msgstr "encoger" - -#~ msgid "delete project file?" -#~ msgstr "¿borrar archivo de proyecto?" - -#~ msgid "save output file" -#~ msgstr "guardar archivo de salida" - -#~ msgid "function busy" -#~ msgstr "función trabajando" - -#~ msgid "no newly added files found" -#~ msgstr "no encontrados archivos añadidos recientemente" - -#~ msgid "no selection made" -#~ msgstr "selección no realizada" - -#~ msgid "Autocomplete" -#~ msgstr "Autocompletado" - -#~ msgid "Batch functions, Combine functions" -#~ msgstr "Funciones de lote, funciones de combinación" - -#~ msgid "next row" -#~ msgstr "fila siguiente" - -#~ msgid "previous row" -#~ msgstr "fila anterior" - -#~ msgid "open another directory" -#~ msgstr "Abrir otro directorio" - -#~ msgid "Auto-Trim" -#~ msgstr "Recorte automático" - -#~ msgid "Images by Location/Date" -#~ msgstr "Imágenes por localización/fecha" - -#~ msgid "Menu and Launcher" -#~ msgstr "Menú y lanzador" - -#~ msgid "User Settings" -#~ msgstr "Ajustes del usuario" - -#~ msgid "Save to Disk" -#~ msgstr "Guardar en el disco" - -#~ msgid "Sync Gallery" -#~ msgstr "Sincr. galería" - -#~ msgid "Remove margins from warp, panorama, etc." -#~ msgstr "Eliminar márgenes de una deformación, panorama, etc." - -#~ msgid "Change color of area outlines" -#~ msgstr "Cambiar color de los contornos del área" - -#~ msgid "Create a Gnome menu and launcher" -#~ msgstr "Crear un menú y lanzador de Gnome" - -#~ msgid "Tools: Index, Settings, Batch Funcs, Magnify ..." -#~ msgstr "Herramientas: Indice, Ajustes, Funciones de lote, Ampliar, ..." - -#~ msgid "File: Sync, Open, Save, Trash, Rename, Print" -#~ msgstr "Archivo: Sincronizar, Abrir, Guardar, Papelera, Renombrar, Imprimir" - -#~ msgid "Make Launcher" -#~ msgstr "Crear un lanzador" - -#~ msgid "Monitor scale" -#~ msgstr "Escala del monitor" - -#~ msgid "Magnified" -#~ msgstr "Ampliada" - -#~ msgid "Drag" -#~ msgstr "Arrastrar" - -#~ msgid "Image Pan" -#~ msgstr "Movimiento de imagen" - -#~ msgid "Directory Gallery" -#~ msgstr "Directorio de la galería" - -#~ msgid "Settings" -#~ msgstr "Ajustes" - -#~ msgid "thumbnails directory not .../thumbnails" -#~ msgstr "directorio de miniaturas .../miniaturas" - -#~ msgid "" -#~ "invalid top image directory: \n" -#~ " %s" -#~ msgstr "" -#~ "directorio superior inválido: \n" -#~ " %s" - -#~ msgid "terminated by user" -#~ msgstr "terminado por el usuario" - -#~ msgid "Thumbnails" -#~ msgstr "Miniaturas" - -#~ msgid "add directory" -#~ msgstr "añadir directorio" - -#~ msgid "Enter directory for thumbnails (or keep default)." -#~ msgstr "Entrar directorio para miniaturas (o mantener predeterminado)" - -#~ msgid "Or use the button to browse:" -#~ msgstr "O usar el botón para navegar:" - -#~ msgid "" -#~ "Enter directories containing images below \n" -#~ "(subdirectories are included automatically)." -#~ msgstr "" -#~ "Entrar directorios que contienen imágenes \n" -#~ "los subdirectorios se incluyen automáticamente" - -#~ msgid "Depth:" -#~ msgstr "Profundidad :" - -#~ msgid "Height:" -#~ msgstr "Altura" - -#~ msgid "Image Width:" -#~ msgstr "Ancho de imagen" - -#~ msgid "Size:" -#~ msgstr "Tamaño :" - -#~ msgid "Newest Files" -#~ msgstr "Archivos más recientes" - -#~ msgid "Pencil Sketch" -#~ msgstr "Boceto a lápiz" - -#~ msgid "Save PNG" -#~ msgstr "Guardar PNG" - -#~ msgid "Delete or Trash selected files" -#~ msgstr "Borrar o enviar a papelera archivos seleccionados" - -#~ msgid "Arrange multiple images on a background image" -#~ msgstr "Organizar múltiples imágenes sobre una imagen de fondo" - -#~ msgid "Save an area to a PNG file with transparency" -#~ msgstr "Guardar un área en un archivo PNG con transparencia" - -#~ msgid "Save an area to a file" -#~ msgstr "Guardar un área en un archivo" - -#~ msgid "Open a file with a saved area" -#~ msgstr "Abrir un archivo con un área guardada" - -#~ msgid "Paste an area into the current image" -#~ msgstr "Pegar un área en la imagen actual" - -#~ msgid "Copy an area for later pasting" -#~ msgstr "Copiar un área para posterior pegado" - -#~ msgid "Add geotags to multiple images" -#~ msgstr "Añadir geoetiquetas a múltiples imágenes" - -#~ msgid "Convert multiple tags for all images" -#~ msgstr "Convertit múltiples etiquetas para todas las imágenes" - -#~ msgid "index busy" -#~ msgstr "indexado trabajando" - -#~ msgid "" -#~ "area info file missing: \n" -#~ " %s" -#~ msgstr "" -#~ "necesario archivo de información de área: \n" -#~ " %s" - -#~ msgid "color" -#~ msgstr "color" - -#~ msgid "" -#~ "fix text in layout \n" -#~ " start new text" -#~ msgstr "" -#~ "corregir texto en la capa \n" -#~ "iniciar nuevo texto" - -#~ msgid "Comment" -#~ msgstr "Comentario" - -#~ msgid "Metadata:" -#~ msgstr "Metadatos:" - -#~ msgid "Brighten" -#~ msgstr "Aclarar" - -#~ msgid "Darken" -#~ msgstr "Oscurecer" - -#~ msgid "save select area as a PNG file" -#~ msgstr "guardar àrea seleccionada como PNG" - -#~ msgid "save select area to a file" -#~ msgstr "Guardar el área seleccionada en un archivo" - -#~ msgid "load select area from a file" -#~ msgstr "Cargar área seleccionada desde un archivo" - -#~ msgid "next" -#~ msgstr "siguiente" - -#~ msgid "Transition" -#~ msgstr "Transición" - -#~ msgid "Zoom location" -#~ msgstr "Aproximar localidad" - -#~ msgid "Zoom type" -#~ msgstr "Tipo de zoom" - -#~ msgid "Wait" -#~ msgstr "Espere" - -#~ msgid "Show Comments" -#~ msgstr "Mostrar comentarios" - -#~ msgid "Show Caption" -#~ msgstr "Mostrar leyenda" - -#~ msgid "Play tone" -#~ msgstr "Reproducir canción" diff -Nru fotoxx-15.08/locales/translate-fr.po fotoxx-15.09/locales/translate-fr.po --- fotoxx-15.08/locales/translate-fr.po 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/locales/translate-fr.po 2015-08-31 10:21:01.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: fotoxx_merge\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-07-29 09:31+0200\n" +"POT-Creation-Date: 2015-08-30 21:14+0200\n" "PO-Revision-Date: 2015-01-15 15:46+0100\n" "Last-Translator: FR_PUPPY_LINUX \n" "Language-Team: FR_PUPPY_LINUX \n" @@ -31,7 +31,7 @@ msgid "Drag album thumbnail to new position." msgstr "" -#: f.albums.cc:107 f.widgets.cc:536 +#: f.albums.cc:107 f.widgets.cc:541 msgid "Manage Albums" msgstr "" @@ -178,141 +178,145 @@ msgid "fallover" msgstr "" -#: f.albums.cc:1139 f.widgets.cc:537 +#: f.albums.cc:1138 f.widgets.cc:542 msgid "Slide Show" msgstr "Diaporama" -#: f.albums.cc:1150 +#: f.albums.cc:1149 msgid "Clip Limit" msgstr "Limite d'Attache" -#: f.albums.cc:1154 +#: f.albums.cc:1153 msgid "Music File" msgstr "Fichier Audio" -#: f.albums.cc:1159 +#: f.albums.cc:1158 msgid "Full Screen" msgstr "Plein Écran" -#: f.albums.cc:1160 +#: f.albums.cc:1159 msgid "Auto-replay" msgstr "Répétition auto" -#: f.albums.cc:1166 +#: f.albums.cc:1165 msgid "Customize:" msgstr "Personnaliser:" -#: f.albums.cc:1167 +#: f.albums.cc:1166 msgid "transitions" msgstr "transitions" -#: f.albums.cc:1168 +#: f.albums.cc:1167 msgid "image files" msgstr "fichiers image" -#: f.albums.cc:1173 f.albums.cc:1289 +#: f.albums.cc:1172 f.albums.cc:1286 #, c-format msgid "%d images" msgstr "%d images" -#: f.albums.cc:1196 f.albums.cc:1259 f.albums.cc:1349 f.albums.cc:1462 -#: f.albums.cc:1654 f.albums.cc:1738 f.albums.cc:1755 f.albums.cc:1976 +#: f.albums.cc:1194 f.albums.cc:1256 f.albums.cc:1346 f.albums.cc:1459 +#: f.albums.cc:1652 f.albums.cc:1736 f.albums.cc:1753 f.albums.cc:1974 msgid "invalid album" msgstr "" -#: f.albums.cc:1273 +#: f.albums.cc:1270 msgid "open album" msgstr "" -#: f.albums.cc:1305 +#: f.albums.cc:1302 msgid "Select music file" msgstr "" -#: f.albums.cc:1329 +#: f.albums.cc:1326 msgid "select random (if 5+ enabled)" msgstr "Sélection aléatoire (si +5 disponibles)" -#: f.albums.cc:1353 +#: f.albums.cc:1350 msgid "Transition Preferences" msgstr "Préférences de Transition " -#: f.albums.cc:1362 +#: f.albums.cc:1359 msgid "transition" msgstr "transition" -#: f.albums.cc:1363 +#: f.albums.cc:1360 msgid "enabled" msgstr "activé" -#: f.albums.cc:1364 +#: f.albums.cc:1361 msgid "slowdown" msgstr "ralentissement" -#: f.albums.cc:1365 +#: f.albums.cc:1362 msgid "preference" msgstr "préférence" -#: f.albums.cc:1468 +#: f.albums.cc:1465 msgid "Image Preferences" msgstr "Préférences Image" -#: f.albums.cc:1472 f.file.cc:1153 f.file.cc:1349 f.file.cc:1557 f.meta.cc:425 +#: f.albums.cc:1469 f.file.cc:1157 f.file.cc:1353 f.file.cc:1561 f.meta.cc:426 msgid "Image File:" msgstr "Fichier Image:" -#: f.albums.cc:1476 +#: f.albums.cc:1473 msgid "Play tone when image shows" msgstr "" -#: f.albums.cc:1479 +#: f.albums.cc:1476 msgid "Show image caption" msgstr "" -#: f.albums.cc:1484 +#: f.albums.cc:1481 msgid "Show image comments" msgstr "" -#: f.albums.cc:1489 +#: f.albums.cc:1486 msgid "Wait before zoom" msgstr "" -#: f.albums.cc:1494 +#: f.albums.cc:1491 msgid "Zoom type:" msgstr "" -#: f.albums.cc:1495 +#: f.albums.cc:1492 msgid "none" msgstr "" -#: f.albums.cc:1496 +#: f.albums.cc:1493 msgid "zoom-in" msgstr "" -#: f.albums.cc:1497 +#: f.albums.cc:1494 msgid "zoom-out" msgstr "" -#: f.albums.cc:1500 +#: f.albums.cc:1497 msgid "Zoom size (x)" msgstr "" -#: f.albums.cc:1503 +#: f.albums.cc:1500 msgid "Steps" msgstr "Étapes" -#: f.albums.cc:1507 +#: f.albums.cc:1504 msgid "Zoom image location:" msgstr "" -#: f.albums.cc:1515 +#: f.albums.cc:1512 msgid "Wait after zoom" msgstr "" -#: f.albums.cc:1520 +#: f.albums.cc:1517 msgid "Transition to next image" msgstr "" -#: f.albums.cc:1961 f.albums.cc:2119 +#: f.albums.cc:1520 f.albums.cc:1622 +msgid "next" +msgstr "suiv." + +#: f.albums.cc:1959 f.albums.cc:2117 #, c-format msgid "" "file format error: \n" @@ -323,7 +327,7 @@ msgid "Select Area for Edits" msgstr "Sélectionner la Zone de Travail" -#: f.area.cc:80 f.edit.cc:5897 +#: f.area.cc:80 f.edit.cc:5908 msgid "Press F1 for help" msgstr "Appuyer sur la touche F1 pour obtenir de l'Aide" @@ -367,7 +371,7 @@ msgid "select all matching colors within mouse" msgstr "sélectionner toutes les couleurs correspondantes avec la souris" -#: f.area.cc:139 f.edit.cc:5942 +#: f.area.cc:139 f.edit.cc:5953 msgid "mouse radius" msgstr "rayon du pointeur" @@ -400,12 +404,12 @@ msgid "area edits fade away within edge distance" msgstr "les retouches de la zone s'estompent à proximité du bord" -#: f.area.cc:353 f.area.cc:536 +#: f.area.cc:351 f.area.cc:534 #, c-format msgid "exceed %d edits" msgstr "excède %d opérations" -#: f.area.cc:1363 +#: f.area.cc:1355 msgid "" "Click one time inside each enclosed area \n" "(possible gaps in the outline will be found). \n" @@ -415,23 +419,23 @@ "(les éventuelles ruptures de contour seront trouvées). \n" "Appuyer sur la touche F1 pour obtenir de l'Aide." -#: f.area.cc:1391 +#: f.area.cc:1383 msgid "finish area" msgstr "finir la zone" -#: f.area.cc:1399 +#: f.area.cc:1391 msgid "extend to corner:" msgstr "étendre jusqu'au coin:" -#: f.area.cc:1440 +#: f.area.cc:1432 msgid "searching" msgstr "recherche en cours" -#: f.area.cc:1472 +#: f.area.cc:1463 msgid "outline has a gap" msgstr "le contour est discontinu" -#: f.area.cc:1476 +#: f.area.cc:1467 msgid "success" msgstr "succès" @@ -440,113 +444,114 @@ msgid "found %d pixels" msgstr "%d pixels trouvés" -#: f.area.cc:1918 f.area.cc:1935 f.area.cc:1955 f.area.cc:2260 f.area.cc:2387 +#: f.area.cc:1926 f.area.cc:1943 f.area.cc:1963 f.area.cc:2278 f.area.cc:2354 +#: f.area.cc:2511 msgid "the area is not finished" msgstr "la zone n'est pas finie" -#: f.area.cc:2049 +#: f.area.cc:2052 msgid "Edge calculation in progress" msgstr "calcul du bord en cours" -#: f.area.cc:2058 +#: f.area.cc:2061 msgid "Area Edge Calc" msgstr "Calcul du Bord de la Zone" -#: f.area.cc:2338 +#: f.area.cc:2462 msgid "load area from a file" msgstr "" -#: f.area.cc:2421 +#: f.area.cc:2545 msgid "save area as a PNG file" msgstr "" -#: f.area.cc:2449 +#: f.area.cc:2573 msgid "position with mouse click/drag" msgstr "position par cliquer/glisser" -#: f.area.cc:2493 +#: f.area.cc:2617 msgid "Paste Image" msgstr "Coller l'Image" -#: f.area.cc:2498 f.batch.cc:1135 f.batch.cc:1626 +#: f.area.cc:2622 f.batch.cc:1136 f.batch.cc:1627 msgid "resize" msgstr "redimensionner" -#: f.batch.cc:103 f.widgets.cc:524 +#: f.batch.cc:104 f.widgets.cc:526 msgid "Batch Convert" msgstr "Convertir par lot" -#: f.batch.cc:110 f.file.cc:781 +#: f.batch.cc:111 f.file.cc:782 msgid "New Name" msgstr "Nouveau Nom" -#: f.batch.cc:112 +#: f.batch.cc:113 msgid "base" msgstr "base" -#: f.batch.cc:114 +#: f.batch.cc:115 msgid "adder" msgstr "ajout" -#: f.batch.cc:118 +#: f.batch.cc:119 msgid "New Location" msgstr "Nouvel Emplacement" -#: f.batch.cc:123 +#: f.batch.cc:124 msgid "New File Type" msgstr "Nouveau Type de Fichier" -#: f.batch.cc:127 f.batch.cc:135 +#: f.batch.cc:128 f.batch.cc:136 msgid "no change" msgstr "aucune modification" -#: f.batch.cc:130 +#: f.batch.cc:131 msgid "max. Width" msgstr "largeur max." -#: f.batch.cc:138 f.batch.cc:531 +#: f.batch.cc:139 f.batch.cc:532 msgid "Delete Originals" msgstr "Supprimer les Originaux" -#: f.batch.cc:139 f.batch.cc:528 +#: f.batch.cc:140 f.batch.cc:529 msgid "Copy Metadata" msgstr "Copier les Métadonnées" -#: f.batch.cc:140 f.batch.cc:529 f.edit.cc:1396 f.widgets.cc:432 -#: f.widgets.cc:672 +#: f.batch.cc:141 f.batch.cc:530 f.edit.cc:1407 f.widgets.cc:433 +#: f.widgets.cc:677 msgid "Upright" msgstr "En haut et à droite" -#: f.batch.cc:143 f.batch.cc:530 f.batch.cc:1144 f.batch.cc:1635 -#: f.repair.cc:115 f.widgets.cc:448 +#: f.batch.cc:144 f.batch.cc:531 f.batch.cc:1145 f.batch.cc:1636 +#: f.repair.cc:115 f.widgets.cc:449 msgid "Sharpen" msgstr "Renforcer la netteté" -#: f.batch.cc:145 f.batch.cc:1146 f.batch.cc:1637 +#: f.batch.cc:146 f.batch.cc:1147 f.batch.cc:1638 msgid "amount" msgstr "quantité" -#: f.batch.cc:148 f.batch.cc:1149 f.batch.cc:1640 +#: f.batch.cc:149 f.batch.cc:1150 f.batch.cc:1641 msgid "threshold" msgstr "seuil" -#: f.batch.cc:250 +#: f.batch.cc:251 msgid "file type not supported" msgstr "type de fichier non pris en charge" -#: f.batch.cc:314 +#: f.batch.cc:315 msgid "cannot create new file" msgstr "impossible de créer le nouveau fichier" -#: f.batch.cc:361 +#: f.batch.cc:362 msgid "updating albums ..." msgstr "" -#: f.batch.cc:434 f.batch.cc:1422 f.batch.cc:1828 f.file.cc:1202 +#: f.batch.cc:435 f.batch.cc:1423 f.batch.cc:1829 f.file.cc:1206 msgid "Select directory" msgstr "Sélectionner un répertoire" -#: f.batch.cc:480 +#: f.batch.cc:481 msgid "" "new name/base/adder unreasonable\n" " e.g. newname ### 100 10" @@ -554,149 +559,182 @@ "nouveau nom/base/ajouts incohérents\n" " ex: nouveaunom### 100 10" -#: f.batch.cc:503 +#: f.batch.cc:504 #, c-format msgid "max. size %d x %d is not reasonable" msgstr "taille max. %d x %d incohérente" -#: f.batch.cc:522 +#: f.batch.cc:523 #, c-format msgid "Convert %d image files" msgstr "Convertir les fichiers image %d" -#: f.batch.cc:523 +#: f.batch.cc:524 msgid "Rename to" msgstr "Renommer en" -#: f.batch.cc:524 +#: f.batch.cc:525 msgid "Convert to" msgstr "Convertir en" -#: f.batch.cc:525 +#: f.batch.cc:526 msgid "Resize within" msgstr "Redimensionner dans" -#: f.batch.cc:526 +#: f.batch.cc:527 msgid "Output to" msgstr "Sortie vers" -#: f.batch.cc:532 +#: f.batch.cc:533 msgid "PROCEED?" msgstr "POURSUIVRE?" -#: f.batch.cc:686 f.widgets.cc:525 +#: f.batch.cc:687 f.widgets.cc:527 msgid "Batch Upright" msgstr "Batch Droit" -#: f.batch.cc:692 +#: f.batch.cc:693 msgid "Survey all files" msgstr "" -#: f.batch.cc:746 +#: f.batch.cc:747 msgid "file cannot be read" msgstr "" -#: f.batch.cc:864 +#: f.batch.cc:865 msgid "cannot select both options" msgstr "" -#: f.batch.cc:908 f.widgets.cc:526 +#: f.batch.cc:909 f.widgets.cc:528 msgid "Batch Delete/Trash" msgstr "" -#: f.batch.cc:913 +#: f.batch.cc:914 msgid "delete" msgstr "" -#: f.batch.cc:916 +#: f.batch.cc:917 msgid "trash" msgstr "" -#: f.batch.cc:1078 +#: f.batch.cc:1079 msgid "Batch Convert RAW Files (DCraw)" msgstr "Fichiers Batch de Conversion RAW (DCraw)" -#: f.batch.cc:1087 +#: f.batch.cc:1088 msgid "DCraw not installed" msgstr "DCraw non installé" -#: f.batch.cc:1122 f.batch.cc:1613 +#: f.batch.cc:1123 f.batch.cc:1614 msgid "output location" msgstr "emplacement de sortie" -#: f.batch.cc:1127 f.batch.cc:1618 +#: f.batch.cc:1128 f.batch.cc:1619 msgid "output file type" msgstr "type de fichier de sortie" -#: f.batch.cc:1158 +#: f.batch.cc:1159 msgid "white balance" msgstr "balance des blancs" -#: f.batch.cc:1159 +#: f.batch.cc:1160 msgid "interpolation" msgstr "interpolation" -#: f.batch.cc:1160 +#: f.batch.cc:1161 msgid "color space" msgstr "espace de couleur" -#: f.batch.cc:1161 +#: f.batch.cc:1162 msgid "gamma curve" msgstr "courbe gamma" -#: f.batch.cc:1164 +#: f.batch.cc:1165 msgid "camera" msgstr "Appareil photo" -#: f.batch.cc:1165 +#: f.batch.cc:1166 msgid "fixed" msgstr "défini" -#: f.batch.cc:1166 +#: f.batch.cc:1167 msgid "calculated" msgstr "calculé" -#: f.batch.cc:1183 +#: f.batch.cc:1184 msgid "default" msgstr "Défaut" -#: f.batch.cc:1189 +#: f.batch.cc:1190 msgid "defaults" msgstr "Défauts" -#: f.batch.cc:1576 +#: f.batch.cc:1577 msgid "Batch Convert RAW Files (Raw Therapee)" msgstr "Fichiers Batch de Conversion RAW (Raw Therapee)" -#: f.batch.cc:1585 f.file.cc:488 +#: f.batch.cc:1586 f.file.cc:489 msgid "Raw Therapee not installed" msgstr "Raw Therapee non installé" -#: f.batch.cc:1894 +#: f.batch.cc:1895 msgid "Brasero not installed" msgstr "Brasero non installé" -#: f.bend.cc:82 f.widgets.cc:469 +#: f.batch.cc:1984 f.widgets.cc:532 +msgid "Find Duplicate Images" +msgstr "Chercher les Doublons" + +#: f.batch.cc:1986 f.tools.cc:927 +msgid "Thumbnail size" +msgstr "Taille de vignette" + +#: f.batch.cc:1989 +msgid "pixel difference" +msgstr "différence de pixel" + +#: f.batch.cc:1992 +msgid "pixel count" +msgstr "nombre de pixels" + +#: f.batch.cc:1995 +msgid "Images:" +msgstr "Images:" + +#: f.batch.cc:1996 +msgid "searching ..." +msgstr "Recherche en cours..." + +#: f.batch.cc:1998 +msgid "Duplicates:" +msgstr "Doublons:" + +#: f.batch.cc:2016 +#, c-format +msgid "only %d image thumbnails found" +msgstr "seulement %d vignettes trouvées" + +#: f.bend.cc:86 f.widgets.cc:470 msgid "Unbend" msgstr "Décintrer" -#: f.bend.cc:90 f.edit.cc:4237 f.effects.cc:4620 +#: f.bend.cc:94 f.edit.cc:4248 f.effects.cc:4625 msgid "vertical" msgstr "verticale" -#: f.bend.cc:91 f.edit.cc:4236 f.effects.cc:4616 +#: f.bend.cc:95 f.edit.cc:4247 f.effects.cc:4621 msgid "horizontal" msgstr "horizontale" -#: f.bend.cc:92 +#: f.bend.cc:96 msgid "linear" msgstr "linéaire" -#: f.bend.cc:95 +#: f.bend.cc:99 msgid "curved" msgstr "cintré" -#: f.bend.cc:363 +#: f.bend.cc:367 msgid "" " Click the four corners of a tetragon area. Press [apply]. \n" " The image is warped to make the tetragon into a rectangle." @@ -704,15 +742,15 @@ " 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:376 +#: f.bend.cc:384 msgid "Perspective Correction" msgstr "Correction de Perspective" -#: f.bend.cc:582 +#: f.bend.cc:590 msgid "must have 4 corners" msgstr "doit comporter 4 coins" -#: f.bend.cc:704 +#: f.bend.cc:712 msgid "" " Select an area to warp using select area function. \n" " Press [start warp] and pull area with mouse. \n" @@ -725,19 +763,19 @@ " 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:717 f.widgets.cc:471 +#: f.bend.cc:725 f.widgets.cc:472 msgid "Warp area" msgstr "Déformer la zone" -#: f.bend.cc:722 +#: f.bend.cc:730 msgid "start warp" msgstr "démarrer la distorsion" -#: f.bend.cc:780 +#: f.bend.cc:788 msgid "no active Select Area" msgstr "pas de sélection de zone active" -#: f.bend.cc:1121 f.bend.cc:1431 +#: f.bend.cc:1129 f.bend.cc:1443 msgid "" " Pull an image position using the mouse. \n" " Make multiple mouse pulls until satisfied. \n" @@ -747,19 +785,19 @@ " Répéter plusieurs fois l'opération jusqu'à satisfaction. \n" " Une fois terminé, cliquer sur [Terminé]." -#: f.bend.cc:1135 f.widgets.cc:472 +#: f.bend.cc:1147 f.widgets.cc:473 msgid "Warp curved" msgstr "Décintrer" -#: f.bend.cc:1144 f.mashup.cc:1836 +#: f.bend.cc:1156 f.mashup.cc:1836 msgid "warp span" msgstr "amplitude de distorsion" -#: f.bend.cc:1445 f.widgets.cc:473 +#: f.bend.cc:1461 f.widgets.cc:474 msgid "Warp linear" msgstr "Distorsion linéaire" -#: f.bend.cc:1760 +#: f.bend.cc:1776 msgid "" " Pull on an image corner using the mouse. \n" " Make multiple mouse pulls until satisfied. \n" @@ -769,15 +807,15 @@ " Répéter plusieurs fois l'opération jusqu'à satisfaction. \n" " Une fois terminé, cliquer sur [Terminé]." -#: f.bend.cc:1772 f.widgets.cc:474 +#: f.bend.cc:1792 f.widgets.cc:475 msgid "Warp affine" msgstr "Déformation affinée" -#: f.bend.cc:2119 +#: f.bend.cc:2139 msgid "Flatten Book Page Photo" msgstr "Aplatir une Photo de Page de Livre" -#: f.bend.cc:2120 +#: f.bend.cc:2140 msgid "" "Trim image to isolate one page. \n" "Map top and bottom edges with \n" @@ -787,88 +825,88 @@ "Mapper les bords supérieur et inférieur avec \n" "4+ clics de souris, puis aplatir:" -#: f.bend.cc:2123 +#: f.bend.cc:2143 msgid "Stretch curved-down surfaces:" msgstr "Étirer les surfaces cintrées vers le bas:" -#: f.bend.cc:2178 +#: f.bend.cc:2198 msgid "top:" msgstr "haut:" -#: f.bend.cc:2181 +#: f.bend.cc:2201 msgid "bottom:" msgstr "bas:" -#: f.combine.cc:2119 f.combine.cc:2750 f.combine.cc:3406 f.combine.cc:3938 +#: f.combine.cc:2108 f.combine.cc:2739 f.combine.cc:3395 f.combine.cc:3927 msgid "Select 2 to 9 files" msgstr "Sélectionner 2 à 9 fichiers" -#: f.combine.cc:2140 f.combine.cc:2771 f.combine.cc:3427 f.combine.cc:3959 +#: f.combine.cc:2129 f.combine.cc:2760 f.combine.cc:3416 f.combine.cc:3948 msgid "Images are not all the same size" msgstr "Les images ne sont pas toutes de taille identique" -#: f.combine.cc:2484 +#: f.combine.cc:2473 msgid "Adjust Image Contributions" msgstr "Ajuster les Recouvrements de l'Image" -#: f.combine.cc:2488 +#: f.combine.cc:2477 msgid "dark pixels" msgstr "pixels foncés" -#: f.combine.cc:2490 +#: f.combine.cc:2479 msgid "light pixels" msgstr "pixels clairs" -#: f.combine.cc:2492 +#: f.combine.cc:2481 msgid "file:" msgstr "fichier: " -#: f.combine.cc:3007 +#: f.combine.cc:2996 msgid "Paint and Warp Image" msgstr "Peindre et Déformer l'Image" -#: f.combine.cc:3011 f.combine.cc:3656 f.combine.cc:6246 f.effects.cc:3851 -#: f.widgets.cc:555 f.widgets.cc:578 f.widgets.cc:600 +#: f.combine.cc:3000 f.combine.cc:3645 f.combine.cc:6236 f.effects.cc:3858 +#: f.widgets.cc:560 f.widgets.cc:583 f.widgets.cc:605 msgid "Image" msgstr "Image" -#: f.combine.cc:3015 +#: f.combine.cc:3004 msgid "paint" msgstr "peindre" -#: f.combine.cc:3016 +#: f.combine.cc:3005 msgid "warp" msgstr "déformer" -#: f.combine.cc:3654 +#: f.combine.cc:3643 msgid "Select and Paint Image" msgstr "Sélectionner et Peindre l'Image" -#: f.combine.cc:4130 +#: f.combine.cc:4119 msgid "Adjust Pixel Composition" msgstr "Ajuster la Composition des Pixels" -#: f.combine.cc:4132 +#: f.combine.cc:4121 msgid "use average" msgstr "utiliser moyenne" -#: f.combine.cc:4133 +#: f.combine.cc:4122 msgid "use median" msgstr "utiliser médiane" -#: f.combine.cc:4135 +#: f.combine.cc:4124 msgid "omit low pixel" msgstr "exclure les pixels clairs" -#: f.combine.cc:4136 +#: f.combine.cc:4125 msgid "omit high pixel" msgstr "exclure les pixels clairs" -#: f.combine.cc:4398 f.combine.cc:5504 +#: f.combine.cc:4387 f.combine.cc:5493 msgid "Select 2 to 4 files" msgstr "Sélectionner 2 à 4 fichiers" -#: f.combine.cc:4473 +#: f.combine.cc:4462 msgid "" "Drag images into rough alignment.\n" "To rotate, drag from lower edge." @@ -876,76 +914,76 @@ "Glisser les images dans un alignement approximatif.\n" "Pour pivoter, faire glisser depuis le bord inférieur." -#: f.combine.cc:4475 f.combine.cc:5581 +#: f.combine.cc:4464 f.combine.cc:5570 msgid "no curve (scanned image)" msgstr "aucune courbe (image scannée)" -#: f.combine.cc:4476 f.combine.cc:5582 +#: f.combine.cc:4465 f.combine.cc:5571 msgid "Search for lens mm" msgstr "Rechercher focale" -#: f.combine.cc:4477 f.combine.cc:5583 +#: f.combine.cc:4466 f.combine.cc:5572 msgid "Save lens mm → image EXIF" msgstr "Enregistrer la focale mm → image EXIF" -#: f.combine.cc:4538 f.combine.cc:5644 +#: f.combine.cc:4527 f.combine.cc:5633 msgid "Pre-align Images" msgstr "Pré-aligner les Images" -#: f.combine.cc:4542 f.combine.cc:5648 +#: f.combine.cc:4531 f.combine.cc:5637 msgid "lens mm" msgstr "longueur focale (lens mm)" -#: f.combine.cc:4547 f.combine.cc:5653 +#: f.combine.cc:4536 f.combine.cc:5642 msgid "no auto warp" msgstr "pas d'auto-déformation" -#: f.combine.cc:4549 f.combine.cc:5655 f.widgets.cc:439 f.widgets.cc:671 +#: f.combine.cc:4538 f.combine.cc:5644 f.widgets.cc:440 f.widgets.cc:676 msgid "Resize" msgstr "Redimensionner" -#: f.combine.cc:4550 f.combine.cc:5656 +#: f.combine.cc:4539 f.combine.cc:5645 msgid "resize window" msgstr "redimensionner la fenêtre" -#: f.combine.cc:4558 f.combine.cc:5664 +#: f.combine.cc:4547 f.combine.cc:5653 msgid "do not warp images during auto-alignment" msgstr "ne pas déformer les images pendant l'auto-alignement" -#: f.combine.cc:4603 f.combine.cc:5709 +#: f.combine.cc:4592 f.combine.cc:5698 msgid "use two images only" msgstr "n'utiliser que deux images" -#: f.combine.cc:4631 f.combine.cc:4835 f.combine.cc:5021 f.combine.cc:5735 -#: f.combine.cc:5940 f.combine.cc:6126 +#: f.combine.cc:4620 f.combine.cc:4824 f.combine.cc:5010 f.combine.cc:5724 +#: f.combine.cc:5928 f.combine.cc:6114 msgid "Too little overlap, cannot align" msgstr "Chevauchement insuffisant, alignement impossible." -#: f.combine.cc:5096 f.combine.cc:6202 +#: f.combine.cc:5088 f.combine.cc:6192 msgid "Match Brightness and Color" msgstr "Faire correspondre Luminosité et Couleur" -#: f.combine.cc:5141 +#: f.combine.cc:5133 msgid "Select image" msgstr "Sélectionner l'image" -#: f.combine.cc:5156 f.combine.cc:6261 +#: f.combine.cc:5148 f.combine.cc:6251 msgid "auto color" msgstr "couleur automatique" -#: f.combine.cc:5157 f.combine.cc:6262 +#: f.combine.cc:5149 f.combine.cc:6252 msgid "file color" msgstr "couleur du fichier" -#: f.combine.cc:5163 f.combine.cc:6268 +#: f.combine.cc:5155 f.combine.cc:6258 msgid "mouse warp" msgstr "déformation à la souris" -#: f.combine.cc:5166 +#: f.combine.cc:5158 msgid "curved image" msgstr "image courbée" -#: f.combine.cc:5579 +#: f.combine.cc:5568 msgid "" "Drag images into rough alignment.\n" "To rotate, drag from right edge." @@ -953,11 +991,11 @@ "Glisser les images dans un alignement approximatif. \n" "Pour pivoter, faire glisser depuis le bord droit." -#: f.combine.cc:6482 +#: f.combine.cc:6469 msgid "pano tools (hugin) not installed" msgstr "" -#: f.combine.cc:6491 +#: f.combine.cc:6478 msgid "Select at least 2 files" msgstr "" @@ -970,255 +1008,255 @@ msgid "Minor rotate: drag right edge with mouse" msgstr "Légère rotation: Tirer le coin droit avec la souris" -#: f.edit.cc:167 f.widgets.cc:431 f.widgets.cc:670 +#: f.edit.cc:171 f.widgets.cc:432 f.widgets.cc:675 msgid "Trim/Rotate" msgstr "Rogner/Pivoter" -#: f.edit.cc:179 f.edit.cc:577 +#: f.edit.cc:183 f.edit.cc:585 msgid "ratio" msgstr "proportions" -#: f.edit.cc:183 +#: f.edit.cc:187 msgid "trim size:" msgstr "taille de rognage:" -#: f.edit.cc:188 +#: f.edit.cc:192 msgid "Lock Ratio" msgstr "Verrouiller les Proportions" -#: f.edit.cc:193 +#: f.edit.cc:197 msgid "Customize" msgstr "Personnaliser" -#: f.edit.cc:201 +#: f.edit.cc:205 msgid "Rotate: degrees" msgstr "Pivoter: degrés" -#: f.edit.cc:203 +#: f.edit.cc:207 msgid "auto-trim" msgstr "rognage automatique" -#: f.edit.cc:573 +#: f.edit.cc:581 msgid "Trim Buttons" msgstr "Boutons de Rognage" -#: f.edit.cc:576 +#: f.edit.cc:584 msgid "label" msgstr "étiquette" -#: f.edit.cc:1394 +#: f.edit.cc:1405 msgid "Upright Image" msgstr "" -#: f.edit.cc:1458 +#: f.edit.cc:1469 msgid "rotation unknown" msgstr "" -#: f.edit.cc:2009 f.widgets.cc:435 f.widgets.cc:674 +#: f.edit.cc:2020 f.widgets.cc:436 f.widgets.cc:679 msgid "Retouch Combo" msgstr "Combo de Retouche" -#: f.edit.cc:2030 +#: f.edit.cc:2041 msgid "Amplifier" msgstr "Amplificateur" -#: f.edit.cc:2031 fotoxx.h:1079 +#: f.edit.cc:2042 fotoxx.h:1087 msgid "Brightness" msgstr "Luminosité" -#: f.edit.cc:2032 fotoxx.h:1087 +#: f.edit.cc:2043 fotoxx.h:1095 msgid "Contrast" msgstr "Contraste" -#: f.edit.cc:2033 +#: f.edit.cc:2044 msgid "Low Color" msgstr "Couleur Basse" -#: f.edit.cc:2034 +#: f.edit.cc:2045 msgid "Warmer" msgstr "Plus chaud" -#: f.edit.cc:2035 f.effects.cc:1009 +#: f.edit.cc:2046 f.effects.cc:1010 msgid "Dark Areas" msgstr "Zones Foncées" -#: f.edit.cc:2044 +#: f.edit.cc:2055 msgid "Max." msgstr "Max." -#: f.edit.cc:2045 f.edit.cc:2046 f.edit.cc:2047 +#: f.edit.cc:2056 f.edit.cc:2057 f.edit.cc:2058 msgid "High" msgstr "Haute" -#: f.edit.cc:2048 +#: f.edit.cc:2059 msgid "Cooler" msgstr "Plus froid" -#: f.edit.cc:2049 +#: f.edit.cc:2060 msgid "Bright" msgstr "Clair" -#: f.edit.cc:2052 f.tools.cc:1595 +#: f.edit.cc:2063 f.tools.cc:1621 msgid "Brightness Distribution" msgstr "Répartition de la luminosité" -#: f.edit.cc:2055 +#: f.edit.cc:2066 msgid "Click for white balance or black level" msgstr "Cliquer pour la balance des niveaux de blanc ou de noir" -#: f.edit.cc:2058 +#: f.edit.cc:2069 msgid "Settings File" msgstr "Fichier de Paramétrage" -#: f.edit.cc:2062 +#: f.edit.cc:2073 msgid "recall previous settings used" msgstr "rappeler les paramètres utilisés précédemment" -#: f.edit.cc:2764 +#: f.edit.cc:2775 msgid "Adjust Brightness Distribution" msgstr "Ajuster la Répartition de la Luminosité" -#: f.edit.cc:2801 +#: f.edit.cc:2812 msgid "Low Cutoff" msgstr "" -#: f.edit.cc:2802 +#: f.edit.cc:2813 msgid "High Cutoff" msgstr "" -#: f.edit.cc:2803 +#: f.edit.cc:2814 msgid "Low Flatten" msgstr "" -#: f.edit.cc:2804 +#: f.edit.cc:2815 msgid "Mid Flatten" msgstr "" -#: f.edit.cc:2805 +#: f.edit.cc:2816 msgid "High Flatten" msgstr "" -#: f.edit.cc:2806 +#: f.edit.cc:2817 msgid "Low Stretch" msgstr "" -#: f.edit.cc:2807 +#: f.edit.cc:2818 msgid "Mid Stretch" msgstr "" -#: f.edit.cc:2808 +#: f.edit.cc:2819 msgid "High Stretch" msgstr "" -#: f.edit.cc:3138 +#: f.edit.cc:3149 msgid "Zonal Flatten Brightness" msgstr "" -#: f.edit.cc:3169 +#: f.edit.cc:3180 msgid "Zones" msgstr "" -#: f.edit.cc:3176 +#: f.edit.cc:3187 msgid "Deband Dark" msgstr "" -#: f.edit.cc:3179 +#: f.edit.cc:3190 msgid "Deband Bright" msgstr "" -#: f.edit.cc:3624 f.widgets.cc:438 f.widgets.cc:677 +#: f.edit.cc:3635 f.widgets.cc:439 f.widgets.cc:682 msgid "Tone Mapping" msgstr "Mappage de Tons" -#: f.edit.cc:3653 +#: f.edit.cc:3664 msgid "low" msgstr "faible" -#: f.edit.cc:3655 +#: f.edit.cc:3666 msgid "high" msgstr "haute" -#: f.edit.cc:3658 +#: f.edit.cc:3669 msgid "Amplify" msgstr "Intensifier" -#: f.edit.cc:4033 +#: f.edit.cc:4044 msgid "Lock aspect ratio" msgstr "Verrouiller les proportions" -#: f.edit.cc:4055 +#: f.edit.cc:4066 msgid "Resize Image" msgstr "Redimensionner l'Image" -#: f.edit.cc:4232 f.widgets.cc:440 +#: f.edit.cc:4243 f.widgets.cc:441 msgid "Flip" msgstr "Miroir" -#: f.edit.cc:4338 +#: f.edit.cc:4349 msgid "+Version" msgstr "" -#: f.edit.cc:4361 +#: f.edit.cc:4372 msgid "Write Text on Image" msgstr "Écrire du Texte sur l'Image" -#: f.edit.cc:4362 +#: f.edit.cc:4373 msgid "Enter text, click/drag on image, right click to remove" msgstr "" "Saisir du texte, cliquer/glisser sur l'image, clic-droit pour retirer le " "texte." -#: f.edit.cc:4411 f.mashup.cc:2437 +#: f.edit.cc:4422 f.mashup.cc:2437 msgid "Text" msgstr "Texte" -#: f.edit.cc:4416 +#: f.edit.cc:4427 msgid "Use metadata key" msgstr "" -#: f.edit.cc:4421 +#: f.edit.cc:4432 msgid "Use text file" msgstr "" -#: f.edit.cc:4440 f.mashup.cc:2455 +#: f.edit.cc:4451 f.mashup.cc:2455 msgid "text" msgstr "texte" -#: f.edit.cc:4441 f.edit.cc:5279 f.mashup.cc:2456 f.mashup.cc:2798 +#: f.edit.cc:4452 f.edit.cc:5290 f.mashup.cc:2456 f.mashup.cc:2798 msgid "backing" msgstr "appui" -#: f.edit.cc:4442 f.edit.cc:5280 f.mashup.cc:2457 f.mashup.cc:2799 +#: f.edit.cc:4453 f.edit.cc:5291 f.mashup.cc:2457 f.mashup.cc:2799 msgid "outline" msgstr "contour" -#: f.edit.cc:4443 f.edit.cc:5281 f.mashup.cc:2458 f.mashup.cc:2800 +#: f.edit.cc:4454 f.edit.cc:5292 f.mashup.cc:2458 f.mashup.cc:2800 msgid "shadow" msgstr "ombre" -#: f.edit.cc:4469 +#: f.edit.cc:4480 msgid "save to current file" msgstr "" -#: f.edit.cc:4470 f.file.cc:605 +#: f.edit.cc:4481 f.file.cc:606 msgid "save as new file version" msgstr "enregistrer comme nouvelle version du fichier" -#: f.edit.cc:4471 +#: f.edit.cc:4482 msgid "" "save to current file \n" "open next file with same text" msgstr "" -#: f.edit.cc:4632 f.mashup.cc:2557 +#: f.edit.cc:4643 f.mashup.cc:2557 f.tools.cc:1060 msgid "select font" msgstr "sélectionner la police" -#: f.edit.cc:4896 +#: f.edit.cc:4907 msgid "text file is defective" msgstr "fichier texte défectueux" -#: f.edit.cc:5219 +#: f.edit.cc:5230 msgid "" "Enter line or arrow properties in dialog, \n" "click/drag on image, right click to remove" @@ -1226,23 +1264,23 @@ "Saisir les propriétés de ligne ou de flèche dans la boite de dialogue, \n" "cliquer/glisser sur l'image, clic droit pour effacer" -#: f.edit.cc:5250 +#: f.edit.cc:5261 msgid "Write Line or Arrow on Image" msgstr "Dessiner une Ligne ou une Flèche sur l'Image" -#: f.edit.cc:5258 f.mashup.cc:2777 +#: f.edit.cc:5269 f.mashup.cc:2777 msgid "Line length" msgstr "Longueur de la ligne" -#: f.edit.cc:5265 f.mashup.cc:2784 +#: f.edit.cc:5276 f.mashup.cc:2784 msgid "Arrow head" msgstr "Pointe de la flèche" -#: f.edit.cc:5278 f.mashup.cc:2797 +#: f.edit.cc:5289 f.mashup.cc:2797 msgid "line" msgstr "ligne" -#: f.edit.cc:5307 +#: f.edit.cc:5318 msgid "" "fix line/arrow in layout \n" " start new line/arrow" @@ -1250,11 +1288,11 @@ "fixer la ligne/flèche dans la disposition \n" " commencer une nouvelle ligne/flèche" -#: f.edit.cc:5896 f.widgets.cc:443 +#: f.edit.cc:5907 f.widgets.cc:444 msgid "Paint Edits" msgstr "Opérations de Peinture" -#: f.edit.cc:5903 f.edit.cc:6132 fotoxx-15.08.cc:3172 +#: f.edit.cc:5914 f.edit.cc:6143 fotoxx-15.09.cc:3123 msgid "" "Select area cannot be kept.\n" "Continue?" @@ -1262,59 +1300,59 @@ "Impossible de conserver la sélection de zone.\n" "Voulez-vous continuer?" -#: f.edit.cc:5911 f.edit.cc:6140 f.tools.cc:2127 +#: f.edit.cc:5922 f.edit.cc:6151 f.tools.cc:2147 msgid "Edit function must be active" msgstr "La fonction d'édition doit être active" -#: f.edit.cc:5916 +#: f.edit.cc:5927 msgid "Cannot use Paint Edits" msgstr "" -#: f.edit.cc:5945 +#: f.edit.cc:5956 msgid "power: center" msgstr "puissance: centre" -#: f.edit.cc:5950 +#: f.edit.cc:5961 msgid "reset area" msgstr "réinitialiser la zone" -#: f.edit.cc:6125 f.widgets.cc:444 +#: f.edit.cc:6136 f.widgets.cc:445 msgid "Leverage Edits" msgstr "Retouches à Effets de Levier" -#: f.edit.cc:6126 +#: f.edit.cc:6137 msgid "Edit Function Amplifier" msgstr "Éditer l'Amplificateur de Fonction" -#: f.edit.cc:6145 +#: f.edit.cc:6156 msgid "Cannot use Leverage Edits" msgstr "" -#: f.edit.cc:6178 +#: f.edit.cc:6189 msgid "minimum" msgstr "minimum" -#: f.edit.cc:6180 +#: f.edit.cc:6191 msgid "maximum" msgstr "maximum" -#: f.edit.cc:6481 +#: f.edit.cc:6490 msgid "Edit Plugins" msgstr "Éditer les Greffons" -#: f.edit.cc:6482 +#: f.edit.cc:6491 msgid "Edit plugins menu" msgstr "Éditer le menu des greffons" -#: f.edit.cc:6490 +#: f.edit.cc:6499 msgid "Run as Fotoxx edit function" msgstr "Exécuter comme fonction d'édition de Fotoxx" -#: f.edit.cc:6728 +#: f.edit.cc:6737 msgid "Plugin working ..." msgstr "Greffon en cours d'exécution..." -#: f.edit.cc:6737 +#: f.edit.cc:6746 msgid "plugin failed" msgstr "Échec de l’exécution du greffon" @@ -1348,7 +1386,7 @@ msgid "Background" msgstr "" -#: f.effects.cc:713 f.widgets.cc:480 +#: f.effects.cc:713 f.widgets.cc:481 msgid "Line Drawing" msgstr "Tracer des Lignes" @@ -1356,303 +1394,303 @@ msgid "black/white" msgstr "noir/blanc" -#: f.effects.cc:1003 f.widgets.cc:481 +#: f.effects.cc:1004 f.widgets.cc:482 msgid "Color Drawing" msgstr "Dessiner une Couleur" -#: f.effects.cc:1010 +#: f.effects.cc:1011 msgid "Bright Areas" msgstr "Zones claires" -#: f.effects.cc:1264 f.widgets.cc:482 +#: f.effects.cc:1265 f.widgets.cc:483 msgid "Graduated Blur" msgstr "Flou Progressif" -#: f.effects.cc:1268 +#: f.effects.cc:1269 msgid "Contrast Limit" msgstr "Limite de Contraste" -#: f.effects.cc:1271 f.repair.cc:747 +#: f.effects.cc:1272 f.repair.cc:748 msgid "Blur Radius" msgstr "Rayon du Flou" -#: f.effects.cc:1485 +#: f.effects.cc:1486 msgid "Simulate Embossing" msgstr "Estampage" -#: f.effects.cc:1502 +#: f.effects.cc:1503 msgid "depth" msgstr "drofondeur" -#: f.effects.cc:1703 +#: f.effects.cc:1705 msgid "Simulate Tiles" msgstr "Mosaïque" -#: f.effects.cc:1707 +#: f.effects.cc:1709 msgid "tile size" msgstr "taille du carreau" -#: f.effects.cc:1710 +#: f.effects.cc:1712 msgid "tile gap" msgstr "espace entre les carreaux" -#: f.effects.cc:1713 +#: f.effects.cc:1715 msgid "3D depth" msgstr "profondeur 3D " -#: f.effects.cc:1937 +#: f.effects.cc:1939 msgid "Convert Image to Dots" msgstr "Tramer l'image en Points" -#: f.effects.cc:1941 +#: f.effects.cc:1943 msgid "dot size" msgstr "taille du point" -#: f.effects.cc:2161 +#: f.effects.cc:2168 msgid "Simulate Painting" msgstr "Simuler une Peinture" -#: f.effects.cc:2165 +#: f.effects.cc:2172 msgid "color depth" msgstr "profondeur de couleurs" -#: f.effects.cc:2169 +#: f.effects.cc:2176 msgid "patch area goal" msgstr "corriger la zone cible" -#: f.effects.cc:2173 +#: f.effects.cc:2180 msgid "req. color match" msgstr "couleur correspondante requise" -#: f.effects.cc:2177 +#: f.effects.cc:2184 msgid "borders" msgstr "bordures" -#: f.effects.cc:2750 f.widgets.cc:487 +#: f.effects.cc:2757 f.widgets.cc:488 msgid "Vignette" msgstr "Instantané" -#: f.effects.cc:3118 +#: f.effects.cc:3125 msgid "Add Texture" msgstr "Ajouter Texture" -#: f.effects.cc:3334 +#: f.effects.cc:3341 msgid "Background Pattern" msgstr "Motif de fond" -#: f.effects.cc:3338 +#: f.effects.cc:3345 msgid "Pattern File:" msgstr "Fichier de Motif:" -#: f.effects.cc:3343 +#: f.effects.cc:3350 msgid "Geometry" msgstr "Géométrie" -#: f.effects.cc:3344 +#: f.effects.cc:3351 msgid "Calculate" msgstr "Calculer" -#: f.effects.cc:3346 +#: f.effects.cc:3353 msgid "Zoom" msgstr "Zoom" -#: f.effects.cc:3357 f.widgets.cc:489 +#: f.effects.cc:3364 f.widgets.cc:490 msgid "Pattern" msgstr "Motif" -#: f.effects.cc:3364 +#: f.effects.cc:3371 msgid "Overlap" msgstr "Chevauchement" -#: f.effects.cc:3371 +#: f.effects.cc:3378 msgid "Opacity" msgstr "Opacité" -#: f.effects.cc:3410 +#: f.effects.cc:3417 msgid "choose pattern tile" msgstr "choisir le fichier de motif" -#: f.effects.cc:3755 +#: f.effects.cc:3762 msgid "Create Mosaic" msgstr "Créer une Mosaïque" -#: f.effects.cc:3841 +#: f.effects.cc:3848 msgid "Tile" msgstr "Motif" -#: f.effects.cc:3849 f.widgets.cc:484 +#: f.effects.cc:3856 f.widgets.cc:485 msgid "Tiles" msgstr "Mosaïque" -#: f.effects.cc:3855 +#: f.effects.cc:3862 msgid "Tile blending" msgstr "Mélange de motifs" -#: f.effects.cc:3935 +#: f.effects.cc:3942 #, c-format msgid "exceeded max. tiles: %d" msgstr "excède le maximum de motifs: %d" -#: f.effects.cc:3950 +#: f.effects.cc:3957 #, c-format msgid "only %d tile images found" msgstr "seulement %d images de motifs trouvés" -#: f.effects.cc:4326 f.widgets.cc:491 +#: f.effects.cc:4333 f.widgets.cc:492 msgid "Custom Kernel" msgstr "Noyau personnalisé" -#: f.effects.cc:4330 +#: f.effects.cc:4337 msgid "Kernel size" msgstr "Taille du noyau" -#: f.effects.cc:4335 +#: f.effects.cc:4342 msgid "Divisor" msgstr "Diviseur" -#: f.effects.cc:4340 +#: f.effects.cc:4347 msgid "Data file" msgstr "Fichier de données" -#: f.effects.cc:4606 f.widgets.cc:492 +#: f.effects.cc:4611 f.widgets.cc:493 msgid "Make Waves" msgstr "Onduler" -#: f.effects.cc:4613 +#: f.effects.cc:4618 msgid "wavelength" msgstr "longueur de vague" -#: f.effects.cc:4614 +#: f.effects.cc:4619 msgid "amplitude" msgstr "amplitude" -#: f.effects.cc:4615 +#: f.effects.cc:4620 msgid "variance" msgstr "écart" -#: f.effects.cc:4626 +#: f.effects.cc:4631 msgid "perspective" msgstr "perspective" -#: f.effects.cc:4800 +#: f.effects.cc:4805 msgid "Pull image using the mouse." msgstr "" -#: f.effects.cc:4821 f.widgets.cc:493 +#: f.effects.cc:4826 f.widgets.cc:494 msgid "Directed Blur" msgstr "" -#: f.effects.cc:4825 +#: f.effects.cc:4830 msgid "blur span" msgstr "" -#: f.effects.cc:4828 +#: f.effects.cc:4833 msgid "intensity" msgstr "" -#: f.file.cc:247 +#: f.file.cc:248 msgid "" "use EXIF photo date or \n" " file modification date" msgstr "" -#: f.file.cc:264 f.widgets.cc:560 +#: f.file.cc:265 f.widgets.cc:565 msgid "File" msgstr "Fichier" -#: f.file.cc:357 f.file.cc:1483 f.file.cc:1622 +#: f.file.cc:358 f.file.cc:1487 f.file.cc:1626 msgid "no more images" msgstr "plus d'images" -#: f.file.cc:417 +#: f.file.cc:418 msgid "UFraw not installed" msgstr "UFraw non installé" -#: f.file.cc:433 f.widgets.cc:679 +#: f.file.cc:434 f.widgets.cc:684 msgid "Open RAW file (ufraw)" msgstr "Ouvrir un fichier RAW (ufraw)" -#: f.file.cc:438 f.file.cc:509 +#: f.file.cc:439 f.file.cc:510 msgid "RAW type not registered in User Settings" msgstr "Type RAW non répertorié dans les Paramètres Utilisateur" -#: f.file.cc:504 f.widgets.cc:680 +#: f.file.cc:505 f.widgets.cc:685 msgid "Open RAW file (Raw Therapee)" msgstr "Ouvrir un fichier RAW (Raw Therapee)" -#: f.file.cc:587 +#: f.file.cc:588 msgid "Save Image File" msgstr "Enregistrer le Fichier Image" -#: f.file.cc:597 +#: f.file.cc:598 msgid "new version" msgstr "nouvelle version" -#: f.file.cc:598 +#: f.file.cc:599 msgid "new file" msgstr "nouveau fichier" -#: f.file.cc:599 +#: f.file.cc:600 msgid "replace file" msgstr "remplacer le fichier" -#: f.file.cc:606 f.file.cc:2281 +#: f.file.cc:607 f.file.cc:2344 msgid "save as new file name or type" msgstr "enregistrer sous un nouveau nom ou type de fichier" -#: f.file.cc:608 +#: f.file.cc:609 msgid "replace old file (OVERWRITE)" msgstr "remplacer l'ancien fichier (ÉCRASER)" -#: f.file.cc:646 f.file.cc:2071 +#: f.file.cc:647 f.file.cc:2124 msgid "cannot save as RAW type" msgstr "enregistrement en type RAW impossible" -#: f.file.cc:773 f.widgets.cc:396 +#: f.file.cc:774 f.widgets.cc:395 msgid "Rename Image File" msgstr "Renommer le Fichier Image" -#: f.file.cc:780 +#: f.file.cc:781 msgid "Old Name" msgstr "Ancien Nom" -#: f.file.cc:790 +#: f.file.cc:791 msgid "previous name" msgstr "nom précédent" -#: f.file.cc:791 +#: f.file.cc:792 msgid "add 1" msgstr "Plus 1" -#: f.file.cc:946 +#: f.file.cc:950 msgid "Create Blank Image" msgstr "Créer une Image Vierge" -#: f.file.cc:948 +#: f.file.cc:952 msgid "file name" msgstr "nom du fichier" -#: f.file.cc:982 +#: f.file.cc:986 msgid "supply a file name" msgstr "" -#: f.file.cc:1114 +#: f.file.cc:1118 msgid "Copy Image File" msgstr "Copier un Fichier Image" -#: f.file.cc:1115 +#: f.file.cc:1119 msgid "Move Image File" msgstr "Déplacer un Fichier Image" -#: f.file.cc:1158 +#: f.file.cc:1162 msgid "new location" msgstr "nouvel emplacement" -#: f.file.cc:1228 +#: f.file.cc:1232 msgid "new location is not a directory" msgstr "le nouvel emplacement n'est pas un répertoire" -#: f.file.cc:1270 f.file.cc:1467 f.file.cc:1605 +#: f.file.cc:1274 f.file.cc:1471 f.file.cc:1609 #, c-format msgid "" "delete failed: \n" @@ -1661,15 +1699,15 @@ "échec de la suppression: \n" " %s" -#: f.file.cc:1312 f.widgets.cc:398 +#: f.file.cc:1316 f.widgets.cc:397 msgid "Trash Image File" msgstr "Mettre le Fichier Image à la Corbeille" -#: f.file.cc:1313 f.file.cc:1520 +#: f.file.cc:1317 f.file.cc:1524 msgid "(automatic step to next image)" msgstr "(passer automatiquement à l'image suivante)" -#: f.file.cc:1381 +#: f.file.cc:1385 msgid "" "Linux standard trash does not work. \n" "Desktop trash folder will be created." @@ -1677,7 +1715,7 @@ "La corbeille standard Linux n'est pas prise en charge. \n" "Un dossier Corbeille sera créé." -#: f.file.cc:1384 +#: f.file.cc:1388 msgid "" "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" @@ -1685,49 +1723,99 @@ "Linux et la Corbeille du bureau ne fonctionnent pas. \n" "Supprimer définitivement le fichier image?" -#: f.file.cc:1387 +#: f.file.cc:1391 #, c-format msgid "Cannot create trash folder: %s" msgstr "Impossible de créer le dossier Corbeille: %s" -#: f.file.cc:1399 +#: f.file.cc:1403 msgid "Move read-only file to trash?" msgstr "Déplacer le fichier en lecture-seule vers la Corbeille?" -#: f.file.cc:1454 +#: f.file.cc:1458 #, c-format msgid "error: %s" msgstr "erreur: %s" -#: f.file.cc:1519 +#: f.file.cc:1523 msgid "Delete Image File - CANNOT BE REVERSED" msgstr "Supprimer le Fichier Image - ACTION IRRÉVERSIBLE" -#: f.file.cc:1595 +#: f.file.cc:1599 msgid "Delete read-only file?" msgstr "Supprimer le fichier en lecture seule?" -#: f.file.cc:1911 f.widgets.cc:390 +#: f.file.cc:1820 f.widgets.cc:547 +msgid "Quick Start" +msgstr "Démarrage Rapide" + +#: f.file.cc:1823 f.widgets.cc:548 +msgid "User Guide" +msgstr "Manuel Utilisateur" + +#: f.file.cc:1826 f.widgets.cc:549 +msgid "User Guide Changes" +msgstr "Changements du Manuel Utilisateur" + +#: f.file.cc:1829 f.widgets.cc:551 +msgid "README" +msgstr "LISEZ-MOI" + +#: f.file.cc:1832 f.widgets.cc:550 +msgid "Edit Functions Summary" +msgstr "Éditer le Sommaire des Fonctions" + +#: f.file.cc:1835 f.widgets.cc:552 +msgid "Change Log" +msgstr "Journal des Changements" + +#: f.file.cc:1838 f.widgets.cc:553 +msgid "Log File" +msgstr "Fichier-Journal" + +#: f.file.cc:1841 f.widgets.cc:554 +msgid "Translations" +msgstr "Traductions" + +#: f.file.cc:1844 f.widgets.cc:555 +msgid "Home Page" +msgstr "Site web" + +#: f.file.cc:1847 f.widgets.cc:556 +msgid "About" +msgstr "À propos" + +#: f.file.cc:1851 f.widgets.cc:577 f.widgets.cc:599 fotoxx.h:1119 +msgid "Help" +msgstr "Aide" + +#: f.file.cc:1961 f.widgets.cc:389 msgid "Open Image File" msgstr "Ouvrir un Fichier Image" -#: f.file.cc:1929 +#: f.file.cc:1979 msgid "unknown file type" msgstr "type de fichier inconnu" -#: f.file.cc:2197 +#: f.file.cc:2117 +msgid "" +"Transparency map will be lost.\n" +"save to PNG file to retain." +msgstr "" + +#: f.file.cc:2260 msgid "Unable to copy EXIF/IPTC data" msgstr "Copie des données EXIF/IPTC impossible" -#: f.file.cc:2297 +#: f.file.cc:2360 msgid "make current" msgstr "faire l’actuelle" -#: f.file.cc:2390 +#: f.file.cc:2453 msgid "jpeg quality must be 1-100" msgstr "la qualité JPEG doit être comprise entre 1 et 100" -#: f.file.cc:2417 +#: f.file.cc:2480 #, c-format msgid "" "Overwrite file? \n" @@ -1736,138 +1824,138 @@ "Écraser le fichier ? \n" " %s" -#: f.file.cc:2669 f.file.cc:2738 +#: f.file.cc:2732 f.file.cc:2801 #, c-format msgid "file not found: %s" msgstr "fichier introuvable: %s" -#: f.file.cc:2675 f.file.cc:2744 +#: f.file.cc:2738 f.file.cc:2807 #, c-format msgid "file type not supported: %s" msgstr "type de fichier non pris en charge: %s" -#: f.gallery.cc:921 f.gallery.cc:1010 f.widgets.cc:592 +#: f.gallery.cc:911 f.gallery.cc:1000 f.widgets.cc:597 msgid "Scroll" msgstr "Faire défiler" -#: f.gallery.cc:925 +#: f.gallery.cc:915 msgid "Sync" msgstr "" -#: f.gallery.cc:935 f.repair.cc:5783 f.repair.cc:5788 fotoxx.h:1132 +#: f.gallery.cc:925 f.repair.cc:5779 f.repair.cc:5784 fotoxx.h:1140 msgid "Open" msgstr "Ouvrir" -#: f.gallery.cc:936 +#: f.gallery.cc:926 msgid "change directory" msgstr "changer de répertoire" -#: f.gallery.cc:944 +#: f.gallery.cc:934 msgid "GoTo" msgstr "Aller à" -#: f.gallery.cc:950 f.widgets.cc:587 +#: f.gallery.cc:940 f.widgets.cc:592 msgid "Sort" msgstr "Trier" -#: f.gallery.cc:956 f.gallery.cc:1528 f.gallery.cc:1529 f.gallery.cc:1531 -#: f.widgets.cc:585 +#: f.gallery.cc:946 f.gallery.cc:1510 f.gallery.cc:1511 f.gallery.cc:1513 +#: f.widgets.cc:590 msgid "Zoom+" msgstr "Zoom+" -#: f.gallery.cc:966 f.gallery.cc:1530 f.gallery.cc:1532 f.widgets.cc:586 +#: f.gallery.cc:956 f.gallery.cc:1512 f.gallery.cc:1514 f.widgets.cc:591 msgid "Zoom-" msgstr "Zoom-" -#: f.gallery.cc:978 f.gallery.cc:1536 +#: f.gallery.cc:968 f.gallery.cc:1518 msgid "Row↑" msgstr "Rangée↑" -#: f.gallery.cc:986 f.gallery.cc:1537 +#: f.gallery.cc:976 f.gallery.cc:1519 msgid "Row↓" msgstr "Rangée↓" -#: f.gallery.cc:994 f.gallery.cc:1534 f.gallery.cc:1541 f.widgets.cc:590 +#: f.gallery.cc:984 f.gallery.cc:1516 f.gallery.cc:1523 f.widgets.cc:595 msgid "Page↑" msgstr "Page↑" -#: f.gallery.cc:1002 f.gallery.cc:1535 f.gallery.cc:1542 f.widgets.cc:591 +#: f.gallery.cc:992 f.gallery.cc:1517 f.gallery.cc:1524 f.widgets.cc:596 msgid "Page↓" msgstr "Page↓" -#: f.gallery.cc:1016 f.gallery.cc:1539 f.widgets.cc:588 +#: f.gallery.cc:1006 f.gallery.cc:1521 f.widgets.cc:593 msgid "First" msgstr "Première" -#: f.gallery.cc:1017 f.gallery.cc:1540 f.widgets.cc:589 +#: f.gallery.cc:1007 f.gallery.cc:1522 f.widgets.cc:594 msgid "Last" msgstr "Dernière" -#: f.gallery.cc:1134 +#: f.gallery.cc:1120 msgid "Choose image directory" msgstr "Choisir le répertoire image" -#: f.gallery.cc:1141 f.gallery.cc:1155 +#: f.gallery.cc:1127 f.gallery.cc:1141 msgid "recent" msgstr "récents" -#: f.gallery.cc:1142 f.gallery.cc:1160 +#: f.gallery.cc:1128 f.gallery.cc:1146 msgid "newest" msgstr "derniers" -#: f.gallery.cc:1224 +#: f.gallery.cc:1210 msgid "no albums found" msgstr "" -#: f.gallery.cc:1231 +#: f.gallery.cc:1217 msgid "Choose album" msgstr "" -#: f.gallery.cc:1281 +#: f.gallery.cc:1267 msgid "Gallery Sort" msgstr "Trier la Galerie" -#: f.gallery.cc:1285 +#: f.gallery.cc:1271 msgid "File Name" msgstr "Nom du Fichier" -#: f.gallery.cc:1286 +#: f.gallery.cc:1272 msgid "File Mod Date/Time" msgstr "Mode Date/Heure du Fichier" -#: f.gallery.cc:1287 +#: f.gallery.cc:1273 msgid "Photo Date/Time (EXIF)" msgstr "Date/Heure de la Photo (EXIF)" -#: f.gallery.cc:1289 +#: f.gallery.cc:1275 msgid "ascending" msgstr "croissant" -#: f.gallery.cc:1290 +#: f.gallery.cc:1276 msgid "descending" msgstr "décroissant" -#: f.gallery.cc:2244 fotoxx.h:1157 +#: f.gallery.cc:2213 fotoxx.h:1165 msgid "Select Files" msgstr "Sélectionner les Fichiers" -#: f.gallery.cc:2716 +#: f.gallery.cc:2684 msgid "Click list position. Click thumbnail to add." msgstr "Cliquer sur l'endroit de la liste. Cliquer sur la vignette à ajouter." -#: f.gallery.cc:2742 f.gallery.cc:2990 +#: f.gallery.cc:2710 f.gallery.cc:2958 msgid "Edit Bookmarks" msgstr "Éditer les signets" -#: f.gallery.cc:2917 +#: f.gallery.cc:2885 msgid "unable to save bookmarks file" msgstr "impossible d'enregistrer le fichier des signets" -#: f.gallery.cc:2990 +#: f.gallery.cc:2958 msgid "Go To Bookmark" msgstr "Aller Au Signet" -#: f.gallery.cc:3047 f.meta.cc:2732 f.repair.cc:7410 +#: f.gallery.cc:3015 f.meta.cc:2772 f.repair.cc:7407 msgid "file not found" msgstr "fichier introuvable" @@ -2061,7 +2149,7 @@ msgid "Hard" msgstr "" -#: f.mashup.cc:1304 f.repair.cc:5378 +#: f.mashup.cc:1304 f.repair.cc:5375 msgid "Blend" msgstr "Mélanger" @@ -2077,7 +2165,7 @@ msgid "Gradual" msgstr "Progressif" -#: f.mashup.cc:1580 fotoxx.h:1136 +#: f.mashup.cc:1580 fotoxx.h:1144 msgid "Power" msgstr "Puissance" @@ -2136,123 +2224,127 @@ msgid "exceeded %d line entries" msgstr "excède %d entrées de ligne" -#: f.meta.cc:179 f.widgets.cc:657 +#: f.meta.cc:179 f.widgets.cc:662 msgid "View Metadata" msgstr "Afficher les Métadonnées" -#: f.meta.cc:420 f.meta.cc:1756 f.widgets.cc:408 f.widgets.cc:658 +#: f.meta.cc:419 f.meta.cc:1796 f.widgets.cc:407 f.widgets.cc:663 msgid "Edit Metadata" msgstr "Éditer les Métadonnées" -#: f.meta.cc:430 +#: f.meta.cc:422 f.meta.cc:3748 +msgid "save metadata to file" +msgstr "" + +#: f.meta.cc:431 msgid "Image Date" msgstr "Date de l'Image" -#: f.meta.cc:433 +#: f.meta.cc:434 msgid "Time" msgstr "Heure" -#: f.meta.cc:439 +#: f.meta.cc:440 msgid "Rating (stars):" msgstr "Évaluation (étoiles)" -#: f.meta.cc:451 +#: f.meta.cc:452 msgid "Caption" msgstr "Légende" -#: f.meta.cc:457 +#: f.meta.cc:458 msgid "Comments" msgstr "Commentaires" -#: f.meta.cc:465 +#: f.meta.cc:466 msgid "Enter New Tag" msgstr "" -#: f.meta.cc:472 f.meta.cc:4889 +#: f.meta.cc:473 f.meta.cc:4930 msgid "Matching Tags" msgstr "" -#: f.meta.cc:480 +#: f.meta.cc:481 msgid "Image Tags" msgstr "Balises de l'Image" -#: f.meta.cc:486 +#: f.meta.cc:487 msgid "Recent Tags" msgstr "Balises Récentes" -#: f.meta.cc:495 f.meta.cc:1978 f.meta.cc:4896 +#: f.meta.cc:496 f.meta.cc:2018 f.meta.cc:4937 msgid "Defined Tags Category" msgstr "" -#: f.meta.cc:886 +#: f.meta.cc:887 msgid "date format is YYYY-MM-DD" msgstr "le format de date est AAAA-MM-JJ" -#: f.meta.cc:890 +#: f.meta.cc:891 msgid "date is invalid" msgstr "Date incorrecte" -#: f.meta.cc:924 +#: f.meta.cc:925 msgid "time format is HH:MM [:SS]" msgstr "Le format de l'heure est HH:MM [:SS]" -#: f.meta.cc:928 +#: f.meta.cc:929 msgid "time is invalid" msgstr "heure incorrecte" -#: f.meta.cc:974 fotoxx.h:1121 +#: f.meta.cc:1014 fotoxx.h:1129 msgid "Manage Tags" msgstr "Gestion des Balises" -#: f.meta.cc:974 +#: f.meta.cc:1014 msgid "orphan tags" msgstr "balises orphelines" -#: f.meta.cc:978 +#: f.meta.cc:1018 msgid "category" msgstr "catégorie" -#: f.meta.cc:981 +#: f.meta.cc:1021 msgid "tag" msgstr "balise" -#: f.meta.cc:988 +#: f.meta.cc:1028 msgid "Defined Tags:" msgstr "Balises Définies:" -#: f.meta.cc:1760 f.meta.cc:2418 +#: f.meta.cc:1800 f.meta.cc:2458 msgid "key name" msgstr "nom de la touche" -#: f.meta.cc:1762 f.meta.cc:2419 +#: f.meta.cc:1802 f.meta.cc:2459 msgid "key value" msgstr "Valeur de la touche" -#: f.meta.cc:1849 f.widgets.cc:410 +#: f.meta.cc:1889 f.widgets.cc:409 msgid "Delete Metadata" msgstr "Supprimer les Métadonnées" -#: f.meta.cc:1851 fotoxx.h:1070 +#: f.meta.cc:1891 fotoxx.h:1078 msgid "All" msgstr "Toutes" -#: f.meta.cc:1852 +#: f.meta.cc:1892 msgid "One Key:" msgstr "Un Mot-Clé: " -#: f.meta.cc:1955 f.widgets.cc:411 f.widgets.cc:530 +#: f.meta.cc:1995 f.widgets.cc:410 f.widgets.cc:533 msgid "Batch Add/Remove Tags" msgstr "Ajouter/Retirer des Balises par Lots" -#: f.meta.cc:1966 +#: f.meta.cc:2006 msgid "tags to add" msgstr "balises à ajouter" -#: f.meta.cc:1967 +#: f.meta.cc:2007 msgid "tags to remove" msgstr "balises à retirer" -#: f.meta.cc:2051 +#: f.meta.cc:2091 #, c-format msgid "" "%s \n" @@ -2261,15 +2353,15 @@ "%s \n" " trop de balises" -#: f.meta.cc:2166 +#: f.meta.cc:2206 msgid "specify files and tags" msgstr "spécifier fichiers et balises" -#: f.meta.cc:2226 +#: f.meta.cc:2266 msgid "tag names file" msgstr "" -#: f.meta.cc:2298 +#: f.meta.cc:2338 #, c-format msgid "" "%d tags to rename \n" @@ -2277,43 +2369,43 @@ "Proceed?" msgstr "" -#: f.meta.cc:2409 +#: f.meta.cc:2449 msgid "Batch Metadata" msgstr "" -#: f.meta.cc:2455 +#: f.meta.cc:2495 msgid "enter key names" msgstr "" -#: f.meta.cc:2461 fotoxx.h:1129 +#: f.meta.cc:2501 fotoxx.h:1137 msgid "no files selected" msgstr "aucun fichiers sélectionnés" -#: f.meta.cc:3164 f.meta.cc:3899 f.meta.cc:4163 +#: f.meta.cc:3204 f.meta.cc:3940 f.meta.cc:4204 #, c-format msgid "bad latitude/longitude: %s %s" msgstr "latitude/longitude incorrectes: %s %s" -#: f.meta.cc:3207 f.meta.cc:3571 f.meta.cc:4372 f.meta.cc:4780 +#: f.meta.cc:3247 f.meta.cc:3611 f.meta.cc:4413 f.meta.cc:4821 msgid "-noindex in use, disabled" msgstr "" -#: f.meta.cc:3223 +#: f.meta.cc:3263 msgid "choose map file" msgstr "Choisir le fichier de la carte" -#: f.meta.cc:3332 +#: f.meta.cc:3372 msgid "" "fotoxx-maps package not installed \n" "(see http://kornelix.com/packages and /tarballs)" msgstr "" -#: f.meta.cc:3337 +#: f.meta.cc:3377 #, c-format msgid "map file %s is missing" msgstr "Fichier de carte %s manquant" -#: f.meta.cc:3341 +#: f.meta.cc:3381 #, c-format msgid "" "map latitude/longitude data unreasonable \n" @@ -2322,40 +2414,40 @@ "Données de longitude/latitude de la carte incohérentes \n" " %.3f %.3f %.3f %.3f" -#: f.meta.cc:3620 +#: f.meta.cc:3660 msgid "No matching images found" msgstr "Aucun résultat pour cette recherche" # ?? -#: f.meta.cc:3660 +#: f.meta.cc:3700 msgid "search range (km)" msgstr "fourchette de recherche (km)" -#: f.meta.cc:3693 f.widgets.cc:414 f.widgets.cc:659 +#: f.meta.cc:3733 f.widgets.cc:413 f.widgets.cc:664 msgid "Edit Geotags" msgstr "Éditer les Balises de Géolocalisation" -#: f.meta.cc:3694 +#: f.meta.cc:3734 msgid "Geocoding web service courtesy of" msgstr "Service Web de Géo-codage avec l'aimable autorisation de" -#: f.meta.cc:3709 f.meta.cc:3949 f.meta.cc:5655 +#: f.meta.cc:3750 f.meta.cc:3990 f.meta.cc:5710 msgid "city" msgstr "ville" -#: f.meta.cc:3712 f.meta.cc:3952 f.meta.cc:5658 +#: f.meta.cc:3753 f.meta.cc:3993 f.meta.cc:5713 msgid "country" msgstr "pays" -#: f.meta.cc:3794 f.meta.cc:4080 +#: f.meta.cc:3835 f.meta.cc:4121 msgid "city not found" msgstr "Ville introuvable" -#: f.meta.cc:3915 f.widgets.cc:415 f.widgets.cc:533 +#: f.meta.cc:3956 f.widgets.cc:414 f.widgets.cc:536 msgid "Batch Add Geotags" msgstr "Ajouter des Balises de Géolocalisation par Lots" -#: f.meta.cc:4142 +#: f.meta.cc:4183 msgid "" "data is incomplete \n" " proceed?" @@ -2363,140 +2455,140 @@ "données incomplètes \n" " poursuivre?" -#: f.meta.cc:4199 +#: f.meta.cc:4240 msgid "choose city" msgstr "choisir une ville" -#: f.meta.cc:4286 +#: f.meta.cc:4327 msgid "not found" msgstr "introuvable" -#: f.meta.cc:4287 +#: f.meta.cc:4328 msgid "city and country required" msgstr "ville et pays requis" -#: f.meta.cc:4387 +#: f.meta.cc:4428 msgid "Report Geotag Groups" msgstr "Faire le Rapport des Groupes de Balises de Géolocalisation" -#: f.meta.cc:4388 +#: f.meta.cc:4429 msgid "Group by country" msgstr "Grouper par pays" -#: f.meta.cc:4389 +#: f.meta.cc:4430 msgid "Group by country/city" msgstr "Grouper par pays/ville" -#: f.meta.cc:4390 +#: f.meta.cc:4431 msgid "Group by country/city/date" msgstr "Grouper par pays/ville/date" -#: f.meta.cc:4393 +#: f.meta.cc:4434 msgid "Combine within" msgstr "Combiner avec" -#: f.meta.cc:4395 +#: f.meta.cc:4436 msgid "days" msgstr "Jours" -#: f.meta.cc:4511 +#: f.meta.cc:4552 msgid "geotag groups" msgstr "groupes de balises de géolocalisation" -#: f.meta.cc:4817 +#: f.meta.cc:4858 msgid "Search Image Metadata" msgstr "Rechercher les Métadonnées de l'Image" -#: f.meta.cc:4821 +#: f.meta.cc:4862 msgid "images to search:" msgstr "images à rechercher:" -#: f.meta.cc:4822 +#: f.meta.cc:4863 msgid "all" msgstr "toutes" -#: f.meta.cc:4823 +#: f.meta.cc:4864 msgid "current set only" msgstr "ensemble actuel uniquement" -#: f.meta.cc:4826 +#: f.meta.cc:4867 msgid "matching images:" msgstr "images correspondantes:" -#: f.meta.cc:4827 +#: f.meta.cc:4868 msgid "new set" msgstr "nouvel ensemble" -#: f.meta.cc:4828 +#: f.meta.cc:4869 msgid "add to set" msgstr "ajouter à l'ensemble" -#: f.meta.cc:4829 +#: f.meta.cc:4870 msgid "remove" msgstr "retirer" -#: f.meta.cc:4832 +#: f.meta.cc:4873 msgid "report type:" msgstr "type de rapport:" -#: f.meta.cc:4833 +#: f.meta.cc:4874 msgid "gallery" msgstr "galerie" -#: f.meta.cc:4834 fotoxx-15.08.cc:801 +#: f.meta.cc:4875 fotoxx-15.09.cc:781 msgid "metadata" msgstr "métadonnées" -#: f.meta.cc:4840 +#: f.meta.cc:4881 msgid "date range" msgstr "fourchette de dates" -#: f.meta.cc:4841 +#: f.meta.cc:4882 msgid "stars range" msgstr "plage d'étoiles" -#: f.meta.cc:4842 +#: f.meta.cc:4883 msgid "search tags" msgstr "rechercher les balises" -#: f.meta.cc:4843 +#: f.meta.cc:4884 msgid "search text" msgstr "Rechercher le texte" -#: f.meta.cc:4844 +#: f.meta.cc:4885 msgid "search files" msgstr "Rechercher les fichiers" -#: f.meta.cc:4849 +#: f.meta.cc:4890 msgid "(yyyymmdd)" msgstr "(aaaammjj)" -#: f.meta.cc:4854 +#: f.meta.cc:4895 msgid "last version only" msgstr "Dernière version uniquement" -#: f.meta.cc:4856 +#: f.meta.cc:4897 msgid "all/any" msgstr "toutes/quelconques" -#: f.meta.cc:4875 +#: f.meta.cc:4916 msgid "other criteria" msgstr "autre critère" -#: f.meta.cc:4879 +#: f.meta.cc:4920 msgid "other" msgstr "autre" -#: f.meta.cc:4885 +#: f.meta.cc:4926 msgid "Enter Search Tag" msgstr "" -#: f.meta.cc:5179 +#: f.meta.cc:5221 #, c-format msgid "not a defined tag: %s" msgstr "" -#: f.meta.cc:5210 +#: f.meta.cc:5252 msgid "" "to remove images from current set, \n" "search current set" @@ -2504,7 +2596,7 @@ "pour retirer des images de l'ensemble actuel, \n" "rechercher l'ensemble actuel" -#: f.meta.cc:5217 +#: f.meta.cc:5259 msgid "" "to add images to current set, \n" "search all images" @@ -2512,32 +2604,39 @@ "pour ajouter des images à l'ensemble actuel, \n" "rechercher toutes les images" -#: f.meta.cc:5266 +#: f.meta.cc:5303 +#, c-format +msgid "" +"search dates not reasonable \n" +" %s %s" +msgstr "" + +#: f.meta.cc:5321 msgid "stars range not reasonable" msgstr "fourchette d'étoiles incohérente" -#: f.meta.cc:5511 +#: f.meta.cc:5566 #, c-format msgid "images added: %d removed: %d new count: %d" msgstr "images ajoutées: %d retirées: %d nouveau nombre: %d" -#: f.meta.cc:5514 +#: f.meta.cc:5569 msgid "no changes made" msgstr "aucune modification apportée" -#: f.meta.cc:5652 +#: f.meta.cc:5707 msgid "Add Geotags Search Criteria" msgstr "Ajouter un Critère de Recherche de Balises de Géolocalisation" -#: f.meta.cc:5671 +#: f.meta.cc:5726 msgid "range (km)" msgstr "fourchette (km)" -#: f.meta.cc:5764 +#: f.meta.cc:5819 msgid "error in latitude/longitude/range" msgstr "erreur de latitude/longitude/fourchette" -#: f.meta.cc:5828 +#: f.meta.cc:5883 msgid "" "These items are always reported: \n" "date, stars, tags, caption, comment" @@ -2545,19 +2644,19 @@ "Ces éléments sont toujours rapportés: \n" "date, étoiles, balises, légende, commentaire" -#: f.meta.cc:5852 +#: f.meta.cc:5907 msgid "Additional Items for Report" msgstr "Éléments Supplémentaires du Rapport" -#: f.meta.cc:5858 +#: f.meta.cc:5913 msgid "Keyword" msgstr "Mot-clé" -#: f.meta.cc:5865 +#: f.meta.cc:5920 msgid "Match Criteria" msgstr "Critère de Correspondance" -#: f.meta.cc:6425 +#: f.meta.cc:6480 msgid "image index is missing" msgstr "index d'images manquant" @@ -2573,47 +2672,47 @@ msgid "Kuwahara method" msgstr "méthode Kuwahara" -#: f.repair.cc:1012 +#: f.repair.cc:1014 msgid "Apply repeatedly while watching the image." msgstr "" -#: f.repair.cc:1013 +#: f.repair.cc:1015 msgid "Measure" msgstr "" -#: f.repair.cc:1047 +#: f.repair.cc:1049 msgid "Noise Reduction" msgstr "Réduction de Bruit" -#: f.repair.cc:1063 +#: f.repair.cc:1065 msgid "Flatten Outliers 1" msgstr "Écraser les valeurs atypiques 1" -#: f.repair.cc:1064 +#: f.repair.cc:1066 msgid "Flatten Outliers 2" msgstr "Écraser les valeurs atypiques 2" -#: f.repair.cc:1065 +#: f.repair.cc:1067 msgid "Median Brightness" msgstr "Luminosité Médiane" -#: f.repair.cc:1093 +#: f.repair.cc:1095 msgid "dark areas" msgstr "zones sombre" -#: f.repair.cc:1095 +#: f.repair.cc:1097 msgid "all areas" msgstr "Toutes les zones" -#: f.repair.cc:1193 +#: f.repair.cc:1195 msgid "Measure Noise" msgstr "" -#: f.repair.cc:1194 +#: f.repair.cc:1196 msgid "Click on a monotone image area." msgstr "" -#: f.repair.cc:2095 +#: f.repair.cc:2098 msgid "" "1. Drag mouse to select. \n" "2. Erase. 3. Repeat. " @@ -2621,23 +2720,23 @@ "1. Glisser la souris pour sélectionner. \n" "2. Effacer. 3. Répéter." -#: f.repair.cc:2117 f.widgets.cc:451 +#: f.repair.cc:2120 f.widgets.cc:452 msgid "Smart Erase" msgstr "Effaçage Intelligent" -#: f.repair.cc:2122 fotoxx.h:1140 +#: f.repair.cc:2125 fotoxx.h:1148 msgid "Radius" msgstr "Rayon" -#: f.repair.cc:2124 f.widgets.cc:449 +#: f.repair.cc:2127 f.widgets.cc:450 msgid "Blur" msgstr "Flou" -#: f.repair.cc:2127 +#: f.repair.cc:2130 msgid "New Area" msgstr "Nouvelle Zone" -#: f.repair.cc:2475 +#: f.repair.cc:2479 msgid "" "Method 1:\n" " Left-click on red-eye to darken.\n" @@ -2654,11 +2753,11 @@ "droite. \n" " - Clic-droit sur l'œil rouge pour annuler." -#: f.repair.cc:2491 +#: f.repair.cc:2495 msgid "Red Eye Reduction" msgstr "Réduction des Yeux Rouges" -#: f.repair.cc:2955 +#: f.repair.cc:2959 msgid "" "shift + left click: pick color or image position \n" "left click or drag: paint color or copy image \n" @@ -2668,40 +2767,40 @@ "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:2987 f.widgets.cc:453 +#: f.repair.cc:2991 f.widgets.cc:454 msgid "Paint/Clone" msgstr "Peinture/Duplication" -#: f.repair.cc:2991 +#: f.repair.cc:2995 msgid "paint color" msgstr "couleur de peinture" -#: f.repair.cc:2994 +#: f.repair.cc:2998 msgid "copy from image" msgstr "copier à partir de l'image" -#: f.repair.cc:3001 f.repair.cc:3557 +#: f.repair.cc:3005 f.repair.cc:3562 msgid "paintbrush radius" msgstr "rayon de la brosse" -#: f.repair.cc:3002 +#: f.repair.cc:3006 msgid "transparency center" msgstr "centre de transparence" -#: f.repair.cc:3003 +#: f.repair.cc:3007 msgid "transparency edge" msgstr "bord de transparence" -#: f.repair.cc:3010 f.repair.cc:3564 +#: f.repair.cc:3014 f.repair.cc:3569 msgid "gradual paint" msgstr "peinture progressive" -#: f.repair.cc:3017 +#: f.repair.cc:3021 #, c-format msgid "Undo Memory %d%c" msgstr "Mémoire d'Annulation %d%c" -#: f.repair.cc:3352 +#: f.repair.cc:3357 msgid "" "Undo memory limit has been reached. \n" "Save work with [done], then resume painting." @@ -2710,178 +2809,178 @@ "Sauvegardez votre travail en cliquant sur [Terminé], \n" "puis reprenez la peinture." -#: f.repair.cc:3517 +#: f.repair.cc:3522 msgid "" "left drag: add transparency \n" "right drag: add opacity" msgstr "" -#: f.repair.cc:3549 f.widgets.cc:454 +#: f.repair.cc:3554 f.widgets.cc:455 msgid "Paint Transparency" msgstr "" -#: f.repair.cc:3558 +#: f.repair.cc:3563 msgid "strength center" msgstr "" -#: f.repair.cc:3559 +#: f.repair.cc:3564 msgid "strength edge" msgstr "" -#: f.repair.cc:3769 f.widgets.cc:455 +#: f.repair.cc:3778 f.widgets.cc:456 msgid "Color Mode" msgstr "Mode de Couleur" -#: f.repair.cc:3772 +#: f.repair.cc:3781 msgid "black/white positive" msgstr "noir/blanc positif" -#: f.repair.cc:3773 +#: f.repair.cc:3782 msgid "black/white negative" msgstr "noir/blanc négatif" -#: f.repair.cc:3774 +#: f.repair.cc:3783 msgid "color positive" msgstr "couleur positive" -#: f.repair.cc:3775 +#: f.repair.cc:3784 msgid "color negative" msgstr "couleur négative" -#: f.repair.cc:3776 +#: f.repair.cc:3785 msgid "sepia" msgstr "sépia" -#: f.repair.cc:3945 f.widgets.cc:456 +#: f.repair.cc:3954 f.widgets.cc:457 msgid "Shift Colors" msgstr "Changement de Couleurs " -#: f.repair.cc:4217 +#: f.repair.cc:4226 msgid "+Brightness" msgstr "+Luminosité" -#: f.repair.cc:4218 +#: f.repair.cc:4227 msgid "+Red -Cyan" msgstr "+Rouge -Cyan" -#: f.repair.cc:4219 +#: f.repair.cc:4228 msgid "+Green -Magenta" msgstr "+Vert -Magenta" -#: f.repair.cc:4220 +#: f.repair.cc:4229 msgid "+Blue -Yellow" msgstr "+Bleu -Jaune" -#: f.repair.cc:4226 fotoxx.h:1142 +#: f.repair.cc:4235 fotoxx.h:1150 msgid "Red" msgstr "Rouge" -#: f.repair.cc:4227 fotoxx.h:1108 +#: f.repair.cc:4236 fotoxx.h:1116 msgid "Green" msgstr "Vert" -#: f.repair.cc:4228 fotoxx.h:1077 +#: f.repair.cc:4237 fotoxx.h:1085 msgid "Blue" msgstr "Bleu" -#: f.repair.cc:4527 +#: f.repair.cc:4536 msgid "Color Hue" msgstr "" -#: f.repair.cc:4528 +#: f.repair.cc:4537 msgid "Saturation" msgstr "" -#: f.repair.cc:4529 +#: f.repair.cc:4538 msgid "Lightness" msgstr "" -#: f.repair.cc:4530 +#: f.repair.cc:4539 msgid "Adjustment" msgstr "" -#: f.repair.cc:4869 +#: f.repair.cc:4878 msgid "Ramp brightness across image" msgstr "Corriger la luminosité à travers l'image" -#: f.repair.cc:5278 f.tools.cc:2014 +#: f.repair.cc:5286 f.tools.cc:2038 msgid "Click image to select pixels." msgstr "Cliquer l'image pour sélectionner les pixels." -#: f.repair.cc:5312 f.widgets.cc:460 +#: f.repair.cc:5317 f.widgets.cc:461 msgid "Color Ramp" msgstr "" -#: f.repair.cc:5323 +#: f.repair.cc:5328 msgid "Metric:" msgstr "Métrique:" -#: f.repair.cc:5754 +#: f.repair.cc:5751 msgid "Color Match Images" msgstr "Images de Couleurs Correspondantes" -#: f.repair.cc:5781 +#: f.repair.cc:5777 msgid "mouse radius for color sample" msgstr "rayon du pointeur d'échantillonnage de couleur" -#: f.repair.cc:5784 +#: f.repair.cc:5780 msgid "image for source color" msgstr "image pour la source de couleur" -#: f.repair.cc:5786 +#: f.repair.cc:5782 msgid "click on image to get source color" msgstr "cliquer sur l'image pour obtenir la source de couleur" -#: f.repair.cc:5789 +#: f.repair.cc:5785 msgid "image to set matching color" msgstr "image pour mettre la couleur correspondante" -#: f.repair.cc:5791 +#: f.repair.cc:5787 msgid "click on image to set matching color" msgstr "cliquer sur l'image pour mettre la couleur correspondante" -#: f.repair.cc:5851 +#: f.repair.cc:5848 msgid "select source image color first" msgstr "sélectionner d'abord la couleur de l'image source" -#: f.repair.cc:6036 +#: f.repair.cc:6033 msgid "Change Color Profile" msgstr "Changer de Profil de Couleur" -#: f.repair.cc:6040 +#: f.repair.cc:6037 msgid "input profile" msgstr "fichier d'entrée" -#: f.repair.cc:6044 +#: f.repair.cc:6041 msgid "output profile" msgstr "fichier de sortie" -#: f.repair.cc:6060 +#: f.repair.cc:6057 msgid "color profile" msgstr "profil de Couleur" -#: f.repair.cc:6106 f.repair.cc:6112 +#: f.repair.cc:6103 f.repair.cc:6109 #, c-format msgid "unknown cms profile %s" msgstr "profile cms inconnu %s" -#: f.repair.cc:6244 f.widgets.cc:463 +#: f.repair.cc:6241 f.widgets.cc:464 msgid "Remove Dust" msgstr "Anti-Poussières" -#: f.repair.cc:6248 +#: f.repair.cc:6245 msgid "spot size limit" msgstr "taille limite des grains de poussière" -#: f.repair.cc:6251 +#: f.repair.cc:6248 msgid "max. brightness" msgstr "luminosité max." -#: f.repair.cc:6254 +#: f.repair.cc:6251 msgid "min. contrast" msgstr "contraste min." -#: f.repair.cc:7035 +#: f.repair.cc:7032 msgid "" " Adjust each RGB color to minimize \n" " color fringes at the image extremes. " @@ -2889,35 +2988,35 @@ " Ajuster chaque couleur RGB pour diminuer \n" " les franges de couleurs aux bords de l'image." -#: f.repair.cc:7058 f.widgets.cc:465 +#: f.repair.cc:7055 f.widgets.cc:466 msgid "Color Fringes" msgstr "" -#: f.repair.cc:7257 f.widgets.cc:466 +#: f.repair.cc:7254 f.widgets.cc:467 msgid "Stuck Pixels" msgstr "" -#: f.repair.cc:7263 +#: f.repair.cc:7260 msgid "pixel group" msgstr "groupe de pixels" -#: f.repair.cc:7271 f.repair.cc:7339 +#: f.repair.cc:7268 f.repair.cc:7336 msgid "stuck pixels:" msgstr "pixels bloqués:" -#: f.repair.cc:7367 +#: f.repair.cc:7364 msgid "Load Stuck Pixels" msgstr "Charger les Pixels Bloqués" -#: f.repair.cc:7369 +#: f.repair.cc:7366 msgid "File:" msgstr "Fichier:" -#: f.repair.cc:7394 f.repair.cc:7451 +#: f.repair.cc:7391 f.repair.cc:7448 msgid "Stuck Pixels file" msgstr "fichier des Pixels Bloqués" -#: f.repair.cc:7431 +#: f.repair.cc:7428 msgid "file format error" msgstr "erreur de format de fichier" @@ -2942,7 +3041,7 @@ "and to make the gallery pages acceptably fast." msgstr "" -#: f.tools.cc:106 f.widgets.cc:506 +#: f.tools.cc:106 f.widgets.cc:507 msgid "Index Image Files" msgstr "Index des Fichiers Images" @@ -2987,184 +3086,184 @@ "Please remove." msgstr "" -#: f.tools.cc:394 +#: f.tools.cc:392 msgid "no thumbnails directory defined" msgstr "répertoire des vignettes non défini" -#: f.tools.cc:739 +#: f.tools.cc:734 msgid "COMPLETED" msgstr "COMPLÉTÉ" -#: f.tools.cc:778 +#: f.tools.cc:775 msgid "Indexing is required for first-time startup." msgstr "" -#: f.tools.cc:840 +#: f.tools.cc:837 msgid "Recent Files Gallery" msgstr "Galerie des Fichiers Récents" -#: f.tools.cc:841 +#: f.tools.cc:838 msgid "Newest Files Gallery" msgstr "Galerie des Derniers Fichiers" -#: f.tools.cc:842 +#: f.tools.cc:839 msgid "Previous Gallery" msgstr "Galerie Précédente" -#: f.tools.cc:843 +#: f.tools.cc:840 msgid "Previous Image" msgstr "Image Précédente" -#: f.tools.cc:844 +#: f.tools.cc:841 msgid "Blank Window" msgstr "Fenêtre Vierge" -#: f.tools.cc:845 +#: f.tools.cc:842 msgid "Directory" msgstr "" -#: f.tools.cc:846 +#: f.tools.cc:843 msgid "Image File" msgstr "Fichier Image" -#: f.tools.cc:887 f.widgets.cc:507 +#: f.tools.cc:885 f.widgets.cc:508 msgid "User Options" msgstr "" -#: f.tools.cc:890 +#: f.tools.cc:888 msgid "Startup Display" msgstr "Afficher au démarrage" -#: f.tools.cc:901 +#: f.tools.cc:899 msgid "Menu Style" msgstr "Style de Menu" -#: f.tools.cc:902 +#: f.tools.cc:900 msgid "Icons" msgstr "Icônes" -#: f.tools.cc:903 +#: f.tools.cc:901 msgid "Icons + Text" msgstr "Icônes + Texte" -#: f.tools.cc:905 +#: f.tools.cc:903 msgid "Icon size" msgstr "Taille d’icône" -#: f.tools.cc:909 -msgid "Image Pan/scroll:" +#: f.tools.cc:907 +msgid "Dialog font and size" msgstr "" #: f.tools.cc:912 +msgid "Image Pan/scroll:" +msgstr "" + +#: f.tools.cc:915 msgid "Zooms for 2x" msgstr "Zooms de 2x" -#: f.tools.cc:921 +#: f.tools.cc:924 msgid "JPEG save quality" msgstr "Qualité d'enregistrement JPEG" -#: f.tools.cc:924 f.tools.cc:3041 -msgid "Thumbnail size" -msgstr "Taille de vignette" - -#: f.tools.cc:928 +#: f.tools.cc:931 msgid "show hidden directories in gallery view" msgstr "" -#: f.tools.cc:931 +#: f.tools.cc:934 msgid "prev/next shows last file version only" msgstr "préc/suiv n'affiche que la dernière version de fichier" -#: f.tools.cc:934 +#: f.tools.cc:937 msgid "RAW command" msgstr "commande RAW" -#: f.tools.cc:938 +#: f.tools.cc:941 msgid "RAW file types" msgstr "type de fichier RAW" -#: f.tools.cc:1015 +#: f.tools.cc:1021 msgid "Delete present thumbnails to make effective" msgstr "" -#: f.tools.cc:1037 +#: f.tools.cc:1043 msgid "Select startup directory" msgstr "Sélectionner le répertoire de démarrage" -#: f.tools.cc:1044 +#: f.tools.cc:1050 msgid "Select startup image file" msgstr "Sélectionner le fichier image de démarrage" -#: f.tools.cc:1066 +#: f.tools.cc:1088 msgid "startup directory is invalid" msgstr "répertoire de démarrage incorrect" -#: f.tools.cc:1077 +#: f.tools.cc:1099 msgid "startup file is invalid" msgstr "fichier de démarrage incorrect" -#: f.tools.cc:1211 +#: f.tools.cc:1237 msgid "Edit KB Shortcuts" msgstr "Éditer les Raccourcis Clavier" -#: f.tools.cc:1216 +#: f.tools.cc:1242 msgid "shortcut key:" msgstr "touche de raccourci:" -#: f.tools.cc:1217 +#: f.tools.cc:1243 msgid "(enter key)" msgstr "(touche entrée)" -#: f.tools.cc:1343 +#: f.tools.cc:1369 #, c-format msgid "\"%s\" Reserved, cannot be used" msgstr "\"%s\" Réservé, inutilisable" -#: f.tools.cc:1497 +#: f.tools.cc:1523 msgid "unable to save KB-shortcuts file" msgstr "impossible d'enregistrer le fichier des Raccourcis Clavier" -#: f.tools.cc:1801 f.widgets.cc:510 +#: f.tools.cc:1827 f.widgets.cc:511 msgid "Grid Lines" msgstr "Guides de la grille" -#: f.tools.cc:1810 +#: f.tools.cc:1836 msgid "x-spacing" msgstr "x-espacement" -#: f.tools.cc:1811 +#: f.tools.cc:1837 msgid "x-count" msgstr "x-nombre" -#: f.tools.cc:1812 +#: f.tools.cc:1838 msgid "x-enable" msgstr "x-activé" -#: f.tools.cc:1818 +#: f.tools.cc:1844 msgid "y-spacing" msgstr "y-espacement" -#: f.tools.cc:1819 +#: f.tools.cc:1845 msgid "y-count" msgstr "y-nombre" -#: f.tools.cc:1820 +#: f.tools.cc:1846 msgid "y-enable" msgstr "y-activé" -#: f.tools.cc:1940 f.tools.cc:1945 f.widgets.cc:511 +#: f.tools.cc:1966 f.tools.cc:1971 f.widgets.cc:512 msgid "Line Color" msgstr "Couleur de Ligne" -#: f.tools.cc:1942 +#: f.tools.cc:1968 msgid "Area Color" msgstr "Couleur de Zone" -#: f.tools.cc:2050 f.widgets.cc:512 +#: f.tools.cc:2073 f.widgets.cc:513 msgid "Show RGB" msgstr "Montrer les couleurs RVB" -#: f.tools.cc:2345 +#: f.tools.cc:2365 msgid "" "Drag mouse on image. \n" "Left click to cancel. \n" @@ -3174,27 +3273,27 @@ "Clic gauche pour annuler. \n" "Touche M pour changer de dialogue." -#: f.tools.cc:2371 f.widgets.cc:513 +#: f.tools.cc:2391 f.widgets.cc:514 msgid "Magnify Image" msgstr "Agrandir l'image" -#: f.tools.cc:2380 +#: f.tools.cc:2400 msgid "X-size" msgstr "X-taille" -#: f.tools.cc:2625 +#: f.tools.cc:2645 msgid "Darkest and Brightest Pixels" msgstr "Pixels les plus foncés et clairs" -#: f.tools.cc:2648 +#: f.tools.cc:2668 msgid "Dark Limit" msgstr "Limite foncé" -#: f.tools.cc:2649 +#: f.tools.cc:2669 msgid "Bright Limit" msgstr "Limite clair" -#: f.tools.cc:2744 +#: f.tools.cc:2764 msgid "" "Brightness should show a gradual ramp \n" "extending all the way to the edges." @@ -3202,116 +3301,148 @@ "La luminosité devrait être progressive, \n" "s'étendant régulièrement d'un bord à l'autre." -#: f.tools.cc:2840 f.widgets.cc:516 +#: f.tools.cc:2860 f.widgets.cc:517 msgid "Monitor Gamma" msgstr "Gamma de l'écran" -#: f.tools.cc:2900 +#: f.tools.cc:2920 msgid "Available Translations" msgstr "Traductions disponibles" -#: f.tools.cc:2904 +#: f.tools.cc:2924 msgid "Set Language" msgstr "Définir la langue" -#: f.tools.cc:3039 f.widgets.cc:519 -msgid "Find Duplicate Images" -msgstr "Chercher les Doublons" +#: f.tools.cc:3064 f.widgets.cc:520 +msgid "Calibrate Printer" +msgstr "" -#: f.tools.cc:3044 -msgid "pixel difference" -msgstr "différence de pixel" +#: f.tools.cc:3087 +msgid "print color chart" +msgstr "" -#: f.tools.cc:3047 -msgid "pixel count" -msgstr "nombre de pixels" +#: f.tools.cc:3088 +msgid "scan and save color chart" +msgstr "" -#: f.tools.cc:3050 -msgid "Images:" -msgstr "Images:" +#: f.tools.cc:3089 +msgid "align and trim color chart" +msgstr "" -#: f.tools.cc:3051 -msgid "searching ..." -msgstr "Recherche en cours..." +#: f.tools.cc:3090 +msgid "open and process color chart" +msgstr "" -#: f.tools.cc:3053 -msgid "Duplicates:" -msgstr "Doublons:" +#: f.tools.cc:3091 +msgid "print image with revised colors" +msgstr "" -#: f.tools.cc:3071 +#: f.tools.cc:3258 #, c-format -msgid "only %d image thumbnails found" -msgstr "seulement %d vignettes trouvées" +msgid "" +"Scan the printed color chart. \n" +"Save in %s/" +msgstr "" -#: f.widgets.cc:112 -msgid "TOP" -msgstr "TOP" +#: f.tools.cc:3272 +msgid "" +"Open and edit the scanned color chart file. \n" +"Remove any skew or rotation caused by the scanner. \n" +"Trim off all margins. Be careful not to cut off \n" +"any color tile edges or leave any white margins." +msgstr "" + +#: f.tools.cc:3308 +msgid "Open the trimmed color chart file" +msgstr "" + +#: f.tools.cc:3405 +msgid "" +"Set the file name and location \n" +"for the output color map file." +msgstr "" + +#: f.tools.cc:3440 +msgid "Color map file to use" +msgstr "" + +#: f.tools.cc:3461 +msgid "Select the image file to print." +msgstr "" + +#: f.tools.cc:3588 +msgid "Image colors are converted for printing." +msgstr "" -#: f.widgets.cc:115 +#: f.widgets.cc:111 msgid "Album" msgstr "" -#: f.widgets.cc:169 +#: f.widgets.cc:113 +msgid "TOP" +msgstr "TOP" + +#: f.widgets.cc:165 msgid "Current Image File (key F)" msgstr "Fichier Image Actuel (touche F)" -#: f.widgets.cc:170 +#: f.widgets.cc:166 msgid "Thumbnail Gallery (key G)" msgstr "Galerie des vignettes (touche G)" -#: f.widgets.cc:171 +#: f.widgets.cc:167 msgid "World Maps (key W)" msgstr "Mappemondes(touche W)" -#: f.widgets.cc:174 +#: f.widgets.cc:170 msgid "Favorite Functions" msgstr "Fonctions favorites" -#: f.widgets.cc:175 +#: f.widgets.cc:171 msgid "File: Open, RAW, Rename, Trash, Print" msgstr "" -#: f.widgets.cc:176 +#: f.widgets.cc:172 msgid "Save modified image file to disk" msgstr "Enregistrer l'image modifiée sur le disque" -#: f.widgets.cc:177 +#: f.widgets.cc:173 msgid "Open previous or next file (left/right mouse click)" msgstr "Ouvrir le fichier précédent ou suivant (clic gauche/droit)" -#: f.widgets.cc:178 +#: f.widgets.cc:174 msgid "Metadata: Captions, Tags, Ratings, Geotags, Search ... " msgstr "" "Métadonnées: Légendes, Balises, Évaluations, Balises de Géolocalisation, " "Recherche..." -#: f.widgets.cc:179 +#: f.widgets.cc:175 msgid "Areas: Select areas to edit, copy and paste" msgstr "Zones: Sélectionner les zones à éditer, copier et coller" -#: f.widgets.cc:180 +#: f.widgets.cc:176 msgid "Edit: Trim, Rotate, Resize, Brightness, Contrast, Text ..." msgstr "" "Éditer: Rogner, Pivoter, Redimensionner, Luminosité, Contraste, Texte..." -#: f.widgets.cc:181 +#: f.widgets.cc:177 msgid "Repair: Sharpen, Noise, Red-eyes, Color, Paint, Clone ..." msgstr "" "Réparer: Netteté, Bruit, Yeux rouges, Couleur, Peinture, Duplication..." -#: f.widgets.cc:182 +#: f.widgets.cc:178 msgid "Bend: Fix Perspective, Bend/Warp image ..." msgstr "Cintrer: Fixer la perspective, Cintrer/Déformer l'image..." -#: f.widgets.cc:183 +#: f.widgets.cc:179 msgid "Effects: Special Effects, Arty Transforms" msgstr "Effets: Effets Spéciaux, Transformations Style Artiste" -#: f.widgets.cc:184 +#: f.widgets.cc:180 msgid "Combine: HDR, HDF, Panorama, Stack, Mashup" msgstr "Combiner: HDR, HDF, Panorama, Superposition, Pêle-Mêle" -#: f.widgets.cc:185 +#: f.widgets.cc:181 msgid "" "Undo or Redo one edit (left/right mouse click) \n" " hold key A to include all edits" @@ -3319,1132 +3450,1104 @@ "Annuler ou Rétablir une opération (clic gauche/droit) \n" " maintenir la touche A enfoncée pour englober toutes les retouches" -#: f.widgets.cc:187 +#: f.widgets.cc:183 msgid "Tools: Index, Options, Shortcuts, Magnify ..." msgstr "" -#: f.widgets.cc:188 +#: f.widgets.cc:184 msgid "Help: Quick Start, User Guide, Recent Changes ..." msgstr "" "Aide: Démarrage rapide, Manuel de l'Utilisateur, Changements récents..." -#: f.widgets.cc:191 +#: f.widgets.cc:187 msgid "Set gallery from current image file" msgstr "" "Afficher le répertoire contenant le fichier image actuel dans la galerie" -#: f.widgets.cc:192 +#: f.widgets.cc:188 msgid "Albums: Manage Albums, Slide Show, Desktop Background" msgstr "" -#: f.widgets.cc:193 +#: f.widgets.cc:189 msgid "go to bookmarked image" msgstr "aller à l'image marquée du signet" -#: f.widgets.cc:194 +#: f.widgets.cc:190 msgid "increase thumbnail size" msgstr "augmenter la taille des vignettes" -#: f.widgets.cc:195 +#: f.widgets.cc:191 msgid "reduce thumbnail size" msgstr "diminuer la taille des vignettes" -#: f.widgets.cc:196 +#: f.widgets.cc:192 msgid "change sort order" msgstr "changer l'ordre de tri" -#: f.widgets.cc:197 +#: f.widgets.cc:193 msgid "jump to beginning (top)" msgstr "aller au début (racine)" -#: f.widgets.cc:198 +#: f.widgets.cc:194 msgid "jump to end (bottom)" msgstr "aller à la fin (bas)" -#: f.widgets.cc:199 +#: f.widgets.cc:195 msgid "previous page" msgstr "page précédente" -#: f.widgets.cc:200 +#: f.widgets.cc:196 msgid "next page" msgstr "page suivante" -#: f.widgets.cc:201 +#: f.widgets.cc:197 msgid "slow scroll" msgstr "défilement doux" -#: f.widgets.cc:202 +#: f.widgets.cc:198 msgid "Batch conversion, metadata, RAW processing" msgstr "" -#: f.widgets.cc:205 +#: f.widgets.cc:201 msgid "Choose a map for image locations" msgstr "Sélectionner une carte pour les lieux de l'image" -#: f.widgets.cc:206 +#: f.widgets.cc:202 msgid "Set image search radius for map click" msgstr "Définir le rayon de recherche de l'image pour clic sur carte" -#: f.widgets.cc:209 +#: f.widgets.cc:205 msgid "Open another window" msgstr "Ouvrir une nouvelle fenêtre" -#: f.widgets.cc:210 +#: f.widgets.cc:206 msgid "Open a new image file" msgstr "Ouvrir un nouveau fichier image" -#: f.widgets.cc:211 +#: f.widgets.cc:207 msgid "Open the previously seen file" msgstr "Ouvrir l'image affichée précédemment" -#: f.widgets.cc:212 +#: f.widgets.cc:208 msgid "Open a recently seen file" msgstr "Ouvrir un fichier récemment affiché" -#: f.widgets.cc:213 +#: f.widgets.cc:209 msgid "Open a newly added file" msgstr "Ouvrir un fichier ajouté dernièrement" -#: f.widgets.cc:214 f.widgets.cc:215 +#: f.widgets.cc:210 f.widgets.cc:211 msgid "Open and edit a camera RAW file" msgstr "Ouvrir et éditer un fichier image RAW" -#: f.widgets.cc:216 +#: f.widgets.cc:212 msgid "Change the image file name" msgstr "Changer le nom du fichier image" -#: f.widgets.cc:217 +#: f.widgets.cc:213 msgid "Create a blank image" msgstr "Créer une image vierge" -#: f.widgets.cc:218 +#: f.widgets.cc:214 msgid "Move image file to Trash" msgstr "Déplacer l'image vers la Corbeille" -#: f.widgets.cc:219 +#: f.widgets.cc:215 msgid "Permanently delete image file" msgstr "Supprimer définitivement le fichier image" -#: f.widgets.cc:220 +#: f.widgets.cc:216 msgid "Print the current image" msgstr "Imprimer l'image actuelle" -#: f.widgets.cc:221 f.widgets.cc:402 +#: f.widgets.cc:217 f.widgets.cc:401 msgid "Quit Fotoxx" msgstr "Quitter Fotoxx" -#: f.widgets.cc:224 +#: f.widgets.cc:220 msgid "List a few key metadata items" msgstr "Lister quelques éléments de mots-clés de métadonnées" -#: f.widgets.cc:225 +#: f.widgets.cc:221 msgid "List all metadata items" msgstr "Lister tous les éléments des métadonnées" -#: f.widgets.cc:226 +#: f.widgets.cc:222 msgid "(Toggle) show captions and comments" msgstr "(Basculer) afficher légendes et commentaires" -#: f.widgets.cc:227 +#: f.widgets.cc:223 msgid "Edit image tags/caption/rating ..." msgstr "Éditer les balises/légende/évaluation de l'image..." -#: f.widgets.cc:228 +#: f.widgets.cc:224 msgid "Edit any image metadata" msgstr "Éditer n'importe quelle métadonnée de l'image" -#: f.widgets.cc:229 +#: f.widgets.cc:225 msgid "Remove all metadata from an image" msgstr "Retirer toutes les métadonnées d'une image" -#: f.widgets.cc:230 +#: f.widgets.cc:226 msgid "Add/remove tags for multiple images" msgstr "Ajouter/retirer les balises par lots" -#: f.widgets.cc:231 +#: f.widgets.cc:227 msgid "Convert tag names for all images" msgstr "" -#: f.widgets.cc:232 +#: f.widgets.cc:228 msgid "Add/change/delete metadata for multiple images" msgstr "" -#: f.widgets.cc:233 +#: f.widgets.cc:229 msgid "Edit image location and geotags" msgstr "Éditer le lieu et les balises de géolocalisation de l'image" -#: f.widgets.cc:234 +#: f.widgets.cc:230 msgid "Add/revise geotags for multiple images" msgstr "" -#: f.widgets.cc:235 +#: f.widgets.cc:231 msgid "Find all images for a location [date]" msgstr "Rechercher toutes les images pour un lieu géographique [date]" -#: f.widgets.cc:236 +#: f.widgets.cc:232 msgid "Find images meeting select criteria" msgstr "Rechercher les images correspondant au critère de sélection" -#: f.widgets.cc:239 +#: f.widgets.cc:235 msgid "Select object or area for editing" msgstr "Sélectionner un objet ou une zone de travail" -#: f.widgets.cc:240 +#: f.widgets.cc:236 msgid "Show (outline) existing area" msgstr "Montrer la zone existante (contours)" -#: f.widgets.cc:241 +#: f.widgets.cc:237 msgid "Hide existing area" msgstr "Masquer la zone existante" -#: f.widgets.cc:242 +#: f.widgets.cc:238 msgid "Enable area for editing" msgstr "Activer la zone de travail" -#: f.widgets.cc:243 +#: f.widgets.cc:239 msgid "Disable area for editing" msgstr "Désactiver la zone de travail" -#: f.widgets.cc:244 +#: f.widgets.cc:240 msgid "Reverse existing area" msgstr "Inverser la zone existante" -#: f.widgets.cc:245 +#: f.widgets.cc:241 msgid "Erase existing area" msgstr "Effacer la zone existante" -#: f.widgets.cc:246 +#: f.widgets.cc:242 +msgid "Copy area for later pasting into image" +msgstr "" + +#: f.widgets.cc:243 +msgid "Paste previously copied area into image" +msgstr "" + +#: f.widgets.cc:244 msgid "Open a file and paste as area into image" msgstr "" -#: f.widgets.cc:247 +#: f.widgets.cc:245 msgid "Save area to a file with transparency" msgstr "" -#: f.widgets.cc:250 +#: f.widgets.cc:248 msgid "Trim/Crop margins and/or Rotate" msgstr "Rogner/Recadrer les marges et/ou Pivoter" -#: f.widgets.cc:251 +#: f.widgets.cc:249 msgid "Upright a rotated image" msgstr "" -#: f.widgets.cc:252 f.widgets.cc:253 +#: f.widgets.cc:250 f.widgets.cc:251 msgid "Fast auto enhance that may work OK" msgstr "" "Amélioration automatique rapide donnant généralement des résultats " "satisfaisants" -#: f.widgets.cc:254 +#: f.widgets.cc:252 msgid "Adjust brightness, contrast, color" msgstr "Ajuster luminosité, contraste et couleur" -#: f.widgets.cc:255 +#: f.widgets.cc:253 msgid "Add local contrast, enhance details" msgstr "Ajouter du contraste localement, améliorer des détails" -#: f.widgets.cc:256 +#: f.widgets.cc:254 msgid "Adjust brightness distribution" msgstr "Ajuster la répartition de la luminosité" -#: f.widgets.cc:257 +#: f.widgets.cc:255 msgid "Flatten zonal brightness distribution" msgstr "" -#: f.widgets.cc:258 +#: f.widgets.cc:256 msgid "Change pixel dimensions" msgstr "Changer la dimension des pixels" -#: f.widgets.cc:259 +#: f.widgets.cc:257 msgid "Mirror image horizontally or vertically" msgstr "Miroir horizontal ou vertical de l'image" -#: f.widgets.cc:260 +#: f.widgets.cc:258 msgid "Write text on image" msgstr "Écrire du texte sur l'image" -#: f.widgets.cc:261 +#: f.widgets.cc:259 msgid "Write lines or arrows on image" msgstr "Tracer des lignes ou des flèches sur l'image" -#: f.widgets.cc:262 +#: f.widgets.cc:260 msgid "Fix brightness uniformity across image" msgstr "Uniformiser la luminosité à travers l'image" -#: f.widgets.cc:263 +#: f.widgets.cc:261 msgid "Paint edit function gradually with mouse" msgstr "Fonction d'édition de peinture graduelle au moyen de la souris" -#: f.widgets.cc:264 +#: f.widgets.cc:262 msgid "Leverage edits by brightness or color" msgstr "Retouches à effet de levier par luminosité ou couleur" -#: f.widgets.cc:265 +#: f.widgets.cc:263 msgid "Edit plugins menu or run a plugin function" msgstr "Éditer le menu des greffons ou exéctuer une fonction de greffon" -#: f.widgets.cc:268 +#: f.widgets.cc:266 msgid "Make the image look sharper" msgstr "Rendre l'image plus nette" -#: f.widgets.cc:269 +#: f.widgets.cc:267 msgid "Make the image look fuzzy" msgstr "Donner un effet de flou à une image" -#: f.widgets.cc:270 +#: f.widgets.cc:268 msgid "Filter noise from low-light photos" msgstr "Filtrer le bruit de photos sous-exposées" -#: f.widgets.cc:271 +#: f.widgets.cc:269 msgid "Remove unwanted objects" msgstr "Retirer les objets superflus" -#: f.widgets.cc:272 +#: f.widgets.cc:270 msgid "Fix red-eyes from electronic flash" msgstr "Supprimer les yeux rouges dus au flash électronique" -#: f.widgets.cc:273 +#: f.widgets.cc:271 msgid "Paint image pixels using the mouse" msgstr "Dessiner les pixels de l'image au moyen de la souris" -#: f.widgets.cc:274 +#: f.widgets.cc:272 msgid "Paint image transparency using the mouse" msgstr "" -#: f.widgets.cc:275 +#: f.widgets.cc:273 msgid "Make BW/color, negative/positive, sepia" msgstr "Convertir NB/couleur, négatif/positif, sépia" -#: f.widgets.cc:276 +#: f.widgets.cc:274 msgid "Shift/convert colors into other colors" msgstr "Changer/convertir des couleurs en d'autres couleurs" -#: f.widgets.cc:277 +#: f.widgets.cc:275 msgid "Adjust color using RGB or CMY colors" msgstr "" -#: f.widgets.cc:278 +#: f.widgets.cc:276 msgid "Adjust color using HSL colors" msgstr "" -#: f.widgets.cc:279 +#: f.widgets.cc:277 msgid "Adjust color in selected image areas" msgstr "Ajuster les couleurs dans les zones sélectionnées de l'image" -#: f.widgets.cc:280 +#: f.widgets.cc:278 msgid "Match colors on one image with another" msgstr "Faire correspondre les couleurs d'une image avec celles d'une autre" -#: f.widgets.cc:281 +#: f.widgets.cc:279 msgid "Convert to another color profile" msgstr "Convertir en un autre profil de couleurs" -#: f.widgets.cc:282 +#: f.widgets.cc:280 msgid "Remove dust spots from scanned slides" msgstr "Ôter les grains de poussière des diapositives scannées" -#: f.widgets.cc:283 +#: f.widgets.cc:281 msgid "Smoothen edges with jaggies" msgstr "Adoucir les bords crénelés" -#: f.widgets.cc:284 +#: f.widgets.cc:282 msgid "Reduce Chromatic Abberation" msgstr "Réduire les Aberrations Chromatiques" -#: f.widgets.cc:285 +#: f.widgets.cc:283 msgid "Erase known hot and dark pixels" msgstr "Effacer les pixels chauds et foncés connus" -#: f.widgets.cc:288 +#: f.widgets.cc:286 msgid "Remove curvature, esp. panoramas" msgstr "Corriger la courbure, principalement des images panoramiques" -#: f.widgets.cc:289 +#: f.widgets.cc:287 msgid "Straighten objects seen from an angle" msgstr "Redresser l'angle de vue des objets (perspective)" -#: f.widgets.cc:290 +#: f.widgets.cc:288 msgid "Distort image areas using the mouse" msgstr "Déformer les zones de l'image au moyen de la souris" -#: f.widgets.cc:291 f.widgets.cc:292 f.widgets.cc:293 +#: f.widgets.cc:289 f.widgets.cc:290 f.widgets.cc:291 msgid "Distort the whole image using the mouse" msgstr "Déformer l'image entière au moyen de la souris" -#: f.widgets.cc:294 +#: f.widgets.cc:292 msgid "Flatten a photographed book page" msgstr "Aplatir une photographie de page de livre" -#: f.widgets.cc:297 +#: f.widgets.cc:295 msgid "Reduce color depth (posterize)" msgstr "Réduire la profondeur de couleur (postérisation)" -#: f.widgets.cc:298 +#: f.widgets.cc:296 msgid "Convert to pencil sketch" msgstr "Transformer en esquisse au crayon" -#: f.widgets.cc:299 +#: f.widgets.cc:297 msgid "Convert to line drawing (edge detection)" msgstr "Convertir en dessin au trait (détection de bord)" -#: f.widgets.cc:300 +#: f.widgets.cc:298 msgid "Convert to solid color drawing" msgstr "Convertir en dessin de couleur de base" -#: f.widgets.cc:301 +#: f.widgets.cc:299 msgid "Graduated Blur depending on contrast" msgstr "Flou Progressif dépendant du contraste" -#: f.widgets.cc:302 +#: f.widgets.cc:300 msgid "Create an embossed or 3D appearance" msgstr "Donner l'apparence d'un estampage ou tridimensionnelle" -#: f.widgets.cc:303 +#: f.widgets.cc:301 msgid "Convert to square tiles" msgstr "Transformer en mosaïque" -#: f.widgets.cc:304 +#: f.widgets.cc:302 msgid "Convert to dots (Roy Lichtenstein effect)" msgstr "Convertir en trame de points (effet Roy Lichtenstein)" -#: f.widgets.cc:305 +#: f.widgets.cc:303 msgid "Convert into a simulated painting" msgstr "Simuler une peinture" -#: f.widgets.cc:306 +#: f.widgets.cc:304 msgid "Change brightness or color radially" msgstr "Modifier la luminosité ou la couleur radialement" -#: f.widgets.cc:307 +#: f.widgets.cc:305 msgid "Add texture to an image" msgstr "Ajouter une texture à une image" -#: f.widgets.cc:308 +#: f.widgets.cc:306 msgid "Tile image with a repeating pattern" msgstr "Carreler l'image avec un motif répétitif" -#: f.widgets.cc:309 +#: f.widgets.cc:307 msgid "Create a mosaic with tiles made from all images" msgstr "" "Créer une mosaïque par juxtaposition de motifs obtenus à partir de toutes " "les images " -#: f.widgets.cc:310 +#: f.widgets.cc:308 msgid "Process an image using a custom kernel" msgstr "Traiter une image au moyen d'un noyau personnalisé" -#: f.widgets.cc:311 +#: f.widgets.cc:309 msgid "Warp an image with a wave pattern" msgstr "Déformer une image au moyen d'un motif de vague" -#: f.widgets.cc:312 +#: f.widgets.cc:310 msgid "Blur an image in the direction of mouse drags" msgstr "" -#: f.widgets.cc:315 +#: f.widgets.cc:313 msgid "Combine bright/dark images for better detail" msgstr "Combiner les images claires/foncées pour affiner les détails" -#: f.widgets.cc:316 +#: f.widgets.cc:314 msgid "Combine near/far focus images for deeper focus" msgstr "" "Combiner les mises au point proche/lointain d'images pour une netteté " "optimale" -#: f.widgets.cc:317 +#: f.widgets.cc:315 msgid "Combine images to erase passing people, etc." msgstr "Combiner les images pour effacer les passants, etc." -#: f.widgets.cc:318 +#: f.widgets.cc:316 msgid "Combine noisy images into a low-noise image" msgstr "" "Combiner des images fortement parasitées en une image légèrement parasitée" -#: f.widgets.cc:319 +#: f.widgets.cc:317 msgid "Combine images into a panorama" msgstr "Combiner des images en une image panoramique" -#: f.widgets.cc:320 +#: f.widgets.cc:318 msgid "Combine images into a vertical panorama" msgstr "Combiner des images en une image panoramique verticale" -#: f.widgets.cc:321 +#: f.widgets.cc:319 msgid "Combine images into a panorama (panorama tools)" msgstr "" -#: f.widgets.cc:322 +#: f.widgets.cc:320 msgid "Arrange images and text in a layout (montage)" msgstr "" -#: f.widgets.cc:325 +#: f.widgets.cc:323 msgid "Index new files and make thumbnails" msgstr "Indexer les nouveaux fichiers et créer les vignettes" -#: f.widgets.cc:326 +#: f.widgets.cc:324 msgid "Change user preferences" msgstr "Modifier les préférences de l'utilisateur" -#: f.widgets.cc:327 +#: f.widgets.cc:325 msgid "Change Keyboard Shortcut Keys" msgstr "Modifier les touches de Raccourcis Clavier" -#: f.widgets.cc:328 +#: f.widgets.cc:326 msgid "Show a brightness distribution graph" msgstr "Montrer un graphique de répartition de la luminosité" -#: f.widgets.cc:329 +#: f.widgets.cc:327 msgid "Show or revise grid lines" msgstr "Montrer ou régler les guides de la grille" -#: f.widgets.cc:330 +#: f.widgets.cc:328 msgid "Change color of foreground lines" msgstr "Modifier la couleur de premier plan des lignes" -#: f.widgets.cc:331 +#: f.widgets.cc:329 msgid "Show RGB colors at mouse click" msgstr "Montrer les couleurs RGB au clic de souris" -#: f.widgets.cc:332 +#: f.widgets.cc:330 msgid "Magnify image around the mouse position" msgstr "Agrandir l'image autour de la postion du curseur" -#: f.widgets.cc:333 +#: f.widgets.cc:331 msgid "Highlight darkest and brightest pixels" msgstr "Mettre les pixels les plus foncés/clairs en évidence" -#: f.widgets.cc:334 +#: f.widgets.cc:332 msgid "Chart to adjust monitor color" msgstr "Diagramme d'ajustement de la couleur de l'écran" -#: f.widgets.cc:335 +#: f.widgets.cc:333 msgid "Chart to adjust monitor gamma" msgstr "Diagramme d'ajustement du gamma de l'écran" -#: f.widgets.cc:336 +#: f.widgets.cc:334 msgid "Change the GUI language" msgstr "Changer la langue de l'interface" -#: f.widgets.cc:337 +#: f.widgets.cc:335 msgid "Report missing translations" msgstr "Faire un rapport des traductions manquantes" -#: f.widgets.cc:338 -msgid "Search all image files and report duplicates" -msgstr "Rechercher tous les fichiers image et signaler les doublons" +#: f.widgets.cc:336 +msgid "Calibrate printer colors" +msgstr "" -#: f.widgets.cc:339 +#: f.widgets.cc:337 msgid "Memory and CPU (to terminal/logfile)" msgstr "Mémoire et CPU (vers terminal/fichier-journal)" -#: f.widgets.cc:343 +#: f.widgets.cc:341 msgid "Rename/convert/resize/move multiple files" msgstr "Renommer/convertir/redimensionner/déplacer fichier par lots" -#: f.widgets.cc:344 +#: f.widgets.cc:342 msgid "Upright multiple rotated image files" msgstr "" -#: f.widgets.cc:345 +#: f.widgets.cc:343 msgid "Delete or Trash multiple files" msgstr "" -#: f.widgets.cc:346 +#: f.widgets.cc:344 msgid "Convert camera RAW files using DCraw" msgstr "Convertir les fichiers Photos RAW au moyen de DCraw" -#: f.widgets.cc:347 +#: f.widgets.cc:345 msgid "Convert camera RAW files using Raw Therapee" msgstr "Convertir les fichiers Photos RAW au moyen de Raw Therapee" -#: f.widgets.cc:348 +#: f.widgets.cc:346 msgid "Burn selected image files to CD or DVD" msgstr "Graver les fichiers images sélectionnés sur un CD/DVD" -#: f.widgets.cc:352 +#: f.widgets.cc:347 +msgid "Search all image files and report duplicates" +msgstr "Rechercher tous les fichiers image et signaler les doublons" + +#: f.widgets.cc:351 msgid "Quick Start mini-guide" msgstr "Mini-Guide pour un Démarrage Rapide" -#: f.widgets.cc:353 +#: f.widgets.cc:352 msgid "Read the user guide" msgstr "Consulter le manuel utilisateur" -#: f.widgets.cc:354 +#: f.widgets.cc:353 msgid "Recent user guide changes" msgstr "Manuel utilisateur des derniers changements" -#: f.widgets.cc:355 +#: f.widgets.cc:354 msgid "Summary of image edit functions" msgstr "Sommaire des fonctions d’édition d'image" -#: f.widgets.cc:356 +#: f.widgets.cc:355 msgid "Technical installation notes" msgstr "Notes techniques d'installation" -#: f.widgets.cc:357 +#: f.widgets.cc:356 msgid "List updates by Fotoxx version" msgstr "Lister les mises à jour par version de Fotoxx" -#: f.widgets.cc:358 +#: f.widgets.cc:357 msgid "View the log file and error messages" msgstr "Afficher le fichier-journal et les messages d'erreur" -#: f.widgets.cc:359 +#: f.widgets.cc:358 msgid "How to do Fotoxx translations" msgstr "Comment faire les traductions de Fotoxx" -#: f.widgets.cc:360 +#: f.widgets.cc:359 msgid "Show the Fotoxx web page" msgstr "Aller à la page web de Fotoxx" -#: f.widgets.cc:361 +#: f.widgets.cc:360 msgid "Version, license, contact, credits" msgstr "Version, licence, contact, crédits" -#: f.widgets.cc:364 +#: f.widgets.cc:363 msgid "Organize images into albums" msgstr "" -#: f.widgets.cc:365 +#: f.widgets.cc:364 msgid "Start a slide show" msgstr "Démarrer un diaporama" -#: f.widgets.cc:366 +#: f.widgets.cc:365 msgid "Set desktop image from current Fotoxx image" msgstr "" -#: f.widgets.cc:367 +#: f.widgets.cc:366 msgid "Cycle desktop images from a Fotoxx album" msgstr "" -#: f.widgets.cc:389 +#: f.widgets.cc:388 msgid "New Window" msgstr "Nouvelle Fenêtre" -#: f.widgets.cc:391 +#: f.widgets.cc:390 msgid "Open Previous File" msgstr "Ouvrir l'Image Précédente" -#: f.widgets.cc:392 +#: f.widgets.cc:391 msgid "Recently Seen Images" msgstr "Images Récemment Affichées" -#: f.widgets.cc:393 +#: f.widgets.cc:392 msgid "Newest Images" msgstr "Images les plus Récentes" -#: f.widgets.cc:394 +#: f.widgets.cc:393 msgid "Open RAW (ufraw)" msgstr "" -#: f.widgets.cc:395 +#: f.widgets.cc:394 msgid "Open RAW (Raw Therapee)" msgstr "" -#: f.widgets.cc:397 +#: f.widgets.cc:396 msgid "New Blank Image" msgstr "Nouvelle Image Vierge" -#: f.widgets.cc:399 +#: f.widgets.cc:398 msgid "Delete Image File" msgstr "Supprimer le Fichier Image" -#: f.widgets.cc:400 +#: f.widgets.cc:399 msgid "Print Image" msgstr "Imprimer l'Image" -#: f.widgets.cc:401 f.widgets.cc:538 +#: f.widgets.cc:400 f.widgets.cc:543 msgid "Set Desktop Image" msgstr "" -#: f.widgets.cc:405 +#: f.widgets.cc:404 msgid "View Metadata (short)" msgstr "Afficher les Métadonnées (résumé)" -#: f.widgets.cc:406 +#: f.widgets.cc:405 msgid "View Metadata (long)" msgstr "Afficher les Métadonnées (informations complètes)" -#: f.widgets.cc:407 +#: f.widgets.cc:406 msgid "Show Captions on Image" msgstr "Afficher les Légendes de l'Image" -#: f.widgets.cc:409 +#: f.widgets.cc:408 msgid "Edit Any Metadata" msgstr "Éditer n'importe Quelles Métadonnées" -#: f.widgets.cc:412 f.widgets.cc:531 +#: f.widgets.cc:411 f.widgets.cc:534 msgid "Batch Rename Tags" msgstr "" -#: f.widgets.cc:413 f.widgets.cc:532 +#: f.widgets.cc:412 f.widgets.cc:535 msgid "Batch Add/Change Metadata" msgstr "" -#: f.widgets.cc:416 f.widgets.cc:606 +#: f.widgets.cc:415 f.widgets.cc:537 f.widgets.cc:611 msgid "Images by Geotag" msgstr "" -#: f.widgets.cc:417 f.widgets.cc:607 +#: f.widgets.cc:416 f.widgets.cc:538 f.widgets.cc:612 msgid "Search Images" msgstr "Rechercher des Images" -#: f.widgets.cc:420 fotoxx.h:1156 +#: f.widgets.cc:419 fotoxx.h:1164 msgid "Select" msgstr "Sélectionner" -#: f.widgets.cc:421 fotoxx.h:1158 +#: f.widgets.cc:420 fotoxx.h:1166 msgid "Show" msgstr "Montrer" -#: f.widgets.cc:422 fotoxx.h:1112 +#: f.widgets.cc:421 fotoxx.h:1120 msgid "Hide" msgstr "Masquer" -#: f.widgets.cc:423 fotoxx.h:1098 +#: f.widgets.cc:422 fotoxx.h:1106 msgid "Enable" msgstr "Activer" -#: f.widgets.cc:424 fotoxx.h:1094 +#: f.widgets.cc:423 fotoxx.h:1102 msgid "Disable" msgstr "Désactiver" -#: f.widgets.cc:425 fotoxx.h:1115 +#: f.widgets.cc:424 fotoxx.h:1123 msgid "Invert" msgstr "Inverser" -#: f.widgets.cc:426 fotoxx.h:1172 +#: f.widgets.cc:425 fotoxx.h:1180 msgid "Unselect" msgstr "Dé-sélectionner" +#: f.widgets.cc:426 +msgid "Copy Area" +msgstr "" + #: f.widgets.cc:427 -msgid "Open Area File" +msgid "Paste Area" msgstr "" #: f.widgets.cc:428 +msgid "Open Area File" +msgstr "" + +#: f.widgets.cc:429 msgid "Save Area File" msgstr "" -#: f.widgets.cc:433 +#: f.widgets.cc:434 msgid "Voodoo 1" msgstr "" -#: f.widgets.cc:434 +#: f.widgets.cc:435 msgid "Voodoo 2" msgstr "" -#: f.widgets.cc:436 +#: f.widgets.cc:437 msgid "Adjust Brightness Dist." msgstr "" -#: f.widgets.cc:437 f.widgets.cc:676 +#: f.widgets.cc:438 f.widgets.cc:681 msgid "Zonal Flatten" msgstr "" -#: f.widgets.cc:441 +#: f.widgets.cc:442 msgid "Add Text" msgstr "Ajouter du Texte" -#: f.widgets.cc:442 +#: f.widgets.cc:443 msgid "Add Lines" msgstr "Ajouter des Lignes" -#: f.widgets.cc:445 +#: f.widgets.cc:446 msgid "Plugins" msgstr "Greffons" -#: f.widgets.cc:450 +#: f.widgets.cc:451 msgid "Denoise" msgstr "Réduction de Bruit" -#: f.widgets.cc:452 +#: f.widgets.cc:453 msgid "Red Eyes" msgstr "Yeux Rouges" -#: f.widgets.cc:457 +#: f.widgets.cc:458 msgid "Adjust RGB/CMY" msgstr "" -#: f.widgets.cc:458 +#: f.widgets.cc:459 msgid "Adjust HSL" msgstr "" -#: f.widgets.cc:459 +#: f.widgets.cc:460 msgid "Brightness Ramp" msgstr "Courbes de Luminosité" -#: f.widgets.cc:461 +#: f.widgets.cc:462 msgid "Match Colors" msgstr "Faire Correspondre les couleurs" -#: f.widgets.cc:462 +#: f.widgets.cc:463 msgid "Color Profile" msgstr "Profil de Couleur" -#: f.widgets.cc:464 +#: f.widgets.cc:465 msgid "Anti-Alias" msgstr "Anticrénelage" -#: f.widgets.cc:470 +#: f.widgets.cc:471 msgid "Fix Perspective" msgstr "Fixer la Perspective" -#: f.widgets.cc:475 +#: f.widgets.cc:476 msgid "Flatten Book Page" msgstr "Aplatir une Page de Livre" -#: f.widgets.cc:478 +#: f.widgets.cc:479 msgid "Color Depth" msgstr "Profondeur de Couleur" -#: f.widgets.cc:479 +#: f.widgets.cc:480 msgid "Sketch" msgstr "Esquisse" -#: f.widgets.cc:483 +#: f.widgets.cc:484 msgid "Embossing" msgstr "Estampage" -#: f.widgets.cc:485 +#: f.widgets.cc:486 msgid "Dots" msgstr "Trame de points" -#: f.widgets.cc:486 +#: f.widgets.cc:487 msgid "Painting" msgstr "Peinture" -#: f.widgets.cc:488 +#: f.widgets.cc:489 msgid "Texture" msgstr "Texture" -#: f.widgets.cc:490 +#: f.widgets.cc:491 msgid "Mosaic" msgstr "Mosaïque" -#: f.widgets.cc:496 +#: f.widgets.cc:497 msgid "High Dynamic Range" msgstr "Fourchette Dynamique Étendue" -#: f.widgets.cc:497 +#: f.widgets.cc:498 msgid "High Depth of Field" msgstr "Grande Profondeur de Champ" -#: f.widgets.cc:498 +#: f.widgets.cc:499 msgid "Stack/Paint" msgstr "Superposer/Peindre" -#: f.widgets.cc:499 +#: f.widgets.cc:500 msgid "Stack/Noise" msgstr "Superposition/Bruit" -#: f.widgets.cc:500 +#: f.widgets.cc:501 msgid "Panorama" msgstr "Panorama" -#: f.widgets.cc:501 +#: f.widgets.cc:502 msgid "Vertical Panorama" msgstr "Panorama Vertical" -#: f.widgets.cc:502 +#: f.widgets.cc:503 msgid "PT Panorama" msgstr "" -#: f.widgets.cc:503 +#: f.widgets.cc:504 msgid "Mashup" msgstr "Pêle-Mêle" -#: f.widgets.cc:508 +#: f.widgets.cc:509 msgid "Keyboard Shortcuts" msgstr "Raccourcis Clavier" -#: f.widgets.cc:509 +#: f.widgets.cc:510 msgid "Show Brightness Dist." msgstr "" -#: f.widgets.cc:514 +#: f.widgets.cc:515 msgid "Dark/Bright Pixels" msgstr "Pixels Foncés/Clairs" -#: f.widgets.cc:515 +#: f.widgets.cc:516 msgid "Monitor Color" msgstr "Couleurs de l'Écran" -#: f.widgets.cc:517 +#: f.widgets.cc:518 msgid "Change Language" msgstr "Changer de la Langue" -#: f.widgets.cc:518 +#: f.widgets.cc:519 msgid "Missing Translations" msgstr "Traductions Manquantes" -#: f.widgets.cc:520 +#: f.widgets.cc:522 msgid "Resources" msgstr "Ressources" -#: f.widgets.cc:527 +#: f.widgets.cc:529 msgid "Batch RAW (DCraw)" msgstr "Batch RAW (DCraw)" -#: f.widgets.cc:528 +#: f.widgets.cc:530 msgid "Batch RAW (Raw Therapee)" msgstr "Batch RAW (Raw Therapee)" -#: f.widgets.cc:529 +#: f.widgets.cc:531 msgid "Burn Images to CD/DVD" msgstr "Graver les Images sur un CD/DVD" -#: f.widgets.cc:539 +#: f.widgets.cc:544 msgid "Cycle Desktop Image" msgstr "" -#: f.widgets.cc:542 fotoxx-15.08.cc:5513 -msgid "Quick Start" -msgstr "Démarrage Rapide" - -#: f.widgets.cc:543 fotoxx-15.08.cc:5516 -msgid "User Guide" -msgstr "Manuel Utilisateur" - -#: f.widgets.cc:544 fotoxx-15.08.cc:5519 -msgid "User Guide Changes" -msgstr "Changements du Manuel Utilisateur" - -#: f.widgets.cc:545 fotoxx-15.08.cc:5525 -msgid "Edit Functions Summary" -msgstr "Éditer le Sommaire des Fonctions" - -#: f.widgets.cc:546 fotoxx-15.08.cc:5522 -msgid "README" -msgstr "LISEZ-MOI" - -#: f.widgets.cc:547 fotoxx-15.08.cc:5528 -msgid "Change Log" -msgstr "Journal des Changements" - -#: f.widgets.cc:548 fotoxx-15.08.cc:5531 -msgid "Log File" -msgstr "Fichier-Journal" - -#: f.widgets.cc:549 fotoxx-15.08.cc:5534 -msgid "Translations" -msgstr "Traductions" - -#: f.widgets.cc:550 fotoxx-15.08.cc:5537 -msgid "Home Page" -msgstr "Site web" - -#: f.widgets.cc:551 fotoxx-15.08.cc:5540 -msgid "About" -msgstr "À propos" - -#: f.widgets.cc:556 f.widgets.cc:579 f.widgets.cc:601 +#: f.widgets.cc:561 f.widgets.cc:584 f.widgets.cc:606 msgid "Gallery" msgstr "Galerie" -#: f.widgets.cc:557 f.widgets.cc:580 f.widgets.cc:602 +#: f.widgets.cc:562 f.widgets.cc:585 f.widgets.cc:607 msgid "World Maps" msgstr "Mappemondes" -#: f.widgets.cc:559 +#: f.widgets.cc:564 msgid "Favorites" msgstr "Favoris" -#: f.widgets.cc:561 fotoxx.h:1152 +#: f.widgets.cc:566 fotoxx.h:1160 msgid "Save" msgstr "Enregistrer" -#: f.widgets.cc:562 +#: f.widgets.cc:567 msgid "Prev/Next" msgstr "Préc/Suiv" -#: f.widgets.cc:563 +#: f.widgets.cc:568 msgid "Metadata" msgstr "Métadonnées" -#: f.widgets.cc:564 +#: f.widgets.cc:569 msgid "Areas" msgstr "Zones" -#: f.widgets.cc:565 fotoxx.h:1097 +#: f.widgets.cc:570 fotoxx.h:1105 msgid "Edit" msgstr "Éditer" -#: f.widgets.cc:566 +#: f.widgets.cc:571 msgid "Repair" msgstr "Réparer" -#: f.widgets.cc:567 +#: f.widgets.cc:572 msgid "Bend" msgstr "Cintrer" -#: f.widgets.cc:568 +#: f.widgets.cc:573 msgid "Effects" msgstr "Effets" -#: f.widgets.cc:569 +#: f.widgets.cc:574 msgid "Combine" msgstr "Combiner" -#: f.widgets.cc:570 +#: f.widgets.cc:575 msgid "Undo/Redo" msgstr "Annuler/Rétablir" -#: f.widgets.cc:571 +#: f.widgets.cc:576 msgid "Tools" msgstr "Outils" -#: f.widgets.cc:572 f.widgets.cc:594 fotoxx-15.08.cc:5544 fotoxx.h:1111 -msgid "Help" -msgstr "Aide" - -#: f.widgets.cc:582 +#: f.widgets.cc:587 msgid "Sync.G" msgstr "Sync. G" -#: f.widgets.cc:583 +#: f.widgets.cc:588 msgid "Albums" msgstr "" -#: f.widgets.cc:584 +#: f.widgets.cc:589 msgid "Bookmarks" msgstr "" -#: f.widgets.cc:593 +#: f.widgets.cc:598 msgid "Batch" msgstr "" -#: f.widgets.cc:604 +#: f.widgets.cc:609 msgid "Choose Map" msgstr "Sélectionner la Carte" -#: f.widgets.cc:605 +#: f.widgets.cc:610 msgid "Search Range" msgstr "Fourchette de Recherche" -#: f.widgets.cc:613 fotoxx.h:1170 +#: f.widgets.cc:618 fotoxx.h:1178 msgid "Undo" msgstr "Rétablir" -#: f.widgets.cc:614 fotoxx.h:1143 +#: f.widgets.cc:619 fotoxx.h:1151 msgid "Redo" msgstr "Rétablir" -#: f.widgets.cc:655 +#: f.widgets.cc:660 msgid "Popup Image" msgstr "Image Contextuelle" -#: f.widgets.cc:656 +#: f.widgets.cc:661 msgid "Popup Image (add)" msgstr "Image contextuelle (ajout)" -#: f.widgets.cc:660 fotoxx.h:1146 +#: f.widgets.cc:665 fotoxx.h:1154 msgid "Rename" msgstr "Renommer" -#: f.widgets.cc:661 +#: f.widgets.cc:666 msgid "Copy to Location" msgstr "Copier vers l'Emplacement" -#: f.widgets.cc:662 +#: f.widgets.cc:667 msgid "Move to Location" msgstr "Déplacer vers l'Emplacement" -#: f.widgets.cc:663 +#: f.widgets.cc:668 msgid "Copy to Clipboard" msgstr "Copier dans le Presse-Papier" -#: f.widgets.cc:664 +#: f.widgets.cc:669 msgid "Remove from Album" msgstr "" -#: f.widgets.cc:665 +#: f.widgets.cc:670 msgid "Cut to Image Cache" msgstr "Couper vers le Cache de l'Image" -#: f.widgets.cc:666 +#: f.widgets.cc:671 msgid "Copy to Image Cache" msgstr "Copier vers le Cache de l'Image" -#: f.widgets.cc:667 +#: f.widgets.cc:672 msgid "Paste Image Cache Here (clear)" msgstr "Coller le Cache de l'Image Ici (effacer)" -#: f.widgets.cc:668 +#: f.widgets.cc:673 msgid "Paste Image Cache Here (keep)" msgstr "Coller le Cache de l'Image Ici (conserver)" -#: f.widgets.cc:669 +#: f.widgets.cc:674 msgid "Paste Current Image File Here" msgstr "" -#: f.widgets.cc:673 +#: f.widgets.cc:678 msgid "Voodoo Enhance" msgstr "Amélioration Voodoo" -#: f.widgets.cc:675 +#: f.widgets.cc:680 msgid "Brightness Dist." msgstr "Répartition de la Luminosité" -#: f.widgets.cc:678 +#: f.widgets.cc:683 msgid "Select Area" msgstr "Sélectionner une Zone" -#: f.widgets.cc:681 fotoxx.h:1166 +#: f.widgets.cc:686 fotoxx.h:1174 msgid "Trash" msgstr "Corbeille" -#: f.widgets.cc:806 +#: f.widgets.cc:811 msgid "Image Locations" msgstr "Emplacements d'Images" -#: fotoxx-15.08.cc:376 +#: fotoxx-15.09.cc:361 msgid "Please install missing programs:" msgstr "Veuillez installer ce(s) programme(s) manquant(s):" -#: fotoxx-15.08.cc:667 +#: fotoxx-15.09.cc:652 msgid "Kill active dialog?" msgstr "Terminer le dialogue actif?" -#: fotoxx-15.08.cc:742 +#: fotoxx-15.09.cc:723 msgid "(reduced)" msgstr "(réduit)" -#: fotoxx-15.08.cc:743 +#: fotoxx-15.09.cc:724 msgid "area active" msgstr "zone active" -#: fotoxx-15.08.cc:744 +#: fotoxx-15.09.cc:725 msgid "dialog open" msgstr "dialogue ouvert" -#: fotoxx-15.08.cc:745 -msgid "BUSY" -msgstr "" - -#: fotoxx-15.08.cc:746 +#: fotoxx-15.09.cc:726 msgid "blocked" msgstr "" -#: fotoxx-15.08.cc:796 +#: fotoxx-15.09.cc:776 msgid "edits" msgstr "opérations" -#: fotoxx-15.08.cc:2805 +#: fotoxx-15.09.cc:2756 msgid "Exceed 50 anchor points" msgstr "Excède 50 points d'ancrage" -#: fotoxx-15.08.cc:3018 +#: fotoxx-15.09.cc:2969 msgid "load curve from a file" msgstr "charger la courbe depuis un fichier" -#: fotoxx-15.08.cc:3091 +#: fotoxx-15.09.cc:3042 msgid "save curve to a file" msgstr "enregistrer les courbes dans un fichier" -#: fotoxx-15.08.cc:3161 +#: fotoxx-15.09.cc:3112 msgid "Too many edits, please save image" msgstr "Trop d'opérations, veuillez enregistrer l'image" -#: fotoxx-15.08.cc:3180 +#: fotoxx-15.09.cc:3131 msgid "" "Select area not active.\n" "Continue?" @@ -4452,374 +4555,374 @@ "La sélection de zone n'est pas active.\n" "Continuer?" -#: fotoxx-15.08.cc:3435 +#: fotoxx-15.09.cc:3385 msgid "Load settings from file" msgstr "Charger les paramètres à partir d'un fichier" -#: fotoxx-15.08.cc:3532 +#: fotoxx-15.09.cc:3482 msgid "file data does not fit dialog" msgstr "les données de fichier ne sont pas adaptées à la boite de dialogue" -#: fotoxx-15.08.cc:3542 +#: fotoxx-15.09.cc:3492 msgid "Save settings to a file" msgstr "Sauvegarder les paramètres dans un fichier" -#: fotoxx-15.08.cc:3835 +#: fotoxx-15.09.cc:3781 msgid "This action will discard changes to current image" msgstr "Cette action va annuler les modifications apportées à l'image actuelle" -#: fotoxx-15.08.cc:3836 fotoxx-15.08.cc:3837 +#: fotoxx-15.09.cc:3782 fotoxx-15.09.cc:3783 msgid "prior function still active" msgstr "fonction antérieure toujours active" -#: fotoxx-15.08.cc:3838 fotoxx.h:1116 +#: fotoxx-15.09.cc:3784 fotoxx.h:1124 msgid "Keep" msgstr "Conserver" -#: fotoxx-15.08.cc:3839 +#: fotoxx-15.09.cc:3785 msgid "Discard" msgstr "Abandonner" -#: fotoxx.h:1068 +#: fotoxx.h:1076 msgid "Add" msgstr "Ajouter" -#: fotoxx.h:1069 +#: fotoxx.h:1077 msgid "Add All" msgstr "Tout ajouter" -#: fotoxx.h:1071 +#: fotoxx.h:1079 msgid "Amount" msgstr "Quantité" -#: fotoxx.h:1072 +#: fotoxx.h:1080 msgid "Angle" msgstr "Angle" -#: fotoxx.h:1073 +#: fotoxx.h:1081 msgid "Apply" msgstr "Appliquer" -#: fotoxx.h:1074 +#: fotoxx.h:1082 msgid "Auto" msgstr "" -#: fotoxx.h:1075 +#: fotoxx.h:1083 msgid "Black" msgstr "Noir" -#: fotoxx.h:1076 +#: fotoxx.h:1084 msgid "Blend Width" msgstr "Dosage du Mélange" -#: fotoxx.h:1078 zfuncs.cc:10061 +#: fotoxx.h:1086 zfuncs.cc:10054 msgid "bottom" msgstr "bas" -#: fotoxx.h:1080 +#: fotoxx.h:1088 msgid "Browse" msgstr "Parcourir" -#: fotoxx.h:1081 +#: fotoxx.h:1089 msgid "Cancel" msgstr "Annuler" -#: fotoxx.h:1082 +#: fotoxx.h:1090 msgid "center" msgstr "centrer" -#: fotoxx.h:1083 +#: fotoxx.h:1091 msgid "Choose" msgstr "Choisir" -#: fotoxx.h:1084 +#: fotoxx.h:1092 msgid "Clear" msgstr "Effacer" -#: fotoxx.h:1085 +#: fotoxx.h:1093 msgid "Color" msgstr "couleur" -#: fotoxx.h:1086 +#: fotoxx.h:1094 msgid "continue" msgstr "" -#: fotoxx.h:1088 +#: fotoxx.h:1096 msgid "Copy" msgstr "Copier" -#: fotoxx.h:1089 +#: fotoxx.h:1097 msgid "Create" msgstr "Créer" -#: fotoxx.h:1090 +#: fotoxx.h:1098 msgid "Curve File:" msgstr "Fichier de Courbes:" -#: fotoxx.h:1091 +#: fotoxx.h:1099 msgid "Cut" msgstr "Couper" -#: fotoxx.h:1092 +#: fotoxx.h:1100 msgid "Deband" msgstr "Détendre" -#: fotoxx.h:1093 +#: fotoxx.h:1101 msgid "Delete" msgstr "Supprimer" -#: fotoxx.h:1095 +#: fotoxx.h:1103 msgid "Done" msgstr "Terminé" -#: fotoxx.h:1096 +#: fotoxx.h:1104 msgid "edge" msgstr "bord" -#: fotoxx.h:1099 +#: fotoxx.h:1107 msgid "Erase" msgstr "Effacer" -#: fotoxx.h:1100 +#: fotoxx.h:1108 msgid "Fetch" msgstr "Atteindre" -#: fotoxx.h:1101 +#: fotoxx.h:1109 msgid "output file already exists" msgstr "" -#: fotoxx.h:1102 +#: fotoxx.h:1110 #, c-format msgid "%d files selected" msgstr "%d fichiers sélectionnés" -#: fotoxx.h:1103 +#: fotoxx.h:1111 msgid "Find" msgstr "Rechercher" -#: fotoxx.h:1104 +#: fotoxx.h:1112 msgid "Finish" msgstr "Finir" -#: fotoxx.h:1105 +#: fotoxx.h:1113 msgid "Flatten" msgstr "Aplatir" -#: fotoxx.h:1106 +#: fotoxx.h:1114 msgid "Font" msgstr "Police" -#: fotoxx.h:1107 +#: fotoxx.h:1115 msgid "Geotags" msgstr "Balises de Géolocalisation" -#: fotoxx.h:1109 +#: fotoxx.h:1117 msgid "Grid" msgstr "Grille" -#: fotoxx.h:1110 +#: fotoxx.h:1118 msgid "Height" msgstr "Hauteur" -#: fotoxx.h:1113 +#: fotoxx.h:1121 msgid "Images" msgstr "Images" -#: fotoxx.h:1114 +#: fotoxx.h:1122 msgid "Insert" msgstr "Insérer" -#: fotoxx.h:1117 zfuncs.cc:10065 +#: fotoxx.h:1125 zfuncs.cc:10058 msgid "left" msgstr "gauche" -#: fotoxx.h:1118 +#: fotoxx.h:1126 msgid "limit" msgstr "limiter" -#: fotoxx.h:1119 +#: fotoxx.h:1127 msgid "Load" msgstr "Charger" -#: fotoxx.h:1120 +#: fotoxx.h:1128 msgid "Make" msgstr "Faire" -#: fotoxx.h:1122 +#: fotoxx.h:1130 msgid "Map" msgstr "Mappemonde" -#: fotoxx.h:1123 +#: fotoxx.h:1131 msgid "Max" msgstr "Max" -#: fotoxx.h:1124 +#: fotoxx.h:1132 msgid "Negative" msgstr "Négatif" -#: fotoxx.h:1125 +#: fotoxx.h:1133 msgid "New" msgstr "Nouveau" -#: fotoxx.h:1126 +#: fotoxx.h:1134 msgid "Next" msgstr "Suiv." -#: fotoxx.h:1127 zfuncs.cc:9147 +#: fotoxx.h:1135 zfuncs.cc:9148 msgid "No" msgstr "Non" -#: fotoxx.h:1128 +#: fotoxx.h:1136 msgid "no images" msgstr "pas d'images" -#: fotoxx.h:1130 +#: fotoxx.h:1138 msgid "no selection" msgstr "pas de sélection" -#: fotoxx.h:1131 +#: fotoxx.h:1139 msgid "OK" msgstr "Valider" -#: fotoxx.h:1133 +#: fotoxx.h:1141 msgid "Paste" msgstr "Coller" -#: fotoxx.h:1134 +#: fotoxx.h:1142 msgid "Pause" msgstr "Pause" -#: fotoxx.h:1135 +#: fotoxx.h:1143 msgid "Percent" msgstr "Pour-cent" -#: fotoxx.h:1137 +#: fotoxx.h:1145 msgid "Presets" msgstr "Pré-réglages" -#: fotoxx.h:1138 +#: fotoxx.h:1146 msgid "Prev" msgstr "Préc." -#: fotoxx.h:1139 +#: fotoxx.h:1147 msgid "Proceed" msgstr "Poursuivre" -#: fotoxx.h:1141 +#: fotoxx.h:1149 msgid "range" msgstr "fourchette" -#: fotoxx.h:1144 +#: fotoxx.h:1152 msgid "Reduce" msgstr "Réduire" -#: fotoxx.h:1145 +#: fotoxx.h:1153 msgid "Remove" msgstr "Retirer" -#: fotoxx.h:1147 +#: fotoxx.h:1155 msgid "Replace" msgstr "" -#: fotoxx.h:1148 +#: fotoxx.h:1156 msgid "Reserved" msgstr "" -#: fotoxx.h:1149 +#: fotoxx.h:1157 msgid "Reset" msgstr "Réinitialiser" -#: fotoxx.h:1150 zfuncs.cc:10069 +#: fotoxx.h:1158 zfuncs.cc:10062 msgid "right" msgstr "droit" -#: fotoxx.h:1151 +#: fotoxx.h:1159 msgid "Rotate" msgstr "Pivoter" -#: fotoxx.h:1153 +#: fotoxx.h:1161 msgid "Unknown file type, save as tiff/jpeg/png to edit" msgstr "" "Type de fichier inconnu. Enregistrer au format tiff/jpeg/png pour l'éditer" -#: fotoxx.h:1154 +#: fotoxx.h:1162 msgid "Search" msgstr "Rechercher" -#: fotoxx.h:1155 +#: fotoxx.h:1163 msgid "Seconds" msgstr "Secondes" -#: fotoxx.h:1159 +#: fotoxx.h:1167 msgid "Size" msgstr "Taille" -#: fotoxx.h:1160 +#: fotoxx.h:1168 msgid "Start" msgstr "Démarrer" -#: fotoxx.h:1161 +#: fotoxx.h:1169 msgid "Strength" msgstr "Force" -#: fotoxx.h:1162 +#: fotoxx.h:1170 msgid "Threshold" msgstr "Seuil" -#: fotoxx.h:1163 +#: fotoxx.h:1171 #, c-format msgid "exceed %d files" msgstr "excède %d fichiers" -#: fotoxx.h:1164 zfuncs.cc:10057 +#: fotoxx.h:1172 zfuncs.cc:10050 msgid "top" msgstr "haut" -#: fotoxx.h:1165 +#: fotoxx.h:1173 msgid "Transparency" msgstr "Transparence" -#: fotoxx.h:1167 +#: fotoxx.h:1175 msgid "Trim" msgstr "Rogner" -#: fotoxx.h:1168 +#: fotoxx.h:1176 msgid "Undo All" msgstr "Tout Annuler" -#: fotoxx.h:1169 +#: fotoxx.h:1177 msgid "Undo Last" msgstr "Annuler Dernière" -#: fotoxx.h:1171 +#: fotoxx.h:1179 msgid "Unfinish" msgstr "Ne pas finir" -#: fotoxx.h:1173 +#: fotoxx.h:1181 msgid "View" msgstr "Afficher" -#: fotoxx.h:1174 +#: fotoxx.h:1182 msgid "Web" msgstr "Web" -#: fotoxx.h:1175 +#: fotoxx.h:1183 msgid "White" msgstr "Blanc" -#: fotoxx.h:1176 +#: fotoxx.h:1184 msgid "Width" msgstr "Largeur" -#: fotoxx.h:1177 +#: fotoxx.h:1185 msgid "x-offset" msgstr "décalage x" -#: fotoxx.h:1178 +#: fotoxx.h:1186 msgid "y-offset" msgstr "décalage y" -#: fotoxx.h:1179 zfuncs.cc:9147 +#: fotoxx.h:1187 zfuncs.cc:9148 msgid "Yes" msgstr "Oui" @@ -4836,418 +4939,71 @@ msgid "user guide not found" msgstr "manuel utilisateur introuvable" -#: zfuncs.cc:5182 +#: zfuncs.cc:5183 #, c-format msgid "cannot open file %s" msgstr "impossible d'ouvrir le fichier %s" -#: zfuncs.cc:5218 +#: zfuncs.cc:5219 msgid "save screen to file" msgstr "enregistrer l'écran dans un fichier" -#: zfuncs.cc:9223 zfuncs.cc:9724 zfuncs.cc:10044 +#: zfuncs.cc:9224 zfuncs.cc:9717 zfuncs.cc:10037 msgid "cancel" msgstr "annuler" -#: zfuncs.cc:9685 +#: zfuncs.cc:9678 msgid "choose file" msgstr "choisir le fichier" -#: zfuncs.cc:9690 +#: zfuncs.cc:9683 msgid "choose files" msgstr "choisir les fichiers" -#: zfuncs.cc:9695 +#: zfuncs.cc:9688 msgid "save" msgstr "enregistrer" -#: zfuncs.cc:9701 +#: zfuncs.cc:9694 msgid "choose folder" msgstr "choisir le dossier" -#: zfuncs.cc:9706 +#: zfuncs.cc:9699 msgid "choose folders" msgstr "choisir les dossiers" -#: zfuncs.cc:9711 +#: zfuncs.cc:9704 msgid "create folder" msgstr "créer un dossier" -#: zfuncs.cc:9718 +#: zfuncs.cc:9711 msgid "hidden" msgstr "masqué" -#: zfuncs.cc:10044 +#: zfuncs.cc:10037 msgid "done" msgstr "terminé" -#: zfuncs.cc:10044 zfuncs.cc:10053 +#: zfuncs.cc:10037 zfuncs.cc:10046 msgid "margins" msgstr "marges" -#: zfuncs.cc:10074 +#: zfuncs.cc:10067 msgid "image scale" msgstr "échelle de l'image" -#: zfuncs.cc:10076 +#: zfuncs.cc:10069 msgid "percent" msgstr "pour-cent" -#: zfuncs.cc:10083 +#: zfuncs.cc:10076 msgid "image" msgstr "image" -#: zfuncs.cc:10087 +#: zfuncs.cc:10080 msgid "width" msgstr "largeur" -#: zfuncs.cc:10091 +#: zfuncs.cc:10084 msgid "height" msgstr "hauteur" - -#~ msgid "Play tone" -#~ msgstr "Jouer le ton" - -#~ msgid "Transition" -#~ msgstr "Transition" - -#~ msgid "next" -#~ msgstr "suiv." - -#~ msgid "load select area from a file" -#~ msgstr "charger la zone sélectionnée depuis un fichier" - -#~ msgid "save select area to a file" -#~ msgstr "enregistrer la zone sélectionnée dans un fichier" - -#~ msgid "save select area as a PNG file" -#~ msgstr "enregistrer la zone sélectionnée en fichier PNG" - -#~ msgid "Darken" -#~ msgstr "Assombrir" - -#~ msgid "Brighten" -#~ msgstr "Éclaircir" - -#~ msgid "Metadata:" -#~ msgstr "Métadonnées:" - -#~ msgid "Comment" -#~ msgstr "Commentaire" - -#~ msgid "" -#~ "fix text in layout \n" -#~ " start new text" -#~ msgstr "" -#~ "fixer le texte dans la disposition \n" -#~ " commencer un nouveau texte" - -#~ msgid "color" -#~ msgstr "couleur" - -#~ msgid "" -#~ "area info file missing: \n" -#~ " %s" -#~ msgstr "" -#~ "fichier d'info de la zone manquant: \n" -#~ " %s" - -#~ msgid "Add geotags to multiple images" -#~ msgstr "Ajouter des balises de géolocalisation par lots" - -#~ msgid "Copy an area for later pasting" -#~ msgstr "Copier une zone pour un collage ultérieur" - -#~ msgid "Paste an area into the current image" -#~ msgstr "Coller une zone dans l'image actuelle" - -#~ msgid "Open a file with a saved area" -#~ msgstr "Ouvrir un fichier avec une zone enregistrée" - -#~ msgid "Save an area to a file" -#~ msgstr "Enregistrer une zone dans un fichier" - -#~ msgid "Save an area to a PNG file with transparency" -#~ msgstr "Enregistrer une zone en fichier PNG avec transparence" - -#~ msgid "Arrange multiple images on a background image" -#~ msgstr "Disposer plusieurs images sur une image d'arrière-plan" - -#~ msgid "Save PNG" -#~ msgstr "Enregistrer PNG" - -#~ msgid "Size:" -#~ msgstr "Taille:" - -#~ msgid "Image Width:" -#~ msgstr "Largeur de l'Image:" - -#~ msgid "Height:" -#~ msgstr "Hauteur:" - -#~ msgid "Depth:" -#~ msgstr "Profondeur:" - -#~ msgid "add directory" -#~ msgstr "ajouter le répertoire" - -#~ msgid "Thumbnails" -#~ msgstr "Vignettes" - -#~ msgid "terminated by user" -#~ msgstr "terminé par l'utilisateur" - -#~ msgid "" -#~ "invalid top image directory: \n" -#~ " %s" -#~ msgstr "" -#~ "répertoire d'images racine incorrect: \n" -#~ " %s" - -#~ msgid "thumbnails directory not .../thumbnails" -#~ msgstr "le répertoire des vignettes n'est pas .../thumbnails" - -#~ msgid "Settings" -#~ msgstr "Paramètres" - -#~ msgid "Directory Gallery" -#~ msgstr "Répertoire de la Galerie" - -#~ msgid "Image Pan" -#~ msgstr "Déplacement dans l'Image" - -#~ msgid "Drag" -#~ msgstr "Glisser" - -#~ msgid "Magnified" -#~ msgstr "Agrandi" - -#~ msgid "Monitor scale" -#~ msgstr "Échelle de moniteur" - -#~ msgid "Make Launcher" -#~ msgstr "Créer un lanceur" - -#~ msgid "File: Sync, Open, Save, Trash, Rename, Print" -#~ msgstr "" -#~ "Fichier: Synchroniser, Ouvrir, Enregistrer, Supprimer, Renommer, Imprimer" - -#~ msgid "Create a Gnome menu and launcher" -#~ msgstr "Créer menu et lanceur Gnome" - -#~ msgid "Change color of area outlines" -#~ msgstr "Modifier la couleur des contours de la zone" - -#~ msgid "Remove margins from warp, panorama, etc." -#~ msgstr "" -#~ "Supprimer les marges d'une déformation, d'une image panoramique, etc" - -#~ msgid "Sync Gallery" -#~ msgstr "Synchroniser la Galerie" - -#~ msgid "Save to Disk" -#~ msgstr "Enregistrer sur le Disque" - -#~ msgid "User Settings" -#~ msgstr "Paramètres Utilisateur" - -#~ msgid "Menu and Launcher" -#~ msgstr "Menu et Lanceur" - -#~ msgid "Images by Location/Date" -#~ msgstr "Images par Lieu géographique/Date" - -#~ msgid "Auto-Trim" -#~ msgstr "Rognage automatique" - -#~ msgid "open another directory" -#~ msgstr "ouvrir un autre dossier" - -#~ msgid "previous row" -#~ msgstr "rangée précédente" - -#~ msgid "next row" -#~ msgstr "rangée suivante" - -#~ msgid "Batch functions, Combine functions" -#~ msgstr "Fonctions batch, fonctions de Combinaison" - -#~ msgid "Autocomplete" -#~ msgstr "Complétion automatique" - -#~ msgid "no newly added files found" -#~ msgstr "aucun fichier ajouté dernièrement trouvé" - -#~ msgid "function busy" -#~ msgstr "fonction occupée" - -#~ msgid "delete project file?" -#~ msgstr "supprimer le fichier du projet?" - -#~ msgid "menu locked" -#~ msgstr "menu verrouillé" - -#~ msgid "printed image width: %.1f height: %.1f cm" -#~ msgstr "largeur de l'image imprimée: %.1f Hauteur : %.1f cm" - -#~ msgid "Combine images into a panorama (panorama tools" -#~ msgstr "Combiner des images en une image panoramique (panorama tools)" - -#~ msgid "exceeded max. images: %d" -#~ msgstr "excède le max' d'images: %d" - -#~ msgid "JPG quality 0-100" -#~ msgstr "qualité JPG 0-100" - -#~ msgid "quality" -#~ msgstr "qualité" - -#~ msgid "Top" -#~ msgstr "Haut" - -#~ msgid "Remove from Collection" -#~ msgstr "Retirer de la Collection" - -#~ msgid "Rotate 90 degrees" -#~ msgstr "Pivoter de 90 degrés" - -#~ msgid "Upright multiple files rotated 90º" -#~ msgstr "Redresser des fichiers en rotation de 90º par lots" - -#~ msgid "Organize images into collections" -#~ msgstr "Organiser les images en collections" - -#~ msgid "Tools: Index, Settings, Collections, Batch Funcs ..." -#~ msgstr "Outils: Index, Paramètres, Collections, Fonctions Batch" - -#~ msgid "updating collections ..." -#~ msgstr "mise à jour des collections..." - -#~ msgid "file already exists" -#~ msgstr "le fichier existe déjà" - -#~ msgid "new collection created" -#~ msgstr "nouvelle collection créée" - -#~ msgid "enter a collection name" -#~ msgstr "saisir un nom de collection" - -#~ msgid "make an initially empty collection" -#~ msgstr "faire une collection initiale vide" - -#~ msgid "Collection Name" -#~ msgstr "Nom de la Collection" - -#~ msgid "cache added to empty collection" -#~ msgstr "cache ajouté à la collection vide" - -#~ msgid "Delete Collection" -#~ msgstr "Supprimer la Collection" - -#~ msgid "Choose Collection" -#~ msgstr "Choisir une Collection" - -#~ msgid "Delete a collection" -#~ msgstr "Supprimer une collection" - -#~ msgid "Collection to view or edit" -#~ msgstr "Collection à afficher ou éditer" - -#~ msgid "Create or replace a collection" -#~ msgstr "Créer et remplacer une collection" - -#~ msgid "Manage Collections" -#~ msgstr "Gestion des Collections" - -#~ msgid "Drag collection thumbnail to new position." -#~ msgstr "Glisser la vignette de la collection vers un nouvel emplacement." - -#~ msgid "" -#~ "Right-click collection thumbnail to cut/copy \n" -#~ "to cache, insert from cache, or remove." -#~ msgstr "" -#~ "Clic droit sur une vignette de la collection pour couper/copier \n" -#~ "vers le cache, insérer à partir du cache ou retirer." - -#~ msgid "open collection" -#~ msgstr "ouvrir une collection" - -#~ msgid "invalid collection" -#~ msgstr "collection incorrecte" - -#~ msgid "fotoxx-maps package not installed" -#~ msgstr "Le paquet des cartes fotoxx n'est pas installé" - -#~ msgid "Edge Blend" -#~ msgstr "Mélange de Bord" - -#~ msgid "current image:" -#~ msgstr "image actuelle:" - -#~ msgid "save project file?" -#~ msgstr "enregistrer le fichier du projet?" - -#~ msgid "save project data" -#~ msgstr "enregistrer les données du projet" - -#~ msgid "Choose collection" -#~ msgstr "Choisir une collection" - -#~ msgid "no collections found" -#~ msgstr "collections introuvables" - -#~ msgid "collections" -#~ msgstr "collections" - -#~ msgid "target file already exists" -#~ msgstr "le fichier de destination existe déjà" - -#~ msgid "Rotate 90º" -#~ msgstr "Pivoter 90°" - -#~ msgid "Adjust color using CMYK or RGB values" -#~ msgstr "Ajuster les couleurs au moyen des valeurs CMYK ou RGB" - -#~ msgid "Fix Color Fringes" -#~ msgstr "Corriger les Franges de Couleurs" - -#~ msgid "Paint/Clone Pixels" -#~ msgstr "Peindre/Dupliquer des Pixels" - -#~ msgid "" -#~ "First time Fotoxx startup. \n" -#~ "Latest version is available at: www.kornelix.com/fotoxx \n" -#~ "An image file index will be created. Your image files will \n" -#~ "not be changed, moved, or copied. This process may need \n" -#~ "considerable time if you have thousands of image files." -#~ msgstr "" -#~ "Premier démarrage de Fotoxx. \n" -#~ "La dernière version est disponible à: www.kornelix.com/fotoxx \n" -#~ "Un index des fichier image va être créé. Vos fichiers image ne seront \n" -#~ "ni modifiés, déplacés ou copiés. Ce traitement peut demander un \n" -#~ "temps considérable si vous avez une grande quantité de fichiers image." - -#~ msgid "%d images remaining in cache" -#~ msgstr "%d images restant dans le cache" - -#~ msgid "Top Image Directories" -#~ msgstr "Répertoires Racines d'Images" - -#~ msgid "Revise RGB" -#~ msgstr "Corriger RVB" - -#~ msgid "Fix Stuck Pixels" -#~ msgstr "Corriger les Pixels Bloqués" - -#~ msgid "Chromatic Abberation" -#~ msgstr "Aberrations Chromatiques" - -#~ msgid "Set Blur Radius" -#~ msgstr "Définir le Rayon de Flou" - -#~ msgid "Enter line/arrow properties, click/drag on image." -#~ msgstr "" -#~ "Saisir les propriétés de la ligne/flèche, cliquer/glisser sur l'image" - -#~ msgid "Enter text, click/drag on image." -#~ msgstr "Saisir du texte, cliquer/glisser sur l'image." diff -Nru fotoxx-15.08/locales/translate-it.po fotoxx-15.09/locales/translate-it.po --- fotoxx-15.08/locales/translate-it.po 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/locales/translate-it.po 2015-08-31 10:21:01.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: fotoxx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-07-29 09:31+0200\n" +"POT-Creation-Date: 2015-08-30 21:14+0200\n" "PO-Revision-Date: 2010-06-03 16:14+0100\n" "Language-Team: italiano \n" "Language: \n" @@ -30,7 +30,7 @@ msgid "Drag album thumbnail to new position." msgstr "Trascinare l'icona dell'album in nuova posizione" -#: f.albums.cc:107 f.widgets.cc:536 +#: f.albums.cc:107 f.widgets.cc:541 msgid "Manage Albums" msgstr "Gestisci gli Album" @@ -111,19 +111,19 @@ #: f.albums.cc:1101 msgid "instant" -msgstr "Istantanea" +msgstr "istantanea" #: f.albums.cc:1102 msgid "fade-in" -msgstr "Dissolvenza" +msgstr "dissolvenza" #: f.albums.cc:1103 msgid "roll-right" -msgstr "Tenda sx-dx" +msgstr "tenda-sx-dx" #: f.albums.cc:1104 msgid "roll-down" -msgstr "Tenda su-giù" +msgstr "tenda-su-giu" #: f.albums.cc:1105 msgid "venetian" @@ -131,43 +131,43 @@ #: f.albums.cc:1106 msgid "grate" -msgstr "Quadrettoni" +msgstr "quadrettoni" #: f.albums.cc:1107 msgid "rectangle" -msgstr "Rettangolo" +msgstr "rettangolo" #: f.albums.cc:1108 msgid "implode" -msgstr "" +msgstr "implodi" #: f.albums.cc:1109 msgid "explode" -msgstr "" +msgstr "esplodi" #: f.albums.cc:1110 msgid "radar" -msgstr "Radar" +msgstr "radar" #: f.albums.cc:1111 msgid "Japanese-fan" -msgstr "" +msgstr "FanGiapponese" #: f.albums.cc:1112 msgid "jaws" -msgstr "Ganasce" +msgstr "ganasce" #: f.albums.cc:1113 msgid "ellipse" -msgstr "Ellisse" +msgstr "ellisse" #: f.albums.cc:1114 msgid "raindrops" -msgstr "Gocce" +msgstr "gocce" #: f.albums.cc:1115 msgid "doubledoor" -msgstr "Finestra doppia" +msgstr "Finestra-doppia" #: f.albums.cc:1116 msgid "rotate" @@ -175,143 +175,147 @@ #: f.albums.cc:1117 msgid "fallover" -msgstr "" +msgstr "pioggia" -#: f.albums.cc:1139 f.widgets.cc:537 +#: f.albums.cc:1138 f.widgets.cc:542 msgid "Slide Show" msgstr "Slideshow" -#: f.albums.cc:1150 +#: f.albums.cc:1149 msgid "Clip Limit" msgstr "Limite dimensione" -#: f.albums.cc:1154 +#: f.albums.cc:1153 msgid "Music File" msgstr "File musicale" -#: f.albums.cc:1159 +#: f.albums.cc:1158 msgid "Full Screen" msgstr "Pieno schermo" -#: f.albums.cc:1160 +#: f.albums.cc:1159 msgid "Auto-replay" msgstr "Riparte automaticamente" -#: f.albums.cc:1166 +#: f.albums.cc:1165 msgid "Customize:" msgstr "Personalizza:" -#: f.albums.cc:1167 +#: f.albums.cc:1166 msgid "transitions" msgstr "transizioni" -#: f.albums.cc:1168 +#: f.albums.cc:1167 msgid "image files" msgstr "immagini" -#: f.albums.cc:1173 f.albums.cc:1289 +#: f.albums.cc:1172 f.albums.cc:1286 #, c-format msgid "%d images" msgstr "%d immagini" -#: f.albums.cc:1196 f.albums.cc:1259 f.albums.cc:1349 f.albums.cc:1462 -#: f.albums.cc:1654 f.albums.cc:1738 f.albums.cc:1755 f.albums.cc:1976 +#: f.albums.cc:1194 f.albums.cc:1256 f.albums.cc:1346 f.albums.cc:1459 +#: f.albums.cc:1652 f.albums.cc:1736 f.albums.cc:1753 f.albums.cc:1974 msgid "invalid album" msgstr "album non valido" -#: f.albums.cc:1273 +#: f.albums.cc:1270 msgid "open album" msgstr "apri album" -#: f.albums.cc:1305 +#: f.albums.cc:1302 msgid "Select music file" msgstr "Seleziona file musicale" -#: f.albums.cc:1329 +#: f.albums.cc:1326 msgid "select random (if 5+ enabled)" msgstr "casuale (se più di 5)" -#: f.albums.cc:1353 +#: f.albums.cc:1350 msgid "Transition Preferences" msgstr "Preferenze di transizione" -#: f.albums.cc:1362 +#: f.albums.cc:1359 msgid "transition" msgstr "Effetto di transizione" -#: f.albums.cc:1363 +#: f.albums.cc:1360 msgid "enabled" msgstr "Attiva" -#: f.albums.cc:1364 +#: f.albums.cc:1361 msgid "slowdown" msgstr "Rallenta" -#: f.albums.cc:1365 +#: f.albums.cc:1362 msgid "preference" msgstr "Preferenza" -#: f.albums.cc:1468 +#: f.albums.cc:1465 msgid "Image Preferences" msgstr "Preferenze d'immagine" -#: f.albums.cc:1472 f.file.cc:1153 f.file.cc:1349 f.file.cc:1557 f.meta.cc:425 +#: f.albums.cc:1469 f.file.cc:1157 f.file.cc:1353 f.file.cc:1561 f.meta.cc:426 msgid "Image File:" msgstr "File immagine:" -#: f.albums.cc:1476 +#: f.albums.cc:1473 msgid "Play tone when image shows" -msgstr "" +msgstr "Suona quando l'immagine appare" -#: f.albums.cc:1479 +#: f.albums.cc:1476 msgid "Show image caption" -msgstr "" +msgstr "Mostra titolo" -#: f.albums.cc:1484 +#: f.albums.cc:1481 msgid "Show image comments" -msgstr "" +msgstr "Mostra commenti" -#: f.albums.cc:1489 +#: f.albums.cc:1486 msgid "Wait before zoom" -msgstr "" +msgstr "Attendi prima d'ingrandire" -#: f.albums.cc:1494 +#: f.albums.cc:1491 msgid "Zoom type:" -msgstr "" +msgstr "Tipo di zoom:" -#: f.albums.cc:1495 +#: f.albums.cc:1492 msgid "none" -msgstr "" +msgstr "nessuno" -#: f.albums.cc:1496 +#: f.albums.cc:1493 msgid "zoom-in" -msgstr "" +msgstr "ingrandisci" -#: f.albums.cc:1497 +#: f.albums.cc:1494 msgid "zoom-out" -msgstr "" +msgstr "riduci" -#: f.albums.cc:1500 +#: f.albums.cc:1497 msgid "Zoom size (x)" msgstr "Ingrandimento" -#: f.albums.cc:1503 +#: f.albums.cc:1500 msgid "Steps" msgstr "N. passi" -#: f.albums.cc:1507 +#: f.albums.cc:1504 msgid "Zoom image location:" -msgstr "" +msgstr "Fuoco dell'ingrandimento" -#: f.albums.cc:1515 +#: f.albums.cc:1512 msgid "Wait after zoom" -msgstr "" +msgstr "Attendi dopo zoom" -#: f.albums.cc:1520 +#: f.albums.cc:1517 msgid "Transition to next image" -msgstr "" +msgstr "Transizione alla prossima immagine" + +#: f.albums.cc:1520 f.albums.cc:1622 +msgid "next" +msgstr "prossima" -#: f.albums.cc:1961 f.albums.cc:2119 +#: f.albums.cc:1959 f.albums.cc:2117 #, c-format msgid "" "file format error: \n" @@ -324,7 +328,7 @@ msgid "Select Area for Edits" msgstr "Seleziona area per modifiche" -#: f.area.cc:80 f.edit.cc:5897 +#: f.area.cc:80 f.edit.cc:5908 msgid "Press F1 for help" msgstr "Premi F1 per l'aiuto" @@ -368,7 +372,7 @@ msgid "select all matching colors within mouse" msgstr "Seleziona tutti i colori entro il mouse" -#: f.area.cc:139 f.edit.cc:5942 +#: f.area.cc:139 f.edit.cc:5953 msgid "mouse radius" msgstr "Raggio del mouse:" @@ -394,18 +398,18 @@ #: f.area.cc:160 msgid "Line Color:" -msgstr "" +msgstr "Colore linea:" #: f.area.cc:180 f.area.cc:181 msgid "area edits fade away within edge distance" msgstr "Le modifiche sfumano entro la distanza dai bordi" -#: f.area.cc:353 f.area.cc:536 +#: f.area.cc:351 f.area.cc:534 #, c-format msgid "exceed %d edits" msgstr "superate %d modifiche" -#: f.area.cc:1363 +#: f.area.cc:1355 msgid "" "Click one time inside each enclosed area \n" "(possible gaps in the outline will be found). \n" @@ -415,23 +419,23 @@ "eventuali interruzioni nel contorno saranno rilevate. \n" "Premi F1 per l'aiuto" -#: f.area.cc:1391 +#: f.area.cc:1383 msgid "finish area" msgstr "Finisci area" -#: f.area.cc:1399 +#: f.area.cc:1391 msgid "extend to corner:" msgstr "estendi agli angoli:" -#: f.area.cc:1440 +#: f.area.cc:1432 msgid "searching" msgstr "in ricerca" -#: f.area.cc:1472 +#: f.area.cc:1463 msgid "outline has a gap" msgstr "il contorno è interrotto" -#: f.area.cc:1476 +#: f.area.cc:1467 msgid "success" msgstr "Successo" @@ -440,113 +444,114 @@ msgid "found %d pixels" msgstr "trovati %d pixel" -#: f.area.cc:1918 f.area.cc:1935 f.area.cc:1955 f.area.cc:2260 f.area.cc:2387 +#: f.area.cc:1926 f.area.cc:1943 f.area.cc:1963 f.area.cc:2278 f.area.cc:2354 +#: f.area.cc:2511 msgid "the area is not finished" msgstr "L'area non è chiusa" -#: f.area.cc:2049 +#: f.area.cc:2052 msgid "Edge calculation in progress" msgstr "Ricalcolo bordo in corso" -#: f.area.cc:2058 +#: f.area.cc:2061 msgid "Area Edge Calc" msgstr "Calcolo area delimitata" -#: f.area.cc:2338 +#: f.area.cc:2462 msgid "load area from a file" -msgstr "" +msgstr "carica area da un file" -#: f.area.cc:2421 +#: f.area.cc:2545 msgid "save area as a PNG file" -msgstr "" +msgstr "salva area come file PNG" -#: f.area.cc:2449 +#: f.area.cc:2573 msgid "position with mouse click/drag" msgstr "posizione con clic o trascinamento" -#: f.area.cc:2493 +#: f.area.cc:2617 msgid "Paste Image" msgstr "Incolla immagine" -#: f.area.cc:2498 f.batch.cc:1135 f.batch.cc:1626 +#: f.area.cc:2622 f.batch.cc:1136 f.batch.cc:1627 msgid "resize" msgstr "ridimensiona" -#: f.batch.cc:103 f.widgets.cc:524 +#: f.batch.cc:104 f.widgets.cc:526 msgid "Batch Convert" msgstr "Conversione in massa" -#: f.batch.cc:110 f.file.cc:781 +#: f.batch.cc:111 f.file.cc:782 msgid "New Name" msgstr "Nuovo nome" -#: f.batch.cc:112 +#: f.batch.cc:113 msgid "base" msgstr "comune" -#: f.batch.cc:114 +#: f.batch.cc:115 msgid "adder" msgstr "addizione" -#: f.batch.cc:118 +#: f.batch.cc:119 msgid "New Location" msgstr "Nuova destinazione:" -#: f.batch.cc:123 +#: f.batch.cc:124 msgid "New File Type" msgstr "Nuovo tipo di file" -#: f.batch.cc:127 f.batch.cc:135 +#: f.batch.cc:128 f.batch.cc:136 msgid "no change" msgstr "NON modificare" -#: f.batch.cc:130 +#: f.batch.cc:131 msgid "max. Width" msgstr "Larghezza max" -#: f.batch.cc:138 f.batch.cc:531 +#: f.batch.cc:139 f.batch.cc:532 msgid "Delete Originals" msgstr "Elimina gli originali" -#: f.batch.cc:139 f.batch.cc:528 +#: f.batch.cc:140 f.batch.cc:529 msgid "Copy Metadata" msgstr "Copia i metadati" -#: f.batch.cc:140 f.batch.cc:529 f.edit.cc:1396 f.widgets.cc:432 -#: f.widgets.cc:672 +#: f.batch.cc:141 f.batch.cc:530 f.edit.cc:1407 f.widgets.cc:433 +#: f.widgets.cc:677 msgid "Upright" msgstr "Raddrizza" -#: f.batch.cc:143 f.batch.cc:530 f.batch.cc:1144 f.batch.cc:1635 -#: f.repair.cc:115 f.widgets.cc:448 +#: f.batch.cc:144 f.batch.cc:531 f.batch.cc:1145 f.batch.cc:1636 +#: f.repair.cc:115 f.widgets.cc:449 msgid "Sharpen" msgstr "Contrasta" -#: f.batch.cc:145 f.batch.cc:1146 f.batch.cc:1637 +#: f.batch.cc:146 f.batch.cc:1147 f.batch.cc:1638 msgid "amount" msgstr "Quantità" -#: f.batch.cc:148 f.batch.cc:1149 f.batch.cc:1640 +#: f.batch.cc:149 f.batch.cc:1150 f.batch.cc:1641 msgid "threshold" msgstr "Soglia" -#: f.batch.cc:250 +#: f.batch.cc:251 msgid "file type not supported" msgstr "tipo di file non gestito" -#: f.batch.cc:314 +#: f.batch.cc:315 msgid "cannot create new file" msgstr "Errore in creazione del nuovo file" -#: f.batch.cc:361 +#: f.batch.cc:362 msgid "updating albums ..." msgstr "aggiornamento degli album..." -#: f.batch.cc:434 f.batch.cc:1422 f.batch.cc:1828 f.file.cc:1202 +#: f.batch.cc:435 f.batch.cc:1423 f.batch.cc:1829 f.file.cc:1206 msgid "Select directory" msgstr "Seleziona cartella" -#: f.batch.cc:480 +#: f.batch.cc:481 msgid "" "new name/base/adder unreasonable\n" " e.g. newname ### 100 10" @@ -554,149 +559,182 @@ "nuovi nome/comune/addizione errati\n" " es. nuovonome ### 100 10" -#: f.batch.cc:503 +#: f.batch.cc:504 #, c-format msgid "max. size %d x %d is not reasonable" msgstr "Dimensioni massime %d x %d non ragionevoli" -#: f.batch.cc:522 +#: f.batch.cc:523 #, c-format msgid "Convert %d image files" msgstr "Conversione %d file immagine" -#: f.batch.cc:523 +#: f.batch.cc:524 msgid "Rename to" msgstr "Rinomina come" -#: f.batch.cc:524 +#: f.batch.cc:525 msgid "Convert to" msgstr "Converti a" -#: f.batch.cc:525 +#: f.batch.cc:526 msgid "Resize within" msgstr "Ridimensiona entro" -#: f.batch.cc:526 +#: f.batch.cc:527 msgid "Output to" msgstr "Produci su" -#: f.batch.cc:532 +#: f.batch.cc:533 msgid "PROCEED?" msgstr "PROSEGUO?" -#: f.batch.cc:686 f.widgets.cc:525 +#: f.batch.cc:687 f.widgets.cc:527 msgid "Batch Upright" msgstr "Raddrizzare immagini in blocco" -#: f.batch.cc:692 +#: f.batch.cc:693 msgid "Survey all files" -msgstr "" +msgstr "Controlla tutti i file" -#: f.batch.cc:746 +#: f.batch.cc:747 msgid "file cannot be read" -msgstr "" +msgstr "Impossibile leggere il file" -#: f.batch.cc:864 +#: f.batch.cc:865 msgid "cannot select both options" -msgstr "" +msgstr "Non selezionare entrambe le opzioni" -#: f.batch.cc:908 f.widgets.cc:526 +#: f.batch.cc:909 f.widgets.cc:528 msgid "Batch Delete/Trash" -msgstr "" +msgstr "Elimina/cestina in massa" -#: f.batch.cc:913 +#: f.batch.cc:914 msgid "delete" -msgstr "" +msgstr "Elimina" -#: f.batch.cc:916 +#: f.batch.cc:917 msgid "trash" -msgstr "" +msgstr "Cestina" -#: f.batch.cc:1078 +#: f.batch.cc:1079 msgid "Batch Convert RAW Files (DCraw)" msgstr "Convertire immagini RAW (DCraw) in blocco" -#: f.batch.cc:1087 +#: f.batch.cc:1088 msgid "DCraw not installed" msgstr "Programma DCraw non installato" -#: f.batch.cc:1122 f.batch.cc:1613 +#: f.batch.cc:1123 f.batch.cc:1614 msgid "output location" msgstr "Cartella o directory di uscita" -#: f.batch.cc:1127 f.batch.cc:1618 +#: f.batch.cc:1128 f.batch.cc:1619 msgid "output file type" msgstr "Tipo file d'uscita" -#: f.batch.cc:1158 +#: f.batch.cc:1159 msgid "white balance" msgstr "bilanciamento del bianco" -#: f.batch.cc:1159 +#: f.batch.cc:1160 msgid "interpolation" msgstr "interpolazione" -#: f.batch.cc:1160 +#: f.batch.cc:1161 msgid "color space" msgstr "spazio di colore" -#: f.batch.cc:1161 +#: f.batch.cc:1162 msgid "gamma curve" msgstr "curva del gamma" -#: f.batch.cc:1164 +#: f.batch.cc:1165 msgid "camera" msgstr "fotocamera" -#: f.batch.cc:1165 +#: f.batch.cc:1166 msgid "fixed" msgstr "fissa" -#: f.batch.cc:1166 +#: f.batch.cc:1167 msgid "calculated" msgstr "calcolata" -#: f.batch.cc:1183 +#: f.batch.cc:1184 msgid "default" msgstr "Standard" -#: f.batch.cc:1189 +#: f.batch.cc:1190 msgid "defaults" msgstr "Standard" -#: f.batch.cc:1576 +#: f.batch.cc:1577 msgid "Batch Convert RAW Files (Raw Therapee)" msgstr "Conversione in massa di file RAW (Raw Therapee)" -#: f.batch.cc:1585 f.file.cc:488 +#: f.batch.cc:1586 f.file.cc:489 msgid "Raw Therapee not installed" msgstr "Programma Raw Therapee non installato" -#: f.batch.cc:1894 +#: f.batch.cc:1895 msgid "Brasero not installed" msgstr "Pacchetto 'brasero' non installato" -#: f.bend.cc:82 f.widgets.cc:469 +#: f.batch.cc:1984 f.widgets.cc:532 +msgid "Find Duplicate Images" +msgstr "Trova immagini duplicate" + +#: f.batch.cc:1986 f.tools.cc:927 +msgid "Thumbnail size" +msgstr "Dimensione miniatura" + +#: f.batch.cc:1989 +msgid "pixel difference" +msgstr "Differenza di pixel" + +#: f.batch.cc:1992 +msgid "pixel count" +msgstr "Conteggio pixel" + +#: f.batch.cc:1995 +msgid "Images:" +msgstr "Immagini:" + +#: f.batch.cc:1996 +msgid "searching ..." +msgstr "Ricerca in corso..." + +#: f.batch.cc:1998 +msgid "Duplicates:" +msgstr "Duplicate:" + +#: f.batch.cc:2016 +#, c-format +msgid "only %d image thumbnails found" +msgstr "Trovate solo %d miniature" + +#: f.bend.cc:86 f.widgets.cc:470 msgid "Unbend" msgstr "Correggi deformazioni" -#: f.bend.cc:90 f.edit.cc:4237 f.effects.cc:4620 +#: f.bend.cc:94 f.edit.cc:4248 f.effects.cc:4625 msgid "vertical" msgstr "Verticale" -#: f.bend.cc:91 f.edit.cc:4236 f.effects.cc:4616 +#: f.bend.cc:95 f.edit.cc:4247 f.effects.cc:4621 msgid "horizontal" msgstr "Orizzontale" -#: f.bend.cc:92 +#: f.bend.cc:96 msgid "linear" msgstr "Lineare" -#: f.bend.cc:95 +#: f.bend.cc:99 msgid "curved" msgstr "Curvato" -#: f.bend.cc:363 +#: f.bend.cc:367 msgid "" " Click the four corners of a tetragon area. Press [apply]. \n" " The image is warped to make the tetragon into a rectangle." @@ -704,15 +742,15 @@ " 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:376 +#: f.bend.cc:384 msgid "Perspective Correction" msgstr "Correzione di prospettiva" -#: f.bend.cc:582 +#: f.bend.cc:590 msgid "must have 4 corners" msgstr "Occorrono 4 angoli." -#: f.bend.cc:704 +#: f.bend.cc:712 msgid "" " Select an area to warp using select area function. \n" " Press [start warp] and pull area with mouse. \n" @@ -724,19 +762,19 @@ "Trascina più volte se necessario.\n" "Quando terminato, seleziona un'altra zona o premi [Fatto]. " -#: f.bend.cc:717 f.widgets.cc:471 +#: f.bend.cc:725 f.widgets.cc:472 msgid "Warp area" msgstr "Deforma area" -#: f.bend.cc:722 +#: f.bend.cc:730 msgid "start warp" msgstr "Avvia deformazione" -#: f.bend.cc:780 +#: f.bend.cc:788 msgid "no active Select Area" msgstr "Area di selezione non attiva" -#: f.bend.cc:1121 f.bend.cc:1431 +#: f.bend.cc:1129 f.bend.cc:1443 msgid "" " Pull an image position using the mouse. \n" " Make multiple mouse pulls until satisfied. \n" @@ -746,19 +784,19 @@ " Esegui diversi trascinamenti fino al completamento. \n" " Quando finito, premi [Fatto]." -#: f.bend.cc:1135 f.widgets.cc:472 +#: f.bend.cc:1147 f.widgets.cc:473 msgid "Warp curved" msgstr "Deforma a curva" -#: f.bend.cc:1144 f.mashup.cc:1836 +#: f.bend.cc:1156 f.mashup.cc:1836 msgid "warp span" msgstr "Dimensione deformazione: " -#: f.bend.cc:1445 f.widgets.cc:473 +#: f.bend.cc:1461 f.widgets.cc:474 msgid "Warp linear" msgstr "Deforma a linea" -#: f.bend.cc:1760 +#: f.bend.cc:1776 msgid "" " Pull on an image corner using the mouse. \n" " Make multiple mouse pulls until satisfied. \n" @@ -768,15 +806,15 @@ "Ripeti l'operazione se richiesto.\n" "Una volta finito, premi [Fatto]." -#: f.bend.cc:1772 f.widgets.cc:474 +#: f.bend.cc:1792 f.widgets.cc:475 msgid "Warp affine" msgstr "Deforma specularmente" -#: f.bend.cc:2119 +#: f.bend.cc:2139 msgid "Flatten Book Page Photo" msgstr "Appiattisci foto di pagina di libro" -#: f.bend.cc:2120 +#: f.bend.cc:2140 msgid "" "Trim image to isolate one page. \n" "Map top and bottom edges with \n" @@ -786,88 +824,88 @@ "Indica i lati in cima e in fondo con \n" "4 o più clic, poi appiattisci: " -#: f.bend.cc:2123 +#: f.bend.cc:2143 msgid "Stretch curved-down surfaces:" msgstr "Deforma le superfici curve" -#: f.bend.cc:2178 +#: f.bend.cc:2198 msgid "top:" msgstr "Cima:" -#: f.bend.cc:2181 +#: f.bend.cc:2201 msgid "bottom:" msgstr "Fondo:" -#: f.combine.cc:2119 f.combine.cc:2750 f.combine.cc:3406 f.combine.cc:3938 +#: f.combine.cc:2108 f.combine.cc:2739 f.combine.cc:3395 f.combine.cc:3927 msgid "Select 2 to 9 files" msgstr "Seleziona da 2 a 9 file" -#: f.combine.cc:2140 f.combine.cc:2771 f.combine.cc:3427 f.combine.cc:3959 +#: f.combine.cc:2129 f.combine.cc:2760 f.combine.cc:3416 f.combine.cc:3948 msgid "Images are not all the same size" msgstr "Le immagini non hanno la stessa dimensione" -#: f.combine.cc:2484 +#: f.combine.cc:2473 msgid "Adjust Image Contributions" msgstr "Regola contributi immagine" -#: f.combine.cc:2488 +#: f.combine.cc:2477 msgid "dark pixels" msgstr "Pixel scuri" -#: f.combine.cc:2490 +#: f.combine.cc:2479 msgid "light pixels" msgstr "Pixel luminosi" -#: f.combine.cc:2492 +#: f.combine.cc:2481 msgid "file:" msgstr "File:" -#: f.combine.cc:3007 +#: f.combine.cc:2996 msgid "Paint and Warp Image" msgstr "Dipingi e deforma immagine" -#: f.combine.cc:3011 f.combine.cc:3656 f.combine.cc:6246 f.effects.cc:3851 -#: f.widgets.cc:555 f.widgets.cc:578 f.widgets.cc:600 +#: f.combine.cc:3000 f.combine.cc:3645 f.combine.cc:6236 f.effects.cc:3858 +#: f.widgets.cc:560 f.widgets.cc:583 f.widgets.cc:605 msgid "Image" msgstr "Immagine" -#: f.combine.cc:3015 +#: f.combine.cc:3004 msgid "paint" msgstr "Dipingi" -#: f.combine.cc:3016 +#: f.combine.cc:3005 msgid "warp" msgstr "Deforma" -#: f.combine.cc:3654 +#: f.combine.cc:3643 msgid "Select and Paint Image" msgstr "Seleziona e dipingi" -#: f.combine.cc:4130 +#: f.combine.cc:4119 msgid "Adjust Pixel Composition" msgstr "Regola la composizione dei pixel" -#: f.combine.cc:4132 +#: f.combine.cc:4121 msgid "use average" msgstr "Usa media" -#: f.combine.cc:4133 +#: f.combine.cc:4122 msgid "use median" msgstr "Usa mediano" -#: f.combine.cc:4135 +#: f.combine.cc:4124 msgid "omit low pixel" msgstr "ometti pixel bassi" -#: f.combine.cc:4136 +#: f.combine.cc:4125 msgid "omit high pixel" msgstr "ometti pixel alti" -#: f.combine.cc:4398 f.combine.cc:5504 +#: f.combine.cc:4387 f.combine.cc:5493 msgid "Select 2 to 4 files" msgstr "Seleziona da 2 a 4 file" -#: f.combine.cc:4473 +#: f.combine.cc:4462 msgid "" "Drag images into rough alignment.\n" "To rotate, drag from lower edge." @@ -875,76 +913,76 @@ "Trascina le immagini a un allineamento approssimativo.\n" "Per ruotarle, trascina il bordo inferiore." -#: f.combine.cc:4475 f.combine.cc:5581 +#: f.combine.cc:4464 f.combine.cc:5570 msgid "no curve (scanned image)" msgstr "nessuna curva (immagine scansionata)" -#: f.combine.cc:4476 f.combine.cc:5582 +#: f.combine.cc:4465 f.combine.cc:5571 msgid "Search for lens mm" msgstr "Ricerca per mm lenti" -#: f.combine.cc:4477 f.combine.cc:5583 +#: f.combine.cc:4466 f.combine.cc:5572 msgid "Save lens mm → image EXIF" msgstr "Salva mm della lente nelle informazioni EXIF" -#: f.combine.cc:4538 f.combine.cc:5644 +#: f.combine.cc:4527 f.combine.cc:5633 msgid "Pre-align Images" msgstr "Pre-allineamento immagini" -#: f.combine.cc:4542 f.combine.cc:5648 +#: f.combine.cc:4531 f.combine.cc:5637 msgid "lens mm" msgstr "mm lente" -#: f.combine.cc:4547 f.combine.cc:5653 +#: f.combine.cc:4536 f.combine.cc:5642 msgid "no auto warp" msgstr "Deformazione automatica esclusa" -#: f.combine.cc:4549 f.combine.cc:5655 f.widgets.cc:439 f.widgets.cc:671 +#: f.combine.cc:4538 f.combine.cc:5644 f.widgets.cc:440 f.widgets.cc:676 msgid "Resize" msgstr "Ridimensiona" -#: f.combine.cc:4550 f.combine.cc:5656 +#: f.combine.cc:4539 f.combine.cc:5645 msgid "resize window" msgstr "Ridimensiona finestra" -#: f.combine.cc:4558 f.combine.cc:5664 +#: f.combine.cc:4547 f.combine.cc:5653 msgid "do not warp images during auto-alignment" msgstr "Non deformare immagini durante l'auto allineamento" -#: f.combine.cc:4603 f.combine.cc:5709 +#: f.combine.cc:4592 f.combine.cc:5698 msgid "use two images only" msgstr "Utilizza solo due immagini" -#: f.combine.cc:4631 f.combine.cc:4835 f.combine.cc:5021 f.combine.cc:5735 -#: f.combine.cc:5940 f.combine.cc:6126 +#: f.combine.cc:4620 f.combine.cc:4824 f.combine.cc:5010 f.combine.cc:5724 +#: f.combine.cc:5928 f.combine.cc:6114 msgid "Too little overlap, cannot align" msgstr "Troppo poca sovrapposizione, impossibile allineare" -#: f.combine.cc:5096 f.combine.cc:6202 +#: f.combine.cc:5088 f.combine.cc:6192 msgid "Match Brightness and Color" msgstr "Allinea luminosità e colore" -#: f.combine.cc:5141 +#: f.combine.cc:5133 msgid "Select image" msgstr "Selezionare immagine" -#: f.combine.cc:5156 f.combine.cc:6261 +#: f.combine.cc:5148 f.combine.cc:6251 msgid "auto color" msgstr "colore automatico" -#: f.combine.cc:5157 f.combine.cc:6262 +#: f.combine.cc:5149 f.combine.cc:6252 msgid "file color" msgstr "file colore" -#: f.combine.cc:5163 f.combine.cc:6268 +#: f.combine.cc:5155 f.combine.cc:6258 msgid "mouse warp" msgstr "Distorcere col mouse" -#: f.combine.cc:5166 +#: f.combine.cc:5158 msgid "curved image" msgstr "immagine curva" -#: f.combine.cc:5579 +#: f.combine.cc:5568 msgid "" "Drag images into rough alignment.\n" "To rotate, drag from right edge." @@ -952,11 +990,11 @@ "Trascina le immagini a un allineamento approssimativo.\n" "Per ruotarle, trascina il bordo destro." -#: f.combine.cc:6482 +#: f.combine.cc:6469 msgid "pano tools (hugin) not installed" msgstr "pano tools (hugin) non è installato" -#: f.combine.cc:6491 +#: f.combine.cc:6478 msgid "Select at least 2 files" msgstr "Selezionare almeno 2 file" @@ -969,254 +1007,256 @@ msgid "Minor rotate: drag right edge with mouse" msgstr "Rotazione precisa: trascina il lato destro" -#: f.edit.cc:167 f.widgets.cc:431 f.widgets.cc:670 +#: f.edit.cc:171 f.widgets.cc:432 f.widgets.cc:675 msgid "Trim/Rotate" msgstr "Ritaglia/Ruota" -#: f.edit.cc:179 f.edit.cc:577 +#: f.edit.cc:183 f.edit.cc:585 msgid "ratio" msgstr "Rapporto:" -#: f.edit.cc:183 +#: f.edit.cc:187 msgid "trim size:" msgstr "Dimensioni del ritaglio:" -#: f.edit.cc:188 +#: f.edit.cc:192 msgid "Lock Ratio" msgstr "Blocca proporzioni" -#: f.edit.cc:193 +#: f.edit.cc:197 msgid "Customize" msgstr "Personalizza" -#: f.edit.cc:201 +#: f.edit.cc:205 msgid "Rotate: degrees" msgstr "Ruota: gradi" -#: f.edit.cc:203 +#: f.edit.cc:207 msgid "auto-trim" msgstr "Autoritaglio" -#: f.edit.cc:573 +#: f.edit.cc:581 msgid "Trim Buttons" msgstr "Pulsanti di taglio" -#: f.edit.cc:576 +#: f.edit.cc:584 msgid "label" msgstr "Etichetta" -#: f.edit.cc:1394 +#: f.edit.cc:1405 msgid "Upright Image" msgstr "Raddrizza immagine" -#: f.edit.cc:1458 +#: f.edit.cc:1469 msgid "rotation unknown" -msgstr "" +msgstr "Rotazione sconosciuta" -#: f.edit.cc:2009 f.widgets.cc:435 f.widgets.cc:674 +#: f.edit.cc:2020 f.widgets.cc:436 f.widgets.cc:679 msgid "Retouch Combo" msgstr "Funzioni ritocco" -#: f.edit.cc:2030 +#: f.edit.cc:2041 msgid "Amplifier" msgstr "Amplificatore" -#: f.edit.cc:2031 fotoxx.h:1079 +#: f.edit.cc:2042 fotoxx.h:1087 msgid "Brightness" msgstr "Luminosità" -#: f.edit.cc:2032 fotoxx.h:1087 +#: f.edit.cc:2043 fotoxx.h:1095 msgid "Contrast" msgstr "Contrasto" -#: f.edit.cc:2033 +#: f.edit.cc:2044 msgid "Low Color" msgstr "Poco colore" -#: f.edit.cc:2034 +#: f.edit.cc:2045 msgid "Warmer" msgstr "Caldo" -#: f.edit.cc:2035 f.effects.cc:1009 +#: f.edit.cc:2046 f.effects.cc:1010 msgid "Dark Areas" msgstr "Aree scure" -#: f.edit.cc:2044 +#: f.edit.cc:2055 msgid "Max." msgstr "Max" -#: f.edit.cc:2045 f.edit.cc:2046 f.edit.cc:2047 +#: f.edit.cc:2056 f.edit.cc:2057 f.edit.cc:2058 msgid "High" msgstr "Alto" -#: f.edit.cc:2048 +#: f.edit.cc:2059 msgid "Cooler" msgstr "Freddo" -#: f.edit.cc:2049 +#: f.edit.cc:2060 msgid "Bright" msgstr "Luminose" -#: f.edit.cc:2052 f.tools.cc:1595 +#: f.edit.cc:2063 f.tools.cc:1621 msgid "Brightness Distribution" msgstr "Distribuzione della luminosità" -#: f.edit.cc:2055 +#: f.edit.cc:2066 msgid "Click for white balance or black level" msgstr "Cliccare per bilanciamento del bianco/nero" -#: f.edit.cc:2058 +#: f.edit.cc:2069 msgid "Settings File" msgstr "File di impostazioni" -#: f.edit.cc:2062 +#: f.edit.cc:2073 msgid "recall previous settings used" msgstr "Richiama impostazioni usate in precedenza" -#: f.edit.cc:2764 +#: f.edit.cc:2775 msgid "Adjust Brightness Distribution" msgstr "Regola la distribuzione di luminosità" -#: f.edit.cc:2801 +#: f.edit.cc:2812 msgid "Low Cutoff" -msgstr "" +msgstr "Più scuri" -#: f.edit.cc:2802 +#: f.edit.cc:2813 msgid "High Cutoff" -msgstr "" +msgstr "Più chiari" -#: f.edit.cc:2803 +#: f.edit.cc:2814 msgid "Low Flatten" -msgstr "" +msgstr "Meno scuri" -#: f.edit.cc:2804 +#: f.edit.cc:2815 msgid "Mid Flatten" -msgstr "" +msgstr "Più medi" -#: f.edit.cc:2805 +#: f.edit.cc:2816 msgid "High Flatten" -msgstr "" +msgstr "Più chiari" -#: f.edit.cc:2806 +#: f.edit.cc:2817 msgid "Low Stretch" -msgstr "" +msgstr "Comprimi scuri" -#: f.edit.cc:2807 +#: f.edit.cc:2818 msgid "Mid Stretch" -msgstr "" +msgstr "Comprimi medi" -#: f.edit.cc:2808 +#: f.edit.cc:2819 msgid "High Stretch" -msgstr "" +msgstr "Comprimi chiari" -#: f.edit.cc:3138 +#: f.edit.cc:3149 msgid "Zonal Flatten Brightness" -msgstr "" +msgstr "Compressione luminosità a zone" -#: f.edit.cc:3169 +#: f.edit.cc:3180 msgid "Zones" -msgstr "" +msgstr "Zone" -#: f.edit.cc:3176 +#: f.edit.cc:3187 msgid "Deband Dark" -msgstr "" +msgstr "Escludi scuri" -#: f.edit.cc:3179 +#: f.edit.cc:3190 msgid "Deband Bright" -msgstr "" +msgstr "Escludi chiari" -#: f.edit.cc:3624 f.widgets.cc:438 f.widgets.cc:677 +#: f.edit.cc:3635 f.widgets.cc:439 f.widgets.cc:682 msgid "Tone Mapping" msgstr "Mappa tonalità" -#: f.edit.cc:3653 +#: f.edit.cc:3664 msgid "low" msgstr "basso" -#: f.edit.cc:3655 +#: f.edit.cc:3666 msgid "high" msgstr "alto" -#: f.edit.cc:3658 +#: f.edit.cc:3669 msgid "Amplify" msgstr "Amplificazione" -#: f.edit.cc:4033 +#: f.edit.cc:4044 msgid "Lock aspect ratio" msgstr "Blocca proporzioni" -#: f.edit.cc:4055 +#: f.edit.cc:4066 msgid "Resize Image" msgstr "Ridimensiona" -#: f.edit.cc:4232 f.widgets.cc:440 +#: f.edit.cc:4243 f.widgets.cc:441 msgid "Flip" msgstr "Rifletti/specchia" -#: f.edit.cc:4338 +#: f.edit.cc:4349 msgid "+Version" -msgstr "" +msgstr "+Versione" -#: f.edit.cc:4361 +#: f.edit.cc:4372 msgid "Write Text on Image" msgstr "Scrivi testo su immagine" -#: f.edit.cc:4362 +#: f.edit.cc:4373 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.edit.cc:4411 f.mashup.cc:2437 +#: f.edit.cc:4422 f.mashup.cc:2437 msgid "Text" msgstr "Testo" -#: f.edit.cc:4416 +#: f.edit.cc:4427 msgid "Use metadata key" -msgstr "" +msgstr "Usa chiave metadati" -#: f.edit.cc:4421 +#: f.edit.cc:4432 msgid "Use text file" -msgstr "" +msgstr "Usa file di testo" -#: f.edit.cc:4440 f.mashup.cc:2455 +#: f.edit.cc:4451 f.mashup.cc:2455 msgid "text" msgstr "Testo" -#: f.edit.cc:4441 f.edit.cc:5279 f.mashup.cc:2456 f.mashup.cc:2798 +#: f.edit.cc:4452 f.edit.cc:5290 f.mashup.cc:2456 f.mashup.cc:2798 msgid "backing" msgstr "Sfondo" -#: f.edit.cc:4442 f.edit.cc:5280 f.mashup.cc:2457 f.mashup.cc:2799 +#: f.edit.cc:4453 f.edit.cc:5291 f.mashup.cc:2457 f.mashup.cc:2799 msgid "outline" msgstr "Contorno" -#: f.edit.cc:4443 f.edit.cc:5281 f.mashup.cc:2458 f.mashup.cc:2800 +#: f.edit.cc:4454 f.edit.cc:5292 f.mashup.cc:2458 f.mashup.cc:2800 msgid "shadow" msgstr "Ombra" -#: f.edit.cc:4469 +#: f.edit.cc:4480 msgid "save to current file" -msgstr "" +msgstr "Salve nel file corrente" -#: f.edit.cc:4470 f.file.cc:605 +#: f.edit.cc:4481 f.file.cc:606 msgid "save as new file version" msgstr "salva come nuova versione" -#: f.edit.cc:4471 +#: f.edit.cc:4482 msgid "" "save to current file \n" "open next file with same text" msgstr "" +"Salva nel file corrente \n" +"apre il prossimo con lo stesso testo" -#: f.edit.cc:4632 f.mashup.cc:2557 +#: f.edit.cc:4643 f.mashup.cc:2557 f.tools.cc:1060 msgid "select font" msgstr "Scegli il font" -#: f.edit.cc:4896 +#: f.edit.cc:4907 msgid "text file is defective" msgstr "file dei testi difettoso" -#: f.edit.cc:5219 +#: f.edit.cc:5230 msgid "" "Enter line or arrow properties in dialog, \n" "click/drag on image, right click to remove" @@ -1224,23 +1264,23 @@ "Immettere dati linea/freccia nella finestrella,\n" "poi cliccare/trascinare; clic destro per eliminare" -#: f.edit.cc:5250 +#: f.edit.cc:5261 msgid "Write Line or Arrow on Image" msgstr "Metti linea o freccia sull'immagine" -#: f.edit.cc:5258 f.mashup.cc:2777 +#: f.edit.cc:5269 f.mashup.cc:2777 msgid "Line length" msgstr "Lunghezza linea" -#: f.edit.cc:5265 f.mashup.cc:2784 +#: f.edit.cc:5276 f.mashup.cc:2784 msgid "Arrow head" msgstr "Terminazione freccia" -#: f.edit.cc:5278 f.mashup.cc:2797 +#: f.edit.cc:5289 f.mashup.cc:2797 msgid "line" msgstr "Linea" -#: f.edit.cc:5307 +#: f.edit.cc:5318 msgid "" "fix line/arrow in layout \n" " start new line/arrow" @@ -1248,11 +1288,11 @@ "Fissa linea/freccia\n" "inizia un'altra" -#: f.edit.cc:5896 f.widgets.cc:443 +#: f.edit.cc:5907 f.widgets.cc:444 msgid "Paint Edits" msgstr "Pennella funzione" -#: f.edit.cc:5903 f.edit.cc:6132 fotoxx-15.08.cc:3172 +#: f.edit.cc:5914 f.edit.cc:6143 fotoxx-15.09.cc:3123 msgid "" "Select area cannot be kept.\n" "Continue?" @@ -1260,59 +1300,59 @@ "L'area selezionata non può essere mantenuta.\n" "Continuare?" -#: f.edit.cc:5911 f.edit.cc:6140 f.tools.cc:2127 +#: f.edit.cc:5922 f.edit.cc:6151 f.tools.cc:2147 msgid "Edit function must be active" msgstr "Una funzione di edit deve essere attiva" -#: f.edit.cc:5916 +#: f.edit.cc:5927 msgid "Cannot use Paint Edits" -msgstr "" +msgstr "Impossibile usare Pennella Funzione" -#: f.edit.cc:5945 +#: f.edit.cc:5956 msgid "power: center" msgstr "Forza: centro:" -#: f.edit.cc:5950 +#: f.edit.cc:5961 msgid "reset area" msgstr "Azzera area" -#: f.edit.cc:6125 f.widgets.cc:444 +#: f.edit.cc:6136 f.widgets.cc:445 msgid "Leverage Edits" msgstr "Modula ritocco" -#: f.edit.cc:6126 +#: f.edit.cc:6137 msgid "Edit Function Amplifier" msgstr "Regola amplificazione di funzione" -#: f.edit.cc:6145 +#: f.edit.cc:6156 msgid "Cannot use Leverage Edits" -msgstr "" +msgstr "Impossibile usare Modula Ritocco" -#: f.edit.cc:6178 +#: f.edit.cc:6189 msgid "minimum" msgstr "Minimo" -#: f.edit.cc:6180 +#: f.edit.cc:6191 msgid "maximum" msgstr "Massimo" -#: f.edit.cc:6481 +#: f.edit.cc:6490 msgid "Edit Plugins" msgstr "Gestione plug-in" -#: f.edit.cc:6482 +#: f.edit.cc:6491 msgid "Edit plugins menu" msgstr "Modifica menu plug-in" -#: f.edit.cc:6490 +#: f.edit.cc:6499 msgid "Run as Fotoxx edit function" msgstr "Esegui come funzione di edit fotoxx" -#: f.edit.cc:6728 +#: f.edit.cc:6737 msgid "Plugin working ..." msgstr "Esecuzione plugin..." -#: f.edit.cc:6737 +#: f.edit.cc:6746 msgid "plugin failed" msgstr "plugin non trovato" @@ -1338,13 +1378,13 @@ #: f.effects.cc:304 msgid "Foreground" -msgstr "" +msgstr "Colore" #: f.effects.cc:307 msgid "Background" -msgstr "" +msgstr "Sfondo" -#: f.effects.cc:713 f.widgets.cc:480 +#: f.effects.cc:713 f.widgets.cc:481 msgid "Line Drawing" msgstr "Tracciamento linea" @@ -1352,303 +1392,305 @@ msgid "black/white" msgstr "Bianco e nero" -#: f.effects.cc:1003 f.widgets.cc:481 +#: f.effects.cc:1004 f.widgets.cc:482 msgid "Color Drawing" msgstr "Tracciamento colori" -#: f.effects.cc:1010 +#: f.effects.cc:1011 msgid "Bright Areas" msgstr "Aree luminose" -#: f.effects.cc:1264 f.widgets.cc:482 +#: f.effects.cc:1265 f.widgets.cc:483 msgid "Graduated Blur" msgstr "Sfumatura graduale" -#: f.effects.cc:1268 +#: f.effects.cc:1269 msgid "Contrast Limit" msgstr "Limite contrasto" -#: f.effects.cc:1271 f.repair.cc:747 +#: f.effects.cc:1272 f.repair.cc:748 msgid "Blur Radius" msgstr "Raggio di sfumatura" -#: f.effects.cc:1485 +#: f.effects.cc:1486 msgid "Simulate Embossing" msgstr "Simula un bassorilievo" -#: f.effects.cc:1502 +#: f.effects.cc:1503 msgid "depth" msgstr "Profondità" -#: f.effects.cc:1703 +#: f.effects.cc:1705 msgid "Simulate Tiles" msgstr "Simula un mosaico" -#: f.effects.cc:1707 +#: f.effects.cc:1709 msgid "tile size" msgstr "Dimensione tessere" -#: f.effects.cc:1710 +#: f.effects.cc:1712 msgid "tile gap" msgstr "Distanza fra tessere" -#: f.effects.cc:1713 +#: f.effects.cc:1715 msgid "3D depth" msgstr "Profondità 3D" -#: f.effects.cc:1937 +#: f.effects.cc:1939 msgid "Convert Image to Dots" msgstr "Converti immagine in punti" -#: f.effects.cc:1941 +#: f.effects.cc:1943 msgid "dot size" msgstr "Dimensione punto" -#: f.effects.cc:2161 +#: f.effects.cc:2168 msgid "Simulate Painting" msgstr "Simula un dipinto" -#: f.effects.cc:2165 +#: f.effects.cc:2172 msgid "color depth" msgstr "Profondità di colore" -#: f.effects.cc:2169 +#: f.effects.cc:2176 msgid "patch area goal" msgstr "Fattore artistico" -#: f.effects.cc:2173 +#: f.effects.cc:2180 msgid "req. color match" msgstr "Precisione colori" -#: f.effects.cc:2177 +#: f.effects.cc:2184 msgid "borders" msgstr "Contorni" -#: f.effects.cc:2750 f.widgets.cc:487 +#: f.effects.cc:2757 f.widgets.cc:488 msgid "Vignette" msgstr "Effetto vignetta" -#: f.effects.cc:3118 +#: f.effects.cc:3125 msgid "Add Texture" msgstr "Aggiungi disturbo" -#: f.effects.cc:3334 +#: f.effects.cc:3341 msgid "Background Pattern" msgstr "Motivo di sfondo" -#: f.effects.cc:3338 +#: f.effects.cc:3345 msgid "Pattern File:" msgstr "File motivo:" -#: f.effects.cc:3343 +#: f.effects.cc:3350 msgid "Geometry" msgstr "Geometria" -#: f.effects.cc:3344 +#: f.effects.cc:3351 msgid "Calculate" msgstr "Calcola" -#: f.effects.cc:3346 +#: f.effects.cc:3353 msgid "Zoom" msgstr "Zoom" -#: f.effects.cc:3357 f.widgets.cc:489 +#: f.effects.cc:3364 f.widgets.cc:490 msgid "Pattern" msgstr "Motivo" -#: f.effects.cc:3364 +#: f.effects.cc:3371 msgid "Overlap" msgstr "Sovrapposizione" -#: f.effects.cc:3371 +#: f.effects.cc:3378 msgid "Opacity" msgstr "Opacità" -#: f.effects.cc:3410 +#: f.effects.cc:3417 msgid "choose pattern tile" msgstr "Scelta tessera del motivo" -#: f.effects.cc:3755 +#: f.effects.cc:3762 msgid "Create Mosaic" msgstr "Creazione Mosaico" -#: f.effects.cc:3841 +#: f.effects.cc:3848 msgid "Tile" msgstr "Tessera" -#: f.effects.cc:3849 f.widgets.cc:484 +#: f.effects.cc:3856 f.widgets.cc:485 msgid "Tiles" msgstr "Tessere" -#: f.effects.cc:3855 +#: f.effects.cc:3862 msgid "Tile blending" msgstr "Miscelazione tessere" -#: f.effects.cc:3935 +#: f.effects.cc:3942 #, c-format msgid "exceeded max. tiles: %d" msgstr "Superato massimo tessere: %d" -#: f.effects.cc:3950 +#: f.effects.cc:3957 #, c-format msgid "only %d tile images found" msgstr "Trovate solo %d tessere" -#: f.effects.cc:4326 f.widgets.cc:491 +#: f.effects.cc:4333 f.widgets.cc:492 msgid "Custom Kernel" msgstr "Matrice di trasformazione" -#: f.effects.cc:4330 +#: f.effects.cc:4337 msgid "Kernel size" msgstr "Dimensione matrice" -#: f.effects.cc:4335 +#: f.effects.cc:4342 msgid "Divisor" msgstr "Divisore" -#: f.effects.cc:4340 +#: f.effects.cc:4347 msgid "Data file" msgstr "File di dati" -#: f.effects.cc:4606 f.widgets.cc:492 +#: f.effects.cc:4611 f.widgets.cc:493 msgid "Make Waves" msgstr "Generare onde" -#: f.effects.cc:4613 +#: f.effects.cc:4618 msgid "wavelength" msgstr "Lunghezza onda" -#: f.effects.cc:4614 +#: f.effects.cc:4619 msgid "amplitude" msgstr "Ampiezza" -#: f.effects.cc:4615 +#: f.effects.cc:4620 msgid "variance" msgstr "Varianza" -#: f.effects.cc:4626 +#: f.effects.cc:4631 msgid "perspective" msgstr "Prospettiva" -#: f.effects.cc:4800 +#: f.effects.cc:4805 msgid "Pull image using the mouse." -msgstr "" +msgstr "Tira l'immagine con il mouse" -#: f.effects.cc:4821 f.widgets.cc:493 +#: f.effects.cc:4826 f.widgets.cc:494 msgid "Directed Blur" -msgstr "" +msgstr "Sfumatura interattiva" -#: f.effects.cc:4825 +#: f.effects.cc:4830 msgid "blur span" -msgstr "" +msgstr "Dimensione" -#: f.effects.cc:4828 +#: f.effects.cc:4833 msgid "intensity" -msgstr "" +msgstr "Intensità" -#: f.file.cc:247 +#: f.file.cc:248 msgid "" "use EXIF photo date or \n" " file modification date" msgstr "" +"Usa data EXIF o \n" +" data del file" -#: f.file.cc:264 f.widgets.cc:560 +#: f.file.cc:265 f.widgets.cc:565 msgid "File" msgstr "File" -#: f.file.cc:357 f.file.cc:1483 f.file.cc:1622 +#: f.file.cc:358 f.file.cc:1487 f.file.cc:1626 msgid "no more images" msgstr "fine delle immagini" -#: f.file.cc:417 +#: f.file.cc:418 msgid "UFraw not installed" msgstr "UFraw not installed" -#: f.file.cc:433 f.widgets.cc:679 +#: f.file.cc:434 f.widgets.cc:684 msgid "Open RAW file (ufraw)" msgstr "Apri file RAW (ufraw)" -#: f.file.cc:438 f.file.cc:509 +#: f.file.cc:439 f.file.cc:510 msgid "RAW type not registered in User Settings" msgstr "Tipo RAW non registrato in preferenze utente" -#: f.file.cc:504 f.widgets.cc:680 +#: f.file.cc:505 f.widgets.cc:685 msgid "Open RAW file (Raw Therapee)" msgstr "Apri file RAW (Raw Therapee)" -#: f.file.cc:587 +#: f.file.cc:588 msgid "Save Image File" msgstr "Salva file immagine" -#: f.file.cc:597 +#: f.file.cc:598 msgid "new version" msgstr "nuova versione" -#: f.file.cc:598 +#: f.file.cc:599 msgid "new file" msgstr "Nuovo file" -#: f.file.cc:599 +#: f.file.cc:600 msgid "replace file" msgstr "rimpiazza file" -#: f.file.cc:606 f.file.cc:2281 +#: f.file.cc:607 f.file.cc:2344 msgid "save as new file name or type" msgstr "salva come nuovo nome o diverso tipo" -#: f.file.cc:608 +#: f.file.cc:609 msgid "replace old file (OVERWRITE)" msgstr "rimpiazza il vecchio file (SOVRASCRIVE)" -#: f.file.cc:646 f.file.cc:2071 +#: f.file.cc:647 f.file.cc:2124 msgid "cannot save as RAW type" msgstr "impossibile salvare come tipo RAW" -#: f.file.cc:773 f.widgets.cc:396 +#: f.file.cc:774 f.widgets.cc:395 msgid "Rename Image File" msgstr "Rinomina immagine" -#: f.file.cc:780 +#: f.file.cc:781 msgid "Old Name" msgstr "Vecchio nome" -#: f.file.cc:790 +#: f.file.cc:791 msgid "previous name" msgstr "Nome precedente" -#: f.file.cc:791 +#: f.file.cc:792 msgid "add 1" msgstr "aggiungi 1" -#: f.file.cc:946 +#: f.file.cc:950 msgid "Create Blank Image" msgstr "Crea immagine vuota" -#: f.file.cc:948 +#: f.file.cc:952 msgid "file name" msgstr "Nome file" -#: f.file.cc:982 +#: f.file.cc:986 msgid "supply a file name" msgstr "fornire un nome di file" -#: f.file.cc:1114 +#: f.file.cc:1118 msgid "Copy Image File" msgstr "Copia file" -#: f.file.cc:1115 +#: f.file.cc:1119 msgid "Move Image File" msgstr "Sposta file" -#: f.file.cc:1158 +#: f.file.cc:1162 msgid "new location" msgstr "nuova destinazione" -#: f.file.cc:1228 +#: f.file.cc:1232 msgid "new location is not a directory" msgstr "la destinazione non è una cartella" -#: f.file.cc:1270 f.file.cc:1467 f.file.cc:1605 +#: f.file.cc:1274 f.file.cc:1471 f.file.cc:1609 #, c-format msgid "" "delete failed: \n" @@ -1657,15 +1699,15 @@ "errore in cancellazione: \n" " %s" -#: f.file.cc:1312 f.widgets.cc:398 +#: f.file.cc:1316 f.widgets.cc:397 msgid "Trash Image File" msgstr "Cestina l'immagine" -#: f.file.cc:1313 f.file.cc:1520 +#: f.file.cc:1317 f.file.cc:1524 msgid "(automatic step to next image)" msgstr "(avanzamento automatico alla prossima foto)" -#: f.file.cc:1381 +#: f.file.cc:1385 msgid "" "Linux standard trash does not work. \n" "Desktop trash folder will be created." @@ -1673,7 +1715,7 @@ "Il cestino standard di Linux non funziona. \n" "Verrà creato un cestino nel desktop" -#: f.file.cc:1384 +#: f.file.cc:1388 msgid "" "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" @@ -1681,49 +1723,99 @@ "I cestini (di Linux e sul desktop) non funzionano. \n" "Eliminare definitivamente il file?" -#: f.file.cc:1387 +#: f.file.cc:1391 #, c-format msgid "Cannot create trash folder: %s" msgstr "Impossible creare il cestino: %s" -#: f.file.cc:1399 +#: f.file.cc:1403 msgid "Move read-only file to trash?" msgstr "Spostare il file in sola lettura nel cestino?" -#: f.file.cc:1454 +#: f.file.cc:1458 #, c-format msgid "error: %s" msgstr "errore: %s" -#: f.file.cc:1519 +#: f.file.cc:1523 msgid "Delete Image File - CANNOT BE REVERSED" msgstr "Cancella file - NON SI PUO' ANNULLARE" -#: f.file.cc:1595 +#: f.file.cc:1599 msgid "Delete read-only file?" msgstr "Eliminare il file di sola lettura?" -#: f.file.cc:1911 f.widgets.cc:390 +#: f.file.cc:1820 f.widgets.cc:547 +msgid "Quick Start" +msgstr "Introduzione rapida" + +#: f.file.cc:1823 f.widgets.cc:548 +msgid "User Guide" +msgstr "Guida utente" + +#: f.file.cc:1826 f.widgets.cc:549 +msgid "User Guide Changes" +msgstr "Cronistoria della guida utente" + +#: f.file.cc:1829 f.widgets.cc:551 +msgid "README" +msgstr "Read-me" + +#: f.file.cc:1832 f.widgets.cc:550 +msgid "Edit Functions Summary" +msgstr "Sommario funzioni" + +#: f.file.cc:1835 f.widgets.cc:552 +msgid "Change Log" +msgstr "Cronistoria delle modifiche" + +#: f.file.cc:1838 f.widgets.cc:553 +msgid "Log File" +msgstr "Mostra file di log" + +#: f.file.cc:1841 f.widgets.cc:554 +msgid "Translations" +msgstr "Come tradurre" + +#: f.file.cc:1844 f.widgets.cc:555 +msgid "Home Page" +msgstr "Sito WEB" + +#: f.file.cc:1847 f.widgets.cc:556 +msgid "About" +msgstr "Info" + +#: f.file.cc:1851 f.widgets.cc:577 f.widgets.cc:599 fotoxx.h:1119 +msgid "Help" +msgstr "Aiuto" + +#: f.file.cc:1961 f.widgets.cc:389 msgid "Open Image File" msgstr "Apri immagine" -#: f.file.cc:1929 +#: f.file.cc:1979 msgid "unknown file type" msgstr "tipo di file sconosciuto" -#: f.file.cc:2197 +#: f.file.cc:2117 +msgid "" +"Transparency map will be lost.\n" +"save to PNG file to retain." +msgstr "" + +#: f.file.cc:2260 msgid "Unable to copy EXIF/IPTC data" msgstr "Non riesco a copiare i dati EXIF/IPTC" -#: f.file.cc:2297 +#: f.file.cc:2360 msgid "make current" msgstr "Rendi corrente" -#: f.file.cc:2390 +#: f.file.cc:2453 msgid "jpeg quality must be 1-100" msgstr "la qualità jpeg deve essere 1-100" -#: f.file.cc:2417 +#: f.file.cc:2480 #, c-format msgid "" "Overwrite file? \n" @@ -1732,140 +1824,140 @@ "Sovrascrivere il file? \n" " %s" -#: f.file.cc:2669 f.file.cc:2738 +#: f.file.cc:2732 f.file.cc:2801 #, c-format msgid "file not found: %s" msgstr "file non trovato: %s" -#: f.file.cc:2675 f.file.cc:2744 +#: f.file.cc:2738 f.file.cc:2807 #, c-format msgid "file type not supported: %s" msgstr "tipo di file non supportato: %s" -#: f.gallery.cc:921 f.gallery.cc:1010 f.widgets.cc:592 +#: f.gallery.cc:911 f.gallery.cc:1000 f.widgets.cc:597 msgid "Scroll" msgstr "Scorri" -#: f.gallery.cc:925 +#: f.gallery.cc:915 msgid "Sync" msgstr "Sinc" -#: f.gallery.cc:935 f.repair.cc:5783 f.repair.cc:5788 fotoxx.h:1132 +#: f.gallery.cc:925 f.repair.cc:5779 f.repair.cc:5784 fotoxx.h:1140 msgid "Open" msgstr "Apri" -#: f.gallery.cc:936 +#: f.gallery.cc:926 msgid "change directory" msgstr "cambia cartella" -#: f.gallery.cc:944 +#: f.gallery.cc:934 msgid "GoTo" msgstr "Vai a..." -#: f.gallery.cc:950 f.widgets.cc:587 +#: f.gallery.cc:940 f.widgets.cc:592 msgid "Sort" msgstr "Riordina" -#: f.gallery.cc:956 f.gallery.cc:1528 f.gallery.cc:1529 f.gallery.cc:1531 -#: f.widgets.cc:585 +#: f.gallery.cc:946 f.gallery.cc:1510 f.gallery.cc:1511 f.gallery.cc:1513 +#: f.widgets.cc:590 msgid "Zoom+" msgstr "Zoom+" -#: f.gallery.cc:966 f.gallery.cc:1530 f.gallery.cc:1532 f.widgets.cc:586 +#: f.gallery.cc:956 f.gallery.cc:1512 f.gallery.cc:1514 f.widgets.cc:591 msgid "Zoom-" msgstr "Zoom-" -#: f.gallery.cc:978 f.gallery.cc:1536 +#: f.gallery.cc:968 f.gallery.cc:1518 msgid "Row↑" msgstr "Riga↑" -#: f.gallery.cc:986 f.gallery.cc:1537 +#: f.gallery.cc:976 f.gallery.cc:1519 msgid "Row↓" msgstr "Riga↓" -#: f.gallery.cc:994 f.gallery.cc:1534 f.gallery.cc:1541 f.widgets.cc:590 +#: f.gallery.cc:984 f.gallery.cc:1516 f.gallery.cc:1523 f.widgets.cc:595 msgid "Page↑" msgstr "Pagina↑" -#: f.gallery.cc:1002 f.gallery.cc:1535 f.gallery.cc:1542 f.widgets.cc:591 +#: f.gallery.cc:992 f.gallery.cc:1517 f.gallery.cc:1524 f.widgets.cc:596 msgid "Page↓" msgstr "Pagina↓" -#: f.gallery.cc:1016 f.gallery.cc:1539 f.widgets.cc:588 +#: f.gallery.cc:1006 f.gallery.cc:1521 f.widgets.cc:593 msgid "First" msgstr "Prima" -#: f.gallery.cc:1017 f.gallery.cc:1540 f.widgets.cc:589 +#: f.gallery.cc:1007 f.gallery.cc:1522 f.widgets.cc:594 msgid "Last" msgstr "Ultima" -#: f.gallery.cc:1134 +#: f.gallery.cc:1120 msgid "Choose image directory" msgstr "Scegliere directory immagini" -#: f.gallery.cc:1141 f.gallery.cc:1155 +#: f.gallery.cc:1127 f.gallery.cc:1141 msgid "recent" msgstr "recente" -#: f.gallery.cc:1142 f.gallery.cc:1160 +#: f.gallery.cc:1128 f.gallery.cc:1146 msgid "newest" msgstr "più nuovo" -#: f.gallery.cc:1224 +#: f.gallery.cc:1210 msgid "no albums found" msgstr "nessun album trovato" -#: f.gallery.cc:1231 +#: f.gallery.cc:1217 msgid "Choose album" msgstr "Scegliere album" -#: f.gallery.cc:1281 +#: f.gallery.cc:1267 msgid "Gallery Sort" msgstr "Riordina galleria" -#: f.gallery.cc:1285 +#: f.gallery.cc:1271 msgid "File Name" msgstr "Nome file" -#: f.gallery.cc:1286 +#: f.gallery.cc:1272 msgid "File Mod Date/Time" msgstr "Data di modifica file" -#: f.gallery.cc:1287 +#: f.gallery.cc:1273 msgid "Photo Date/Time (EXIF)" msgstr "Data della foto (EXIF)" -#: f.gallery.cc:1289 +#: f.gallery.cc:1275 msgid "ascending" msgstr "ascendente" -#: f.gallery.cc:1290 +#: f.gallery.cc:1276 msgid "descending" msgstr "discendente" -#: f.gallery.cc:2244 fotoxx.h:1157 +#: f.gallery.cc:2213 fotoxx.h:1165 msgid "Select Files" msgstr "Seleziona i file" -#: f.gallery.cc:2716 +#: f.gallery.cc:2684 msgid "Click list position. Click thumbnail to add." msgstr "" "Clicca la lista per indicare la posizione; clicca le miniature per " "aggiungere." -#: f.gallery.cc:2742 f.gallery.cc:2990 +#: f.gallery.cc:2710 f.gallery.cc:2958 msgid "Edit Bookmarks" msgstr "Gestisci segnalibri" -#: f.gallery.cc:2917 +#: f.gallery.cc:2885 msgid "unable to save bookmarks file" msgstr "Impossibile salvare i segnalibri" -#: f.gallery.cc:2990 +#: f.gallery.cc:2958 msgid "Go To Bookmark" msgstr "Va al segnalibro" -#: f.gallery.cc:3047 f.meta.cc:2732 f.repair.cc:7410 +#: f.gallery.cc:3015 f.meta.cc:2772 f.repair.cc:7407 msgid "file not found" msgstr "File non trovato" @@ -1955,15 +2047,15 @@ #: f.mashup.cc:501 msgid "save Mashup output file" -msgstr "" +msgstr "Salva risultato del collage" #: f.mashup.cc:512 msgid "save Mashup project file?" -msgstr "" +msgstr "Salvo il progetto collage?" #: f.mashup.cc:524 msgid "delete Mashup project file?" -msgstr "" +msgstr "Elimino il progetto collage?" #: f.mashup.cc:583 msgid "Open Project" @@ -2059,7 +2151,7 @@ msgid "Hard" msgstr "Forte" -#: f.mashup.cc:1304 f.repair.cc:5378 +#: f.mashup.cc:1304 f.repair.cc:5375 msgid "Blend" msgstr "Mescola" @@ -2075,7 +2167,7 @@ msgid "Gradual" msgstr "Graduale" -#: f.mashup.cc:1580 fotoxx.h:1136 +#: f.mashup.cc:1580 fotoxx.h:1144 msgid "Power" msgstr "Forza" @@ -2094,7 +2186,7 @@ #: f.mashup.cc:2405 msgid "Enter text, [Add] to layout, edit properties." -msgstr "" +msgstr "Immetti il testo, [Aggiungi], modifica le opzioni" #: f.mashup.cc:2485 msgid "Text File:" @@ -2106,7 +2198,7 @@ #: f.mashup.cc:2618 msgid "click position to add text" -msgstr "" +msgstr "Clicca la posizione del testo" #: f.mashup.cc:2624 #, c-format @@ -2115,7 +2207,7 @@ #: f.mashup.cc:2747 msgid "Set line properties, [Add] to layout, edit." -msgstr "" +msgstr "Imposta opzioni linea, [Aggiungi], modifica" #: f.mashup.cc:2771 msgid "Edit Line/Arrow" @@ -2127,130 +2219,134 @@ #: f.mashup.cc:2919 msgid "click position to add line" -msgstr "" +msgstr "Clicca la posizione della linea" #: f.mashup.cc:2925 #, c-format msgid "exceeded %d line entries" msgstr "Immesse più di %d linee" -#: f.meta.cc:179 f.widgets.cc:657 +#: f.meta.cc:179 f.widgets.cc:662 msgid "View Metadata" msgstr "Mostra i metadati" -#: f.meta.cc:420 f.meta.cc:1756 f.widgets.cc:408 f.widgets.cc:658 +#: f.meta.cc:419 f.meta.cc:1796 f.widgets.cc:407 f.widgets.cc:663 msgid "Edit Metadata" msgstr "Modifica metadati (normale)" -#: f.meta.cc:430 +#: f.meta.cc:422 f.meta.cc:3748 +msgid "save metadata to file" +msgstr "" + +#: f.meta.cc:431 msgid "Image Date" msgstr "Data immagine:" -#: f.meta.cc:433 +#: f.meta.cc:434 msgid "Time" msgstr "Ora" -#: f.meta.cc:439 +#: f.meta.cc:440 msgid "Rating (stars):" msgstr "Punteggio (stelle):" -#: f.meta.cc:451 +#: f.meta.cc:452 msgid "Caption" msgstr "Titolo" -#: f.meta.cc:457 +#: f.meta.cc:458 msgid "Comments" msgstr "Commenti" -#: f.meta.cc:465 +#: f.meta.cc:466 msgid "Enter New Tag" -msgstr "" +msgstr "Immetti nuova etichetta" -#: f.meta.cc:472 f.meta.cc:4889 +#: f.meta.cc:473 f.meta.cc:4930 msgid "Matching Tags" -msgstr "" +msgstr "Etichette corrispondenti" -#: f.meta.cc:480 +#: f.meta.cc:481 msgid "Image Tags" msgstr "Etichette" -#: f.meta.cc:486 +#: f.meta.cc:487 msgid "Recent Tags" msgstr "Etichette recenti:" -#: f.meta.cc:495 f.meta.cc:1978 f.meta.cc:4896 +#: f.meta.cc:496 f.meta.cc:2018 f.meta.cc:4937 msgid "Defined Tags Category" -msgstr "" +msgstr "Categorie conosciute" -#: f.meta.cc:886 +#: f.meta.cc:887 msgid "date format is YYYY-MM-DD" msgstr "Il formato della data è AAAA-MM-GG" -#: f.meta.cc:890 +#: f.meta.cc:891 msgid "date is invalid" msgstr "la data non è valida" -#: f.meta.cc:924 +#: f.meta.cc:925 msgid "time format is HH:MM [:SS]" msgstr "Il formato dell'ora è HH:MM [:SS]" -#: f.meta.cc:928 +#: f.meta.cc:929 msgid "time is invalid" msgstr "L'ora non è valida" -#: f.meta.cc:974 fotoxx.h:1121 +#: f.meta.cc:1014 fotoxx.h:1129 msgid "Manage Tags" msgstr "Gestione etichette" -#: f.meta.cc:974 +#: f.meta.cc:1014 msgid "orphan tags" msgstr "Etichette orfane" -#: f.meta.cc:978 +#: f.meta.cc:1018 msgid "category" msgstr "Categoria" -#: f.meta.cc:981 +#: f.meta.cc:1021 msgid "tag" msgstr "Etichetta" -#: f.meta.cc:988 +#: f.meta.cc:1028 msgid "Defined Tags:" msgstr "Etichette definite:" -#: f.meta.cc:1760 f.meta.cc:2418 +#: f.meta.cc:1800 f.meta.cc:2458 msgid "key name" msgstr "Nome chiave" -#: f.meta.cc:1762 f.meta.cc:2419 +#: f.meta.cc:1802 f.meta.cc:2459 msgid "key value" msgstr "Valore chiave" -#: f.meta.cc:1849 f.widgets.cc:410 +#: f.meta.cc:1889 f.widgets.cc:409 msgid "Delete Metadata" msgstr "Elimina metadati" -#: f.meta.cc:1851 fotoxx.h:1070 +#: f.meta.cc:1891 fotoxx.h:1078 msgid "All" msgstr "Tutto" -#: f.meta.cc:1852 +#: f.meta.cc:1892 msgid "One Key:" msgstr "Una chiave:" -#: f.meta.cc:1955 f.widgets.cc:411 f.widgets.cc:530 +#: f.meta.cc:1995 f.widgets.cc:410 f.widgets.cc:533 msgid "Batch Add/Remove Tags" msgstr "Aggiungi/elimina etichette in massa" -#: f.meta.cc:1966 +#: f.meta.cc:2006 msgid "tags to add" msgstr "Etichette da aggiungere" -#: f.meta.cc:1967 +#: f.meta.cc:2007 msgid "tags to remove" msgstr "Etichette da rimuovere" -#: f.meta.cc:2051 +#: f.meta.cc:2091 #, c-format msgid "" "%s \n" @@ -2259,48 +2355,51 @@ "%s \n" " troppe etichette" -#: f.meta.cc:2166 +#: f.meta.cc:2206 msgid "specify files and tags" msgstr "specificare file ed etichette" -#: f.meta.cc:2226 +#: f.meta.cc:2266 msgid "tag names file" -msgstr "" +msgstr "File di nomi di etichette" -#: f.meta.cc:2298 +#: f.meta.cc:2338 #, c-format msgid "" "%d tags to rename \n" "in %d image files. \n" "Proceed?" msgstr "" +"%d etichette da rinominare \n" +"in %d immagini. \n" +"Procedere?" -#: f.meta.cc:2409 +#: f.meta.cc:2449 msgid "Batch Metadata" -msgstr "" +msgstr "Metadati in massa" -#: f.meta.cc:2455 +#: f.meta.cc:2495 msgid "enter key names" -msgstr "" +msgstr "Immetti i nomi delle etichette" -#: f.meta.cc:2461 fotoxx.h:1129 +#: f.meta.cc:2501 fotoxx.h:1137 msgid "no files selected" msgstr "Nessun file selezionato" -#: f.meta.cc:3164 f.meta.cc:3899 f.meta.cc:4163 +#: f.meta.cc:3204 f.meta.cc:3940 f.meta.cc:4204 #, c-format msgid "bad latitude/longitude: %s %s" msgstr "Latitudine/Longitudine errati: %s %s" -#: f.meta.cc:3207 f.meta.cc:3571 f.meta.cc:4372 f.meta.cc:4780 +#: f.meta.cc:3247 f.meta.cc:3611 f.meta.cc:4413 f.meta.cc:4821 msgid "-noindex in use, disabled" msgstr "opzione '-noindex' in uso, funzione disabilitata" -#: f.meta.cc:3223 +#: f.meta.cc:3263 msgid "choose map file" msgstr "Scegliere file di mappa" -#: f.meta.cc:3332 +#: f.meta.cc:3372 msgid "" "fotoxx-maps package not installed \n" "(see http://kornelix.com/packages and /tarballs)" @@ -2308,12 +2407,12 @@ "Pacchetto fotoxx-maps non installato \n" "(http://kornelix.com/packages e /tarballs)" -#: f.meta.cc:3337 +#: f.meta.cc:3377 #, c-format msgid "map file %s is missing" msgstr "File di mappa %s mancante" -#: f.meta.cc:3341 +#: f.meta.cc:3381 #, c-format msgid "" "map latitude/longitude data unreasonable \n" @@ -2322,39 +2421,39 @@ "Latitudine/longitudine della mappa non validi:\n" " %.3f %.3f %.3f %.3f" -#: f.meta.cc:3620 +#: f.meta.cc:3660 msgid "No matching images found" msgstr "Nessuna immagine soddisfa la ricerca" -#: f.meta.cc:3660 +#: f.meta.cc:3700 msgid "search range (km)" msgstr "distanza (km)" -#: f.meta.cc:3693 f.widgets.cc:414 f.widgets.cc:659 +#: f.meta.cc:3733 f.widgets.cc:413 f.widgets.cc:664 msgid "Edit Geotags" msgstr "Modifica i Geotags" -#: f.meta.cc:3694 +#: f.meta.cc:3734 msgid "Geocoding web service courtesy of" msgstr "Il servizio web Geocoding è cortesia di" -#: f.meta.cc:3709 f.meta.cc:3949 f.meta.cc:5655 +#: f.meta.cc:3750 f.meta.cc:3990 f.meta.cc:5710 msgid "city" msgstr "Città" -#: f.meta.cc:3712 f.meta.cc:3952 f.meta.cc:5658 +#: f.meta.cc:3753 f.meta.cc:3993 f.meta.cc:5713 msgid "country" msgstr "Nazione" -#: f.meta.cc:3794 f.meta.cc:4080 +#: f.meta.cc:3835 f.meta.cc:4121 msgid "city not found" msgstr "Città non trovata" -#: f.meta.cc:3915 f.widgets.cc:415 f.widgets.cc:533 +#: f.meta.cc:3956 f.widgets.cc:414 f.widgets.cc:536 msgid "Batch Add Geotags" msgstr "Aggiunta Geotags in blocco" -#: f.meta.cc:4142 +#: f.meta.cc:4183 msgid "" "data is incomplete \n" " proceed?" @@ -2362,140 +2461,140 @@ "I dati sono incompleti \n" " proseguire?" -#: f.meta.cc:4199 +#: f.meta.cc:4240 msgid "choose city" msgstr "Scegli città" -#: f.meta.cc:4286 +#: f.meta.cc:4327 msgid "not found" msgstr "non trovata" -#: f.meta.cc:4287 +#: f.meta.cc:4328 msgid "city and country required" msgstr "Indicare città e nazione" -#: f.meta.cc:4387 +#: f.meta.cc:4428 msgid "Report Geotag Groups" msgstr "Visualizza gruppi Geotags" -#: f.meta.cc:4388 +#: f.meta.cc:4429 msgid "Group by country" msgstr "Raggruppa per nazione" -#: f.meta.cc:4389 +#: f.meta.cc:4430 msgid "Group by country/city" msgstr "Raggruppa per nazione/città" -#: f.meta.cc:4390 +#: f.meta.cc:4431 msgid "Group by country/city/date" msgstr "Raggruppa per nazione/città/data" -#: f.meta.cc:4393 +#: f.meta.cc:4434 msgid "Combine within" msgstr "Combina entro" -#: f.meta.cc:4395 +#: f.meta.cc:4436 msgid "days" msgstr "giorni" -#: f.meta.cc:4511 +#: f.meta.cc:4552 msgid "geotag groups" msgstr "Gruppi geotag" -#: f.meta.cc:4817 +#: f.meta.cc:4858 msgid "Search Image Metadata" msgstr "Cerca nei metadati dell'immagine" -#: f.meta.cc:4821 +#: f.meta.cc:4862 msgid "images to search:" msgstr "immagini da cercare:" -#: f.meta.cc:4822 +#: f.meta.cc:4863 msgid "all" msgstr "tutte" -#: f.meta.cc:4823 +#: f.meta.cc:4864 msgid "current set only" msgstr "insieme corrente" -#: f.meta.cc:4826 +#: f.meta.cc:4867 msgid "matching images:" msgstr "immagini corrispondenti:" -#: f.meta.cc:4827 +#: f.meta.cc:4868 msgid "new set" msgstr "nuovo insieme" -#: f.meta.cc:4828 +#: f.meta.cc:4869 msgid "add to set" msgstr "aggiungi all'insieme" -#: f.meta.cc:4829 +#: f.meta.cc:4870 msgid "remove" msgstr "rimuovi" -#: f.meta.cc:4832 +#: f.meta.cc:4873 msgid "report type:" msgstr "Tipo di risultato:" -#: f.meta.cc:4833 +#: f.meta.cc:4874 msgid "gallery" msgstr "galleria" -#: f.meta.cc:4834 fotoxx-15.08.cc:801 +#: f.meta.cc:4875 fotoxx-15.09.cc:781 msgid "metadata" msgstr "metadati" -#: f.meta.cc:4840 +#: f.meta.cc:4881 msgid "date range" msgstr "Intervallo date: " -#: f.meta.cc:4841 +#: f.meta.cc:4882 msgid "stars range" msgstr "Voto da/a:" -#: f.meta.cc:4842 +#: f.meta.cc:4883 msgid "search tags" msgstr "Cerca etichette" -#: f.meta.cc:4843 +#: f.meta.cc:4884 msgid "search text" msgstr "Cerca testo" -#: f.meta.cc:4844 +#: f.meta.cc:4885 msgid "search files" msgstr "Cerca nei file" -#: f.meta.cc:4849 +#: f.meta.cc:4890 msgid "(yyyymmdd)" msgstr "(aaaammgg)" -#: f.meta.cc:4854 +#: f.meta.cc:4895 msgid "last version only" msgstr "Solo ultime versioni" -#: f.meta.cc:4856 +#: f.meta.cc:4897 msgid "all/any" msgstr "Tutte/Qualsiasi" -#: f.meta.cc:4875 +#: f.meta.cc:4916 msgid "other criteria" msgstr "altri criteri" -#: f.meta.cc:4879 +#: f.meta.cc:4920 msgid "other" msgstr "altro" -#: f.meta.cc:4885 +#: f.meta.cc:4926 msgid "Enter Search Tag" -msgstr "" +msgstr "Immetti etichette di ricerca" -#: f.meta.cc:5179 +#: f.meta.cc:5221 #, c-format msgid "not a defined tag: %s" -msgstr "" +msgstr "Etichetta sconosciuta: %s" -#: f.meta.cc:5210 +#: f.meta.cc:5252 msgid "" "to remove images from current set, \n" "search current set" @@ -2503,7 +2602,7 @@ "per rimuovere immagini dall'insieme corrente, \n" "cercare nell'insieme corrente" -#: f.meta.cc:5217 +#: f.meta.cc:5259 msgid "" "to add images to current set, \n" "search all images" @@ -2511,32 +2610,39 @@ "per aggiungere immagini all'insieme corrente, \n" "cercare in tutte le immagini" -#: f.meta.cc:5266 +#: f.meta.cc:5303 +#, c-format +msgid "" +"search dates not reasonable \n" +" %s %s" +msgstr "" + +#: f.meta.cc:5321 msgid "stars range not reasonable" msgstr "punteggio (stelle) non ammissibile" -#: f.meta.cc:5511 +#: f.meta.cc:5566 #, c-format msgid "images added: %d removed: %d new count: %d" msgstr "Immagini aggiunte: %d; tolte: %d; totale corrente: %d" -#: f.meta.cc:5514 +#: f.meta.cc:5569 msgid "no changes made" msgstr "nessun cambiamento fatto" -#: f.meta.cc:5652 +#: f.meta.cc:5707 msgid "Add Geotags Search Criteria" msgstr "Aggiungi criteri di ricerca Geotags" -#: f.meta.cc:5671 +#: f.meta.cc:5726 msgid "range (km)" msgstr "distanza (km)" -#: f.meta.cc:5764 +#: f.meta.cc:5819 msgid "error in latitude/longitude/range" msgstr "errore nella specifica di latitudine/longitudine/distanza" -#: f.meta.cc:5828 +#: f.meta.cc:5883 msgid "" "These items are always reported: \n" "date, stars, tags, caption, comment" @@ -2544,19 +2650,19 @@ "Questi elementi sono sempre mostrati: \n" "data, stelle, etichette, titolo, commenti" -#: f.meta.cc:5852 +#: f.meta.cc:5907 msgid "Additional Items for Report" msgstr "Informazioni addizionali da riportare" -#: f.meta.cc:5858 +#: f.meta.cc:5913 msgid "Keyword" msgstr "parola chiave" -#: f.meta.cc:5865 +#: f.meta.cc:5920 msgid "Match Criteria" msgstr "criterio di corrispondenza" -#: f.meta.cc:6425 +#: f.meta.cc:6480 msgid "image index is missing" msgstr "Indice immagini mancante" @@ -2572,47 +2678,47 @@ msgid "Kuwahara method" msgstr "Metodo Kuwahara" -#: f.repair.cc:1012 +#: f.repair.cc:1014 msgid "Apply repeatedly while watching the image." -msgstr "" +msgstr "Applica ripetutamente osservando l'immagine" -#: f.repair.cc:1013 +#: f.repair.cc:1015 msgid "Measure" -msgstr "" +msgstr "Misura" -#: f.repair.cc:1047 +#: f.repair.cc:1049 msgid "Noise Reduction" msgstr "Riduzione disturbo" -#: f.repair.cc:1063 +#: f.repair.cc:1065 msgid "Flatten Outliers 1" msgstr "Modera picchi 1" -#: f.repair.cc:1064 +#: f.repair.cc:1066 msgid "Flatten Outliers 2" msgstr "Modera picchi 2 (alternativo)" -#: f.repair.cc:1065 +#: f.repair.cc:1067 msgid "Median Brightness" msgstr "Luminosità mediana" -#: f.repair.cc:1093 +#: f.repair.cc:1095 msgid "dark areas" msgstr "zone scure" -#: f.repair.cc:1095 +#: f.repair.cc:1097 msgid "all areas" msgstr "tutte le zone" -#: f.repair.cc:1193 +#: f.repair.cc:1195 msgid "Measure Noise" -msgstr "" +msgstr "Misura disturbo" -#: f.repair.cc:1194 +#: f.repair.cc:1196 msgid "Click on a monotone image area." -msgstr "" +msgstr "Cliccare una zona omogenea" -#: f.repair.cc:2095 +#: f.repair.cc:2098 msgid "" "1. Drag mouse to select. \n" "2. Erase. 3. Repeat. " @@ -2620,23 +2726,23 @@ "1. Trascina per selezionare. \n" "2. Cancella. 3. Ripeti. " -#: f.repair.cc:2117 f.widgets.cc:451 +#: f.repair.cc:2120 f.widgets.cc:452 msgid "Smart Erase" msgstr "Cancellazione intelligente" -#: f.repair.cc:2122 fotoxx.h:1140 +#: f.repair.cc:2125 fotoxx.h:1148 msgid "Radius" msgstr "Raggio" -#: f.repair.cc:2124 f.widgets.cc:449 +#: f.repair.cc:2127 f.widgets.cc:450 msgid "Blur" msgstr "Sfuoca" -#: f.repair.cc:2127 +#: f.repair.cc:2130 msgid "New Area" msgstr "Nuova area" -#: f.repair.cc:2475 +#: f.repair.cc:2479 msgid "" "Method 1:\n" " Left-click on red-eye to darken.\n" @@ -2654,11 +2760,11 @@ "Per annullare:\n" " - Clicca col pulsante destro sull'occhio rosso." -#: f.repair.cc:2491 +#: f.repair.cc:2495 msgid "Red Eye Reduction" msgstr "Riduzione occhi rossi" -#: f.repair.cc:2955 +#: f.repair.cc:2959 msgid "" "shift + left click: pick color or image position \n" "left click or drag: paint color or copy image \n" @@ -2668,40 +2774,40 @@ "Clic o trascina sinistro: dipinge o copia l'immagine \n" "Clic o trascina destro: rimuove colore o immagine" -#: f.repair.cc:2987 f.widgets.cc:453 +#: f.repair.cc:2991 f.widgets.cc:454 msgid "Paint/Clone" msgstr "Dipingi pixel" -#: f.repair.cc:2991 +#: f.repair.cc:2995 msgid "paint color" msgstr "Colore pennello" -#: f.repair.cc:2994 +#: f.repair.cc:2998 msgid "copy from image" msgstr "Copia dall'immagine" -#: f.repair.cc:3001 f.repair.cc:3557 +#: f.repair.cc:3005 f.repair.cc:3562 msgid "paintbrush radius" msgstr "Raggio del pennello:" -#: f.repair.cc:3002 +#: f.repair.cc:3006 msgid "transparency center" msgstr "Trasparenza al centro:" -#: f.repair.cc:3003 +#: f.repair.cc:3007 msgid "transparency edge" msgstr "Trasparenza al bordo:" -#: f.repair.cc:3010 f.repair.cc:3564 +#: f.repair.cc:3014 f.repair.cc:3569 msgid "gradual paint" msgstr "pittura graduale" -#: f.repair.cc:3017 +#: f.repair.cc:3021 #, c-format msgid "Undo Memory %d%c" msgstr "Memoria per Annulla %d%c" -#: f.repair.cc:3352 +#: f.repair.cc:3357 msgid "" "Undo memory limit has been reached. \n" "Save work with [done], then resume painting." @@ -2709,178 +2815,180 @@ "La memoria per Annulla è finita. \n" "Salva con [Fatto], poi riprendi il lavoro." -#: f.repair.cc:3517 +#: f.repair.cc:3522 msgid "" "left drag: add transparency \n" "right drag: add opacity" msgstr "" +"trascina con sinistro: aggiunge trasparenza \n" +"trascina con destro: aggiunge opacità" -#: f.repair.cc:3549 f.widgets.cc:454 +#: f.repair.cc:3554 f.widgets.cc:455 msgid "Paint Transparency" -msgstr "" +msgstr "Dipingi trasparenza" -#: f.repair.cc:3558 +#: f.repair.cc:3563 msgid "strength center" -msgstr "" +msgstr "Rafforza il centro" -#: f.repair.cc:3559 +#: f.repair.cc:3564 msgid "strength edge" -msgstr "" +msgstr "Rafforza lati" -#: f.repair.cc:3769 f.widgets.cc:455 +#: f.repair.cc:3778 f.widgets.cc:456 msgid "Color Mode" msgstr "Modo di colore" -#: f.repair.cc:3772 +#: f.repair.cc:3781 msgid "black/white positive" msgstr "Bianco e nero, positivo" -#: f.repair.cc:3773 +#: f.repair.cc:3782 msgid "black/white negative" msgstr "Bianco e nero, negativo" -#: f.repair.cc:3774 +#: f.repair.cc:3783 msgid "color positive" msgstr "A colori, positivo" -#: f.repair.cc:3775 +#: f.repair.cc:3784 msgid "color negative" msgstr "A colori, negativo" -#: f.repair.cc:3776 +#: f.repair.cc:3785 msgid "sepia" msgstr "Seppia" -#: f.repair.cc:3945 f.widgets.cc:456 +#: f.repair.cc:3954 f.widgets.cc:457 msgid "Shift Colors" msgstr "Modula componenti" -#: f.repair.cc:4217 +#: f.repair.cc:4226 msgid "+Brightness" msgstr "+Luminosità" -#: f.repair.cc:4218 +#: f.repair.cc:4227 msgid "+Red -Cyan" msgstr "+Rosso -Ciano" -#: f.repair.cc:4219 +#: f.repair.cc:4228 msgid "+Green -Magenta" msgstr "+Verde -Magenta" -#: f.repair.cc:4220 +#: f.repair.cc:4229 msgid "+Blue -Yellow" msgstr "+Blu -Giallo" -#: f.repair.cc:4226 fotoxx.h:1142 +#: f.repair.cc:4235 fotoxx.h:1150 msgid "Red" msgstr "Rosso" -#: f.repair.cc:4227 fotoxx.h:1108 +#: f.repair.cc:4236 fotoxx.h:1116 msgid "Green" msgstr "Verde" -#: f.repair.cc:4228 fotoxx.h:1077 +#: f.repair.cc:4237 fotoxx.h:1085 msgid "Blue" msgstr "Blu" -#: f.repair.cc:4527 +#: f.repair.cc:4536 msgid "Color Hue" -msgstr "" +msgstr "Tonalità colore" -#: f.repair.cc:4528 +#: f.repair.cc:4537 msgid "Saturation" -msgstr "" +msgstr "Saturazione" -#: f.repair.cc:4529 +#: f.repair.cc:4538 msgid "Lightness" -msgstr "" +msgstr "Lucentezza" -#: f.repair.cc:4530 +#: f.repair.cc:4539 msgid "Adjustment" -msgstr "" +msgstr "Regolazione" -#: f.repair.cc:4869 +#: f.repair.cc:4878 msgid "Ramp brightness across image" msgstr "Rampe di luce" -#: f.repair.cc:5278 f.tools.cc:2014 +#: f.repair.cc:5286 f.tools.cc:2038 msgid "Click image to select pixels." msgstr "Clicca l'immagine per selezionare i pixel" -#: f.repair.cc:5312 f.widgets.cc:460 +#: f.repair.cc:5317 f.widgets.cc:461 msgid "Color Ramp" -msgstr "" +msgstr "Rampa di colore" -#: f.repair.cc:5323 +#: f.repair.cc:5328 msgid "Metric:" msgstr "Metrica" -#: f.repair.cc:5754 +#: f.repair.cc:5751 msgid "Color Match Images" msgstr "Allinea colori" -#: f.repair.cc:5781 +#: f.repair.cc:5777 msgid "mouse radius for color sample" msgstr "Raggio di prelievo del colore" -#: f.repair.cc:5784 +#: f.repair.cc:5780 msgid "image for source color" msgstr "l'immagine di riferimento" -#: f.repair.cc:5786 +#: f.repair.cc:5782 msgid "click on image to get source color" msgstr "Clicca nell'immagine per prelevare il colore" -#: f.repair.cc:5789 +#: f.repair.cc:5785 msgid "image to set matching color" msgstr "l'immagine a cui impostare il colore" -#: f.repair.cc:5791 +#: f.repair.cc:5787 msgid "click on image to set matching color" msgstr "Clicca nell'immagine per allineare il colore" -#: f.repair.cc:5851 +#: f.repair.cc:5848 msgid "select source image color first" msgstr "Seleziona prima l'immagine di riferimento" -#: f.repair.cc:6036 +#: f.repair.cc:6033 msgid "Change Color Profile" msgstr "Cambia profilo di colore" -#: f.repair.cc:6040 +#: f.repair.cc:6037 msgid "input profile" msgstr "Profilo in ingresso" -#: f.repair.cc:6044 +#: f.repair.cc:6041 msgid "output profile" msgstr "Profilo in uscita" -#: f.repair.cc:6060 +#: f.repair.cc:6057 msgid "color profile" msgstr "Profilo di colore" -#: f.repair.cc:6106 f.repair.cc:6112 +#: f.repair.cc:6103 f.repair.cc:6109 #, c-format msgid "unknown cms profile %s" msgstr "Profilo CMS sconosciuto %s" -#: f.repair.cc:6244 f.widgets.cc:463 +#: f.repair.cc:6241 f.widgets.cc:464 msgid "Remove Dust" msgstr "Rimozione polvere" -#: f.repair.cc:6248 +#: f.repair.cc:6245 msgid "spot size limit" msgstr "Raggio max della polvere" -#: f.repair.cc:6251 +#: f.repair.cc:6248 msgid "max. brightness" msgstr "Luminosità massima" -#: f.repair.cc:6254 +#: f.repair.cc:6251 msgid "min. contrast" msgstr "Contrasto minimo" -#: f.repair.cc:7035 +#: f.repair.cc:7032 msgid "" " Adjust each RGB color to minimize \n" " color fringes at the image extremes. " @@ -2888,35 +2996,35 @@ " Regola ogni componente RGB per minimizzare \n" " le frange di colore agli estremi dell'immagine. " -#: f.repair.cc:7058 f.widgets.cc:465 +#: f.repair.cc:7055 f.widgets.cc:466 msgid "Color Fringes" -msgstr "" +msgstr "Frange di colore" -#: f.repair.cc:7257 f.widgets.cc:466 +#: f.repair.cc:7254 f.widgets.cc:467 msgid "Stuck Pixels" -msgstr "" +msgstr "Pixel rovinati (incollati)" -#: f.repair.cc:7263 +#: f.repair.cc:7260 msgid "pixel group" msgstr "Gruppo di pixel:" -#: f.repair.cc:7271 f.repair.cc:7339 +#: f.repair.cc:7268 f.repair.cc:7336 msgid "stuck pixels:" msgstr "Pixel difettosi:" -#: f.repair.cc:7367 +#: f.repair.cc:7364 msgid "Load Stuck Pixels" msgstr "Carica file pixel difettosi" -#: f.repair.cc:7369 +#: f.repair.cc:7366 msgid "File:" msgstr "File:" -#: f.repair.cc:7394 f.repair.cc:7451 +#: f.repair.cc:7391 f.repair.cc:7448 msgid "Stuck Pixels file" msgstr "File di pixel difettosi" -#: f.repair.cc:7431 +#: f.repair.cc:7428 msgid "file format error" msgstr "Formato file errato" @@ -2925,14 +3033,16 @@ "Select directories containing image files \n" "(subdirectories are included automatically)." msgstr "" +"Seleziona directory contenenti immagini \n" +"(le sottodirectory sono incluse automaticamente)." #: f.tools.cc:72 msgid "Select to add, click on X to delete." -msgstr "" +msgstr "Seleziona per aggiungere, clicca X per eliminare." #: f.tools.cc:73 msgid "Select directory for thumbnails." -msgstr "" +msgstr "Seleziona directory per miniature" #: f.tools.cc:74 msgid "" @@ -2940,8 +3050,11 @@ "Indexing is required for search and map functions \n" "and to make the gallery pages acceptably fast." msgstr "" +"Funzione indice terminata. Fotoxx terminerà. \n" +"L'indice è richiesto per le ricerche e le mappe \n" +"e per generare le gallerie in modo rapido." -#: f.tools.cc:106 f.widgets.cc:506 +#: f.tools.cc:106 f.widgets.cc:507 msgid "Index Image Files" msgstr "Gestione file indice" @@ -2961,6 +3074,11 @@ "This may need considerable time if you \n" "have many thousands of image files." msgstr "" +"Nessun indice d'immagini è stato trovato.\n" +"Un indice verrà creato.\n" +"Le immagini non saranno modificate.\n" +"Può essere richiesto molto tempo se \n" +"ci sono molte migliaia di immagini." #: f.tools.cc:330 #, c-format @@ -2969,6 +3087,9 @@ " %s \n" "Please remove." msgstr "" +"Directory non valida: \n" +" %s \n" +"Si prega di rimuoverla." #: f.tools.cc:333 #, c-format @@ -2977,6 +3098,9 @@ " %s \n" "must be named .../thumbnails" msgstr "" +"La directory miniature: \n" +" %s \n" +"deve chiamarsi .../thumbnails" #: f.tools.cc:336 #, c-format @@ -2985,185 +3109,188 @@ " %s \n" "Please remove." msgstr "" +"Directory duplicata: \n" +" %s \n" +"Si prega di rimuoverla." -#: f.tools.cc:394 +#: f.tools.cc:392 msgid "no thumbnails directory defined" msgstr "nessuna directory miniature definita" -#: f.tools.cc:739 +#: f.tools.cc:734 msgid "COMPLETED" msgstr "COMPLETATO" -#: f.tools.cc:778 +#: f.tools.cc:775 msgid "Indexing is required for first-time startup." -msgstr "" +msgstr "L'indicizzazione è richiesta per il primo avviamento." -#: f.tools.cc:840 +#: f.tools.cc:837 msgid "Recent Files Gallery" msgstr "Galleria file recenti" -#: f.tools.cc:841 +#: f.tools.cc:838 msgid "Newest Files Gallery" msgstr "Galleria delle immagini nuove" -#: f.tools.cc:842 +#: f.tools.cc:839 msgid "Previous Gallery" msgstr "Galleria precedente" -#: f.tools.cc:843 +#: f.tools.cc:840 msgid "Previous Image" msgstr "Immagine precedente" -#: f.tools.cc:844 +#: f.tools.cc:841 msgid "Blank Window" msgstr "Finestra vuota" -#: f.tools.cc:845 +#: f.tools.cc:842 msgid "Directory" -msgstr "" +msgstr "Directory" -#: f.tools.cc:846 +#: f.tools.cc:843 msgid "Image File" msgstr "File immagine" -#: f.tools.cc:887 f.widgets.cc:507 +#: f.tools.cc:885 f.widgets.cc:508 msgid "User Options" -msgstr "" +msgstr "Opzioni d'uso" -#: f.tools.cc:890 +#: f.tools.cc:888 msgid "Startup Display" msgstr "Vista iniziale" -#: f.tools.cc:901 +#: f.tools.cc:899 msgid "Menu Style" msgstr "Stile del menù" -#: f.tools.cc:902 +#: f.tools.cc:900 msgid "Icons" msgstr "Icone" -#: f.tools.cc:903 +#: f.tools.cc:901 msgid "Icons + Text" msgstr "Icone e testo" -#: f.tools.cc:905 +#: f.tools.cc:903 msgid "Icon size" msgstr "Dimensione icone" -#: f.tools.cc:909 -msgid "Image Pan/scroll:" +#: f.tools.cc:907 +msgid "Dialog font and size" msgstr "" #: f.tools.cc:912 +msgid "Image Pan/scroll:" +msgstr "Scorrimento immagine a video:" + +#: f.tools.cc:915 msgid "Zooms for 2x" msgstr "Zoom per 2x" -#: f.tools.cc:921 +#: f.tools.cc:924 msgid "JPEG save quality" msgstr "Qualità Jpeg" -#: f.tools.cc:924 f.tools.cc:3041 -msgid "Thumbnail size" -msgstr "Dimensione miniatura" - -#: f.tools.cc:928 +#: f.tools.cc:931 msgid "show hidden directories in gallery view" -msgstr "" +msgstr "Mostra cartelle nascoste in Vista galleria" -#: f.tools.cc:931 +#: f.tools.cc:934 msgid "prev/next shows last file version only" msgstr "Prec./Pross. della barra mostrano solo l'ultima versione" -#: f.tools.cc:934 +#: f.tools.cc:937 msgid "RAW command" msgstr "Comando RAW" -#: f.tools.cc:938 +#: f.tools.cc:941 msgid "RAW file types" msgstr "Tipi di file RAW" -#: f.tools.cc:1015 +#: f.tools.cc:1021 msgid "Delete present thumbnails to make effective" msgstr "Eliminare le miniature presenti per rendere effettivo" -#: f.tools.cc:1037 +#: f.tools.cc:1043 msgid "Select startup directory" msgstr "Seleziona cartella d'avvio" -#: f.tools.cc:1044 +#: f.tools.cc:1050 msgid "Select startup image file" msgstr "Seleziona file d'avvio" -#: f.tools.cc:1066 +#: f.tools.cc:1088 msgid "startup directory is invalid" msgstr "Cartella iniziale non valida" -#: f.tools.cc:1077 +#: f.tools.cc:1099 msgid "startup file is invalid" msgstr "File iniziale non valido" -#: f.tools.cc:1211 +#: f.tools.cc:1237 msgid "Edit KB Shortcuts" msgstr "Gestisci le scorciatoie di tastiera" -#: f.tools.cc:1216 +#: f.tools.cc:1242 msgid "shortcut key:" msgstr "Scorciatoia:" -#: f.tools.cc:1217 +#: f.tools.cc:1243 msgid "(enter key)" msgstr "(premere il/i tasti)" -#: f.tools.cc:1343 +#: f.tools.cc:1369 #, c-format msgid "\"%s\" Reserved, cannot be used" msgstr "\"%s\" è riservata - non si può usare" -#: f.tools.cc:1497 +#: f.tools.cc:1523 msgid "unable to save KB-shortcuts file" msgstr "Non riesco a salvare le scorciatoie" -#: f.tools.cc:1801 f.widgets.cc:510 +#: f.tools.cc:1827 f.widgets.cc:511 msgid "Grid Lines" msgstr "Linee griglia" -#: f.tools.cc:1810 +#: f.tools.cc:1836 msgid "x-spacing" msgstr "Passo X:" -#: f.tools.cc:1811 +#: f.tools.cc:1837 msgid "x-count" msgstr "Num. barre X:" -#: f.tools.cc:1812 +#: f.tools.cc:1838 msgid "x-enable" msgstr "Abilita X:" -#: f.tools.cc:1818 +#: f.tools.cc:1844 msgid "y-spacing" msgstr "Passo Y:" -#: f.tools.cc:1819 +#: f.tools.cc:1845 msgid "y-count" msgstr "Num. righe Y:" -#: f.tools.cc:1820 +#: f.tools.cc:1846 msgid "y-enable" msgstr "Abilita Y:" -#: f.tools.cc:1940 f.tools.cc:1945 f.widgets.cc:511 +#: f.tools.cc:1966 f.tools.cc:1971 f.widgets.cc:512 msgid "Line Color" msgstr "Colore della linea" -#: f.tools.cc:1942 +#: f.tools.cc:1968 msgid "Area Color" msgstr "Colore dell'area" -#: f.tools.cc:2050 f.widgets.cc:512 +#: f.tools.cc:2073 f.widgets.cc:513 msgid "Show RGB" msgstr "Esplora componenti RGB" -#: f.tools.cc:2345 +#: f.tools.cc:2365 msgid "" "Drag mouse on image. \n" "Left click to cancel. \n" @@ -3173,27 +3300,27 @@ "Cliccare per annullare. \n" "Tasto M per mostrare/nascondere la finestra di dialogo" -#: f.tools.cc:2371 f.widgets.cc:513 +#: f.tools.cc:2391 f.widgets.cc:514 msgid "Magnify Image" msgstr "Lente d'ingrandimento" -#: f.tools.cc:2380 +#: f.tools.cc:2400 msgid "X-size" msgstr "Ingrandimento" -#: f.tools.cc:2625 +#: f.tools.cc:2645 msgid "Darkest and Brightest Pixels" msgstr "Cerca pixel scuri e chiari" -#: f.tools.cc:2648 +#: f.tools.cc:2668 msgid "Dark Limit" msgstr "Più scuri di..." -#: f.tools.cc:2649 +#: f.tools.cc:2669 msgid "Bright Limit" msgstr "Più chiari di..." -#: f.tools.cc:2744 +#: f.tools.cc:2764 msgid "" "Brightness should show a gradual ramp \n" "extending all the way to the edges." @@ -3201,112 +3328,144 @@ "Le barre dovrebbero mostrare una gradualità\n" "in tutta la loro estensione." -#: f.tools.cc:2840 f.widgets.cc:516 +#: f.tools.cc:2860 f.widgets.cc:517 msgid "Monitor Gamma" msgstr "Gamma dello schermo" -#: f.tools.cc:2900 +#: f.tools.cc:2920 msgid "Available Translations" msgstr "Traduzioni disponibili" -#: f.tools.cc:2904 +#: f.tools.cc:2924 msgid "Set Language" msgstr "Cambia lingua" -#: f.tools.cc:3039 f.widgets.cc:519 -msgid "Find Duplicate Images" -msgstr "Trova immagini duplicate" +#: f.tools.cc:3064 f.widgets.cc:520 +msgid "Calibrate Printer" +msgstr "" -#: f.tools.cc:3044 -msgid "pixel difference" -msgstr "Differenza di pixel" +#: f.tools.cc:3087 +msgid "print color chart" +msgstr "" -#: f.tools.cc:3047 -msgid "pixel count" -msgstr "Conteggio pixel" +#: f.tools.cc:3088 +msgid "scan and save color chart" +msgstr "" -#: f.tools.cc:3050 -msgid "Images:" -msgstr "Immagini:" +#: f.tools.cc:3089 +msgid "align and trim color chart" +msgstr "" -#: f.tools.cc:3051 -msgid "searching ..." -msgstr "Ricerca in corso..." +#: f.tools.cc:3090 +msgid "open and process color chart" +msgstr "" -#: f.tools.cc:3053 -msgid "Duplicates:" -msgstr "Duplicate:" +#: f.tools.cc:3091 +msgid "print image with revised colors" +msgstr "" -#: f.tools.cc:3071 +#: f.tools.cc:3258 #, c-format -msgid "only %d image thumbnails found" -msgstr "Trovate solo %d miniature" +msgid "" +"Scan the printed color chart. \n" +"Save in %s/" +msgstr "" -#: f.widgets.cc:112 -msgid "TOP" -msgstr "CIMA" +#: f.tools.cc:3272 +msgid "" +"Open and edit the scanned color chart file. \n" +"Remove any skew or rotation caused by the scanner. \n" +"Trim off all margins. Be careful not to cut off \n" +"any color tile edges or leave any white margins." +msgstr "" -#: f.widgets.cc:115 -msgid "Album" +#: f.tools.cc:3308 +msgid "Open the trimmed color chart file" +msgstr "" + +#: f.tools.cc:3405 +msgid "" +"Set the file name and location \n" +"for the output color map file." +msgstr "" + +#: f.tools.cc:3440 +msgid "Color map file to use" msgstr "" -#: f.widgets.cc:169 +#: f.tools.cc:3461 +msgid "Select the image file to print." +msgstr "" + +#: f.tools.cc:3588 +msgid "Image colors are converted for printing." +msgstr "" + +#: f.widgets.cc:111 +msgid "Album" +msgstr "Album" + +#: f.widgets.cc:113 +msgid "TOP" +msgstr "CIMA" + +#: f.widgets.cc:165 msgid "Current Image File (key F)" msgstr "Immagine corrente (tasto F)" -#: f.widgets.cc:170 +#: f.widgets.cc:166 msgid "Thumbnail Gallery (key G)" msgstr "Galleria miniature (tasto G)" -#: f.widgets.cc:171 +#: f.widgets.cc:167 msgid "World Maps (key W)" msgstr "Mappa del mondo (tasto W)" -#: f.widgets.cc:174 +#: f.widgets.cc:170 msgid "Favorite Functions" msgstr "Funzioni preferite" -#: f.widgets.cc:175 +#: f.widgets.cc:171 msgid "File: Open, RAW, Rename, Trash, Print" -msgstr "" +msgstr "File: apri, RAW, Rinomina, Cestina, Stampa" -#: f.widgets.cc:176 +#: f.widgets.cc:172 msgid "Save modified image file to disk" msgstr "Salva su disco l'immagine modificata" -#: f.widgets.cc:177 +#: f.widgets.cc:173 msgid "Open previous or next file (left/right mouse click)" msgstr "Aprire il file precedente o successivo (clic sinistro/destro)" -#: f.widgets.cc:178 +#: f.widgets.cc:174 msgid "Metadata: Captions, Tags, Ratings, Geotags, Search ... " msgstr "Metadati: Titoli, Etichette, Punteggi, Geotags, Ricerca..." -#: f.widgets.cc:179 +#: f.widgets.cc:175 msgid "Areas: Select areas to edit, copy and paste" msgstr "Aree: selezione aree per edit, copia e incolla" -#: f.widgets.cc:180 +#: f.widgets.cc:176 msgid "Edit: Trim, Rotate, Resize, Brightness, Contrast, Text ..." msgstr "Edit: Ritaglia, Ruota, Ridimensiona, Luminosità, Contrasto, Scritte..." -#: f.widgets.cc:181 +#: f.widgets.cc:177 msgid "Repair: Sharpen, Noise, Red-eyes, Color, Paint, Clone ..." msgstr "Ripara: Nitidezza, Disturbo, Occhi rossi, Colore, Dipinto, Clona..." -#: f.widgets.cc:182 +#: f.widgets.cc:178 msgid "Bend: Fix Perspective, Bend/Warp image ..." msgstr "Deforma: Correggi prospettiva, Raddrizza/Distorce..." -#: f.widgets.cc:183 +#: f.widgets.cc:179 msgid "Effects: Special Effects, Arty Transforms" msgstr "Effetti: effetti speciali, trasformazioni artistiche" -#: f.widgets.cc:184 +#: f.widgets.cc:180 msgid "Combine: HDR, HDF, Panorama, Stack, Mashup" msgstr "Combina: HDR, HDF, Panorama, Impila, Componi" -#: f.widgets.cc:185 +#: f.widgets.cc:181 msgid "" "Undo or Redo one edit (left/right mouse click) \n" " hold key A to include all edits" @@ -3314,1124 +3473,1096 @@ "Annulla o ripeti un'operazione (clic sinistro/destro)\n" "Tenere premuto il tasto 'A' per agire su tutte le modifiche" -#: f.widgets.cc:187 +#: f.widgets.cc:183 msgid "Tools: Index, Options, Shortcuts, Magnify ..." -msgstr "" +msgstr "Strumenti: Indici, Opzioni, Scorciatoie, Lente, ..." -#: f.widgets.cc:188 +#: f.widgets.cc:184 msgid "Help: Quick Start, User Guide, Recent Changes ..." msgstr "Aiuto: Guida rapida, Manuale utente, Ultime novità..." -#: f.widgets.cc:191 +#: f.widgets.cc:187 msgid "Set gallery from current image file" msgstr "Imposta la galleria dall'immagine corrente" -#: f.widgets.cc:192 +#: f.widgets.cc:188 msgid "Albums: Manage Albums, Slide Show, Desktop Background" -msgstr "" +msgstr "Album: Gestione, Slide show, Sfondo desktop" -#: f.widgets.cc:193 +#: f.widgets.cc:189 msgid "go to bookmarked image" msgstr "Va a un segnalibro" -#: f.widgets.cc:194 +#: f.widgets.cc:190 msgid "increase thumbnail size" msgstr "Aumenta la dimensione delle miniature" -#: f.widgets.cc:195 +#: f.widgets.cc:191 msgid "reduce thumbnail size" msgstr "Riduci la dimensione delle miniature" -#: f.widgets.cc:196 +#: f.widgets.cc:192 msgid "change sort order" msgstr "Cambia ordinamento" -#: f.widgets.cc:197 +#: f.widgets.cc:193 msgid "jump to beginning (top)" msgstr "Salta alla cima" -#: f.widgets.cc:198 +#: f.widgets.cc:194 msgid "jump to end (bottom)" msgstr "Salta al fondo" -#: f.widgets.cc:199 +#: f.widgets.cc:195 msgid "previous page" msgstr "Pagina precedente" -#: f.widgets.cc:200 +#: f.widgets.cc:196 msgid "next page" msgstr "Pagina successiva" -#: f.widgets.cc:201 +#: f.widgets.cc:197 msgid "slow scroll" msgstr "Scorrimento lento" -#: f.widgets.cc:202 +#: f.widgets.cc:198 msgid "Batch conversion, metadata, RAW processing" -msgstr "" +msgstr "Conversioni in massa, metadati, file RAW" -#: f.widgets.cc:205 +#: f.widgets.cc:201 msgid "Choose a map for image locations" msgstr "Scegliere una mappa per i luoghi delle immagini" -#: f.widgets.cc:206 +#: f.widgets.cc:202 msgid "Set image search radius for map click" msgstr "Imposta raggio di ricerca per clic su mappa" -#: f.widgets.cc:209 +#: f.widgets.cc:205 msgid "Open another window" msgstr "Apri altra finestra" -#: f.widgets.cc:210 +#: f.widgets.cc:206 msgid "Open a new image file" msgstr "Apri un ulteriore file" -#: f.widgets.cc:211 +#: f.widgets.cc:207 msgid "Open the previously seen file" msgstr "Apri il file precedente" -#: f.widgets.cc:212 +#: f.widgets.cc:208 msgid "Open a recently seen file" msgstr "Apri un file recente" -#: f.widgets.cc:213 +#: f.widgets.cc:209 msgid "Open a newly added file" msgstr "Apri una immagine aggiunta" -#: f.widgets.cc:214 f.widgets.cc:215 +#: f.widgets.cc:210 f.widgets.cc:211 msgid "Open and edit a camera RAW file" msgstr "Apri un file RAW" -#: f.widgets.cc:216 +#: f.widgets.cc:212 msgid "Change the image file name" msgstr "Rinomina il file" -#: f.widgets.cc:217 +#: f.widgets.cc:213 msgid "Create a blank image" msgstr "Crea immagine nuova" -#: f.widgets.cc:218 +#: f.widgets.cc:214 msgid "Move image file to Trash" msgstr "Sposta il file nel cestino" -#: f.widgets.cc:219 +#: f.widgets.cc:215 msgid "Permanently delete image file" msgstr "Elimina permanentemente il file" -#: f.widgets.cc:220 +#: f.widgets.cc:216 msgid "Print the current image" msgstr "Stampa l'immagine corrente" -#: f.widgets.cc:221 f.widgets.cc:402 +#: f.widgets.cc:217 f.widgets.cc:401 msgid "Quit Fotoxx" msgstr "Esci da Fotoxx" -#: f.widgets.cc:224 +#: f.widgets.cc:220 msgid "List a few key metadata items" msgstr "Mostra alcuni metadati di base" -#: f.widgets.cc:225 +#: f.widgets.cc:221 msgid "List all metadata items" msgstr "Mostra tutti i metadati" -#: f.widgets.cc:226 +#: f.widgets.cc:222 msgid "(Toggle) show captions and comments" msgstr "Titoli e commenti sulla foto" -#: f.widgets.cc:227 +#: f.widgets.cc:223 msgid "Edit image tags/caption/rating ..." msgstr "Modifica etichette/titolo/votazione..." -#: f.widgets.cc:228 +#: f.widgets.cc:224 msgid "Edit any image metadata" msgstr "Modifica qualsiasi metadato dell'immagine" -#: f.widgets.cc:229 +#: f.widgets.cc:225 msgid "Remove all metadata from an image" msgstr "Rimuove tutti i metadati da un'immagine" -#: f.widgets.cc:230 +#: f.widgets.cc:226 msgid "Add/remove tags for multiple images" msgstr "Aggiungi/togli etichette in massa" -#: f.widgets.cc:231 +#: f.widgets.cc:227 msgid "Convert tag names for all images" -msgstr "" +msgstr "Converte nomi etichette per tutte le immagini" -#: f.widgets.cc:232 +#: f.widgets.cc:228 msgid "Add/change/delete metadata for multiple images" -msgstr "" +msgstr "Aggiunge/cambia/elimina metadati in diverse immagini " -#: f.widgets.cc:233 +#: f.widgets.cc:229 msgid "Edit image location and geotags" msgstr "Modifica luogo e Geotags dell'immagine" -#: f.widgets.cc:234 +#: f.widgets.cc:230 msgid "Add/revise geotags for multiple images" -msgstr "" +msgstr "Aggiungi/modifica geotag per diverse immagini" -#: f.widgets.cc:235 +#: f.widgets.cc:231 msgid "Find all images for a location [date]" msgstr "Cerca tutte le immagini di un luogo/data" -#: f.widgets.cc:236 +#: f.widgets.cc:232 msgid "Find images meeting select criteria" msgstr "Cerca immagini con determinati criteri" -#: f.widgets.cc:239 +#: f.widgets.cc:235 msgid "Select object or area for editing" msgstr "Seleziona oggetto o area da modificare" -#: f.widgets.cc:240 +#: f.widgets.cc:236 msgid "Show (outline) existing area" msgstr "Mostra il contorno dell'area definita" -#: f.widgets.cc:241 +#: f.widgets.cc:237 msgid "Hide existing area" msgstr "Nascondi l'area definita" -#: f.widgets.cc:242 +#: f.widgets.cc:238 msgid "Enable area for editing" msgstr "Abilita area alle modifiche" -#: f.widgets.cc:243 +#: f.widgets.cc:239 msgid "Disable area for editing" msgstr "Disabilita area per modifiche" -#: f.widgets.cc:244 +#: f.widgets.cc:240 msgid "Reverse existing area" msgstr "Inverti l'area definita" -#: f.widgets.cc:245 +#: f.widgets.cc:241 msgid "Erase existing area" msgstr "Cancella area" -#: f.widgets.cc:246 -msgid "Open a file and paste as area into image" +#: f.widgets.cc:242 +msgid "Copy area for later pasting into image" msgstr "" -#: f.widgets.cc:247 -msgid "Save area to a file with transparency" +#: f.widgets.cc:243 +msgid "Paste previously copied area into image" msgstr "" -#: f.widgets.cc:250 +#: f.widgets.cc:244 +msgid "Open a file and paste as area into image" +msgstr "Apre un file e incolla come area" + +#: f.widgets.cc:245 +msgid "Save area to a file with transparency" +msgstr "Salva area in un file con trasparenza" + +#: f.widgets.cc:248 msgid "Trim/Crop margins and/or Rotate" msgstr "Regola/ritaglia margini e/o ruota" -#: f.widgets.cc:251 +#: f.widgets.cc:249 msgid "Upright a rotated image" msgstr "Raddrizza un'immagine (se ruotata)" -#: f.widgets.cc:252 f.widgets.cc:253 +#: f.widgets.cc:250 f.widgets.cc:251 msgid "Fast auto enhance that may work OK" msgstr "Auto correzione che potrebbe anche funzionare bene..." -#: f.widgets.cc:254 +#: f.widgets.cc:252 msgid "Adjust brightness, contrast, color" msgstr "Correggi luminosità contrasto e colore" -#: f.widgets.cc:255 +#: f.widgets.cc:253 msgid "Add local contrast, enhance details" msgstr "Aggiungi contrasto locale (più dettagli)" -#: f.widgets.cc:256 +#: f.widgets.cc:254 msgid "Adjust brightness distribution" msgstr "Regola distribuzione della luminosità" -#: f.widgets.cc:257 +#: f.widgets.cc:255 msgid "Flatten zonal brightness distribution" -msgstr "" +msgstr "Regola luminosità a zone" -#: f.widgets.cc:258 +#: f.widgets.cc:256 msgid "Change pixel dimensions" msgstr "Modifica le dimensioni in pixel" -#: f.widgets.cc:259 +#: f.widgets.cc:257 msgid "Mirror image horizontally or vertically" msgstr "Rispecchia in orizzontale o verticale" -#: f.widgets.cc:260 +#: f.widgets.cc:258 msgid "Write text on image" msgstr "Disegna scritte sull'immagine" -#: f.widgets.cc:261 +#: f.widgets.cc:259 msgid "Write lines or arrows on image" msgstr "Aggiunge linee o frecce sull'immagine" -#: f.widgets.cc:262 +#: f.widgets.cc:260 msgid "Fix brightness uniformity across image" msgstr "Imposta l'uniformità della luce lungo l'immagine" -#: f.widgets.cc:263 +#: f.widgets.cc:261 msgid "Paint edit function gradually with mouse" msgstr "Applica una funzione gradualmente col mouse" -#: f.widgets.cc:264 +#: f.widgets.cc:262 msgid "Leverage edits by brightness or color" msgstr "Modula la funzione corrente secondo luminosità/colore" -#: f.widgets.cc:265 +#: f.widgets.cc:263 msgid "Edit plugins menu or run a plugin function" msgstr "Modifica menu plugin o invoca una funzione" -#: f.widgets.cc:268 +#: f.widgets.cc:266 msgid "Make the image look sharper" msgstr "Produci un'immagine più dettagliata" -#: f.widgets.cc:269 +#: f.widgets.cc:267 msgid "Make the image look fuzzy" msgstr "Produci un'immagine più imprecisa" -#: f.widgets.cc:270 +#: f.widgets.cc:268 msgid "Filter noise from low-light photos" msgstr "Elimina disturbi da foto con poca luce" -#: f.widgets.cc:271 +#: f.widgets.cc:269 msgid "Remove unwanted objects" msgstr "Elimina oggetti non voluti" -#: f.widgets.cc:272 +#: f.widgets.cc:270 msgid "Fix red-eyes from electronic flash" msgstr "Correggi gli occhi rossi a causa del flash" -#: f.widgets.cc:273 +#: f.widgets.cc:271 msgid "Paint image pixels using the mouse" msgstr "Disegna pixel con il mouse" -#: f.widgets.cc:274 +#: f.widgets.cc:272 msgid "Paint image transparency using the mouse" -msgstr "" +msgstr "Pennella la trasparenza con il mouse" -#: f.widgets.cc:275 +#: f.widgets.cc:273 msgid "Make BW/color, negative/positive, sepia" msgstr "Trasforma in B/N o a colori, negativo, seppia..." -#: f.widgets.cc:276 +#: f.widgets.cc:274 msgid "Shift/convert colors into other colors" msgstr "Regola i singoli componenti del colore" -#: f.widgets.cc:277 +#: f.widgets.cc:275 msgid "Adjust color using RGB or CMY colors" -msgstr "" +msgstr "Regola colori usando RGB o CMY" -#: f.widgets.cc:278 +#: f.widgets.cc:276 msgid "Adjust color using HSL colors" -msgstr "" +msgstr "Regola colori usando HSL" -#: f.widgets.cc:279 +#: f.widgets.cc:277 msgid "Adjust color in selected image areas" msgstr "Regola il colore in aree selezionate" -#: f.widgets.cc:280 +#: f.widgets.cc:278 msgid "Match colors on one image with another" msgstr "Allinea il colore di un'immagine con un'altra" -#: f.widgets.cc:281 +#: f.widgets.cc:279 msgid "Convert to another color profile" msgstr "Converte a un altro profilo di colore" -#: f.widgets.cc:282 +#: f.widgets.cc:280 msgid "Remove dust spots from scanned slides" msgstr "Elimina le macchie di polvere da diapositive scansionate" -#: f.widgets.cc:283 +#: f.widgets.cc:281 msgid "Smoothen edges with jaggies" msgstr "Sfuoca bordi sgranati" -#: f.widgets.cc:284 +#: f.widgets.cc:282 msgid "Reduce Chromatic Abberation" msgstr "Corregge le barre colorate estranee alla foto" -#: f.widgets.cc:285 +#: f.widgets.cc:283 msgid "Erase known hot and dark pixels" msgstr "" "Cancella pixel difettosi della fotocamera, detti Hot-caldi o Dark-scuri " -#: f.widgets.cc:288 +#: f.widgets.cc:286 msgid "Remove curvature, esp. panoramas" msgstr "Elimina la curvatura, specialmente da panorama" -#: f.widgets.cc:289 +#: f.widgets.cc:287 msgid "Straighten objects seen from an angle" msgstr "Raddrizza oggetti visti da un angolo" -#: f.widgets.cc:290 +#: f.widgets.cc:288 msgid "Distort image areas using the mouse" msgstr "Distorci un'area usando il mouse" -#: f.widgets.cc:291 f.widgets.cc:292 f.widgets.cc:293 +#: f.widgets.cc:289 f.widgets.cc:290 f.widgets.cc:291 msgid "Distort the whole image using the mouse" msgstr "Distorci l'intera foto usando il mouse" -#: f.widgets.cc:294 +#: f.widgets.cc:292 msgid "Flatten a photographed book page" msgstr "Appiattisce la foto della pagina di un libro" -#: f.widgets.cc:297 +#: f.widgets.cc:295 msgid "Reduce color depth (posterize)" msgstr "Riduce la risoluzione dei colori (poster)" -#: f.widgets.cc:298 +#: f.widgets.cc:296 msgid "Convert to pencil sketch" msgstr "Converte in disegno a matita" -#: f.widgets.cc:299 +#: f.widgets.cc:297 msgid "Convert to line drawing (edge detection)" msgstr "Converte in disegno a linee (riconoscimento bordi)" -#: f.widgets.cc:300 +#: f.widgets.cc:298 msgid "Convert to solid color drawing" msgstr "Converte in disegno con colori piatti" -#: f.widgets.cc:301 +#: f.widgets.cc:299 msgid "Graduated Blur depending on contrast" msgstr "Sfumatura graduale basata sul contrasto" -#: f.widgets.cc:302 +#: f.widgets.cc:300 msgid "Create an embossed or 3D appearance" msgstr "Crea un effetto scolpito o 3D" -#: f.widgets.cc:303 +#: f.widgets.cc:301 msgid "Convert to square tiles" msgstr "Crea un effetto piastrellato" -#: f.widgets.cc:304 +#: f.widgets.cc:302 msgid "Convert to dots (Roy Lichtenstein effect)" msgstr "Crea un effetto puntinato (Roy Lichtenstein)" -#: f.widgets.cc:305 +#: f.widgets.cc:303 msgid "Convert into a simulated painting" msgstr "Crea un effetto di dipinto a olio" -#: f.widgets.cc:306 +#: f.widgets.cc:304 msgid "Change brightness or color radially" msgstr "Cambia luminosità o contrasto in modo radiale" -#: f.widgets.cc:307 +#: f.widgets.cc:305 msgid "Add texture to an image" msgstr "Aggiungi un motivo (texture)" -#: f.widgets.cc:308 +#: f.widgets.cc:306 msgid "Tile image with a repeating pattern" msgstr "Sovraimprime all'immagine un motivo ripetuto" -#: f.widgets.cc:309 +#: f.widgets.cc:307 msgid "Create a mosaic with tiles made from all images" msgstr "Crea un mosaico con tessere da tutte le immagini" -#: f.widgets.cc:310 +#: f.widgets.cc:308 msgid "Process an image using a custom kernel" msgstr "Elabora un'immagine applicando una matrice utente" -#: f.widgets.cc:311 +#: f.widgets.cc:309 msgid "Warp an image with a wave pattern" msgstr "Distorce immagine con motivo di onde" -#: f.widgets.cc:312 +#: f.widgets.cc:310 msgid "Blur an image in the direction of mouse drags" -msgstr "" +msgstr "Sfuma un'immagine in direzione dei trascinamenti col mouse" -#: f.widgets.cc:315 +#: f.widgets.cc:313 msgid "Combine bright/dark images for better detail" msgstr "Combina immagini chiare/scure per guadagnare in dettaglio" -#: f.widgets.cc:316 +#: f.widgets.cc:314 msgid "Combine near/far focus images for deeper focus" msgstr "Combina immagini con profondità diverse per ampliare la messa a fuoco" -#: f.widgets.cc:317 +#: f.widgets.cc:315 msgid "Combine images to erase passing people, etc." msgstr "Combina immagini per eliminare oggetti (es. passanti, automobili...)" -#: f.widgets.cc:318 +#: f.widgets.cc:316 msgid "Combine noisy images into a low-noise image" msgstr "Combina immagini disturbate in una con minor disturbo" -#: f.widgets.cc:319 +#: f.widgets.cc:317 msgid "Combine images into a panorama" msgstr "Combina immagini lato a lato per creare un panorama" -#: f.widgets.cc:320 +#: f.widgets.cc:318 msgid "Combine images into a vertical panorama" msgstr "Combina immagini in un panorama verticale" -#: f.widgets.cc:321 +#: f.widgets.cc:319 msgid "Combine images into a panorama (panorama tools)" msgstr "Combina immagini lato a lato per creare un panorama (panorama tools)" -#: f.widgets.cc:322 +#: f.widgets.cc:320 msgid "Arrange images and text in a layout (montage)" -msgstr "" +msgstr "Dispone immagini e testi in un collage" -#: f.widgets.cc:325 +#: f.widgets.cc:323 msgid "Index new files and make thumbnails" msgstr "Aggiorna indici e miniature di nuovi file" -#: f.widgets.cc:326 +#: f.widgets.cc:324 msgid "Change user preferences" msgstr "Modifica le preferenze" -#: f.widgets.cc:327 +#: f.widgets.cc:325 msgid "Change Keyboard Shortcut Keys" msgstr "Modifica le scorciatoie da tastiera" -#: f.widgets.cc:328 +#: f.widgets.cc:326 msgid "Show a brightness distribution graph" msgstr "Mostra il grafico di distribuzione della luminosità" -#: f.widgets.cc:329 +#: f.widgets.cc:327 msgid "Show or revise grid lines" msgstr "Mostra o cambia la griglia" -#: f.widgets.cc:330 +#: f.widgets.cc:328 msgid "Change color of foreground lines" msgstr "Cambia colore delle linee in primo piano" -#: f.widgets.cc:331 +#: f.widgets.cc:329 msgid "Show RGB colors at mouse click" msgstr "Mostra i componenti colore RGB al clic" -#: f.widgets.cc:332 +#: f.widgets.cc:330 msgid "Magnify image around the mouse position" msgstr "Ingrandisce temporaneamente una porzione d'immagine" -#: f.widgets.cc:333 +#: f.widgets.cc:331 msgid "Highlight darkest and brightest pixels" msgstr "Individua i pixel di luminosità estrema" -#: f.widgets.cc:334 +#: f.widgets.cc:332 msgid "Chart to adjust monitor color" msgstr "Grafico per regolare il colore dello schermo" -#: f.widgets.cc:335 +#: f.widgets.cc:333 msgid "Chart to adjust monitor gamma" msgstr "Grafico per regolare la gamma dello schermo" -#: f.widgets.cc:336 +#: f.widgets.cc:334 msgid "Change the GUI language" msgstr "Cambia la lingua dell'interfaccia" -#: f.widgets.cc:337 +#: f.widgets.cc:335 msgid "Report missing translations" msgstr "Segnala traduzioni mancanti" -#: f.widgets.cc:338 -msgid "Search all image files and report duplicates" -msgstr "Analizza tutte le immagini e segnala i duplicati" +#: f.widgets.cc:336 +msgid "Calibrate printer colors" +msgstr "" -#: f.widgets.cc:339 +#: f.widgets.cc:337 msgid "Memory and CPU (to terminal/logfile)" msgstr "Memoria e CPU (al terminale/giornale)" -#: f.widgets.cc:343 +#: f.widgets.cc:341 msgid "Rename/convert/resize/move multiple files" msgstr "Rinomina/converte/ridimensiona/sposta file multipli" -#: f.widgets.cc:344 +#: f.widgets.cc:342 msgid "Upright multiple rotated image files" msgstr "Raddrizza immagini in massa" -#: f.widgets.cc:345 +#: f.widgets.cc:343 msgid "Delete or Trash multiple files" -msgstr "" +msgstr "Elimina o cestina più immagini" -#: f.widgets.cc:346 +#: f.widgets.cc:344 msgid "Convert camera RAW files using DCraw" msgstr "Converte file RAW usando DCraw" -#: f.widgets.cc:347 +#: f.widgets.cc:345 msgid "Convert camera RAW files using Raw Therapee" msgstr "Converte file RAW usando Raw Therapee" -#: f.widgets.cc:348 +#: f.widgets.cc:346 msgid "Burn selected image files to CD or DVD" msgstr "Incide le immagini selezionate su CD/DVD" -#: f.widgets.cc:352 +#: f.widgets.cc:347 +msgid "Search all image files and report duplicates" +msgstr "Analizza tutte le immagini e segnala i duplicati" + +#: f.widgets.cc:351 msgid "Quick Start mini-guide" msgstr "Miniguida rapida" -#: f.widgets.cc:353 +#: f.widgets.cc:352 msgid "Read the user guide" msgstr "Visualizza la guida utente" -#: f.widgets.cc:354 +#: f.widgets.cc:353 msgid "Recent user guide changes" msgstr "Visualizza gli ultimi cambiamenti alla guida utente" -#: f.widgets.cc:355 +#: f.widgets.cc:354 msgid "Summary of image edit functions" msgstr "Visualizza un sommario delle funzioni disponibili" -#: f.widgets.cc:356 +#: f.widgets.cc:355 msgid "Technical installation notes" msgstr "Mostra note tecniche aggiuntive su Fotoxx" -#: f.widgets.cc:357 +#: f.widgets.cc:356 msgid "List updates by Fotoxx version" msgstr "Mostra la storia delle versioni e loro contenuti" -#: f.widgets.cc:358 +#: f.widgets.cc:357 msgid "View the log file and error messages" msgstr "Mostra il file di log: i messaggi generati durante l'avviamento" -#: f.widgets.cc:359 +#: f.widgets.cc:358 msgid "How to do Fotoxx translations" msgstr "Mostra come fare la traduzione in altre lingue" -#: f.widgets.cc:360 +#: f.widgets.cc:359 msgid "Show the Fotoxx web page" msgstr "Mostra la home page internet di fotoxx" -#: f.widgets.cc:361 +#: f.widgets.cc:360 msgid "Version, license, contact, credits" msgstr "Versione, licenza, contatti, riconoscimenti" -#: f.widgets.cc:364 +#: f.widgets.cc:363 msgid "Organize images into albums" msgstr "Organizza immagini in album" -#: f.widgets.cc:365 +#: f.widgets.cc:364 msgid "Start a slide show" msgstr "Inizia uno slideshow " -#: f.widgets.cc:366 +#: f.widgets.cc:365 msgid "Set desktop image from current Fotoxx image" -msgstr "" +msgstr "Imposta sfondo desktop con l'immagine corrente" -#: f.widgets.cc:367 +#: f.widgets.cc:366 msgid "Cycle desktop images from a Fotoxx album" -msgstr "" +msgstr "Cicla sfondo desktop da un album di Fotoxx" -#: f.widgets.cc:389 +#: f.widgets.cc:388 msgid "New Window" msgstr "Nuova finestra" -#: f.widgets.cc:391 +#: f.widgets.cc:390 msgid "Open Previous File" msgstr "Apri l'immagine precedente" -#: f.widgets.cc:392 +#: f.widgets.cc:391 msgid "Recently Seen Images" msgstr "Immagini viste di recente" -#: f.widgets.cc:393 +#: f.widgets.cc:392 msgid "Newest Images" msgstr "Immagini più nuove" -#: f.widgets.cc:394 +#: f.widgets.cc:393 msgid "Open RAW (ufraw)" -msgstr "" +msgstr "Apre file RAW (con ufraw)" -#: f.widgets.cc:395 +#: f.widgets.cc:394 msgid "Open RAW (Raw Therapee)" -msgstr "" +msgstr "Apre file RAW (con Raw Therapee)" -#: f.widgets.cc:397 +#: f.widgets.cc:396 msgid "New Blank Image" msgstr "Nuova immagine" -#: f.widgets.cc:399 +#: f.widgets.cc:398 msgid "Delete Image File" msgstr "Elimina file" -#: f.widgets.cc:400 +#: f.widgets.cc:399 msgid "Print Image" msgstr "Stampa immagine" -#: f.widgets.cc:401 f.widgets.cc:538 +#: f.widgets.cc:400 f.widgets.cc:543 msgid "Set Desktop Image" -msgstr "" +msgstr "Imposta sfondo desktop" -#: f.widgets.cc:405 +#: f.widgets.cc:404 msgid "View Metadata (short)" msgstr "Vedi metadati (breve)" -#: f.widgets.cc:406 +#: f.widgets.cc:405 msgid "View Metadata (long)" msgstr "Vedi metadati (completo)" -#: f.widgets.cc:407 +#: f.widgets.cc:406 msgid "Show Captions on Image" msgstr "Mostra/nasconde titoli e commenti in sovrimpressione" -#: f.widgets.cc:409 +#: f.widgets.cc:408 msgid "Edit Any Metadata" msgstr "Modifica metadati (avanzato)" -#: f.widgets.cc:412 f.widgets.cc:531 +#: f.widgets.cc:411 f.widgets.cc:534 msgid "Batch Rename Tags" -msgstr "" +msgstr "Rinomina etichette in massa" -#: f.widgets.cc:413 f.widgets.cc:532 +#: f.widgets.cc:412 f.widgets.cc:535 msgid "Batch Add/Change Metadata" -msgstr "" +msgstr "Aggiunge/Modifica metadati in massa" -#: f.widgets.cc:416 f.widgets.cc:606 +#: f.widgets.cc:415 f.widgets.cc:537 f.widgets.cc:611 msgid "Images by Geotag" -msgstr "" +msgstr "Immagini tramite Geotag" -#: f.widgets.cc:417 f.widgets.cc:607 +#: f.widgets.cc:416 f.widgets.cc:538 f.widgets.cc:612 msgid "Search Images" msgstr "Ricerca immagini" -#: f.widgets.cc:420 fotoxx.h:1156 +#: f.widgets.cc:419 fotoxx.h:1164 msgid "Select" msgstr "Seleziona" -#: f.widgets.cc:421 fotoxx.h:1158 +#: f.widgets.cc:420 fotoxx.h:1166 msgid "Show" msgstr "Visualizza" -#: f.widgets.cc:422 fotoxx.h:1112 +#: f.widgets.cc:421 fotoxx.h:1120 msgid "Hide" msgstr "Nascondi" -#: f.widgets.cc:423 fotoxx.h:1098 +#: f.widgets.cc:422 fotoxx.h:1106 msgid "Enable" msgstr "Abilita" -#: f.widgets.cc:424 fotoxx.h:1094 +#: f.widgets.cc:423 fotoxx.h:1102 msgid "Disable" msgstr "Disabilita" -#: f.widgets.cc:425 fotoxx.h:1115 +#: f.widgets.cc:424 fotoxx.h:1123 msgid "Invert" msgstr "Inverti" -#: f.widgets.cc:426 fotoxx.h:1172 +#: f.widgets.cc:425 fotoxx.h:1180 msgid "Unselect" msgstr "Deseleziona" +#: f.widgets.cc:426 +msgid "Copy Area" +msgstr "" + #: f.widgets.cc:427 -msgid "Open Area File" +msgid "Paste Area" msgstr "" #: f.widgets.cc:428 +msgid "Open Area File" +msgstr "Apri file di area" + +#: f.widgets.cc:429 msgid "Save Area File" -msgstr "" +msgstr "Salva file di area" -#: f.widgets.cc:433 +#: f.widgets.cc:434 msgid "Voodoo 1" -msgstr "" +msgstr "Voodoo 1" -#: f.widgets.cc:434 +#: f.widgets.cc:435 msgid "Voodoo 2" -msgstr "" +msgstr "Voodoo 2" -#: f.widgets.cc:436 +#: f.widgets.cc:437 msgid "Adjust Brightness Dist." -msgstr "" +msgstr "Regola distribuzione luminosità" -#: f.widgets.cc:437 f.widgets.cc:676 +#: f.widgets.cc:438 f.widgets.cc:681 msgid "Zonal Flatten" -msgstr "" +msgstr "Appiattimento a zone" -#: f.widgets.cc:441 +#: f.widgets.cc:442 msgid "Add Text" msgstr "Aggiungi scritte" -#: f.widgets.cc:442 +#: f.widgets.cc:443 msgid "Add Lines" msgstr "Aggiunge linee" -#: f.widgets.cc:445 +#: f.widgets.cc:446 msgid "Plugins" msgstr "Plugin" -#: f.widgets.cc:450 +#: f.widgets.cc:451 msgid "Denoise" msgstr "Riduci disturbo" -#: f.widgets.cc:452 +#: f.widgets.cc:453 msgid "Red Eyes" msgstr "Rimuovi occhi rossi" -#: f.widgets.cc:457 +#: f.widgets.cc:458 msgid "Adjust RGB/CMY" -msgstr "" +msgstr "Regola RGB/CMY" -#: f.widgets.cc:458 +#: f.widgets.cc:459 msgid "Adjust HSL" -msgstr "" +msgstr "Regola HSL" -#: f.widgets.cc:459 +#: f.widgets.cc:460 msgid "Brightness Ramp" msgstr "Rampe di luce/colore" -#: f.widgets.cc:461 +#: f.widgets.cc:462 msgid "Match Colors" msgstr "Allinea colori" -#: f.widgets.cc:462 +#: f.widgets.cc:463 msgid "Color Profile" msgstr "Profilo di colore" -#: f.widgets.cc:464 +#: f.widgets.cc:465 msgid "Anti-Alias" msgstr "Anti-Alias" -#: f.widgets.cc:470 +#: f.widgets.cc:471 msgid "Fix Perspective" msgstr "Correggi prospettiva" -#: f.widgets.cc:475 +#: f.widgets.cc:476 msgid "Flatten Book Page" msgstr "Appiattisci pagina" -#: f.widgets.cc:478 +#: f.widgets.cc:479 msgid "Color Depth" msgstr "Risoluzione del colore" -#: f.widgets.cc:479 +#: f.widgets.cc:480 msgid "Sketch" msgstr "Schizzo" -#: f.widgets.cc:483 +#: f.widgets.cc:484 msgid "Embossing" msgstr "Bassorilievo" -#: f.widgets.cc:485 +#: f.widgets.cc:486 msgid "Dots" msgstr "Puntinismo" -#: f.widgets.cc:486 +#: f.widgets.cc:487 msgid "Painting" msgstr "Dipinto" -#: f.widgets.cc:488 +#: f.widgets.cc:489 msgid "Texture" msgstr "Aggiungi disturbo" -#: f.widgets.cc:490 +#: f.widgets.cc:491 msgid "Mosaic" msgstr "Mosaico" -#: f.widgets.cc:496 +#: f.widgets.cc:497 msgid "High Dynamic Range" msgstr "Combina immagini (alta dinamica - HDR)" -#: f.widgets.cc:497 +#: f.widgets.cc:498 msgid "High Depth of Field" msgstr "Combina immagini (grande profondità - HDF)" -#: f.widgets.cc:498 +#: f.widgets.cc:499 msgid "Stack/Paint" msgstr "Sovrapponi (interattivo con mouse)" -#: f.widgets.cc:499 +#: f.widgets.cc:500 msgid "Stack/Noise" msgstr "Sovrapponi (rimozione disturbo)" -#: f.widgets.cc:500 +#: f.widgets.cc:501 msgid "Panorama" msgstr "Crea un panorama" -#: f.widgets.cc:501 +#: f.widgets.cc:502 msgid "Vertical Panorama" msgstr "Panorama verticale" -#: f.widgets.cc:502 +#: f.widgets.cc:503 msgid "PT Panorama" msgstr "Panorama (usa pano tools)" -#: f.widgets.cc:503 +#: f.widgets.cc:504 msgid "Mashup" msgstr "Collage" -#: f.widgets.cc:508 +#: f.widgets.cc:509 msgid "Keyboard Shortcuts" msgstr "Scorciatoie di tastiera" -#: f.widgets.cc:509 +#: f.widgets.cc:510 msgid "Show Brightness Dist." msgstr "Mostra distribuzione luminosità" -#: f.widgets.cc:514 +#: f.widgets.cc:515 msgid "Dark/Bright Pixels" msgstr "Punti chiari/scuri" -#: f.widgets.cc:515 +#: f.widgets.cc:516 msgid "Monitor Color" msgstr "Colore monitor" -#: f.widgets.cc:517 +#: f.widgets.cc:518 msgid "Change Language" msgstr "Cambia lingua del programma" -#: f.widgets.cc:518 +#: f.widgets.cc:519 msgid "Missing Translations" msgstr "Traduzioni mancanti" -#: f.widgets.cc:520 +#: f.widgets.cc:522 msgid "Resources" msgstr "Mostra risorse (nel terminale)" -#: f.widgets.cc:527 +#: f.widgets.cc:529 msgid "Batch RAW (DCraw)" msgstr "Conversione RAW (DCraw) in massa" -#: f.widgets.cc:528 +#: f.widgets.cc:530 msgid "Batch RAW (Raw Therapee)" msgstr "Conversione RAW (Raw Therapee) in massa" -#: f.widgets.cc:529 +#: f.widgets.cc:531 msgid "Burn Images to CD/DVD" msgstr "Masterizza immagini su CD/DVD" -#: f.widgets.cc:539 +#: f.widgets.cc:544 msgid "Cycle Desktop Image" -msgstr "" - -#: f.widgets.cc:542 fotoxx-15.08.cc:5513 -msgid "Quick Start" -msgstr "Introduzione rapida" - -#: f.widgets.cc:543 fotoxx-15.08.cc:5516 -msgid "User Guide" -msgstr "Guida utente" +msgstr "Cicla sfondo desktop" -#: f.widgets.cc:544 fotoxx-15.08.cc:5519 -msgid "User Guide Changes" -msgstr "Cronistoria della guida utente" - -#: f.widgets.cc:545 fotoxx-15.08.cc:5525 -msgid "Edit Functions Summary" -msgstr "Sommario funzioni" - -#: f.widgets.cc:546 fotoxx-15.08.cc:5522 -msgid "README" -msgstr "Read-me" - -#: f.widgets.cc:547 fotoxx-15.08.cc:5528 -msgid "Change Log" -msgstr "Cronistoria delle modifiche" - -#: f.widgets.cc:548 fotoxx-15.08.cc:5531 -msgid "Log File" -msgstr "Mostra file di log" - -#: f.widgets.cc:549 fotoxx-15.08.cc:5534 -msgid "Translations" -msgstr "Come tradurre" - -#: f.widgets.cc:550 fotoxx-15.08.cc:5537 -msgid "Home Page" -msgstr "Sito WEB" - -#: f.widgets.cc:551 fotoxx-15.08.cc:5540 -msgid "About" -msgstr "Info" - -#: f.widgets.cc:556 f.widgets.cc:579 f.widgets.cc:601 +#: f.widgets.cc:561 f.widgets.cc:584 f.widgets.cc:606 msgid "Gallery" msgstr "Galleria" -#: f.widgets.cc:557 f.widgets.cc:580 f.widgets.cc:602 +#: f.widgets.cc:562 f.widgets.cc:585 f.widgets.cc:607 msgid "World Maps" msgstr "Mappe del mondo" -#: f.widgets.cc:559 +#: f.widgets.cc:564 msgid "Favorites" msgstr "Preferiti" -#: f.widgets.cc:561 fotoxx.h:1152 +#: f.widgets.cc:566 fotoxx.h:1160 msgid "Save" msgstr "Salva" -#: f.widgets.cc:562 +#: f.widgets.cc:567 msgid "Prev/Next" msgstr "Prec./Pross." -#: f.widgets.cc:563 +#: f.widgets.cc:568 msgid "Metadata" msgstr "Metadati" -#: f.widgets.cc:564 +#: f.widgets.cc:569 msgid "Areas" msgstr "Aree" -#: f.widgets.cc:565 fotoxx.h:1097 +#: f.widgets.cc:570 fotoxx.h:1105 msgid "Edit" msgstr "Modifica" -#: f.widgets.cc:566 +#: f.widgets.cc:571 msgid "Repair" msgstr "Correggi" -#: f.widgets.cc:567 +#: f.widgets.cc:572 msgid "Bend" msgstr "Deforma" -#: f.widgets.cc:568 +#: f.widgets.cc:573 msgid "Effects" msgstr "Effetti" -#: f.widgets.cc:569 +#: f.widgets.cc:574 msgid "Combine" msgstr "Combina" -#: f.widgets.cc:570 +#: f.widgets.cc:575 msgid "Undo/Redo" msgstr "Annulla/ripeti" -#: f.widgets.cc:571 +#: f.widgets.cc:576 msgid "Tools" msgstr "Strumenti" -#: f.widgets.cc:572 f.widgets.cc:594 fotoxx-15.08.cc:5544 fotoxx.h:1111 -msgid "Help" -msgstr "Aiuto" - -#: f.widgets.cc:582 +#: f.widgets.cc:587 msgid "Sync.G" msgstr "SincG" -#: f.widgets.cc:583 +#: f.widgets.cc:588 msgid "Albums" -msgstr "" +msgstr "Album" -#: f.widgets.cc:584 +#: f.widgets.cc:589 msgid "Bookmarks" -msgstr "" +msgstr "Segnalibri" -#: f.widgets.cc:593 +#: f.widgets.cc:598 msgid "Batch" -msgstr "" +msgstr "In massa" -#: f.widgets.cc:604 +#: f.widgets.cc:609 msgid "Choose Map" msgstr "Scegliere mappa" -#: f.widgets.cc:605 +#: f.widgets.cc:610 msgid "Search Range" msgstr "Distanza di ricerca" -#: f.widgets.cc:613 fotoxx.h:1170 +#: f.widgets.cc:618 fotoxx.h:1178 msgid "Undo" msgstr "Annulla" -#: f.widgets.cc:614 fotoxx.h:1143 +#: f.widgets.cc:619 fotoxx.h:1151 msgid "Redo" msgstr "Ripeti" -#: f.widgets.cc:655 +#: f.widgets.cc:660 msgid "Popup Image" msgstr "Comparsa immagine" -#: f.widgets.cc:656 +#: f.widgets.cc:661 msgid "Popup Image (add)" msgstr "Mostra grande" -#: f.widgets.cc:660 fotoxx.h:1146 +#: f.widgets.cc:665 fotoxx.h:1154 msgid "Rename" msgstr "Rinomina" -#: f.widgets.cc:661 +#: f.widgets.cc:666 msgid "Copy to Location" msgstr "Copia in una posizione" -#: f.widgets.cc:662 +#: f.widgets.cc:667 msgid "Move to Location" msgstr "Sposta a una posizione" -#: f.widgets.cc:663 +#: f.widgets.cc:668 msgid "Copy to Clipboard" msgstr "Copia negli appunti" -#: f.widgets.cc:664 +#: f.widgets.cc:669 msgid "Remove from Album" msgstr "Rimuovere dall'album" -#: f.widgets.cc:665 +#: f.widgets.cc:670 msgid "Cut to Image Cache" msgstr "Taglia verso verso il deposito immagini" -#: f.widgets.cc:666 +#: f.widgets.cc:671 msgid "Copy to Image Cache" msgstr "Copia nel deposito immagini" -#: f.widgets.cc:667 +#: f.widgets.cc:672 msgid "Paste Image Cache Here (clear)" msgstr "Incolla il deposito immagini qui (svuota)" -#: f.widgets.cc:668 +#: f.widgets.cc:673 msgid "Paste Image Cache Here (keep)" msgstr "Incolla il deposito immagini qui (mantiene)" -#: f.widgets.cc:669 +#: f.widgets.cc:674 msgid "Paste Current Image File Here" -msgstr "" +msgstr "Incolla qui l'immagine corrente" -#: f.widgets.cc:673 +#: f.widgets.cc:678 msgid "Voodoo Enhance" msgstr "Miglioramento magico Voodoo" -#: f.widgets.cc:675 +#: f.widgets.cc:680 msgid "Brightness Dist." msgstr "Dist. della luminosità" -#: f.widgets.cc:678 +#: f.widgets.cc:683 msgid "Select Area" msgstr "Seleziona area" -#: f.widgets.cc:681 fotoxx.h:1166 +#: f.widgets.cc:686 fotoxx.h:1174 msgid "Trash" msgstr "Cestina" -#: f.widgets.cc:806 +#: f.widgets.cc:811 msgid "Image Locations" msgstr "Locazioni delle immagini" -#: fotoxx-15.08.cc:376 +#: fotoxx-15.09.cc:361 msgid "Please install missing programs:" msgstr "Installa i programmi mancanti:" -#: fotoxx-15.08.cc:667 +#: fotoxx-15.09.cc:652 msgid "Kill active dialog?" msgstr "Terminare il dialogo corrente?" -#: fotoxx-15.08.cc:742 +#: fotoxx-15.09.cc:723 msgid "(reduced)" msgstr "(ridotto)" -#: fotoxx-15.08.cc:743 +#: fotoxx-15.09.cc:724 msgid "area active" msgstr "area attiva" -#: fotoxx-15.08.cc:744 +#: fotoxx-15.09.cc:725 msgid "dialog open" msgstr "dialogo aperto" -#: fotoxx-15.08.cc:745 -msgid "BUSY" -msgstr "" - -#: fotoxx-15.08.cc:746 +#: fotoxx-15.09.cc:726 msgid "blocked" -msgstr "" +msgstr "bloccato" -#: fotoxx-15.08.cc:796 +#: fotoxx-15.09.cc:776 msgid "edits" msgstr "modifiche" -#: fotoxx-15.08.cc:2805 +#: fotoxx-15.09.cc:2756 msgid "Exceed 50 anchor points" msgstr "Superati 50 punti di ancoraggio" -#: fotoxx-15.08.cc:3018 +#: fotoxx-15.09.cc:2969 msgid "load curve from a file" msgstr "carica curva da file" -#: fotoxx-15.08.cc:3091 +#: fotoxx-15.09.cc:3042 msgid "save curve to a file" msgstr "salva curva in un file" -#: fotoxx-15.08.cc:3161 +#: fotoxx-15.09.cc:3112 msgid "Too many edits, please save image" msgstr "Troppe modifiche: salva l'immagine" -#: fotoxx-15.08.cc:3180 +#: fotoxx-15.09.cc:3131 msgid "" "Select area not active.\n" "Continue?" @@ -4439,373 +4570,373 @@ "Selezione di area non attiva.\n" "Continuare?" -#: fotoxx-15.08.cc:3435 +#: fotoxx-15.09.cc:3385 msgid "Load settings from file" msgstr "Carica impostazioni dal file" -#: fotoxx-15.08.cc:3532 +#: fotoxx-15.09.cc:3482 msgid "file data does not fit dialog" msgstr "I dati del file non si adattano alla finestra" -#: fotoxx-15.08.cc:3542 +#: fotoxx-15.09.cc:3492 msgid "Save settings to a file" msgstr "Salva impostazioni in un file" -#: fotoxx-15.08.cc:3835 +#: fotoxx-15.09.cc:3781 msgid "This action will discard changes to current image" msgstr "Questa azione annullerà le modifiche all'immagine" -#: fotoxx-15.08.cc:3836 fotoxx-15.08.cc:3837 +#: fotoxx-15.09.cc:3782 fotoxx-15.09.cc:3783 msgid "prior function still active" msgstr "Funzione precedente ancora attiva" -#: fotoxx-15.08.cc:3838 fotoxx.h:1116 +#: fotoxx-15.09.cc:3784 fotoxx.h:1124 msgid "Keep" msgstr "Mantieni modifiche" -#: fotoxx-15.08.cc:3839 +#: fotoxx-15.09.cc:3785 msgid "Discard" msgstr "Perdi modifiche" -#: fotoxx.h:1068 +#: fotoxx.h:1076 msgid "Add" msgstr "Aggiungi" -#: fotoxx.h:1069 +#: fotoxx.h:1077 msgid "Add All" msgstr "Aggiungi tutto" -#: fotoxx.h:1071 +#: fotoxx.h:1079 msgid "Amount" msgstr "Quantità" -#: fotoxx.h:1072 +#: fotoxx.h:1080 msgid "Angle" msgstr "Angolo:" -#: fotoxx.h:1073 +#: fotoxx.h:1081 msgid "Apply" msgstr "Applica" -#: fotoxx.h:1074 +#: fotoxx.h:1082 msgid "Auto" -msgstr "" +msgstr "Auto" -#: fotoxx.h:1075 +#: fotoxx.h:1083 msgid "Black" msgstr "Nero" -#: fotoxx.h:1076 +#: fotoxx.h:1084 msgid "Blend Width" msgstr "Larghezza di sfumatura" -#: fotoxx.h:1078 zfuncs.cc:10061 +#: fotoxx.h:1086 zfuncs.cc:10054 msgid "bottom" msgstr "Basso" -#: fotoxx.h:1080 +#: fotoxx.h:1088 msgid "Browse" msgstr "Sfoglia" -#: fotoxx.h:1081 +#: fotoxx.h:1089 msgid "Cancel" msgstr "Annulla" -#: fotoxx.h:1082 +#: fotoxx.h:1090 msgid "center" msgstr "centro" -#: fotoxx.h:1083 +#: fotoxx.h:1091 msgid "Choose" msgstr "Scegli" -#: fotoxx.h:1084 +#: fotoxx.h:1092 msgid "Clear" msgstr "Pulisci" -#: fotoxx.h:1085 +#: fotoxx.h:1093 msgid "Color" msgstr "Colore" -#: fotoxx.h:1086 +#: fotoxx.h:1094 msgid "continue" -msgstr "" +msgstr "continua" -#: fotoxx.h:1088 +#: fotoxx.h:1096 msgid "Copy" msgstr "Copia" -#: fotoxx.h:1089 +#: fotoxx.h:1097 msgid "Create" msgstr "Creare" -#: fotoxx.h:1090 +#: fotoxx.h:1098 msgid "Curve File:" msgstr "File di curve:" -#: fotoxx.h:1091 +#: fotoxx.h:1099 msgid "Cut" msgstr "Taglia" -#: fotoxx.h:1092 +#: fotoxx.h:1100 msgid "Deband" msgstr "Elimina bande" -#: fotoxx.h:1093 +#: fotoxx.h:1101 msgid "Delete" msgstr "Elimina" -#: fotoxx.h:1095 +#: fotoxx.h:1103 msgid "Done" msgstr "Fatto" -#: fotoxx.h:1096 +#: fotoxx.h:1104 msgid "edge" msgstr "bordo:" -#: fotoxx.h:1099 +#: fotoxx.h:1107 msgid "Erase" msgstr "Esegui cancellatura" -#: fotoxx.h:1100 +#: fotoxx.h:1108 msgid "Fetch" msgstr "Prendi" -#: fotoxx.h:1101 +#: fotoxx.h:1109 msgid "output file already exists" msgstr "Il file di uscita esiste già" -#: fotoxx.h:1102 +#: fotoxx.h:1110 #, c-format msgid "%d files selected" msgstr "%d file selezionati" -#: fotoxx.h:1103 +#: fotoxx.h:1111 msgid "Find" msgstr "Cerca" -#: fotoxx.h:1104 +#: fotoxx.h:1112 msgid "Finish" msgstr "Termina" -#: fotoxx.h:1105 +#: fotoxx.h:1113 msgid "Flatten" msgstr "Quantità" -#: fotoxx.h:1106 +#: fotoxx.h:1114 msgid "Font" msgstr "Font" -#: fotoxx.h:1107 +#: fotoxx.h:1115 msgid "Geotags" msgstr "Geotags" -#: fotoxx.h:1109 +#: fotoxx.h:1117 msgid "Grid" msgstr "Griglia" -#: fotoxx.h:1110 +#: fotoxx.h:1118 msgid "Height" msgstr "Altezza" -#: fotoxx.h:1113 +#: fotoxx.h:1121 msgid "Images" msgstr "Immagini" -#: fotoxx.h:1114 +#: fotoxx.h:1122 msgid "Insert" msgstr "Incolla" -#: fotoxx.h:1117 zfuncs.cc:10065 +#: fotoxx.h:1125 zfuncs.cc:10058 msgid "left" msgstr "Sinistra" -#: fotoxx.h:1118 +#: fotoxx.h:1126 msgid "limit" msgstr "limite" -#: fotoxx.h:1119 +#: fotoxx.h:1127 msgid "Load" msgstr "Carica" -#: fotoxx.h:1120 +#: fotoxx.h:1128 msgid "Make" msgstr "Produci" -#: fotoxx.h:1122 +#: fotoxx.h:1130 msgid "Map" msgstr "Mappa" -#: fotoxx.h:1123 +#: fotoxx.h:1131 msgid "Max" msgstr "Massimo" -#: fotoxx.h:1124 +#: fotoxx.h:1132 msgid "Negative" msgstr "Negativo" -#: fotoxx.h:1125 +#: fotoxx.h:1133 msgid "New" msgstr "Nuovo" -#: fotoxx.h:1126 +#: fotoxx.h:1134 msgid "Next" msgstr "Prossima" -#: fotoxx.h:1127 zfuncs.cc:9147 +#: fotoxx.h:1135 zfuncs.cc:9148 msgid "No" msgstr "No" -#: fotoxx.h:1128 +#: fotoxx.h:1136 msgid "no images" msgstr "nessuna immagine" -#: fotoxx.h:1130 +#: fotoxx.h:1138 msgid "no selection" msgstr "nessuna selezione" -#: fotoxx.h:1131 +#: fotoxx.h:1139 msgid "OK" msgstr "Ok" -#: fotoxx.h:1133 +#: fotoxx.h:1141 msgid "Paste" msgstr "Incolla" -#: fotoxx.h:1134 +#: fotoxx.h:1142 msgid "Pause" msgstr "Sospendi" -#: fotoxx.h:1135 +#: fotoxx.h:1143 msgid "Percent" msgstr "Percentuale" -#: fotoxx.h:1137 +#: fotoxx.h:1145 msgid "Presets" msgstr "Fisse: " -#: fotoxx.h:1138 +#: fotoxx.h:1146 msgid "Prev" msgstr "Preced." -#: fotoxx.h:1139 +#: fotoxx.h:1147 msgid "Proceed" msgstr "Prosegui" -#: fotoxx.h:1141 +#: fotoxx.h:1149 msgid "range" msgstr "intervallo" -#: fotoxx.h:1144 +#: fotoxx.h:1152 msgid "Reduce" msgstr "Riduci" -#: fotoxx.h:1145 +#: fotoxx.h:1153 msgid "Remove" msgstr "Elimina" -#: fotoxx.h:1147 +#: fotoxx.h:1155 msgid "Replace" -msgstr "" +msgstr "Rimpiazza" -#: fotoxx.h:1148 +#: fotoxx.h:1156 msgid "Reserved" -msgstr "" +msgstr "Riservato" -#: fotoxx.h:1149 +#: fotoxx.h:1157 msgid "Reset" msgstr "Azzera" -#: fotoxx.h:1150 zfuncs.cc:10069 +#: fotoxx.h:1158 zfuncs.cc:10062 msgid "right" msgstr "Destra" -#: fotoxx.h:1151 +#: fotoxx.h:1159 msgid "Rotate" msgstr "Ruota" -#: fotoxx.h:1153 +#: fotoxx.h:1161 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:1154 +#: fotoxx.h:1162 msgid "Search" msgstr "Ricerca" -#: fotoxx.h:1155 +#: fotoxx.h:1163 msgid "Seconds" msgstr "Secondi" -#: fotoxx.h:1159 +#: fotoxx.h:1167 msgid "Size" msgstr "Dimensione" -#: fotoxx.h:1160 +#: fotoxx.h:1168 msgid "Start" msgstr "Inizio" -#: fotoxx.h:1161 +#: fotoxx.h:1169 msgid "Strength" msgstr "Intensità" -#: fotoxx.h:1162 +#: fotoxx.h:1170 msgid "Threshold" msgstr "Soglia" -#: fotoxx.h:1163 +#: fotoxx.h:1171 #, c-format msgid "exceed %d files" msgstr "più di %d file" -#: fotoxx.h:1164 zfuncs.cc:10057 +#: fotoxx.h:1172 zfuncs.cc:10050 msgid "top" msgstr "alto" -#: fotoxx.h:1165 +#: fotoxx.h:1173 msgid "Transparency" msgstr "Trasparenza:" -#: fotoxx.h:1167 +#: fotoxx.h:1175 msgid "Trim" msgstr "Ritaglia" -#: fotoxx.h:1168 +#: fotoxx.h:1176 msgid "Undo All" msgstr "Annulla tutto" -#: fotoxx.h:1169 +#: fotoxx.h:1177 msgid "Undo Last" msgstr "Annulla ultimo" -#: fotoxx.h:1171 +#: fotoxx.h:1179 msgid "Unfinish" msgstr "Ricomincia" -#: fotoxx.h:1173 +#: fotoxx.h:1181 msgid "View" msgstr "Vista" -#: fotoxx.h:1174 +#: fotoxx.h:1182 msgid "Web" msgstr "Web" -#: fotoxx.h:1175 +#: fotoxx.h:1183 msgid "White" msgstr "Bianco" -#: fotoxx.h:1176 +#: fotoxx.h:1184 msgid "Width" msgstr "Larghezza" -#: fotoxx.h:1177 +#: fotoxx.h:1185 msgid "x-offset" msgstr "Origine X:" -#: fotoxx.h:1178 +#: fotoxx.h:1186 msgid "y-offset" msgstr "Origine Y:" -#: fotoxx.h:1179 zfuncs.cc:9147 +#: fotoxx.h:1187 zfuncs.cc:9148 msgid "Yes" msgstr "Si" @@ -4822,435 +4953,71 @@ msgid "user guide not found" msgstr "Guida utente non trovata" -#: zfuncs.cc:5182 +#: zfuncs.cc:5183 #, c-format msgid "cannot open file %s" msgstr "non riesco ad aprire il file %s" -#: zfuncs.cc:5218 +#: zfuncs.cc:5219 msgid "save screen to file" msgstr "Salva schermo in un file" -#: zfuncs.cc:9223 zfuncs.cc:9724 zfuncs.cc:10044 +#: zfuncs.cc:9224 zfuncs.cc:9717 zfuncs.cc:10037 msgid "cancel" msgstr "Annulla" -#: zfuncs.cc:9685 +#: zfuncs.cc:9678 msgid "choose file" msgstr "Scegli file" -#: zfuncs.cc:9690 +#: zfuncs.cc:9683 msgid "choose files" msgstr "Scegli i file" -#: zfuncs.cc:9695 +#: zfuncs.cc:9688 msgid "save" msgstr "Salva" -#: zfuncs.cc:9701 +#: zfuncs.cc:9694 msgid "choose folder" msgstr "Scegli cartella" -#: zfuncs.cc:9706 +#: zfuncs.cc:9699 msgid "choose folders" msgstr "Scegli cartelle" -#: zfuncs.cc:9711 +#: zfuncs.cc:9704 msgid "create folder" msgstr "Crea cartella" -#: zfuncs.cc:9718 +#: zfuncs.cc:9711 msgid "hidden" msgstr "Nascosto" -#: zfuncs.cc:10044 +#: zfuncs.cc:10037 msgid "done" msgstr "Fatto" -#: zfuncs.cc:10044 zfuncs.cc:10053 +#: zfuncs.cc:10037 zfuncs.cc:10046 msgid "margins" msgstr "Margini" -#: zfuncs.cc:10074 +#: zfuncs.cc:10067 msgid "image scale" msgstr "Riscala immagine" -#: zfuncs.cc:10076 +#: zfuncs.cc:10069 msgid "percent" msgstr "percento" -#: zfuncs.cc:10083 +#: zfuncs.cc:10076 msgid "image" msgstr "immagine" -#: zfuncs.cc:10087 +#: zfuncs.cc:10080 msgid "width" msgstr "larghezza" -#: zfuncs.cc:10091 +#: zfuncs.cc:10084 msgid "height" msgstr "altezza" - -#~ msgid "Play tone" -#~ msgstr "Suona musica" - -#~ msgid "Show Caption" -#~ msgstr "Mostra titolo immagine" - -#~ msgid "Show Comments" -#~ msgstr "Mostra commenti" - -#~ msgid "Wait" -#~ msgstr "Attesa" - -#~ msgid "Zoom location" -#~ msgstr "Centro per zoom" - -#~ msgid "Transition" -#~ msgstr "Transizione" - -#~ msgid "next" -#~ msgstr "prossima" - -#~ msgid "load select area from a file" -#~ msgstr "carica l'area di selezione da file" - -#~ msgid "save select area to a file" -#~ msgstr "salva area in un file" - -#~ msgid "save select area as a PNG file" -#~ msgstr "Salva l'area selezionata come file PNG" - -#~ msgid "Darken" -#~ msgstr "Scurisci" - -#~ msgid "Brighten" -#~ msgstr "Schiarisci" - -#~ msgid "Metadata:" -#~ msgstr "Metadati:" - -#~ msgid "Comment" -#~ msgstr "Commento" - -#~ msgid "" -#~ "fix text in layout \n" -#~ " start new text" -#~ msgstr "Fissa il testo e inizia un altro" - -#~ msgid "color" -#~ msgstr "Colore" - -#~ msgid "" -#~ "area info file missing: \n" -#~ " %s" -#~ msgstr "" -#~ "File di informazioni aree mancante: \n" -#~ " %s" - -#~ msgid "index busy" -#~ msgstr "indice impegnato" - -#~ msgid "Add geotags to multiple images" -#~ msgstr "Aggiungi Geotags a più immagini" - -#~ msgid "Copy an area for later pasting" -#~ msgstr "Copia un'area per incollarla dopo" - -#~ msgid "Paste an area into the current image" -#~ msgstr "Incolla un'area nell'immagine corrente" - -#~ msgid "Open a file with a saved area" -#~ msgstr "Apri un file con un'area salvata" - -#~ msgid "Save an area to a file" -#~ msgstr "Salva l'area in un file" - -#~ msgid "Save an area to a PNG file with transparency" -#~ msgstr "Salva un'area in un file PNG con trasparenza" - -#~ msgid "Arrange multiple images on a background image" -#~ msgstr "Dispone più immagini su uno sfondo" - -#~ msgid "Save PNG" -#~ msgstr "Salva PNG" - -#~ msgid "Size:" -#~ msgstr "Dimensione:" - -#~ msgid "Image Width:" -#~ msgstr "Larghezza:" - -#~ msgid "Height:" -#~ msgstr "Altezza:" - -#~ msgid "Depth:" -#~ msgstr "Profondità:" - -#~ msgid "add directory" -#~ msgstr "aggiungi directory" - -#~ msgid "Thumbnails" -#~ msgstr "Miniature" - -#~ msgid "terminated by user" -#~ msgstr "terminato dall'utente" - -#~ msgid "" -#~ "invalid top image directory: \n" -#~ " %s" -#~ msgstr "" -#~ "Directory radice immagini invalida: \n" -#~ " %s" - -#~ msgid "thumbnails directory not .../thumbnails" -#~ msgstr "directory miniature non è .../thumbnails" - -#~ msgid "Settings" -#~ msgstr "Impostazioni" - -#~ msgid "Directory Gallery" -#~ msgstr "Galleria di una cartella" - -#~ msgid "Image Pan" -#~ msgstr "Pan immagine" - -#~ msgid "Drag" -#~ msgstr "Trascina" - -#~ msgid "Magnified" -#~ msgstr "Ingrandito" - -#~ msgid "Monitor scale" -#~ msgstr "Ingrandimento caratteri" - -#~ msgid "Make Launcher" -#~ msgstr "Crea lanciatore" - -#~ msgid "File: Sync, Open, Save, Trash, Rename, Print" -#~ msgstr "File: Sincronizza, Apri, Salva, Cestina, Rinomina, Stampa" - -#~ msgid "Create a Gnome menu and launcher" -#~ msgstr "Crea menù e lanciatore di Gnome" - -#~ msgid "Change color of area outlines" -#~ msgstr "Cambia colore dei bordi delle aree" - -#~ msgid "Remove margins from warp, panorama, etc." -#~ msgstr "Ritaglia i margini dopo Distorsione, Panorama, ..." - -#~ msgid "Sync Gallery" -#~ msgstr "Aggiorna Galleria" - -#~ msgid "Save to Disk" -#~ msgstr "Salva su disco" - -#~ msgid "User Settings" -#~ msgstr "Preferenze utente" - -#~ msgid "Menu and Launcher" -#~ msgstr "Crea menù/lanciatore" - -#~ msgid "Images by Location/Date" -#~ msgstr "Cerca per luogo/data" - -#~ msgid "Auto-Trim" -#~ msgstr "Ritaglia automaticamente" - -#~ msgid "open another directory" -#~ msgstr "Apri un'altra directory" - -#~ msgid "previous row" -#~ msgstr "Riga precedente" - -#~ msgid "next row" -#~ msgstr "Riga successiva" - -#~ msgid "Batch functions, Combine functions" -#~ msgstr "Funzioni di massa, funzioni di composizione" - -#~ msgid "Autocomplete" -#~ msgstr "Completa automaticamente" - -#~ msgid "no selection made" -#~ msgstr "Nessuna selezione presente" - -#~ msgid "no newly added files found" -#~ msgstr "trovato nessun file aggiunto" - -#~ msgid "function busy" -#~ msgstr "funzione attiva" - -#~ msgid "JPG quality 0-100" -#~ msgstr "Qualità JPG 0-100" - -#~ msgid "quality" -#~ msgstr "Qualità" - -#~ msgid "Top" -#~ msgstr "Alto" - -#~ msgid "Remove from Collection" -#~ msgstr "Rimuovi dalla collezione" - -#~ msgid "Rotate 90 degrees" -#~ msgstr "Ruota di 90 gradi" - -#~ msgid "Upright multiple files rotated 90º" -#~ msgstr "Ruota file multipli di 90°" - -#~ msgid "Organize images into collections" -#~ msgstr "Organizza immagini in collezioni" - -#~ msgid "Tools: Index, Settings, Collections, Batch Funcs ..." -#~ msgstr "Strumenti: Indice, Impostazioni, Collezioni, Funzioni di massa..." - -#~ msgid "updating collections ..." -#~ msgstr "Aggiornamento collezioni..." - -#~ msgid "file already exists" -#~ msgstr "file già esistente" - -#~ msgid "new collection created" -#~ msgstr "Nuova collezione creata" - -#~ msgid "enter a collection name" -#~ msgstr "Immettere il nome per la collezione" - -#~ msgid "make an initially empty collection" -#~ msgstr "Creare una collezione inizialmente vuota" - -#~ msgid "Collection Name" -#~ msgstr "Nome della collezione" - -#~ msgid "cache added to empty collection" -#~ msgstr "Cache immagini aggiunta a collezione vuota" - -#~ msgid "Delete Collection" -#~ msgstr "Elimina collezione" - -#~ msgid "Choose Collection" -#~ msgstr "Scegli la collezione" - -#~ msgid "Delete a collection" -#~ msgstr "Elimina una collezione" - -#~ msgid "Collection to view or edit" -#~ msgstr "Collezione da vedere o modificare" - -#~ msgid "Create or replace a collection" -#~ msgstr "Crea o rimpiazza una collezione" - -#~ msgid "Manage Collections" -#~ msgstr "Gestione collezioni" - -#~ msgid "Drag collection thumbnail to new position." -#~ msgstr "Trascinare le miniature della collezione nella nuova posizione." - -#~ msgid "" -#~ "Right-click collection thumbnail to cut/copy \n" -#~ "to cache, insert from cache, or remove." -#~ msgstr "" -#~ "Clic destro su icona per tagliare/copiare \n" -#~ "nel deposito immagini, prelevare, o rimuovere." - -#~ msgid "open collection" -#~ msgstr "Apri collezione" - -#~ msgid "invalid collection" -#~ msgstr "collezione non valida" - -#~ msgid "Edge Blend" -#~ msgstr "Sfumatura bordi" - -#~ msgid "current image:" -#~ msgstr "immagine corrente:" - -#~ msgid "save project file?" -#~ msgstr "Salvare il file di progetto?" - -#~ msgid "save project data" -#~ msgstr "Salva il progetto" - -#~ msgid "Choose collection" -#~ msgstr "Scegli la collezione" - -#~ msgid "no collections found" -#~ msgstr "nessuna collezione trovata" - -#~ msgid "collections" -#~ msgstr "collezioni" - -#~ msgid "target file already exists" -#~ msgstr "file destinazione già esistente" - -#~ msgid "Rotate 90º" -#~ msgstr "Ruota 90º" - -#~ msgid "printed image width: %.1f height: %.1f cm" -#~ msgstr "Dimensioni foto stampata: %.1f x %.1f cm" - -#~ msgid "menu locked" -#~ msgstr "menù bloccato" - -#~ msgid "shrink" -#~ msgstr "Restringi" - -#~ msgid "delete project file?" -#~ msgstr "Cancellare il file di progetto?" - -#~ msgid "save output file" -#~ msgstr "salvare file generato" - -#~ msgid "Adjust color using CMYK or RGB values" -#~ msgstr "Regola il colore con CMYK o RGB" - -#~ msgid "Fix Color Fringes" -#~ msgstr "Corregge frange di colore" - -#~ msgid "Paint/Clone Pixels" -#~ msgstr "Dipingi/Clona pixel" - -#~ msgid "Tools: Index, Settings, Albums, Batch Funcs ..." -#~ msgstr "Strumenti: Indice, Impostazioni, Album, Funzioni di massa..." - -#~ msgid "" -#~ "First time Fotoxx startup. \n" -#~ "Latest version is available at: www.kornelix.com/fotoxx \n" -#~ "An image file index will be created. Your image files will \n" -#~ "not be changed, moved, or copied. This process may need \n" -#~ "considerable time if you have thousands of image files." -#~ msgstr "" -#~ "Primo avvio di Fotoxx.\n" -#~ "L'ultima versione è disponibile su www.kornelix.com/fotoxx\n" -#~ "Un indice delle immagini verrà creato. I file originali\n" -#~ "non saranno cambiati, spostati o copiati. Questo può richiedere \n" -#~ "molto tempo se vi sono migliaia di immagini." - -#~ msgid "%d images remaining in cache" -#~ msgstr "rimangono %d immagini nel deposito" - -#~ msgid "Top Image Directories" -#~ msgstr "Cartelle immagini principali" - -#~ msgid "Revise RGB" -#~ msgstr "Edita RGB" - -#~ msgid "Fix Stuck Pixels" -#~ msgstr "Correggi pixel difettosi" - -#~ msgid "Chromatic Abberation" -#~ msgstr "Frange di colore" - -#~ msgid "Set Blur Radius" -#~ msgstr "Sfuocatura: imposta raggio" - -#~ msgid "Enter line/arrow properties, click/drag on image." -#~ msgstr "" -#~ "Immettere dati di linea/freccia, poi cliccare/trascinare nell'immagine" - -#~ msgid "Enter text, click/drag on image." -#~ msgstr "Immetti il testo, clicca o trascina sull'immagine" - -#~ msgid "albums" -#~ msgstr "album" diff -Nru fotoxx-15.08/locales/translate-nl.po fotoxx-15.09/locales/translate-nl.po --- fotoxx-15.08/locales/translate-nl.po 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/locales/translate-nl.po 2015-08-31 10:21:01.000000000 +0000 @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: fotoxx 14.08\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-07-29 09:31+0200\n" +"POT-Creation-Date: 2015-08-30 21:14+0200\n" "PO-Revision-Date: 2014-08-13 17:52+0100\n" "Last-Translator: Arthur Kalverboer \n" "Language-Team: Dutch\n" @@ -26,7 +26,7 @@ msgid "Drag album thumbnail to new position." msgstr "" -#: f.albums.cc:107 f.widgets.cc:536 +#: f.albums.cc:107 f.widgets.cc:541 msgid "Manage Albums" msgstr "" @@ -173,141 +173,145 @@ msgid "fallover" msgstr "" -#: f.albums.cc:1139 f.widgets.cc:537 +#: f.albums.cc:1138 f.widgets.cc:542 msgid "Slide Show" msgstr "Diashow starten" -#: f.albums.cc:1150 +#: f.albums.cc:1149 msgid "Clip Limit" msgstr "Clip Limiet" -#: f.albums.cc:1154 +#: f.albums.cc:1153 msgid "Music File" msgstr "Muziek Bestand" -#: f.albums.cc:1159 +#: f.albums.cc:1158 msgid "Full Screen" msgstr "Full Screen" -#: f.albums.cc:1160 +#: f.albums.cc:1159 msgid "Auto-replay" msgstr "" -#: f.albums.cc:1166 +#: f.albums.cc:1165 msgid "Customize:" msgstr "Aanpassen:" -#: f.albums.cc:1167 +#: f.albums.cc:1166 msgid "transitions" msgstr "transities" -#: f.albums.cc:1168 +#: f.albums.cc:1167 msgid "image files" msgstr "afbeeldings bestanden" -#: f.albums.cc:1173 f.albums.cc:1289 +#: f.albums.cc:1172 f.albums.cc:1286 #, c-format msgid "%d images" msgstr "%d afbeeldingen" -#: f.albums.cc:1196 f.albums.cc:1259 f.albums.cc:1349 f.albums.cc:1462 -#: f.albums.cc:1654 f.albums.cc:1738 f.albums.cc:1755 f.albums.cc:1976 +#: f.albums.cc:1194 f.albums.cc:1256 f.albums.cc:1346 f.albums.cc:1459 +#: f.albums.cc:1652 f.albums.cc:1736 f.albums.cc:1753 f.albums.cc:1974 msgid "invalid album" msgstr "" -#: f.albums.cc:1273 +#: f.albums.cc:1270 msgid "open album" msgstr "" -#: f.albums.cc:1305 +#: f.albums.cc:1302 msgid "Select music file" msgstr "" -#: f.albums.cc:1329 +#: f.albums.cc:1326 msgid "select random (if 5+ enabled)" msgstr "selecteer random (als 5+ geactiveerd)" -#: f.albums.cc:1353 +#: f.albums.cc:1350 msgid "Transition Preferences" msgstr "Transitie Voorkeuren" -#: f.albums.cc:1362 +#: f.albums.cc:1359 msgid "transition" msgstr "transitie" -#: f.albums.cc:1363 +#: f.albums.cc:1360 msgid "enabled" msgstr "geactiveerd" -#: f.albums.cc:1364 +#: f.albums.cc:1361 msgid "slowdown" msgstr "vertraging" -#: f.albums.cc:1365 +#: f.albums.cc:1362 msgid "preference" msgstr "voorkeur" -#: f.albums.cc:1468 +#: f.albums.cc:1465 msgid "Image Preferences" msgstr "Afbeeldings Voorkeuren" -#: f.albums.cc:1472 f.file.cc:1153 f.file.cc:1349 f.file.cc:1557 f.meta.cc:425 +#: f.albums.cc:1469 f.file.cc:1157 f.file.cc:1353 f.file.cc:1561 f.meta.cc:426 msgid "Image File:" msgstr "Afbeeldingsbestand:" -#: f.albums.cc:1476 +#: f.albums.cc:1473 msgid "Play tone when image shows" msgstr "" -#: f.albums.cc:1479 +#: f.albums.cc:1476 msgid "Show image caption" msgstr "" -#: f.albums.cc:1484 +#: f.albums.cc:1481 msgid "Show image comments" msgstr "" -#: f.albums.cc:1489 +#: f.albums.cc:1486 msgid "Wait before zoom" msgstr "" -#: f.albums.cc:1494 +#: f.albums.cc:1491 msgid "Zoom type:" msgstr "" -#: f.albums.cc:1495 +#: f.albums.cc:1492 msgid "none" msgstr "" -#: f.albums.cc:1496 +#: f.albums.cc:1493 msgid "zoom-in" msgstr "" -#: f.albums.cc:1497 +#: f.albums.cc:1494 msgid "zoom-out" msgstr "" -#: f.albums.cc:1500 +#: f.albums.cc:1497 msgid "Zoom size (x)" msgstr "" -#: f.albums.cc:1503 +#: f.albums.cc:1500 msgid "Steps" msgstr "Stappen" -#: f.albums.cc:1507 +#: f.albums.cc:1504 msgid "Zoom image location:" msgstr "" -#: f.albums.cc:1515 +#: f.albums.cc:1512 msgid "Wait after zoom" msgstr "" -#: f.albums.cc:1520 +#: f.albums.cc:1517 msgid "Transition to next image" msgstr "" -#: f.albums.cc:1961 f.albums.cc:2119 +#: f.albums.cc:1520 f.albums.cc:1622 +msgid "next" +msgstr "volgende" + +#: f.albums.cc:1959 f.albums.cc:2117 #, c-format msgid "" "file format error: \n" @@ -318,7 +322,7 @@ msgid "Select Area for Edits" msgstr "Uitsnede om te bewerken" -#: f.area.cc:80 f.edit.cc:5897 +#: f.area.cc:80 f.edit.cc:5908 msgid "Press F1 for help" msgstr "Druk F1 voor help" @@ -362,7 +366,7 @@ msgid "select all matching colors within mouse" msgstr "selecteer alle matchende kleuren binnen muis" -#: f.area.cc:139 f.edit.cc:5942 +#: f.area.cc:139 f.edit.cc:5953 msgid "mouse radius" msgstr "muis straal" @@ -394,12 +398,12 @@ msgid "area edits fade away within edge distance" msgstr "uitsnede bewerkingen vervagen binnen rand afstand" -#: f.area.cc:353 f.area.cc:536 +#: f.area.cc:351 f.area.cc:534 #, c-format msgid "exceed %d edits" msgstr "overschrijding %d bewerkingen" -#: f.area.cc:1363 +#: f.area.cc:1355 msgid "" "Click one time inside each enclosed area \n" "(possible gaps in the outline will be found). \n" @@ -409,23 +413,23 @@ "(mogelijke gaten in de contouren worden gezocht). \n" "Druk F1 voor help." -#: f.area.cc:1391 +#: f.area.cc:1383 msgid "finish area" msgstr "gereedmaken uitsnede" -#: f.area.cc:1399 +#: f.area.cc:1391 msgid "extend to corner:" msgstr "" -#: f.area.cc:1440 +#: f.area.cc:1432 msgid "searching" msgstr "bezig met zoeken" -#: f.area.cc:1472 +#: f.area.cc:1463 msgid "outline has a gap" msgstr "contour heeft een gat" -#: f.area.cc:1476 +#: f.area.cc:1467 msgid "success" msgstr "succes" @@ -434,113 +438,114 @@ msgid "found %d pixels" msgstr "gevonden %d pixels" -#: f.area.cc:1918 f.area.cc:1935 f.area.cc:1955 f.area.cc:2260 f.area.cc:2387 +#: f.area.cc:1926 f.area.cc:1943 f.area.cc:1963 f.area.cc:2278 f.area.cc:2354 +#: f.area.cc:2511 msgid "the area is not finished" msgstr "de uitsnede is niet gereed" -#: f.area.cc:2049 +#: f.area.cc:2052 msgid "Edge calculation in progress" msgstr "Berekening rand bezig" -#: f.area.cc:2058 +#: f.area.cc:2061 msgid "Area Edge Calc" msgstr "Randberekening van uitsnede" -#: f.area.cc:2338 +#: f.area.cc:2462 msgid "load area from a file" msgstr "" -#: f.area.cc:2421 +#: f.area.cc:2545 msgid "save area as a PNG file" msgstr "" -#: f.area.cc:2449 +#: f.area.cc:2573 msgid "position with mouse click/drag" msgstr "positioneer met muis klik/sleep" -#: f.area.cc:2493 +#: f.area.cc:2617 msgid "Paste Image" msgstr "Afbeelding plakken" -#: f.area.cc:2498 f.batch.cc:1135 f.batch.cc:1626 +#: f.area.cc:2622 f.batch.cc:1136 f.batch.cc:1627 msgid "resize" msgstr "herschalen" -#: f.batch.cc:103 f.widgets.cc:524 +#: f.batch.cc:104 f.widgets.cc:526 msgid "Batch Convert" msgstr "Batchgewijs Converteren" -#: f.batch.cc:110 f.file.cc:781 +#: f.batch.cc:111 f.file.cc:782 msgid "New Name" msgstr "nieuwe naam" -#: f.batch.cc:112 +#: f.batch.cc:113 msgid "base" msgstr "basis" -#: f.batch.cc:114 +#: f.batch.cc:115 msgid "adder" msgstr "toevoeging" -#: f.batch.cc:118 +#: f.batch.cc:119 msgid "New Location" msgstr "Nieuwe Locatie" -#: f.batch.cc:123 +#: f.batch.cc:124 msgid "New File Type" msgstr "Nieuw Bestands Type" -#: f.batch.cc:127 f.batch.cc:135 +#: f.batch.cc:128 f.batch.cc:136 msgid "no change" msgstr "geen verandering" -#: f.batch.cc:130 +#: f.batch.cc:131 msgid "max. Width" msgstr "max. Breedte" -#: f.batch.cc:138 f.batch.cc:531 +#: f.batch.cc:139 f.batch.cc:532 msgid "Delete Originals" msgstr "Verwijder Originelen" -#: f.batch.cc:139 f.batch.cc:528 +#: f.batch.cc:140 f.batch.cc:529 msgid "Copy Metadata" msgstr "Kopieren Metadata" -#: f.batch.cc:140 f.batch.cc:529 f.edit.cc:1396 f.widgets.cc:432 -#: f.widgets.cc:672 +#: f.batch.cc:141 f.batch.cc:530 f.edit.cc:1407 f.widgets.cc:433 +#: f.widgets.cc:677 msgid "Upright" msgstr "Rechtop" -#: f.batch.cc:143 f.batch.cc:530 f.batch.cc:1144 f.batch.cc:1635 -#: f.repair.cc:115 f.widgets.cc:448 +#: f.batch.cc:144 f.batch.cc:531 f.batch.cc:1145 f.batch.cc:1636 +#: f.repair.cc:115 f.widgets.cc:449 msgid "Sharpen" msgstr "Afbeelding verscherpen" -#: f.batch.cc:145 f.batch.cc:1146 f.batch.cc:1637 +#: f.batch.cc:146 f.batch.cc:1147 f.batch.cc:1638 msgid "amount" msgstr "hoeveelheid" -#: f.batch.cc:148 f.batch.cc:1149 f.batch.cc:1640 +#: f.batch.cc:149 f.batch.cc:1150 f.batch.cc:1641 msgid "threshold" msgstr "drempel" -#: f.batch.cc:250 +#: f.batch.cc:251 msgid "file type not supported" msgstr "bestandstype niet ondersteund" -#: f.batch.cc:314 +#: f.batch.cc:315 msgid "cannot create new file" msgstr "kan nieuw bestand niet aanmaken" -#: f.batch.cc:361 +#: f.batch.cc:362 msgid "updating albums ..." msgstr "" -#: f.batch.cc:434 f.batch.cc:1422 f.batch.cc:1828 f.file.cc:1202 +#: f.batch.cc:435 f.batch.cc:1423 f.batch.cc:1829 f.file.cc:1206 msgid "Select directory" msgstr "Selecteer map" -#: f.batch.cc:480 +#: f.batch.cc:481 msgid "" "new name/base/adder unreasonable\n" " e.g. newname ### 100 10" @@ -548,149 +553,182 @@ "nieuwe naam/basis/toevoeging niet logisch\n" " bijv. naam ### 100 10" -#: f.batch.cc:503 +#: f.batch.cc:504 #, c-format msgid "max. size %d x %d is not reasonable" msgstr "max. grootte %d x %d is niet logisch" -#: f.batch.cc:522 +#: f.batch.cc:523 #, c-format msgid "Convert %d image files" msgstr "Converteren %d afbeeldingen" -#: f.batch.cc:523 +#: f.batch.cc:524 msgid "Rename to" msgstr "Hernoemen naar" -#: f.batch.cc:524 +#: f.batch.cc:525 msgid "Convert to" msgstr "Converteren naar" -#: f.batch.cc:525 +#: f.batch.cc:526 msgid "Resize within" msgstr "Herschalen in" -#: f.batch.cc:526 +#: f.batch.cc:527 msgid "Output to" msgstr "Uitvoer naar" -#: f.batch.cc:532 +#: f.batch.cc:533 msgid "PROCEED?" msgstr "DOORGAAN?" -#: f.batch.cc:686 f.widgets.cc:525 +#: f.batch.cc:687 f.widgets.cc:527 msgid "Batch Upright" msgstr "Batchgewijs Rechtop" -#: f.batch.cc:692 +#: f.batch.cc:693 msgid "Survey all files" msgstr "" -#: f.batch.cc:746 +#: f.batch.cc:747 msgid "file cannot be read" msgstr "" -#: f.batch.cc:864 +#: f.batch.cc:865 msgid "cannot select both options" msgstr "" -#: f.batch.cc:908 f.widgets.cc:526 +#: f.batch.cc:909 f.widgets.cc:528 msgid "Batch Delete/Trash" msgstr "" -#: f.batch.cc:913 +#: f.batch.cc:914 msgid "delete" msgstr "" -#: f.batch.cc:916 +#: f.batch.cc:917 msgid "trash" msgstr "" -#: f.batch.cc:1078 +#: f.batch.cc:1079 msgid "Batch Convert RAW Files (DCraw)" msgstr "Batchgewijs Converteren RAW Bestanden (DCraw)" -#: f.batch.cc:1087 +#: f.batch.cc:1088 msgid "DCraw not installed" msgstr "DCraw niet geinstalleerd" -#: f.batch.cc:1122 f.batch.cc:1613 +#: f.batch.cc:1123 f.batch.cc:1614 msgid "output location" msgstr "uitvoer locatie" -#: f.batch.cc:1127 f.batch.cc:1618 +#: f.batch.cc:1128 f.batch.cc:1619 msgid "output file type" msgstr "output bestandstype" -#: f.batch.cc:1158 +#: f.batch.cc:1159 msgid "white balance" msgstr "witbalans" -#: f.batch.cc:1159 +#: f.batch.cc:1160 msgid "interpolation" msgstr "interpolatie" -#: f.batch.cc:1160 +#: f.batch.cc:1161 msgid "color space" msgstr "kleurruimte" -#: f.batch.cc:1161 +#: f.batch.cc:1162 msgid "gamma curve" msgstr "gamma curve" -#: f.batch.cc:1164 +#: f.batch.cc:1165 msgid "camera" msgstr "camera" -#: f.batch.cc:1165 +#: f.batch.cc:1166 msgid "fixed" msgstr "vast" -#: f.batch.cc:1166 +#: f.batch.cc:1167 msgid "calculated" msgstr "berekend" -#: f.batch.cc:1183 +#: f.batch.cc:1184 msgid "default" msgstr "default" -#: f.batch.cc:1189 +#: f.batch.cc:1190 msgid "defaults" msgstr "defaults" -#: f.batch.cc:1576 +#: f.batch.cc:1577 msgid "Batch Convert RAW Files (Raw Therapee)" msgstr "Batch Converteren RAW Bestanden (Raw Therapee)" -#: f.batch.cc:1585 f.file.cc:488 +#: f.batch.cc:1586 f.file.cc:489 msgid "Raw Therapee not installed" msgstr "Raw Therapee not installed" -#: f.batch.cc:1894 +#: f.batch.cc:1895 msgid "Brasero not installed" msgstr "Brasero niet geinstalleerd" -#: f.bend.cc:82 f.widgets.cc:469 +#: f.batch.cc:1984 f.widgets.cc:532 +msgid "Find Duplicate Images" +msgstr "" + +#: f.batch.cc:1986 f.tools.cc:927 +msgid "Thumbnail size" +msgstr "" + +#: f.batch.cc:1989 +msgid "pixel difference" +msgstr "" + +#: f.batch.cc:1992 +msgid "pixel count" +msgstr "" + +#: f.batch.cc:1995 +msgid "Images:" +msgstr "" + +#: f.batch.cc:1996 +msgid "searching ..." +msgstr "" + +#: f.batch.cc:1998 +msgid "Duplicates:" +msgstr "" + +#: f.batch.cc:2016 +#, c-format +msgid "only %d image thumbnails found" +msgstr "" + +#: f.bend.cc:86 f.widgets.cc:470 msgid "Unbend" msgstr "Ontkrommen" -#: f.bend.cc:90 f.edit.cc:4237 f.effects.cc:4620 +#: f.bend.cc:94 f.edit.cc:4248 f.effects.cc:4625 msgid "vertical" msgstr "verticaal" -#: f.bend.cc:91 f.edit.cc:4236 f.effects.cc:4616 +#: f.bend.cc:95 f.edit.cc:4247 f.effects.cc:4621 msgid "horizontal" msgstr "horizontaal" -#: f.bend.cc:92 +#: f.bend.cc:96 msgid "linear" msgstr "lineair" -#: f.bend.cc:95 +#: f.bend.cc:99 msgid "curved" msgstr "gebogen" -#: f.bend.cc:363 +#: f.bend.cc:367 msgid "" " Click the four corners of a tetragon area. Press [apply]. \n" " The image is warped to make the tetragon into a rectangle." @@ -699,15 +737,15 @@ "De afbeelding wordt vervormd zodat de vierhoek in een \n" "rechthoek veranderd. " -#: f.bend.cc:376 +#: f.bend.cc:384 msgid "Perspective Correction" msgstr "Perspectief Correctie" -#: f.bend.cc:582 +#: f.bend.cc:590 msgid "must have 4 corners" msgstr "4 hoeken verplicht" -#: f.bend.cc:704 +#: f.bend.cc:712 msgid "" " Select an area to warp using select area function. \n" " Press [start warp] and pull area with mouse. \n" @@ -719,19 +757,19 @@ " Herhalen tot het gewenste resultaat. \n" " Indien gereed, een andere uitsnede selecteren of druk [Klaar]." -#: f.bend.cc:717 f.widgets.cc:471 +#: f.bend.cc:725 f.widgets.cc:472 msgid "Warp area" msgstr "Kromtrekken uitsnede" -#: f.bend.cc:722 +#: f.bend.cc:730 msgid "start warp" msgstr "Start kromtrekken" -#: f.bend.cc:780 +#: f.bend.cc:788 msgid "no active Select Area" msgstr "geen actieve Uitsnede" -#: f.bend.cc:1121 f.bend.cc:1431 +#: f.bend.cc:1129 f.bend.cc:1443 msgid "" " Pull an image position using the mouse. \n" " Make multiple mouse pulls until satisfied. \n" @@ -741,19 +779,19 @@ " Herhalen tot het gewenste resultaat. \n" " Indien gereed, druk [Klaar]." -#: f.bend.cc:1135 f.widgets.cc:472 +#: f.bend.cc:1147 f.widgets.cc:473 msgid "Warp curved" msgstr "Kromtrekken gebogen" -#: f.bend.cc:1144 f.mashup.cc:1836 +#: f.bend.cc:1156 f.mashup.cc:1836 msgid "warp span" msgstr "kromtrekken spanwijdte" -#: f.bend.cc:1445 f.widgets.cc:473 +#: f.bend.cc:1461 f.widgets.cc:474 msgid "Warp linear" msgstr "Kromtrekken lineair" -#: f.bend.cc:1760 +#: f.bend.cc:1776 msgid "" " Pull on an image corner using the mouse. \n" " Make multiple mouse pulls until satisfied. \n" @@ -763,15 +801,15 @@ " Herhalen tot het gewenste resultaat. \n" " Indien gereed, druk [Klaar]." -#: f.bend.cc:1772 f.widgets.cc:474 +#: f.bend.cc:1792 f.widgets.cc:475 msgid "Warp affine" msgstr "Kromtrekken affine" -#: f.bend.cc:2119 +#: f.bend.cc:2139 msgid "Flatten Book Page Photo" msgstr "Platstrijken Foto van Pagina" -#: f.bend.cc:2120 +#: f.bend.cc:2140 msgid "" "Trim image to isolate one page. \n" "Map top and bottom edges with \n" @@ -781,88 +819,88 @@ "Markeer bovenste en onderste randen \n" "met 4+ muisklikken, dan platstrijken:" -#: f.bend.cc:2123 +#: f.bend.cc:2143 msgid "Stretch curved-down surfaces:" msgstr "Strekken gekromde oppervlakken:" -#: f.bend.cc:2178 +#: f.bend.cc:2198 msgid "top:" msgstr "boven:" -#: f.bend.cc:2181 +#: f.bend.cc:2201 msgid "bottom:" msgstr "onder:" -#: f.combine.cc:2119 f.combine.cc:2750 f.combine.cc:3406 f.combine.cc:3938 +#: f.combine.cc:2108 f.combine.cc:2739 f.combine.cc:3395 f.combine.cc:3927 msgid "Select 2 to 9 files" msgstr "Selecteer 2 tot 9 bestanden" -#: f.combine.cc:2140 f.combine.cc:2771 f.combine.cc:3427 f.combine.cc:3959 +#: f.combine.cc:2129 f.combine.cc:2760 f.combine.cc:3416 f.combine.cc:3948 msgid "Images are not all the same size" msgstr "Afbeeldingen hebben niet dezelfde grootte" -#: f.combine.cc:2484 +#: f.combine.cc:2473 msgid "Adjust Image Contributions" msgstr "Instellen helderheidsbijdragen per afbeelding" -#: f.combine.cc:2488 +#: f.combine.cc:2477 msgid "dark pixels" msgstr "donkere pixels" -#: f.combine.cc:2490 +#: f.combine.cc:2479 msgid "light pixels" msgstr "heldere pixels" -#: f.combine.cc:2492 +#: f.combine.cc:2481 msgid "file:" msgstr "bestand:" -#: f.combine.cc:3007 +#: f.combine.cc:2996 msgid "Paint and Warp Image" msgstr "Schilderen en kromtrekken afbeelding" -#: f.combine.cc:3011 f.combine.cc:3656 f.combine.cc:6246 f.effects.cc:3851 -#: f.widgets.cc:555 f.widgets.cc:578 f.widgets.cc:600 +#: f.combine.cc:3000 f.combine.cc:3645 f.combine.cc:6236 f.effects.cc:3858 +#: f.widgets.cc:560 f.widgets.cc:583 f.widgets.cc:605 msgid "Image" msgstr "Afbeelding" -#: f.combine.cc:3015 +#: f.combine.cc:3004 msgid "paint" msgstr "schilderen" -#: f.combine.cc:3016 +#: f.combine.cc:3005 msgid "warp" msgstr "kromtrekken" -#: f.combine.cc:3654 +#: f.combine.cc:3643 msgid "Select and Paint Image" msgstr "Selecteer en schilder afbeelding" -#: f.combine.cc:4130 +#: f.combine.cc:4119 msgid "Adjust Pixel Composition" msgstr "Instellen Pixel Samenstelling" -#: f.combine.cc:4132 +#: f.combine.cc:4121 msgid "use average" msgstr "gebruik gemiddelde" -#: f.combine.cc:4133 +#: f.combine.cc:4122 msgid "use median" msgstr "gebruik mediaan" -#: f.combine.cc:4135 +#: f.combine.cc:4124 msgid "omit low pixel" msgstr "weglaten lage pixels" -#: f.combine.cc:4136 +#: f.combine.cc:4125 msgid "omit high pixel" msgstr "weglaten hoge pixels" -#: f.combine.cc:4398 f.combine.cc:5504 +#: f.combine.cc:4387 f.combine.cc:5493 msgid "Select 2 to 4 files" msgstr "Selecteer 2 tot 4 bestanden" -#: f.combine.cc:4473 +#: f.combine.cc:4462 msgid "" "Drag images into rough alignment.\n" "To rotate, drag from lower edge." @@ -870,76 +908,76 @@ "Sleep afbeeldingen voor ruwe uitlijning.\n" "Om te draaien, sleep de onderste rand." -#: f.combine.cc:4475 f.combine.cc:5581 +#: f.combine.cc:4464 f.combine.cc:5570 msgid "no curve (scanned image)" msgstr "geen curve (gescande afbeelding)" -#: f.combine.cc:4476 f.combine.cc:5582 +#: f.combine.cc:4465 f.combine.cc:5571 msgid "Search for lens mm" msgstr "Zoeken naar brandpuntsafstand" -#: f.combine.cc:4477 f.combine.cc:5583 +#: f.combine.cc:4466 f.combine.cc:5572 msgid "Save lens mm → image EXIF" msgstr "Bewaar lens mm → afbeelding EXIF" -#: f.combine.cc:4538 f.combine.cc:5644 +#: f.combine.cc:4527 f.combine.cc:5633 msgid "Pre-align Images" msgstr "Afbeelding globaal positioneren" -#: f.combine.cc:4542 f.combine.cc:5648 +#: f.combine.cc:4531 f.combine.cc:5637 msgid "lens mm" msgstr "brandpuntsafstand mm" -#: f.combine.cc:4547 f.combine.cc:5653 +#: f.combine.cc:4536 f.combine.cc:5642 msgid "no auto warp" msgstr "geen auto kromtrekken" -#: f.combine.cc:4549 f.combine.cc:5655 f.widgets.cc:439 f.widgets.cc:671 +#: f.combine.cc:4538 f.combine.cc:5644 f.widgets.cc:440 f.widgets.cc:676 msgid "Resize" msgstr "Herschalen" -#: f.combine.cc:4550 f.combine.cc:5656 +#: f.combine.cc:4539 f.combine.cc:5645 msgid "resize window" msgstr "herschalen venster" -#: f.combine.cc:4558 f.combine.cc:5664 +#: f.combine.cc:4547 f.combine.cc:5653 msgid "do not warp images during auto-alignment" msgstr "niet kromtrekken gedurende auto-uitlijning" -#: f.combine.cc:4603 f.combine.cc:5709 +#: f.combine.cc:4592 f.combine.cc:5698 msgid "use two images only" msgstr "gebruik slechts twee afbeeldingen" -#: f.combine.cc:4631 f.combine.cc:4835 f.combine.cc:5021 f.combine.cc:5735 -#: f.combine.cc:5940 f.combine.cc:6126 +#: f.combine.cc:4620 f.combine.cc:4824 f.combine.cc:5010 f.combine.cc:5724 +#: f.combine.cc:5928 f.combine.cc:6114 msgid "Too little overlap, cannot align" msgstr "Te weinig overlap, uitlijnen niet mogelijk" -#: f.combine.cc:5096 f.combine.cc:6202 +#: f.combine.cc:5088 f.combine.cc:6192 msgid "Match Brightness and Color" msgstr "Match helderheid en kleur" -#: f.combine.cc:5141 +#: f.combine.cc:5133 msgid "Select image" msgstr "Selecteer afbeelding" -#: f.combine.cc:5156 f.combine.cc:6261 +#: f.combine.cc:5148 f.combine.cc:6251 msgid "auto color" msgstr "auto kleur" -#: f.combine.cc:5157 f.combine.cc:6262 +#: f.combine.cc:5149 f.combine.cc:6252 msgid "file color" msgstr "bestand kleur" -#: f.combine.cc:5163 f.combine.cc:6268 +#: f.combine.cc:5155 f.combine.cc:6258 msgid "mouse warp" msgstr "muis kromtrekken" -#: f.combine.cc:5166 +#: f.combine.cc:5158 msgid "curved image" msgstr "" -#: f.combine.cc:5579 +#: f.combine.cc:5568 msgid "" "Drag images into rough alignment.\n" "To rotate, drag from right edge." @@ -947,11 +985,11 @@ "Sleep afbeeldingen voor ruwe uitlijning.\n" "Om te draaien, sleep de rechter rand." -#: f.combine.cc:6482 +#: f.combine.cc:6469 msgid "pano tools (hugin) not installed" msgstr "" -#: f.combine.cc:6491 +#: f.combine.cc:6478 msgid "Select at least 2 files" msgstr "" @@ -964,254 +1002,254 @@ msgid "Minor rotate: drag right edge with mouse" msgstr "Kleine draaiing: sleep rechter rand met de muis" -#: f.edit.cc:167 f.widgets.cc:431 f.widgets.cc:670 +#: f.edit.cc:171 f.widgets.cc:432 f.widgets.cc:675 msgid "Trim/Rotate" msgstr "Bijsnijden/Draaien" -#: f.edit.cc:179 f.edit.cc:577 +#: f.edit.cc:183 f.edit.cc:585 msgid "ratio" msgstr "ratio" -#: f.edit.cc:183 +#: f.edit.cc:187 msgid "trim size:" msgstr "bijsnijd grootte:" -#: f.edit.cc:188 +#: f.edit.cc:192 msgid "Lock Ratio" msgstr "verhoudingen vasthouden" -#: f.edit.cc:193 +#: f.edit.cc:197 msgid "Customize" msgstr "Aanpassen" -#: f.edit.cc:201 +#: f.edit.cc:205 msgid "Rotate: degrees" msgstr "Draaien: graden" -#: f.edit.cc:203 +#: f.edit.cc:207 msgid "auto-trim" msgstr "auto-bijsnijden" -#: f.edit.cc:573 +#: f.edit.cc:581 msgid "Trim Buttons" msgstr "Bijsnijd knoppen" -#: f.edit.cc:576 +#: f.edit.cc:584 msgid "label" msgstr "label" -#: f.edit.cc:1394 +#: f.edit.cc:1405 msgid "Upright Image" msgstr "" -#: f.edit.cc:1458 +#: f.edit.cc:1469 msgid "rotation unknown" msgstr "" -#: f.edit.cc:2009 f.widgets.cc:435 f.widgets.cc:674 +#: f.edit.cc:2020 f.widgets.cc:436 f.widgets.cc:679 msgid "Retouch Combo" msgstr "Retoucheer Combo" -#: f.edit.cc:2030 +#: f.edit.cc:2041 msgid "Amplifier" msgstr "Versterker" -#: f.edit.cc:2031 fotoxx.h:1079 +#: f.edit.cc:2042 fotoxx.h:1087 msgid "Brightness" msgstr "helderheid" -#: f.edit.cc:2032 fotoxx.h:1087 +#: f.edit.cc:2043 fotoxx.h:1095 msgid "Contrast" msgstr "Contrast" -#: f.edit.cc:2033 +#: f.edit.cc:2044 msgid "Low Color" msgstr "Laag Kleur" -#: f.edit.cc:2034 +#: f.edit.cc:2045 msgid "Warmer" msgstr "Warmer" -#: f.edit.cc:2035 f.effects.cc:1009 +#: f.edit.cc:2046 f.effects.cc:1010 msgid "Dark Areas" msgstr "Donkere gebieden" -#: f.edit.cc:2044 +#: f.edit.cc:2055 msgid "Max." msgstr "Max." -#: f.edit.cc:2045 f.edit.cc:2046 f.edit.cc:2047 +#: f.edit.cc:2056 f.edit.cc:2057 f.edit.cc:2058 msgid "High" msgstr "Hoog" -#: f.edit.cc:2048 +#: f.edit.cc:2059 msgid "Cooler" msgstr "Koeler" -#: f.edit.cc:2049 +#: f.edit.cc:2060 msgid "Bright" msgstr "Licht" -#: f.edit.cc:2052 f.tools.cc:1595 +#: f.edit.cc:2063 f.tools.cc:1621 msgid "Brightness Distribution" msgstr "Helderheids Verdeling" -#: f.edit.cc:2055 +#: f.edit.cc:2066 msgid "Click for white balance or black level" msgstr "Klik voor witbalans of zwart nivo" -#: f.edit.cc:2058 +#: f.edit.cc:2069 msgid "Settings File" msgstr "Instellingen Bestand" -#: f.edit.cc:2062 +#: f.edit.cc:2073 msgid "recall previous settings used" msgstr "terughalen hiervoor gebruikte instellingen" -#: f.edit.cc:2764 +#: f.edit.cc:2775 msgid "Adjust Brightness Distribution" msgstr "Instellen Helderheids Verdeling" -#: f.edit.cc:2801 +#: f.edit.cc:2812 msgid "Low Cutoff" msgstr "" -#: f.edit.cc:2802 +#: f.edit.cc:2813 msgid "High Cutoff" msgstr "" -#: f.edit.cc:2803 +#: f.edit.cc:2814 msgid "Low Flatten" msgstr "" -#: f.edit.cc:2804 +#: f.edit.cc:2815 msgid "Mid Flatten" msgstr "" -#: f.edit.cc:2805 +#: f.edit.cc:2816 msgid "High Flatten" msgstr "" -#: f.edit.cc:2806 +#: f.edit.cc:2817 msgid "Low Stretch" msgstr "" -#: f.edit.cc:2807 +#: f.edit.cc:2818 msgid "Mid Stretch" msgstr "" -#: f.edit.cc:2808 +#: f.edit.cc:2819 msgid "High Stretch" msgstr "" -#: f.edit.cc:3138 +#: f.edit.cc:3149 msgid "Zonal Flatten Brightness" msgstr "" -#: f.edit.cc:3169 +#: f.edit.cc:3180 msgid "Zones" msgstr "" -#: f.edit.cc:3176 +#: f.edit.cc:3187 msgid "Deband Dark" msgstr "" -#: f.edit.cc:3179 +#: f.edit.cc:3190 msgid "Deband Bright" msgstr "" -#: f.edit.cc:3624 f.widgets.cc:438 f.widgets.cc:677 +#: f.edit.cc:3635 f.widgets.cc:439 f.widgets.cc:682 msgid "Tone Mapping" msgstr "Tone mapping instellen" -#: f.edit.cc:3653 +#: f.edit.cc:3664 msgid "low" msgstr "laag" -#: f.edit.cc:3655 +#: f.edit.cc:3666 msgid "high" msgstr "hoog" -#: f.edit.cc:3658 +#: f.edit.cc:3669 msgid "Amplify" msgstr "Versterken" -#: f.edit.cc:4033 +#: f.edit.cc:4044 msgid "Lock aspect ratio" msgstr "lengte:breedte verhouding vasthouden" -#: f.edit.cc:4055 +#: f.edit.cc:4066 msgid "Resize Image" msgstr "Herschalen Afbeelding" -#: f.edit.cc:4232 f.widgets.cc:440 +#: f.edit.cc:4243 f.widgets.cc:441 msgid "Flip" msgstr "Afbeelding spiegelen" -#: f.edit.cc:4338 +#: f.edit.cc:4349 msgid "+Version" msgstr "" -#: f.edit.cc:4361 +#: f.edit.cc:4372 msgid "Write Text on Image" msgstr "Schrijf Tekst op Afbeelding" -#: f.edit.cc:4362 +#: f.edit.cc:4373 msgid "Enter text, click/drag on image, right click to remove" msgstr "" "Invoeren tekst, klik/sleep in afbeelding, rechter klik om te verwijderen" -#: f.edit.cc:4411 f.mashup.cc:2437 +#: f.edit.cc:4422 f.mashup.cc:2437 msgid "Text" msgstr "Tekst" -#: f.edit.cc:4416 +#: f.edit.cc:4427 msgid "Use metadata key" msgstr "" -#: f.edit.cc:4421 +#: f.edit.cc:4432 msgid "Use text file" msgstr "" -#: f.edit.cc:4440 f.mashup.cc:2455 +#: f.edit.cc:4451 f.mashup.cc:2455 msgid "text" msgstr "tekst" -#: f.edit.cc:4441 f.edit.cc:5279 f.mashup.cc:2456 f.mashup.cc:2798 +#: f.edit.cc:4452 f.edit.cc:5290 f.mashup.cc:2456 f.mashup.cc:2798 msgid "backing" msgstr "achtergrondkleur" -#: f.edit.cc:4442 f.edit.cc:5280 f.mashup.cc:2457 f.mashup.cc:2799 +#: f.edit.cc:4453 f.edit.cc:5291 f.mashup.cc:2457 f.mashup.cc:2799 msgid "outline" msgstr "contour" -#: f.edit.cc:4443 f.edit.cc:5281 f.mashup.cc:2458 f.mashup.cc:2800 +#: f.edit.cc:4454 f.edit.cc:5292 f.mashup.cc:2458 f.mashup.cc:2800 msgid "shadow" msgstr "schaduw" -#: f.edit.cc:4469 +#: f.edit.cc:4480 msgid "save to current file" msgstr "" -#: f.edit.cc:4470 f.file.cc:605 +#: f.edit.cc:4481 f.file.cc:606 msgid "save as new file version" msgstr "bewaren als nieuwe bestandsversie" -#: f.edit.cc:4471 +#: f.edit.cc:4482 msgid "" "save to current file \n" "open next file with same text" msgstr "" -#: f.edit.cc:4632 f.mashup.cc:2557 +#: f.edit.cc:4643 f.mashup.cc:2557 f.tools.cc:1060 msgid "select font" msgstr "selecteer font" -#: f.edit.cc:4896 +#: f.edit.cc:4907 msgid "text file is defective" msgstr "tekstbestand is beschadigd" -#: f.edit.cc:5219 +#: f.edit.cc:5230 msgid "" "Enter line or arrow properties in dialog, \n" "click/drag on image, right click to remove" @@ -1219,23 +1257,23 @@ "Invoeren lijn of pijl eigenschappen in dialoog, \n" "klik/sleep op afbeelding, rechterklik om te verwijderen" -#: f.edit.cc:5250 +#: f.edit.cc:5261 msgid "Write Line or Arrow on Image" msgstr "Schrijf Lijn of Pijl op Afbeelding" -#: f.edit.cc:5258 f.mashup.cc:2777 +#: f.edit.cc:5269 f.mashup.cc:2777 msgid "Line length" msgstr "Lijn lengte" -#: f.edit.cc:5265 f.mashup.cc:2784 +#: f.edit.cc:5276 f.mashup.cc:2784 msgid "Arrow head" msgstr "Pijlpunt" -#: f.edit.cc:5278 f.mashup.cc:2797 +#: f.edit.cc:5289 f.mashup.cc:2797 msgid "line" msgstr "lijn" -#: f.edit.cc:5307 +#: f.edit.cc:5318 msgid "" "fix line/arrow in layout \n" " start new line/arrow" @@ -1243,11 +1281,11 @@ "fix lijn/pijl in layout \n" " begin nieuwe lijn/pijl" -#: f.edit.cc:5896 f.widgets.cc:443 +#: f.edit.cc:5907 f.widgets.cc:444 msgid "Paint Edits" msgstr "Veranderingen schilderen" -#: f.edit.cc:5903 f.edit.cc:6132 fotoxx-15.08.cc:3172 +#: f.edit.cc:5914 f.edit.cc:6143 fotoxx-15.09.cc:3123 msgid "" "Select area cannot be kept.\n" "Continue?" @@ -1255,59 +1293,59 @@ "Uitsnede kan niet bewaard worden.\n" "Doorgaan?" -#: f.edit.cc:5911 f.edit.cc:6140 f.tools.cc:2127 +#: f.edit.cc:5922 f.edit.cc:6151 f.tools.cc:2147 msgid "Edit function must be active" msgstr "Bewerkingsfunctie moet actief zijn" -#: f.edit.cc:5916 +#: f.edit.cc:5927 msgid "Cannot use Paint Edits" msgstr "" -#: f.edit.cc:5945 +#: f.edit.cc:5956 msgid "power: center" msgstr "kracht: centrum" -#: f.edit.cc:5950 +#: f.edit.cc:5961 msgid "reset area" msgstr "reset uitsnede" -#: f.edit.cc:6125 f.widgets.cc:444 +#: f.edit.cc:6136 f.widgets.cc:445 msgid "Leverage Edits" msgstr "Veranderingen versterken" -#: f.edit.cc:6126 +#: f.edit.cc:6137 msgid "Edit Function Amplifier" msgstr "Versterker functie wijzigen" -#: f.edit.cc:6145 +#: f.edit.cc:6156 msgid "Cannot use Leverage Edits" msgstr "" -#: f.edit.cc:6178 +#: f.edit.cc:6189 msgid "minimum" msgstr "minimum" -#: f.edit.cc:6180 +#: f.edit.cc:6191 msgid "maximum" msgstr "maximum" -#: f.edit.cc:6481 +#: f.edit.cc:6490 msgid "Edit Plugins" msgstr "Plugins aanpassen" -#: f.edit.cc:6482 +#: f.edit.cc:6491 msgid "Edit plugins menu" msgstr "" -#: f.edit.cc:6490 +#: f.edit.cc:6499 msgid "Run as Fotoxx edit function" msgstr "Uitvoeren als Fotoxx bewerkingsfunctie" -#: f.edit.cc:6728 +#: f.edit.cc:6737 msgid "Plugin working ..." msgstr "Plugin bezig ..." -#: f.edit.cc:6737 +#: f.edit.cc:6746 msgid "plugin failed" msgstr "plugin werkt niet" @@ -1339,7 +1377,7 @@ msgid "Background" msgstr "" -#: f.effects.cc:713 f.widgets.cc:480 +#: f.effects.cc:713 f.widgets.cc:481 msgid "Line Drawing" msgstr "Lijn Tekenen" @@ -1347,303 +1385,303 @@ msgid "black/white" msgstr "zwart/wit" -#: f.effects.cc:1003 f.widgets.cc:481 +#: f.effects.cc:1004 f.widgets.cc:482 msgid "Color Drawing" msgstr "Kleur Tekenen" -#: f.effects.cc:1010 +#: f.effects.cc:1011 msgid "Bright Areas" msgstr "Heldere Uitsnedes" -#: f.effects.cc:1264 f.widgets.cc:482 +#: f.effects.cc:1265 f.widgets.cc:483 msgid "Graduated Blur" msgstr "Graduele Vervaging" -#: f.effects.cc:1268 +#: f.effects.cc:1269 msgid "Contrast Limit" msgstr "Contrast limiet" -#: f.effects.cc:1271 f.repair.cc:747 +#: f.effects.cc:1272 f.repair.cc:748 msgid "Blur Radius" msgstr "Vervagingsstraal" -#: f.effects.cc:1485 +#: f.effects.cc:1486 msgid "Simulate Embossing" msgstr "Reliefdruk nabootsen" -#: f.effects.cc:1502 +#: f.effects.cc:1503 msgid "depth" msgstr "diepte" -#: f.effects.cc:1703 +#: f.effects.cc:1705 msgid "Simulate Tiles" msgstr "Tegels nabootsen" -#: f.effects.cc:1707 +#: f.effects.cc:1709 msgid "tile size" msgstr "tegelgrootte" -#: f.effects.cc:1710 +#: f.effects.cc:1712 msgid "tile gap" msgstr "voegbreedte" -#: f.effects.cc:1713 +#: f.effects.cc:1715 msgid "3D depth" msgstr "3D diepte" -#: f.effects.cc:1937 +#: f.effects.cc:1939 msgid "Convert Image to Dots" msgstr "Converteer naar krantendruk" -#: f.effects.cc:1941 +#: f.effects.cc:1943 msgid "dot size" msgstr "stip grootte" -#: f.effects.cc:2161 +#: f.effects.cc:2168 msgid "Simulate Painting" msgstr "Schilderen Nabootsen" -#: f.effects.cc:2165 +#: f.effects.cc:2172 msgid "color depth" msgstr "kleurdiepte" -#: f.effects.cc:2169 +#: f.effects.cc:2176 msgid "patch area goal" msgstr "vlekgrootte doel" -#: f.effects.cc:2173 +#: f.effects.cc:2180 msgid "req. color match" msgstr "vereiste kleur aanpassing" -#: f.effects.cc:2177 +#: f.effects.cc:2184 msgid "borders" msgstr "randen" -#: f.effects.cc:2750 f.widgets.cc:487 +#: f.effects.cc:2757 f.widgets.cc:488 msgid "Vignette" msgstr "Vignette" -#: f.effects.cc:3118 +#: f.effects.cc:3125 msgid "Add Texture" msgstr "Toevoegen Textuur " -#: f.effects.cc:3334 +#: f.effects.cc:3341 msgid "Background Pattern" msgstr "Achtergrond Patroon" -#: f.effects.cc:3338 +#: f.effects.cc:3345 msgid "Pattern File:" msgstr "Patroon Bestand:" -#: f.effects.cc:3343 +#: f.effects.cc:3350 msgid "Geometry" msgstr "Geometrie" -#: f.effects.cc:3344 +#: f.effects.cc:3351 msgid "Calculate" msgstr "Bereken" -#: f.effects.cc:3346 +#: f.effects.cc:3353 msgid "Zoom" msgstr "Zoom" -#: f.effects.cc:3357 f.widgets.cc:489 +#: f.effects.cc:3364 f.widgets.cc:490 msgid "Pattern" msgstr "Patroon" -#: f.effects.cc:3364 +#: f.effects.cc:3371 msgid "Overlap" msgstr "Overlap" -#: f.effects.cc:3371 +#: f.effects.cc:3378 msgid "Opacity" msgstr "Ondoorzichtigheid" -#: f.effects.cc:3410 +#: f.effects.cc:3417 msgid "choose pattern tile" msgstr "kies tegel patroon" -#: f.effects.cc:3755 +#: f.effects.cc:3762 msgid "Create Mosaic" msgstr "Maken Mozaiek" -#: f.effects.cc:3841 +#: f.effects.cc:3848 msgid "Tile" msgstr "Tegel" -#: f.effects.cc:3849 f.widgets.cc:484 +#: f.effects.cc:3856 f.widgets.cc:485 msgid "Tiles" msgstr "Tegels" -#: f.effects.cc:3855 +#: f.effects.cc:3862 msgid "Tile blending" msgstr "Tegel vermenging" -#: f.effects.cc:3935 +#: f.effects.cc:3942 #, c-format msgid "exceeded max. tiles: %d" msgstr "overschreden max. tegels: %d" -#: f.effects.cc:3950 +#: f.effects.cc:3957 #, c-format msgid "only %d tile images found" msgstr "maar %d tegel afbeeldingen gevonden" -#: f.effects.cc:4326 f.widgets.cc:491 +#: f.effects.cc:4333 f.widgets.cc:492 msgid "Custom Kernel" msgstr "Custom Kernel" -#: f.effects.cc:4330 +#: f.effects.cc:4337 msgid "Kernel size" msgstr "Kernel grootte" -#: f.effects.cc:4335 +#: f.effects.cc:4342 msgid "Divisor" msgstr "Deler" -#: f.effects.cc:4340 +#: f.effects.cc:4347 msgid "Data file" msgstr "Gegevens bestand" -#: f.effects.cc:4606 f.widgets.cc:492 +#: f.effects.cc:4611 f.widgets.cc:493 msgid "Make Waves" msgstr "Maak Golven" -#: f.effects.cc:4613 +#: f.effects.cc:4618 msgid "wavelength" msgstr "golflengte" -#: f.effects.cc:4614 +#: f.effects.cc:4619 msgid "amplitude" msgstr "amplitude" -#: f.effects.cc:4615 +#: f.effects.cc:4620 msgid "variance" msgstr "" -#: f.effects.cc:4626 +#: f.effects.cc:4631 msgid "perspective" msgstr "" -#: f.effects.cc:4800 +#: f.effects.cc:4805 msgid "Pull image using the mouse." msgstr "" -#: f.effects.cc:4821 f.widgets.cc:493 +#: f.effects.cc:4826 f.widgets.cc:494 msgid "Directed Blur" msgstr "" -#: f.effects.cc:4825 +#: f.effects.cc:4830 msgid "blur span" msgstr "" -#: f.effects.cc:4828 +#: f.effects.cc:4833 msgid "intensity" msgstr "" -#: f.file.cc:247 +#: f.file.cc:248 msgid "" "use EXIF photo date or \n" " file modification date" msgstr "" -#: f.file.cc:264 f.widgets.cc:560 +#: f.file.cc:265 f.widgets.cc:565 msgid "File" msgstr "Bestand" -#: f.file.cc:357 f.file.cc:1483 f.file.cc:1622 +#: f.file.cc:358 f.file.cc:1487 f.file.cc:1626 msgid "no more images" msgstr "geen afbeeldingen meer" -#: f.file.cc:417 +#: f.file.cc:418 msgid "UFraw not installed" msgstr "UFraw niet geinstalleerd" -#: f.file.cc:433 f.widgets.cc:679 +#: f.file.cc:434 f.widgets.cc:684 msgid "Open RAW file (ufraw)" msgstr "Open RAW bestand (ufraw)" -#: f.file.cc:438 f.file.cc:509 +#: f.file.cc:439 f.file.cc:510 msgid "RAW type not registered in User Settings" msgstr "RAW type niet vastgelegd in Instellingen" -#: f.file.cc:504 f.widgets.cc:680 +#: f.file.cc:505 f.widgets.cc:685 msgid "Open RAW file (Raw Therapee)" msgstr "Open RAW bestand (Raw Therapee)" -#: f.file.cc:587 +#: f.file.cc:588 msgid "Save Image File" msgstr "Bewaar Afbeeldingsbestand" -#: f.file.cc:597 +#: f.file.cc:598 msgid "new version" msgstr "nieuwe versie" -#: f.file.cc:598 +#: f.file.cc:599 msgid "new file" msgstr "nieuw bestand" -#: f.file.cc:599 +#: f.file.cc:600 msgid "replace file" msgstr "bestand vervangen" -#: f.file.cc:606 f.file.cc:2281 +#: f.file.cc:607 f.file.cc:2344 msgid "save as new file name or type" msgstr "bewaren als nieuw bestandsnaam of type " -#: f.file.cc:608 +#: f.file.cc:609 msgid "replace old file (OVERWRITE)" msgstr "oud bestand vervangen (OVERSCHRIJVEN)" -#: f.file.cc:646 f.file.cc:2071 +#: f.file.cc:647 f.file.cc:2124 msgid "cannot save as RAW type" msgstr "bewaren als RAW type niet mogelijk" -#: f.file.cc:773 f.widgets.cc:396 +#: f.file.cc:774 f.widgets.cc:395 msgid "Rename Image File" msgstr "Hernoemen bestand..." -#: f.file.cc:780 +#: f.file.cc:781 msgid "Old Name" msgstr "oude naam" -#: f.file.cc:790 +#: f.file.cc:791 msgid "previous name" msgstr "vorige naam" -#: f.file.cc:791 +#: f.file.cc:792 msgid "add 1" msgstr "toevoegen 1" -#: f.file.cc:946 +#: f.file.cc:950 msgid "Create Blank Image" msgstr "Lege afbeelding maken" -#: f.file.cc:948 +#: f.file.cc:952 msgid "file name" msgstr "bestandsnaam" -#: f.file.cc:982 +#: f.file.cc:986 msgid "supply a file name" msgstr "" -#: f.file.cc:1114 +#: f.file.cc:1118 msgid "Copy Image File" msgstr "Kopieer Afbeelding" -#: f.file.cc:1115 +#: f.file.cc:1119 msgid "Move Image File" msgstr "Verplaats Afbeeldingsbestand" -#: f.file.cc:1158 +#: f.file.cc:1162 msgid "new location" msgstr "nieuwe locatie" -#: f.file.cc:1228 +#: f.file.cc:1232 msgid "new location is not a directory" msgstr "nieuwe locatie is geen map" -#: f.file.cc:1270 f.file.cc:1467 f.file.cc:1605 +#: f.file.cc:1274 f.file.cc:1471 f.file.cc:1609 #, c-format msgid "" "delete failed: \n" @@ -1652,15 +1690,15 @@ "verwijderen mislukt: \n" " %s" -#: f.file.cc:1312 f.widgets.cc:398 +#: f.file.cc:1316 f.widgets.cc:397 msgid "Trash Image File" msgstr "Afbeeldingsbestand naar prullenbak" -#: f.file.cc:1313 f.file.cc:1520 +#: f.file.cc:1317 f.file.cc:1524 msgid "(automatic step to next image)" msgstr "(automatische stap naar volgende afbeelding)" -#: f.file.cc:1381 +#: f.file.cc:1385 msgid "" "Linux standard trash does not work. \n" "Desktop trash folder will be created." @@ -1668,7 +1706,7 @@ "Linux standaard prullenbak wordt niet ondersteund. \n" "Desktop prullenbak zal worden aangemaakt." -#: f.file.cc:1384 +#: f.file.cc:1388 msgid "" "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" @@ -1676,49 +1714,99 @@ "Linux en Desktop prullenbak werken niet. \n" "Afbeeldingsbestand definitief verwijderen?" -#: f.file.cc:1387 +#: f.file.cc:1391 #, c-format msgid "Cannot create trash folder: %s" msgstr "Kan niet map voor prullenbak maken: %s" -#: f.file.cc:1399 +#: f.file.cc:1403 msgid "Move read-only file to trash?" msgstr "Alleen-lezen bestand naar prullenbak?" -#: f.file.cc:1454 +#: f.file.cc:1458 #, c-format msgid "error: %s" msgstr "fout: %s" -#: f.file.cc:1519 +#: f.file.cc:1523 msgid "Delete Image File - CANNOT BE REVERSED" msgstr "Verwijder Afbeeldingsbestand - NIET OMKEERBAAR" -#: f.file.cc:1595 +#: f.file.cc:1599 msgid "Delete read-only file?" msgstr "" -#: f.file.cc:1911 f.widgets.cc:390 +#: f.file.cc:1820 f.widgets.cc:547 +msgid "Quick Start" +msgstr "Snel Start" + +#: f.file.cc:1823 f.widgets.cc:548 +msgid "User Guide" +msgstr "Gebruikershandleiding" + +#: f.file.cc:1826 f.widgets.cc:549 +msgid "User Guide Changes" +msgstr "Gebruikershandleiding Veranderingen" + +#: f.file.cc:1829 f.widgets.cc:551 +msgid "README" +msgstr "README" + +#: f.file.cc:1832 f.widgets.cc:550 +msgid "Edit Functions Summary" +msgstr "Opsomming Bewerkingsfuncties" + +#: f.file.cc:1835 f.widgets.cc:552 +msgid "Change Log" +msgstr "Veranderingslogboek" + +#: f.file.cc:1838 f.widgets.cc:553 +msgid "Log File" +msgstr "Log Bestand" + +#: f.file.cc:1841 f.widgets.cc:554 +msgid "Translations" +msgstr "Vertalingen" + +#: f.file.cc:1844 f.widgets.cc:555 +msgid "Home Page" +msgstr "Homepage" + +#: f.file.cc:1847 f.widgets.cc:556 +msgid "About" +msgstr "Over fotoxx" + +#: f.file.cc:1851 f.widgets.cc:577 f.widgets.cc:599 fotoxx.h:1119 +msgid "Help" +msgstr "Help" + +#: f.file.cc:1961 f.widgets.cc:389 msgid "Open Image File" msgstr "Openen ..." -#: f.file.cc:1929 +#: f.file.cc:1979 msgid "unknown file type" msgstr "onbekend bestandstype" -#: f.file.cc:2197 +#: f.file.cc:2117 +msgid "" +"Transparency map will be lost.\n" +"save to PNG file to retain." +msgstr "" + +#: f.file.cc:2260 msgid "Unable to copy EXIF/IPTC data" msgstr "Kan EXIF/IPTC gegevens niet kopieren" -#: f.file.cc:2297 +#: f.file.cc:2360 msgid "make current" msgstr "maak actueel" -#: f.file.cc:2390 +#: f.file.cc:2453 msgid "jpeg quality must be 1-100" msgstr "jpeg kwaliteit moet 1-100 zijn" -#: f.file.cc:2417 +#: f.file.cc:2480 #, c-format msgid "" "Overwrite file? \n" @@ -1727,138 +1815,138 @@ "Bestand overschrijven? \n" " %s" -#: f.file.cc:2669 f.file.cc:2738 +#: f.file.cc:2732 f.file.cc:2801 #, c-format msgid "file not found: %s" msgstr "bestand niet gevonden: %s" -#: f.file.cc:2675 f.file.cc:2744 +#: f.file.cc:2738 f.file.cc:2807 #, c-format msgid "file type not supported: %s" msgstr "bestandstype niet ondersteund: %s" -#: f.gallery.cc:921 f.gallery.cc:1010 f.widgets.cc:592 +#: f.gallery.cc:911 f.gallery.cc:1000 f.widgets.cc:597 msgid "Scroll" msgstr "Scroll" -#: f.gallery.cc:925 +#: f.gallery.cc:915 msgid "Sync" msgstr "" -#: f.gallery.cc:935 f.repair.cc:5783 f.repair.cc:5788 fotoxx.h:1132 +#: f.gallery.cc:925 f.repair.cc:5779 f.repair.cc:5784 fotoxx.h:1140 msgid "Open" msgstr "Openen" -#: f.gallery.cc:936 +#: f.gallery.cc:926 msgid "change directory" msgstr "verander map" -#: f.gallery.cc:944 +#: f.gallery.cc:934 msgid "GoTo" msgstr "GaNaar" -#: f.gallery.cc:950 f.widgets.cc:587 +#: f.gallery.cc:940 f.widgets.cc:592 msgid "Sort" msgstr "Sorteren" -#: f.gallery.cc:956 f.gallery.cc:1528 f.gallery.cc:1529 f.gallery.cc:1531 -#: f.widgets.cc:585 +#: f.gallery.cc:946 f.gallery.cc:1510 f.gallery.cc:1511 f.gallery.cc:1513 +#: f.widgets.cc:590 msgid "Zoom+" msgstr "Zoom+" -#: f.gallery.cc:966 f.gallery.cc:1530 f.gallery.cc:1532 f.widgets.cc:586 +#: f.gallery.cc:956 f.gallery.cc:1512 f.gallery.cc:1514 f.widgets.cc:591 msgid "Zoom-" msgstr "Zoom-" -#: f.gallery.cc:978 f.gallery.cc:1536 +#: f.gallery.cc:968 f.gallery.cc:1518 msgid "Row↑" msgstr "Rij↑" -#: f.gallery.cc:986 f.gallery.cc:1537 +#: f.gallery.cc:976 f.gallery.cc:1519 msgid "Row↓" msgstr "Rij↓" -#: f.gallery.cc:994 f.gallery.cc:1534 f.gallery.cc:1541 f.widgets.cc:590 +#: f.gallery.cc:984 f.gallery.cc:1516 f.gallery.cc:1523 f.widgets.cc:595 msgid "Page↑" msgstr "Pagina↑" -#: f.gallery.cc:1002 f.gallery.cc:1535 f.gallery.cc:1542 f.widgets.cc:591 +#: f.gallery.cc:992 f.gallery.cc:1517 f.gallery.cc:1524 f.widgets.cc:596 msgid "Page↓" msgstr "Pagina↓" -#: f.gallery.cc:1016 f.gallery.cc:1539 f.widgets.cc:588 +#: f.gallery.cc:1006 f.gallery.cc:1521 f.widgets.cc:593 msgid "First" msgstr "Eerste" -#: f.gallery.cc:1017 f.gallery.cc:1540 f.widgets.cc:589 +#: f.gallery.cc:1007 f.gallery.cc:1522 f.widgets.cc:594 msgid "Last" msgstr "Laatste" -#: f.gallery.cc:1134 +#: f.gallery.cc:1120 msgid "Choose image directory" msgstr "Kies afbeeldingsmap" -#: f.gallery.cc:1141 f.gallery.cc:1155 +#: f.gallery.cc:1127 f.gallery.cc:1141 msgid "recent" msgstr "recent" -#: f.gallery.cc:1142 f.gallery.cc:1160 +#: f.gallery.cc:1128 f.gallery.cc:1146 msgid "newest" msgstr "nieuwste" -#: f.gallery.cc:1224 +#: f.gallery.cc:1210 msgid "no albums found" msgstr "" -#: f.gallery.cc:1231 +#: f.gallery.cc:1217 msgid "Choose album" msgstr "" -#: f.gallery.cc:1281 +#: f.gallery.cc:1267 msgid "Gallery Sort" msgstr "Galerie Sortering " -#: f.gallery.cc:1285 +#: f.gallery.cc:1271 msgid "File Name" msgstr "Bestandsnaam" -#: f.gallery.cc:1286 +#: f.gallery.cc:1272 msgid "File Mod Date/Time" msgstr "Bestand wijz datum/tijd" -#: f.gallery.cc:1287 +#: f.gallery.cc:1273 msgid "Photo Date/Time (EXIF)" msgstr "Foto Datum/Tijd (EXIF)" -#: f.gallery.cc:1289 +#: f.gallery.cc:1275 msgid "ascending" msgstr "oplopend" -#: f.gallery.cc:1290 +#: f.gallery.cc:1276 msgid "descending" msgstr "aflopend" -#: f.gallery.cc:2244 fotoxx.h:1157 +#: f.gallery.cc:2213 fotoxx.h:1165 msgid "Select Files" msgstr "Selecteer bestanden" -#: f.gallery.cc:2716 +#: f.gallery.cc:2684 msgid "Click list position. Click thumbnail to add." msgstr "Klik regel in lijst. Om toe te voegen klik miniatuur." -#: f.gallery.cc:2742 f.gallery.cc:2990 +#: f.gallery.cc:2710 f.gallery.cc:2958 msgid "Edit Bookmarks" msgstr "Bewerken bladwijzers" -#: f.gallery.cc:2917 +#: f.gallery.cc:2885 msgid "unable to save bookmarks file" msgstr "kan bladwijzer bestand niet bewaren" -#: f.gallery.cc:2990 +#: f.gallery.cc:2958 msgid "Go To Bookmark" msgstr "Ga Naar Bladwijzer" -#: f.gallery.cc:3047 f.meta.cc:2732 f.repair.cc:7410 +#: f.gallery.cc:3015 f.meta.cc:2772 f.repair.cc:7407 msgid "file not found" msgstr "bestand niet gevonden" @@ -2052,7 +2140,7 @@ msgid "Hard" msgstr "" -#: f.mashup.cc:1304 f.repair.cc:5378 +#: f.mashup.cc:1304 f.repair.cc:5375 msgid "Blend" msgstr "Mengen" @@ -2068,7 +2156,7 @@ msgid "Gradual" msgstr "Geleidelijk" -#: f.mashup.cc:1580 fotoxx.h:1136 +#: f.mashup.cc:1580 fotoxx.h:1144 msgid "Power" msgstr "Sterkte" @@ -2127,123 +2215,127 @@ msgid "exceeded %d line entries" msgstr "overschreden %d lijn entries" -#: f.meta.cc:179 f.widgets.cc:657 +#: f.meta.cc:179 f.widgets.cc:662 msgid "View Metadata" msgstr "Bekijken Metadata" -#: f.meta.cc:420 f.meta.cc:1756 f.widgets.cc:408 f.widgets.cc:658 +#: f.meta.cc:419 f.meta.cc:1796 f.widgets.cc:407 f.widgets.cc:663 msgid "Edit Metadata" msgstr "Bewerken Metadata" -#: f.meta.cc:430 +#: f.meta.cc:422 f.meta.cc:3748 +msgid "save metadata to file" +msgstr "" + +#: f.meta.cc:431 msgid "Image Date" msgstr "Datum Afbeelding" -#: f.meta.cc:433 +#: f.meta.cc:434 msgid "Time" msgstr "Tijd" -#: f.meta.cc:439 +#: f.meta.cc:440 msgid "Rating (stars):" msgstr "" -#: f.meta.cc:451 +#: f.meta.cc:452 msgid "Caption" msgstr "Onderschrift" -#: f.meta.cc:457 +#: f.meta.cc:458 msgid "Comments" msgstr "Commentaar" -#: f.meta.cc:465 +#: f.meta.cc:466 msgid "Enter New Tag" msgstr "" -#: f.meta.cc:472 f.meta.cc:4889 +#: f.meta.cc:473 f.meta.cc:4930 msgid "Matching Tags" msgstr "" -#: f.meta.cc:480 +#: f.meta.cc:481 msgid "Image Tags" msgstr "Afbeeldings Tags" -#: f.meta.cc:486 +#: f.meta.cc:487 msgid "Recent Tags" msgstr "recente tags" -#: f.meta.cc:495 f.meta.cc:1978 f.meta.cc:4896 +#: f.meta.cc:496 f.meta.cc:2018 f.meta.cc:4937 msgid "Defined Tags Category" msgstr "" -#: f.meta.cc:886 +#: f.meta.cc:887 msgid "date format is YYYY-MM-DD" msgstr "datum formaat is YYYY-MM-DD" -#: f.meta.cc:890 +#: f.meta.cc:891 msgid "date is invalid" msgstr "datum is ongeldig" -#: f.meta.cc:924 +#: f.meta.cc:925 msgid "time format is HH:MM [:SS]" msgstr "tijd formaat is HH:MM [:SS]" -#: f.meta.cc:928 +#: f.meta.cc:929 msgid "time is invalid" msgstr "tijd is ongeldig" -#: f.meta.cc:974 fotoxx.h:1121 +#: f.meta.cc:1014 fotoxx.h:1129 msgid "Manage Tags" msgstr "Tags beheren" -#: f.meta.cc:974 +#: f.meta.cc:1014 msgid "orphan tags" msgstr "verweesde tags" -#: f.meta.cc:978 +#: f.meta.cc:1018 msgid "category" msgstr "categorie" -#: f.meta.cc:981 +#: f.meta.cc:1021 msgid "tag" msgstr "tag" -#: f.meta.cc:988 +#: f.meta.cc:1028 msgid "Defined Tags:" msgstr "gedefineerde tags:" -#: f.meta.cc:1760 f.meta.cc:2418 +#: f.meta.cc:1800 f.meta.cc:2458 msgid "key name" msgstr "sleutel naam" -#: f.meta.cc:1762 f.meta.cc:2419 +#: f.meta.cc:1802 f.meta.cc:2459 msgid "key value" msgstr "sleutel waarde" -#: f.meta.cc:1849 f.widgets.cc:410 +#: f.meta.cc:1889 f.widgets.cc:409 msgid "Delete Metadata" msgstr "Verwijderen Metadata" -#: f.meta.cc:1851 fotoxx.h:1070 +#: f.meta.cc:1891 fotoxx.h:1078 msgid "All" msgstr "Alles" -#: f.meta.cc:1852 +#: f.meta.cc:1892 msgid "One Key:" msgstr "Een Sleutel:" -#: f.meta.cc:1955 f.widgets.cc:411 f.widgets.cc:530 +#: f.meta.cc:1995 f.widgets.cc:410 f.widgets.cc:533 msgid "Batch Add/Remove Tags" msgstr "Batchgewijs Toevoegen/Verwijderen Tags" -#: f.meta.cc:1966 +#: f.meta.cc:2006 msgid "tags to add" msgstr "tags om toe te voegen" -#: f.meta.cc:1967 +#: f.meta.cc:2007 msgid "tags to remove" msgstr "tags om te verwijderen" -#: f.meta.cc:2051 +#: f.meta.cc:2091 #, c-format msgid "" "%s \n" @@ -2252,15 +2344,15 @@ "%s \n" " te veel tags" -#: f.meta.cc:2166 +#: f.meta.cc:2206 msgid "specify files and tags" msgstr "specificeer bestanden en tags" -#: f.meta.cc:2226 +#: f.meta.cc:2266 msgid "tag names file" msgstr "" -#: f.meta.cc:2298 +#: f.meta.cc:2338 #, c-format msgid "" "%d tags to rename \n" @@ -2268,82 +2360,82 @@ "Proceed?" msgstr "" -#: f.meta.cc:2409 +#: f.meta.cc:2449 msgid "Batch Metadata" msgstr "" -#: f.meta.cc:2455 +#: f.meta.cc:2495 msgid "enter key names" msgstr "" -#: f.meta.cc:2461 fotoxx.h:1129 +#: f.meta.cc:2501 fotoxx.h:1137 msgid "no files selected" msgstr "geen bestanden geselecteerd" -#: f.meta.cc:3164 f.meta.cc:3899 f.meta.cc:4163 +#: f.meta.cc:3204 f.meta.cc:3940 f.meta.cc:4204 #, c-format msgid "bad latitude/longitude: %s %s" msgstr "verkeerde breedtegraad/lengtegraad: %s %s" -#: f.meta.cc:3207 f.meta.cc:3571 f.meta.cc:4372 f.meta.cc:4780 +#: f.meta.cc:3247 f.meta.cc:3611 f.meta.cc:4413 f.meta.cc:4821 msgid "-noindex in use, disabled" msgstr "" -#: f.meta.cc:3223 +#: f.meta.cc:3263 msgid "choose map file" msgstr "" -#: f.meta.cc:3332 +#: f.meta.cc:3372 msgid "" "fotoxx-maps package not installed \n" "(see http://kornelix.com/packages and /tarballs)" msgstr "" -#: f.meta.cc:3337 +#: f.meta.cc:3377 #, c-format msgid "map file %s is missing" msgstr "" -#: f.meta.cc:3341 +#: f.meta.cc:3381 #, c-format msgid "" "map latitude/longitude data unreasonable \n" " %.3f %.3f %.3f %.3f" msgstr "" -#: f.meta.cc:3620 +#: f.meta.cc:3660 msgid "No matching images found" msgstr "Geen matchende afbeeldingen gevonden" -#: f.meta.cc:3660 +#: f.meta.cc:3700 msgid "search range (km)" msgstr "zoekbereik (km)" -#: f.meta.cc:3693 f.widgets.cc:414 f.widgets.cc:659 +#: f.meta.cc:3733 f.widgets.cc:413 f.widgets.cc:664 msgid "Edit Geotags" msgstr "Bewerken Geotags" -#: f.meta.cc:3694 +#: f.meta.cc:3734 msgid "Geocoding web service courtesy of" msgstr "Geocoding web service dienstbaarheid van" -#: f.meta.cc:3709 f.meta.cc:3949 f.meta.cc:5655 +#: f.meta.cc:3750 f.meta.cc:3990 f.meta.cc:5710 msgid "city" msgstr "stad" -#: f.meta.cc:3712 f.meta.cc:3952 f.meta.cc:5658 +#: f.meta.cc:3753 f.meta.cc:3993 f.meta.cc:5713 msgid "country" msgstr "land" -#: f.meta.cc:3794 f.meta.cc:4080 +#: f.meta.cc:3835 f.meta.cc:4121 msgid "city not found" msgstr "stad niet gevonden" -#: f.meta.cc:3915 f.widgets.cc:415 f.widgets.cc:533 +#: f.meta.cc:3956 f.widgets.cc:414 f.widgets.cc:536 msgid "Batch Add Geotags" msgstr "Batchgewijs Toevoegen Geotags" -#: f.meta.cc:4142 +#: f.meta.cc:4183 msgid "" "data is incomplete \n" " proceed?" @@ -2351,140 +2443,140 @@ "gegevens zijn onvolledig \n" " doorgaan?" -#: f.meta.cc:4199 +#: f.meta.cc:4240 msgid "choose city" msgstr "kies stad" -#: f.meta.cc:4286 +#: f.meta.cc:4327 msgid "not found" msgstr "niet gevonden" -#: f.meta.cc:4287 +#: f.meta.cc:4328 msgid "city and country required" msgstr "stad en land verplicht" -#: f.meta.cc:4387 +#: f.meta.cc:4428 msgid "Report Geotag Groups" msgstr "Rapport Geotag Groepen" -#: f.meta.cc:4388 +#: f.meta.cc:4429 msgid "Group by country" msgstr "Groepeer per land" -#: f.meta.cc:4389 +#: f.meta.cc:4430 msgid "Group by country/city" msgstr "Groepeer per land/stad" -#: f.meta.cc:4390 +#: f.meta.cc:4431 msgid "Group by country/city/date" msgstr "Groepeer per land/stad/datum" -#: f.meta.cc:4393 +#: f.meta.cc:4434 msgid "Combine within" msgstr "Samenvoegen binnen" -#: f.meta.cc:4395 +#: f.meta.cc:4436 msgid "days" msgstr "dagen" -#: f.meta.cc:4511 +#: f.meta.cc:4552 msgid "geotag groups" msgstr "geotag groepen" -#: f.meta.cc:4817 +#: f.meta.cc:4858 msgid "Search Image Metadata" msgstr "Doorzoeken Afbeelding Metadata" -#: f.meta.cc:4821 +#: f.meta.cc:4862 msgid "images to search:" msgstr "te zoeken afbeeldingen:" -#: f.meta.cc:4822 +#: f.meta.cc:4863 msgid "all" msgstr "alles" -#: f.meta.cc:4823 +#: f.meta.cc:4864 msgid "current set only" msgstr "alleen huidige verzameling " -#: f.meta.cc:4826 +#: f.meta.cc:4867 msgid "matching images:" msgstr "matchende afbeeldingen:" -#: f.meta.cc:4827 +#: f.meta.cc:4868 msgid "new set" msgstr "nieuwe verzameling" -#: f.meta.cc:4828 +#: f.meta.cc:4869 msgid "add to set" msgstr "toevoegen aan verzameling" -#: f.meta.cc:4829 +#: f.meta.cc:4870 msgid "remove" msgstr "verwijderen" -#: f.meta.cc:4832 +#: f.meta.cc:4873 msgid "report type:" msgstr "rapport type:" -#: f.meta.cc:4833 +#: f.meta.cc:4874 msgid "gallery" msgstr "galerie" -#: f.meta.cc:4834 fotoxx-15.08.cc:801 +#: f.meta.cc:4875 fotoxx-15.09.cc:781 msgid "metadata" msgstr "metadata" -#: f.meta.cc:4840 +#: f.meta.cc:4881 msgid "date range" msgstr "datum van/tot" -#: f.meta.cc:4841 +#: f.meta.cc:4882 msgid "stars range" msgstr "sterren van/tot" -#: f.meta.cc:4842 +#: f.meta.cc:4883 msgid "search tags" msgstr "doorzoeken tags" -#: f.meta.cc:4843 +#: f.meta.cc:4884 msgid "search text" msgstr "doorzoeken tekst" -#: f.meta.cc:4844 +#: f.meta.cc:4885 msgid "search files" msgstr "doorzoeken bestanden" -#: f.meta.cc:4849 +#: f.meta.cc:4890 msgid "(yyyymmdd)" msgstr "(jjjjmmmdd)" -#: f.meta.cc:4854 +#: f.meta.cc:4895 msgid "last version only" msgstr "" -#: f.meta.cc:4856 +#: f.meta.cc:4897 msgid "all/any" msgstr "alle/enkele" -#: f.meta.cc:4875 +#: f.meta.cc:4916 msgid "other criteria" msgstr "andere criteria" -#: f.meta.cc:4879 +#: f.meta.cc:4920 msgid "other" msgstr "ander" -#: f.meta.cc:4885 +#: f.meta.cc:4926 msgid "Enter Search Tag" msgstr "" -#: f.meta.cc:5179 +#: f.meta.cc:5221 #, c-format msgid "not a defined tag: %s" msgstr "" -#: f.meta.cc:5210 +#: f.meta.cc:5252 msgid "" "to remove images from current set, \n" "search current set" @@ -2492,7 +2584,7 @@ "doorzoek huidige verzameling om afbeeldingen \n" "te verwijderen uit huidige verzameling " -#: f.meta.cc:5217 +#: f.meta.cc:5259 msgid "" "to add images to current set, \n" "search all images" @@ -2500,32 +2592,39 @@ "doorzoek alle afbeeldingen om afbeeldingen \n" "toe te voegen aan huidige verzameling " -#: f.meta.cc:5266 +#: f.meta.cc:5303 +#, c-format +msgid "" +"search dates not reasonable \n" +" %s %s" +msgstr "" + +#: f.meta.cc:5321 msgid "stars range not reasonable" msgstr "" -#: f.meta.cc:5511 +#: f.meta.cc:5566 #, c-format msgid "images added: %d removed: %d new count: %d" msgstr "afbeeldingen toegevoegd: %d verwijderd: %d nieuwe telling: %d" -#: f.meta.cc:5514 +#: f.meta.cc:5569 msgid "no changes made" msgstr "geen veranderingen gemaakt" -#: f.meta.cc:5652 +#: f.meta.cc:5707 msgid "Add Geotags Search Criteria" msgstr "Toevoegen Geotags Zoek Criteria" -#: f.meta.cc:5671 +#: f.meta.cc:5726 msgid "range (km)" msgstr "bereik (km)" -#: f.meta.cc:5764 +#: f.meta.cc:5819 msgid "error in latitude/longitude/range" msgstr "fout in breedtegraad/lengtegraad/bereik" -#: f.meta.cc:5828 +#: f.meta.cc:5883 msgid "" "These items are always reported: \n" "date, stars, tags, caption, comment" @@ -2533,19 +2632,19 @@ "Deze items worden altijd gerapporteerd: \n" "datum, sterren, tags, onderschrift, commentaar" -#: f.meta.cc:5852 +#: f.meta.cc:5907 msgid "Additional Items for Report" msgstr "Toegevoegde Items voor Rapport" -#: f.meta.cc:5858 +#: f.meta.cc:5913 msgid "Keyword" msgstr "Sleutelwoord" -#: f.meta.cc:5865 +#: f.meta.cc:5920 msgid "Match Criteria" msgstr "Match Criteria" -#: f.meta.cc:6425 +#: f.meta.cc:6480 msgid "image index is missing" msgstr "afbeeldings index ontbreekt" @@ -2561,47 +2660,47 @@ msgid "Kuwahara method" msgstr "Kuwahara methode" -#: f.repair.cc:1012 +#: f.repair.cc:1014 msgid "Apply repeatedly while watching the image." msgstr "" -#: f.repair.cc:1013 +#: f.repair.cc:1015 msgid "Measure" msgstr "" -#: f.repair.cc:1047 +#: f.repair.cc:1049 msgid "Noise Reduction" msgstr "Ruis vermindering" -#: f.repair.cc:1063 +#: f.repair.cc:1065 msgid "Flatten Outliers 1" msgstr "Uitschieters Afvlakken 1" -#: f.repair.cc:1064 +#: f.repair.cc:1066 msgid "Flatten Outliers 2" msgstr "Uitschieters Afvlakken 2" -#: f.repair.cc:1065 +#: f.repair.cc:1067 msgid "Median Brightness" msgstr "Mediane helderheid" -#: f.repair.cc:1093 +#: f.repair.cc:1095 msgid "dark areas" msgstr "" -#: f.repair.cc:1095 +#: f.repair.cc:1097 msgid "all areas" msgstr "" -#: f.repair.cc:1193 +#: f.repair.cc:1195 msgid "Measure Noise" msgstr "" -#: f.repair.cc:1194 +#: f.repair.cc:1196 msgid "Click on a monotone image area." msgstr "" -#: f.repair.cc:2095 +#: f.repair.cc:2098 msgid "" "1. Drag mouse to select. \n" "2. Erase. 3. Repeat. " @@ -2610,23 +2709,23 @@ "2. Druk [verwijderen]. \n" "3. Herhaal met nieuwe uitsnede. " -#: f.repair.cc:2117 f.widgets.cc:451 +#: f.repair.cc:2120 f.widgets.cc:452 msgid "Smart Erase" msgstr "Slim verwijderen" -#: f.repair.cc:2122 fotoxx.h:1140 +#: f.repair.cc:2125 fotoxx.h:1148 msgid "Radius" msgstr "straal" -#: f.repair.cc:2124 f.widgets.cc:449 +#: f.repair.cc:2127 f.widgets.cc:450 msgid "Blur" msgstr "Afbeelding vervagen" -#: f.repair.cc:2127 +#: f.repair.cc:2130 msgid "New Area" msgstr "Nieuwe uitsnede" -#: f.repair.cc:2475 +#: f.repair.cc:2479 msgid "" "Method 1:\n" " Left-click on red-eye to darken.\n" @@ -2644,11 +2743,11 @@ "Ongedaan maken:\n" " Rechterklik in het rode oog." -#: f.repair.cc:2491 +#: f.repair.cc:2495 msgid "Red Eye Reduction" msgstr "Rode ogen correctie" -#: f.repair.cc:2955 +#: f.repair.cc:2959 msgid "" "shift + left click: pick color or image position \n" "left click or drag: paint color or copy image \n" @@ -2658,40 +2757,40 @@ "linkerklik of sleep: verf kleur of copieer afbeelding \n" "rechterklik of sleep: verwijder kleur of afbeelding" -#: f.repair.cc:2987 f.widgets.cc:453 +#: f.repair.cc:2991 f.widgets.cc:454 msgid "Paint/Clone" msgstr "Pixels Schilderen/Klonen" -#: f.repair.cc:2991 +#: f.repair.cc:2995 msgid "paint color" msgstr "schilder kleur" -#: f.repair.cc:2994 +#: f.repair.cc:2998 msgid "copy from image" msgstr "copieer van afbeelding" -#: f.repair.cc:3001 f.repair.cc:3557 +#: f.repair.cc:3005 f.repair.cc:3562 msgid "paintbrush radius" msgstr "straal penseelcirkel" -#: f.repair.cc:3002 +#: f.repair.cc:3006 msgid "transparency center" msgstr "doorzichtigheid midden" -#: f.repair.cc:3003 +#: f.repair.cc:3007 msgid "transparency edge" msgstr "doorzichtigheid rand" -#: f.repair.cc:3010 f.repair.cc:3564 +#: f.repair.cc:3014 f.repair.cc:3569 msgid "gradual paint" msgstr "gradueel schilderen" -#: f.repair.cc:3017 +#: f.repair.cc:3021 #, c-format msgid "Undo Memory %d%c" msgstr "Geheugen voor ongedaan maken %d%c" -#: f.repair.cc:3352 +#: f.repair.cc:3357 msgid "" "Undo memory limit has been reached. \n" "Save work with [done], then resume painting." @@ -2699,178 +2798,178 @@ "Herstel geheugen limiet is bereikt \n" "Bewaar werk met [Klaar], dan schilderen hervatten. " -#: f.repair.cc:3517 +#: f.repair.cc:3522 msgid "" "left drag: add transparency \n" "right drag: add opacity" msgstr "" -#: f.repair.cc:3549 f.widgets.cc:454 +#: f.repair.cc:3554 f.widgets.cc:455 msgid "Paint Transparency" msgstr "" -#: f.repair.cc:3558 +#: f.repair.cc:3563 msgid "strength center" msgstr "" -#: f.repair.cc:3559 +#: f.repair.cc:3564 msgid "strength edge" msgstr "" -#: f.repair.cc:3769 f.widgets.cc:455 +#: f.repair.cc:3778 f.widgets.cc:456 msgid "Color Mode" msgstr "Kleur Mode" -#: f.repair.cc:3772 +#: f.repair.cc:3781 msgid "black/white positive" msgstr "zwart/wit positief" -#: f.repair.cc:3773 +#: f.repair.cc:3782 msgid "black/white negative" msgstr "zwart/wit negatief" -#: f.repair.cc:3774 +#: f.repair.cc:3783 msgid "color positive" msgstr "kleur positief" -#: f.repair.cc:3775 +#: f.repair.cc:3784 msgid "color negative" msgstr "kleur negatief" -#: f.repair.cc:3776 +#: f.repair.cc:3785 msgid "sepia" msgstr "sepia" -#: f.repair.cc:3945 f.widgets.cc:456 +#: f.repair.cc:3954 f.widgets.cc:457 msgid "Shift Colors" msgstr "Verschuiven Kleuren" -#: f.repair.cc:4217 +#: f.repair.cc:4226 msgid "+Brightness" msgstr "+Helderheid" -#: f.repair.cc:4218 +#: f.repair.cc:4227 msgid "+Red -Cyan" msgstr "+Rood -Cyaan" -#: f.repair.cc:4219 +#: f.repair.cc:4228 msgid "+Green -Magenta" msgstr "+Groen -Magenta" -#: f.repair.cc:4220 +#: f.repair.cc:4229 msgid "+Blue -Yellow" msgstr "+Blauw -Geel" -#: f.repair.cc:4226 fotoxx.h:1142 +#: f.repair.cc:4235 fotoxx.h:1150 msgid "Red" msgstr "Rood" -#: f.repair.cc:4227 fotoxx.h:1108 +#: f.repair.cc:4236 fotoxx.h:1116 msgid "Green" msgstr "Groen" -#: f.repair.cc:4228 fotoxx.h:1077 +#: f.repair.cc:4237 fotoxx.h:1085 msgid "Blue" msgstr "Blauw" -#: f.repair.cc:4527 +#: f.repair.cc:4536 msgid "Color Hue" msgstr "" -#: f.repair.cc:4528 +#: f.repair.cc:4537 msgid "Saturation" msgstr "" -#: f.repair.cc:4529 +#: f.repair.cc:4538 msgid "Lightness" msgstr "" -#: f.repair.cc:4530 +#: f.repair.cc:4539 msgid "Adjustment" msgstr "" -#: f.repair.cc:4869 +#: f.repair.cc:4878 msgid "Ramp brightness across image" msgstr "Helderheidsverspreiding horizontaal/verticaal" -#: f.repair.cc:5278 f.tools.cc:2014 +#: f.repair.cc:5286 f.tools.cc:2038 msgid "Click image to select pixels." msgstr "Klik in afbeelding om pixels te selecteren" -#: f.repair.cc:5312 f.widgets.cc:460 +#: f.repair.cc:5317 f.widgets.cc:461 msgid "Color Ramp" msgstr "" -#: f.repair.cc:5323 +#: f.repair.cc:5328 msgid "Metric:" msgstr "Metriek:" -#: f.repair.cc:5754 +#: f.repair.cc:5751 msgid "Color Match Images" msgstr "Kleuren Match Afbeeldingen" -#: f.repair.cc:5781 +#: f.repair.cc:5777 msgid "mouse radius for color sample" msgstr "straal cirkel voor kleurmonster" -#: f.repair.cc:5784 +#: f.repair.cc:5780 msgid "image for source color" msgstr "afbeelding voor kleur-selectie" -#: f.repair.cc:5786 +#: f.repair.cc:5782 msgid "click on image to get source color" msgstr "klik in afbeelding voor kleur-selectie" -#: f.repair.cc:5789 +#: f.repair.cc:5785 msgid "image to set matching color" msgstr "afbeelding om matchende kleur te veranderen" -#: f.repair.cc:5791 +#: f.repair.cc:5787 msgid "click on image to set matching color" msgstr "klik op afbeelding om matchende kleur te veranderen" -#: f.repair.cc:5851 +#: f.repair.cc:5848 msgid "select source image color first" msgstr "kies eerst kleur in afbeelding" -#: f.repair.cc:6036 +#: f.repair.cc:6033 msgid "Change Color Profile" msgstr "Wijzigen Kleurprofiel" -#: f.repair.cc:6040 +#: f.repair.cc:6037 msgid "input profile" msgstr "input profiel" -#: f.repair.cc:6044 +#: f.repair.cc:6041 msgid "output profile" msgstr "output profiel" -#: f.repair.cc:6060 +#: f.repair.cc:6057 msgid "color profile" msgstr "kleurprofiel" -#: f.repair.cc:6106 f.repair.cc:6112 +#: f.repair.cc:6103 f.repair.cc:6109 #, c-format msgid "unknown cms profile %s" msgstr "onbekend cms profiel %s" -#: f.repair.cc:6244 f.widgets.cc:463 +#: f.repair.cc:6241 f.widgets.cc:464 msgid "Remove Dust" msgstr "Stofspikkels verwijderen" -#: f.repair.cc:6248 +#: f.repair.cc:6245 msgid "spot size limit" msgstr "stip grootte limiet" -#: f.repair.cc:6251 +#: f.repair.cc:6248 msgid "max. brightness" msgstr "max. helderheid" -#: f.repair.cc:6254 +#: f.repair.cc:6251 msgid "min. contrast" msgstr "min. contrast" -#: f.repair.cc:7035 +#: f.repair.cc:7032 msgid "" " Adjust each RGB color to minimize \n" " color fringes at the image extremes. " @@ -2878,35 +2977,35 @@ "Instellen van elke RGB om kleur-franjes op \n" "de afbeeldings-extremen te verminderen " -#: f.repair.cc:7058 f.widgets.cc:465 +#: f.repair.cc:7055 f.widgets.cc:466 msgid "Color Fringes" msgstr "" -#: f.repair.cc:7257 f.widgets.cc:466 +#: f.repair.cc:7254 f.widgets.cc:467 msgid "Stuck Pixels" msgstr "" -#: f.repair.cc:7263 +#: f.repair.cc:7260 msgid "pixel group" msgstr "pixel groep" -#: f.repair.cc:7271 f.repair.cc:7339 +#: f.repair.cc:7268 f.repair.cc:7336 msgid "stuck pixels:" msgstr "defecte pixels:" -#: f.repair.cc:7367 +#: f.repair.cc:7364 msgid "Load Stuck Pixels" msgstr "Laden Defecte Pixels" -#: f.repair.cc:7369 +#: f.repair.cc:7366 msgid "File:" msgstr "Bestand:" -#: f.repair.cc:7394 f.repair.cc:7451 +#: f.repair.cc:7391 f.repair.cc:7448 msgid "Stuck Pixels file" msgstr "Defecte Pixels bestand" -#: f.repair.cc:7431 +#: f.repair.cc:7428 msgid "file format error" msgstr "fout in bestandsformaat" @@ -2931,7 +3030,7 @@ "and to make the gallery pages acceptably fast." msgstr "" -#: f.tools.cc:106 f.widgets.cc:506 +#: f.tools.cc:106 f.widgets.cc:507 msgid "Index Image Files" msgstr "Indexering Afbeeldingen" @@ -2976,211 +3075,211 @@ "Please remove." msgstr "" -#: f.tools.cc:394 +#: f.tools.cc:392 msgid "no thumbnails directory defined" msgstr "geen miniaturen map gedefinieerd" -#: f.tools.cc:739 +#: f.tools.cc:734 msgid "COMPLETED" msgstr "VOLTOOID" -#: f.tools.cc:778 +#: f.tools.cc:775 msgid "Indexing is required for first-time startup." msgstr "" -#: f.tools.cc:840 +#: f.tools.cc:837 msgid "Recent Files Gallery" msgstr "Laatst bekeken galerie" -#: f.tools.cc:841 +#: f.tools.cc:838 msgid "Newest Files Gallery" msgstr "Nieuwste Bestanden Galerie" -#: f.tools.cc:842 +#: f.tools.cc:839 msgid "Previous Gallery" msgstr "Vorige Galerie" -#: f.tools.cc:843 +#: f.tools.cc:840 msgid "Previous Image" msgstr "Vorige Afbeelding" -#: f.tools.cc:844 +#: f.tools.cc:841 msgid "Blank Window" msgstr "Leeg Venster" -#: f.tools.cc:845 +#: f.tools.cc:842 msgid "Directory" msgstr "" -#: f.tools.cc:846 +#: f.tools.cc:843 msgid "Image File" msgstr "Afbeeldingsbestand" -#: f.tools.cc:887 f.widgets.cc:507 +#: f.tools.cc:885 f.widgets.cc:508 msgid "User Options" msgstr "" -#: f.tools.cc:890 +#: f.tools.cc:888 msgid "Startup Display" msgstr "Tonen bij Opstart" -#: f.tools.cc:901 +#: f.tools.cc:899 msgid "Menu Style" msgstr "Menu Stijl" -#: f.tools.cc:902 +#: f.tools.cc:900 msgid "Icons" msgstr "Pictogrammen" -#: f.tools.cc:903 +#: f.tools.cc:901 msgid "Icons + Text" msgstr "Pictogrammen + Tekst" -#: f.tools.cc:905 +#: f.tools.cc:903 msgid "Icon size" msgstr "Pictogram grootte" -#: f.tools.cc:909 -msgid "Image Pan/scroll:" +#: f.tools.cc:907 +msgid "Dialog font and size" msgstr "" #: f.tools.cc:912 +msgid "Image Pan/scroll:" +msgstr "" + +#: f.tools.cc:915 msgid "Zooms for 2x" msgstr "Zooms voor 2x" -#: f.tools.cc:921 +#: f.tools.cc:924 msgid "JPEG save quality" msgstr "JPEG kwaliteit" -#: f.tools.cc:924 f.tools.cc:3041 -msgid "Thumbnail size" -msgstr "" - -#: f.tools.cc:928 +#: f.tools.cc:931 msgid "show hidden directories in gallery view" msgstr "" -#: f.tools.cc:931 +#: f.tools.cc:934 msgid "prev/next shows last file version only" msgstr "" -#: f.tools.cc:934 +#: f.tools.cc:937 msgid "RAW command" msgstr "RAW opdracht" -#: f.tools.cc:938 +#: f.tools.cc:941 msgid "RAW file types" msgstr "RAW bestandstype" -#: f.tools.cc:1015 +#: f.tools.cc:1021 msgid "Delete present thumbnails to make effective" msgstr "" -#: f.tools.cc:1037 +#: f.tools.cc:1043 msgid "Select startup directory" msgstr "Kies opstart map" -#: f.tools.cc:1044 +#: f.tools.cc:1050 msgid "Select startup image file" msgstr "Kies opstart afbeeldingsbestand" -#: f.tools.cc:1066 +#: f.tools.cc:1088 msgid "startup directory is invalid" msgstr "opstart map is ongeldig" -#: f.tools.cc:1077 +#: f.tools.cc:1099 msgid "startup file is invalid" msgstr "opstart bestand is ongeldig" -#: f.tools.cc:1211 +#: f.tools.cc:1237 msgid "Edit KB Shortcuts" msgstr "Bewerk KB Shortcuts" -#: f.tools.cc:1216 +#: f.tools.cc:1242 msgid "shortcut key:" msgstr "shortcut toets:" -#: f.tools.cc:1217 +#: f.tools.cc:1243 msgid "(enter key)" msgstr "(enter toets)" -#: f.tools.cc:1343 +#: f.tools.cc:1369 #, c-format msgid "\"%s\" Reserved, cannot be used" msgstr "\"%s\" Gereserveerd, kan niet gebruikt worden" -#: f.tools.cc:1497 +#: f.tools.cc:1523 msgid "unable to save KB-shortcuts file" msgstr "kan KB-shortcuts bestand niet bewaren" -#: f.tools.cc:1801 f.widgets.cc:510 +#: f.tools.cc:1827 f.widgets.cc:511 msgid "Grid Lines" msgstr "Raster instellen" -#: f.tools.cc:1810 +#: f.tools.cc:1836 msgid "x-spacing" msgstr "x-afstand" -#: f.tools.cc:1811 +#: f.tools.cc:1837 msgid "x-count" msgstr "x-aantal" -#: f.tools.cc:1812 +#: f.tools.cc:1838 msgid "x-enable" msgstr "x-activeren" -#: f.tools.cc:1818 +#: f.tools.cc:1844 msgid "y-spacing" msgstr "y-afstand" -#: f.tools.cc:1819 +#: f.tools.cc:1845 msgid "y-count" msgstr "y-aantal" -#: f.tools.cc:1820 +#: f.tools.cc:1846 msgid "y-enable" msgstr "y-activeren" -#: f.tools.cc:1940 f.tools.cc:1945 f.widgets.cc:511 +#: f.tools.cc:1966 f.tools.cc:1971 f.widgets.cc:512 msgid "Line Color" msgstr "Lijn kleur" -#: f.tools.cc:1942 +#: f.tools.cc:1968 msgid "Area Color" msgstr "Uitsnede kleur" -#: f.tools.cc:2050 f.widgets.cc:512 +#: f.tools.cc:2073 f.widgets.cc:513 msgid "Show RGB" msgstr "RGB waarden tonen" -#: f.tools.cc:2345 +#: f.tools.cc:2365 msgid "" "Drag mouse on image. \n" "Left click to cancel. \n" "Key M to toggle dialog." msgstr "" -#: f.tools.cc:2371 f.widgets.cc:513 +#: f.tools.cc:2391 f.widgets.cc:514 msgid "Magnify Image" msgstr "" -#: f.tools.cc:2380 +#: f.tools.cc:2400 msgid "X-size" msgstr "" -#: f.tools.cc:2625 +#: f.tools.cc:2645 msgid "Darkest and Brightest Pixels" msgstr "Donkerste en Lichtste Pixels" -#: f.tools.cc:2648 +#: f.tools.cc:2668 msgid "Dark Limit" msgstr "Donkere Limiet" -#: f.tools.cc:2649 +#: f.tools.cc:2669 msgid "Bright Limit" msgstr "Lichte Limiet" -#: f.tools.cc:2744 +#: f.tools.cc:2764 msgid "" "Brightness should show a gradual ramp \n" "extending all the way to the edges." @@ -3188,113 +3287,145 @@ "Helderheid moet een geleidelijke verandering laten \n" "zien, zich geheel uitstrekkend naar de randen." -#: f.tools.cc:2840 f.widgets.cc:516 +#: f.tools.cc:2860 f.widgets.cc:517 msgid "Monitor Gamma" msgstr "Gamma waarde monitor" -#: f.tools.cc:2900 +#: f.tools.cc:2920 msgid "Available Translations" msgstr "Beschikbare vertalingen" -#: f.tools.cc:2904 +#: f.tools.cc:2924 msgid "Set Language" msgstr "Instellen taal" -#: f.tools.cc:3039 f.widgets.cc:519 -msgid "Find Duplicate Images" +#: f.tools.cc:3064 f.widgets.cc:520 +msgid "Calibrate Printer" msgstr "" -#: f.tools.cc:3044 -msgid "pixel difference" +#: f.tools.cc:3087 +msgid "print color chart" msgstr "" -#: f.tools.cc:3047 -msgid "pixel count" +#: f.tools.cc:3088 +msgid "scan and save color chart" msgstr "" -#: f.tools.cc:3050 -msgid "Images:" +#: f.tools.cc:3089 +msgid "align and trim color chart" msgstr "" -#: f.tools.cc:3051 -msgid "searching ..." +#: f.tools.cc:3090 +msgid "open and process color chart" msgstr "" -#: f.tools.cc:3053 -msgid "Duplicates:" +#: f.tools.cc:3091 +msgid "print image with revised colors" msgstr "" -#: f.tools.cc:3071 +#: f.tools.cc:3258 #, c-format -msgid "only %d image thumbnails found" +msgid "" +"Scan the printed color chart. \n" +"Save in %s/" msgstr "" -#: f.widgets.cc:112 -msgid "TOP" -msgstr "TOP" +#: f.tools.cc:3272 +msgid "" +"Open and edit the scanned color chart file. \n" +"Remove any skew or rotation caused by the scanner. \n" +"Trim off all margins. Be careful not to cut off \n" +"any color tile edges or leave any white margins." +msgstr "" + +#: f.tools.cc:3308 +msgid "Open the trimmed color chart file" +msgstr "" + +#: f.tools.cc:3405 +msgid "" +"Set the file name and location \n" +"for the output color map file." +msgstr "" + +#: f.tools.cc:3440 +msgid "Color map file to use" +msgstr "" + +#: f.tools.cc:3461 +msgid "Select the image file to print." +msgstr "" + +#: f.tools.cc:3588 +msgid "Image colors are converted for printing." +msgstr "" -#: f.widgets.cc:115 +#: f.widgets.cc:111 msgid "Album" msgstr "" -#: f.widgets.cc:169 +#: f.widgets.cc:113 +msgid "TOP" +msgstr "TOP" + +#: f.widgets.cc:165 msgid "Current Image File (key F)" msgstr "" -#: f.widgets.cc:170 +#: f.widgets.cc:166 msgid "Thumbnail Gallery (key G)" msgstr "" -#: f.widgets.cc:171 +#: f.widgets.cc:167 msgid "World Maps (key W)" msgstr "" -#: f.widgets.cc:174 +#: f.widgets.cc:170 msgid "Favorite Functions" msgstr "Favoriete Functies" -#: f.widgets.cc:175 +#: f.widgets.cc:171 msgid "File: Open, RAW, Rename, Trash, Print" msgstr "" -#: f.widgets.cc:176 +#: f.widgets.cc:172 msgid "Save modified image file to disk" msgstr "Bewaar gewijzigd afbeeldingsbestand" -#: f.widgets.cc:177 +#: f.widgets.cc:173 msgid "Open previous or next file (left/right mouse click)" msgstr "Open vorig of volgend bestand (linker/rechter muisklik)" -#: f.widgets.cc:178 +#: f.widgets.cc:174 msgid "Metadata: Captions, Tags, Ratings, Geotags, Search ... " msgstr "Metadata: Onderschriften, Tags, Geotags, Zoeken ..." -#: f.widgets.cc:179 +#: f.widgets.cc:175 msgid "Areas: Select areas to edit, copy and paste" msgstr "Uitsnedes: Selecteer uitsnedes om te wijzigen, copieren en plakken." -#: f.widgets.cc:180 +#: f.widgets.cc:176 msgid "Edit: Trim, Rotate, Resize, Brightness, Contrast, Text ..." msgstr "" "Bewerken: Bijsnijden, Draaien, Herschalen, Helderheid, Contrast, Tekst ..." -#: f.widgets.cc:181 +#: f.widgets.cc:177 msgid "Repair: Sharpen, Noise, Red-eyes, Color, Paint, Clone ..." msgstr "Repareren: Verscherpen, Ruis, Rode ogen, Kleur, Schilderen, Klonen ..." -#: f.widgets.cc:182 +#: f.widgets.cc:178 msgid "Bend: Fix Perspective, Bend/Warp image ..." msgstr "Krommen: Fix Perspectief, Krommen/Kromtrekken afbeelding ..." -#: f.widgets.cc:183 +#: f.widgets.cc:179 msgid "Effects: Special Effects, Arty Transforms" msgstr "Effecten: Speciale Effecten, Artistieke Transformaties" -#: f.widgets.cc:184 +#: f.widgets.cc:180 msgid "Combine: HDR, HDF, Panorama, Stack, Mashup" msgstr "Samenvoegen: HDR, HDF, Panorama, Stapel, Mashup" -#: f.widgets.cc:185 +#: f.widgets.cc:181 msgid "" "Undo or Redo one edit (left/right mouse click) \n" " hold key A to include all edits" @@ -3302,1123 +3433,1095 @@ "Herstel of Opnieuw een bewerking (linker/rechter muisklik) \n" " toets A ingedrukt houden om alle bewerkingen mee te nemen " -#: f.widgets.cc:187 +#: f.widgets.cc:183 msgid "Tools: Index, Options, Shortcuts, Magnify ..." msgstr "" -#: f.widgets.cc:188 +#: f.widgets.cc:184 msgid "Help: Quick Start, User Guide, Recent Changes ..." msgstr "Help: Snel Start, Gebruikershandleiding, Recente veranderingen ..." -#: f.widgets.cc:191 +#: f.widgets.cc:187 msgid "Set gallery from current image file" msgstr "Instellen galerie van huidige afbeelding" -#: f.widgets.cc:192 +#: f.widgets.cc:188 msgid "Albums: Manage Albums, Slide Show, Desktop Background" msgstr "" -#: f.widgets.cc:193 +#: f.widgets.cc:189 msgid "go to bookmarked image" msgstr "ga naar afbeelding van bladwijzer" -#: f.widgets.cc:194 +#: f.widgets.cc:190 msgid "increase thumbnail size" msgstr "vergroten miniaturen" -#: f.widgets.cc:195 +#: f.widgets.cc:191 msgid "reduce thumbnail size" msgstr "verkleinen miniaturen" -#: f.widgets.cc:196 +#: f.widgets.cc:192 msgid "change sort order" msgstr "verander sorteer volgorde" -#: f.widgets.cc:197 +#: f.widgets.cc:193 msgid "jump to beginning (top)" msgstr "spring naar begin (boven)" -#: f.widgets.cc:198 +#: f.widgets.cc:194 msgid "jump to end (bottom)" msgstr "spring naar eind (onder)" -#: f.widgets.cc:199 +#: f.widgets.cc:195 msgid "previous page" msgstr "vorige pagina" -#: f.widgets.cc:200 +#: f.widgets.cc:196 msgid "next page" msgstr "volgende pagina" -#: f.widgets.cc:201 +#: f.widgets.cc:197 msgid "slow scroll" msgstr "langzame scroll" -#: f.widgets.cc:202 +#: f.widgets.cc:198 msgid "Batch conversion, metadata, RAW processing" msgstr "" -#: f.widgets.cc:205 +#: f.widgets.cc:201 msgid "Choose a map for image locations" msgstr "" -#: f.widgets.cc:206 +#: f.widgets.cc:202 msgid "Set image search radius for map click" msgstr "" -#: f.widgets.cc:209 +#: f.widgets.cc:205 msgid "Open another window" msgstr "Open nog een venster" -#: f.widgets.cc:210 +#: f.widgets.cc:206 msgid "Open a new image file" msgstr "Open nieuwe afbeelding" -#: f.widgets.cc:211 +#: f.widgets.cc:207 msgid "Open the previously seen file" msgstr "Open vorig getoond bestand" -#: f.widgets.cc:212 +#: f.widgets.cc:208 msgid "Open a recently seen file" msgstr "Open een onlangs getoond bestand" -#: f.widgets.cc:213 +#: f.widgets.cc:209 msgid "Open a newly added file" msgstr "Open een nieuw toegevoegd bestand" -#: f.widgets.cc:214 f.widgets.cc:215 +#: f.widgets.cc:210 f.widgets.cc:211 msgid "Open and edit a camera RAW file" msgstr "Open en bewerk een RAW bestand" -#: f.widgets.cc:216 +#: f.widgets.cc:212 msgid "Change the image file name" msgstr "Wijzig naam van het afbeeldingsbestand" -#: f.widgets.cc:217 +#: f.widgets.cc:213 msgid "Create a blank image" msgstr "Maak een lege afbeelding" -#: f.widgets.cc:218 +#: f.widgets.cc:214 msgid "Move image file to Trash" msgstr "Verplaats afbeeldingsbestand naar prullenbak" -#: f.widgets.cc:219 +#: f.widgets.cc:215 msgid "Permanently delete image file" msgstr "Definitief verwijderen afbeeldings bestand" -#: f.widgets.cc:220 +#: f.widgets.cc:216 msgid "Print the current image" msgstr "Afdrukken actuele afbeelding" -#: f.widgets.cc:221 f.widgets.cc:402 +#: f.widgets.cc:217 f.widgets.cc:401 msgid "Quit Fotoxx" msgstr "Verlaat Fotoxx" -#: f.widgets.cc:224 +#: f.widgets.cc:220 msgid "List a few key metadata items" msgstr "Belangrijkste metadata opsommen" -#: f.widgets.cc:225 +#: f.widgets.cc:221 msgid "List all metadata items" msgstr "Opsommen alle metadata items" -#: f.widgets.cc:226 +#: f.widgets.cc:222 msgid "(Toggle) show captions and comments" msgstr "(Wissel) toon onderschriften en commentaar" -#: f.widgets.cc:227 +#: f.widgets.cc:223 msgid "Edit image tags/caption/rating ..." msgstr "Bewerken afbeeldings tags/onderschrift/rating ..." -#: f.widgets.cc:228 +#: f.widgets.cc:224 msgid "Edit any image metadata" msgstr "Bewerken metadata van afbeelding" -#: f.widgets.cc:229 +#: f.widgets.cc:225 msgid "Remove all metadata from an image" msgstr "Verwijder alle metadata van een afbeelding" -#: f.widgets.cc:230 +#: f.widgets.cc:226 msgid "Add/remove tags for multiple images" msgstr "Toevoegen/verwijderen tags voor meerdere afbeeldingen" -#: f.widgets.cc:231 +#: f.widgets.cc:227 msgid "Convert tag names for all images" msgstr "" -#: f.widgets.cc:232 +#: f.widgets.cc:228 msgid "Add/change/delete metadata for multiple images" msgstr "" -#: f.widgets.cc:233 +#: f.widgets.cc:229 msgid "Edit image location and geotags" msgstr "Bewerken afbeeldings locatie en geotags" -#: f.widgets.cc:234 +#: f.widgets.cc:230 msgid "Add/revise geotags for multiple images" msgstr "" -#: f.widgets.cc:235 +#: f.widgets.cc:231 msgid "Find all images for a location [date]" msgstr "Zoek alle afbeeldingen voor een locatie [datum]" -#: f.widgets.cc:236 +#: f.widgets.cc:232 msgid "Find images meeting select criteria" msgstr "Zoek afbeeldingen volgens selectie criteria" -#: f.widgets.cc:239 +#: f.widgets.cc:235 msgid "Select object or area for editing" msgstr "Selecteer object of uitsnede om te bewerken" -#: f.widgets.cc:240 +#: f.widgets.cc:236 msgid "Show (outline) existing area" msgstr "Toon (contour) bestaande uitsnede" -#: f.widgets.cc:241 +#: f.widgets.cc:237 msgid "Hide existing area" msgstr "Verberg bestaande uitsnede" -#: f.widgets.cc:242 +#: f.widgets.cc:238 msgid "Enable area for editing" msgstr "Activeer uitsnede om te bewerken" -#: f.widgets.cc:243 +#: f.widgets.cc:239 msgid "Disable area for editing" msgstr "Deactiveer uitsnede om te bewerken" -#: f.widgets.cc:244 +#: f.widgets.cc:240 msgid "Reverse existing area" msgstr "Bestaande uitsnede omkeren" -#: f.widgets.cc:245 +#: f.widgets.cc:241 msgid "Erase existing area" msgstr "Verwijder bestaande uitsnede" -#: f.widgets.cc:246 +#: f.widgets.cc:242 +msgid "Copy area for later pasting into image" +msgstr "" + +#: f.widgets.cc:243 +msgid "Paste previously copied area into image" +msgstr "" + +#: f.widgets.cc:244 msgid "Open a file and paste as area into image" msgstr "" -#: f.widgets.cc:247 +#: f.widgets.cc:245 msgid "Save area to a file with transparency" msgstr "" -#: f.widgets.cc:250 +#: f.widgets.cc:248 msgid "Trim/Crop margins and/or Rotate" msgstr "Bijsnijden marges en/of Draaien" -#: f.widgets.cc:251 +#: f.widgets.cc:249 msgid "Upright a rotated image" msgstr "" -#: f.widgets.cc:252 f.widgets.cc:253 +#: f.widgets.cc:250 f.widgets.cc:251 msgid "Fast auto enhance that may work OK" msgstr "Snelle auto-verbetering dat mogelijk goed werkt" -#: f.widgets.cc:254 +#: f.widgets.cc:252 msgid "Adjust brightness, contrast, color" msgstr "Instellen helderheid, contrast, kleur" -#: f.widgets.cc:255 +#: f.widgets.cc:253 msgid "Add local contrast, enhance details" msgstr "Toevoegen lokaal contrast, verbeter details" -#: f.widgets.cc:256 +#: f.widgets.cc:254 msgid "Adjust brightness distribution" msgstr "Instellen helderheids verdeling" -#: f.widgets.cc:257 +#: f.widgets.cc:255 msgid "Flatten zonal brightness distribution" msgstr "" -#: f.widgets.cc:258 +#: f.widgets.cc:256 msgid "Change pixel dimensions" msgstr "Verander pixel dimensies" -#: f.widgets.cc:259 +#: f.widgets.cc:257 msgid "Mirror image horizontally or vertically" msgstr "Spiegel afbeelding horizontaal of verticaal" -#: f.widgets.cc:260 +#: f.widgets.cc:258 msgid "Write text on image" msgstr "Schrijf tekst op afbeelding" -#: f.widgets.cc:261 +#: f.widgets.cc:259 msgid "Write lines or arrows on image" msgstr "Schrijf lijnen of pijlen op afbeelding" -#: f.widgets.cc:262 +#: f.widgets.cc:260 msgid "Fix brightness uniformity across image" msgstr "Repareren helderheidsverdeling over de afbeelding" -#: f.widgets.cc:263 +#: f.widgets.cc:261 msgid "Paint edit function gradually with mouse" msgstr "Bewerkingsfunctie geleidelijk met muis schilderen " -#: f.widgets.cc:264 +#: f.widgets.cc:262 msgid "Leverage edits by brightness or color" msgstr "Veranderingen versterken met helderheid of kleur" -#: f.widgets.cc:265 +#: f.widgets.cc:263 msgid "Edit plugins menu or run a plugin function" msgstr "" -#: f.widgets.cc:268 +#: f.widgets.cc:266 msgid "Make the image look sharper" msgstr "Laat de afbeelding er scherper uitzien" -#: f.widgets.cc:269 +#: f.widgets.cc:267 msgid "Make the image look fuzzy" msgstr "Laat de afbeelding er nevelig uitzien" -#: f.widgets.cc:270 +#: f.widgets.cc:268 msgid "Filter noise from low-light photos" msgstr "Filter ruis van laag belichte foto's" -#: f.widgets.cc:271 +#: f.widgets.cc:269 msgid "Remove unwanted objects" msgstr "Verwijder ongewenste objecten" -#: f.widgets.cc:272 +#: f.widgets.cc:270 msgid "Fix red-eyes from electronic flash" msgstr "Repareren rode-ogen door electronisch flitslicht" -#: f.widgets.cc:273 +#: f.widgets.cc:271 msgid "Paint image pixels using the mouse" msgstr "Schilderen afbeeldings pixels met de muis" -#: f.widgets.cc:274 +#: f.widgets.cc:272 msgid "Paint image transparency using the mouse" msgstr "" -#: f.widgets.cc:275 +#: f.widgets.cc:273 msgid "Make BW/color, negative/positive, sepia" msgstr "Maak BW/kleur, negatief/positief, sepia" -#: f.widgets.cc:276 +#: f.widgets.cc:274 msgid "Shift/convert colors into other colors" msgstr "Verschuiven/converteren kleuren naar andere kleuren" -#: f.widgets.cc:277 +#: f.widgets.cc:275 msgid "Adjust color using RGB or CMY colors" msgstr "" -#: f.widgets.cc:278 +#: f.widgets.cc:276 msgid "Adjust color using HSL colors" msgstr "" -#: f.widgets.cc:279 +#: f.widgets.cc:277 msgid "Adjust color in selected image areas" msgstr "Instellen kleur in geselecteerde uitsnedes" -#: f.widgets.cc:280 +#: f.widgets.cc:278 msgid "Match colors on one image with another" msgstr "Match kleuren van twee afbeeldingen" -#: f.widgets.cc:281 +#: f.widgets.cc:279 msgid "Convert to another color profile" msgstr "Omzetten naar ander kleurprofiel" -#: f.widgets.cc:282 +#: f.widgets.cc:280 msgid "Remove dust spots from scanned slides" msgstr "Verwijderen stofspikkels van gescande dia's" -#: f.widgets.cc:283 +#: f.widgets.cc:281 msgid "Smoothen edges with jaggies" msgstr "Glad maken randen met randjes" -#: f.widgets.cc:284 +#: f.widgets.cc:282 msgid "Reduce Chromatic Abberation" msgstr "Verminderen Chromatische Aberratie" -#: f.widgets.cc:285 +#: f.widgets.cc:283 msgid "Erase known hot and dark pixels" msgstr "Verwijderen bekende hete en donkere pixels" -#: f.widgets.cc:288 +#: f.widgets.cc:286 msgid "Remove curvature, esp. panoramas" msgstr "Verwijder kromming, met name panorama's" -#: f.widgets.cc:289 +#: f.widgets.cc:287 msgid "Straighten objects seen from an angle" msgstr "Rechttrekken objecten gezien vanuit een hoek" -#: f.widgets.cc:290 +#: f.widgets.cc:288 msgid "Distort image areas using the mouse" msgstr "Verdraai uitsnede met de muis" -#: f.widgets.cc:291 f.widgets.cc:292 f.widgets.cc:293 +#: f.widgets.cc:289 f.widgets.cc:290 f.widgets.cc:291 msgid "Distort the whole image using the mouse" msgstr "Verdraai hele afbeelding met de muis" -#: f.widgets.cc:294 +#: f.widgets.cc:292 msgid "Flatten a photographed book page" msgstr "Platstrijken foto van pagina" -#: f.widgets.cc:297 +#: f.widgets.cc:295 msgid "Reduce color depth (posterize)" msgstr "Verminderen kleurdiepte (minder schakeringen)" -#: f.widgets.cc:298 +#: f.widgets.cc:296 msgid "Convert to pencil sketch" msgstr "Converteer naar potlood schets" -#: f.widgets.cc:299 +#: f.widgets.cc:297 msgid "Convert to line drawing (edge detection)" msgstr "Converteren naar lijn tekenen (rand detectie)" -#: f.widgets.cc:300 +#: f.widgets.cc:298 msgid "Convert to solid color drawing" msgstr "Converteer naar effen kleur tekenen" -#: f.widgets.cc:301 +#: f.widgets.cc:299 msgid "Graduated Blur depending on contrast" msgstr "Graduele Vervaging afhankelijk van contrast" -#: f.widgets.cc:302 +#: f.widgets.cc:300 msgid "Create an embossed or 3D appearance" msgstr "Maak een relief of 3D verschijning" -#: f.widgets.cc:303 +#: f.widgets.cc:301 msgid "Convert to square tiles" msgstr "Converteren naar vierkante tegels" -#: f.widgets.cc:304 +#: f.widgets.cc:302 msgid "Convert to dots (Roy Lichtenstein effect)" msgstr "Converteren naar stippen (Roy Lichtenstein effect)" -#: f.widgets.cc:305 +#: f.widgets.cc:303 msgid "Convert into a simulated painting" msgstr "Converteren naar nagebootst schilderij" -#: f.widgets.cc:306 +#: f.widgets.cc:304 msgid "Change brightness or color radially" msgstr "Verander helderheid of kleur radiaal" -#: f.widgets.cc:307 +#: f.widgets.cc:305 msgid "Add texture to an image" msgstr "Toevoegen textuur aan afbeelding" -#: f.widgets.cc:308 +#: f.widgets.cc:306 msgid "Tile image with a repeating pattern" msgstr "Tegel afbeelding met een herhaald patroon" -#: f.widgets.cc:309 +#: f.widgets.cc:307 msgid "Create a mosaic with tiles made from all images" msgstr "Creeer een mozaiek met tegels gemaakt van alle afbeeldingen" -#: f.widgets.cc:310 +#: f.widgets.cc:308 msgid "Process an image using a custom kernel" msgstr "Verwerken afbeelding met aangepaste kernel" -#: f.widgets.cc:311 +#: f.widgets.cc:309 msgid "Warp an image with a wave pattern" msgstr "Kromtrekken afbeelding met een golf patroon" -#: f.widgets.cc:312 +#: f.widgets.cc:310 msgid "Blur an image in the direction of mouse drags" msgstr "" -#: f.widgets.cc:315 +#: f.widgets.cc:313 msgid "Combine bright/dark images for better detail" msgstr "Samenvoegen licht/donker afbeeldingen voor beter detail" -#: f.widgets.cc:316 +#: f.widgets.cc:314 msgid "Combine near/far focus images for deeper focus" msgstr "Samenvoegen dichtbij/veraf afbeeldingen voor meer scherptediepte" -#: f.widgets.cc:317 +#: f.widgets.cc:315 msgid "Combine images to erase passing people, etc." msgstr "Samenvoegen afbeeldingen om voorbijgangers etc. te verwijderen " -#: f.widgets.cc:318 +#: f.widgets.cc:316 msgid "Combine noisy images into a low-noise image" msgstr "Samenvoegen ruis afbeeldingen naar lagere-ruis afbeelding" -#: f.widgets.cc:319 +#: f.widgets.cc:317 msgid "Combine images into a panorama" msgstr "Samenvoegen afbeeldingen in een panorama" -#: f.widgets.cc:320 +#: f.widgets.cc:318 msgid "Combine images into a vertical panorama" msgstr "Samenvoegen afbeeldingen in een verticaal panorama" -#: f.widgets.cc:321 +#: f.widgets.cc:319 msgid "Combine images into a panorama (panorama tools)" msgstr "Samenvoegen afbeeldingen in een panorama (panorama tools)" -#: f.widgets.cc:322 +#: f.widgets.cc:320 msgid "Arrange images and text in a layout (montage)" msgstr "" -#: f.widgets.cc:325 +#: f.widgets.cc:323 msgid "Index new files and make thumbnails" msgstr "Indexeer nieuwe bestanden en maak miniaturen" -#: f.widgets.cc:326 +#: f.widgets.cc:324 msgid "Change user preferences" msgstr "Verander gebruikersvoorkeuren" -#: f.widgets.cc:327 +#: f.widgets.cc:325 msgid "Change Keyboard Shortcut Keys" msgstr "Wijzig Keyboard Shortcut Toetsen" -#: f.widgets.cc:328 +#: f.widgets.cc:326 msgid "Show a brightness distribution graph" msgstr "Toon helderheids verdeling grafiek" -#: f.widgets.cc:329 +#: f.widgets.cc:327 msgid "Show or revise grid lines" msgstr "Toon of herstel raster lijnen" -#: f.widgets.cc:330 +#: f.widgets.cc:328 msgid "Change color of foreground lines" msgstr "Verander kleur van voorgrond lijnen" -#: f.widgets.cc:331 +#: f.widgets.cc:329 msgid "Show RGB colors at mouse click" msgstr "Toon RGB kleuren bij muisklik" -#: f.widgets.cc:332 +#: f.widgets.cc:330 msgid "Magnify image around the mouse position" msgstr "" -#: f.widgets.cc:333 +#: f.widgets.cc:331 msgid "Highlight darkest and brightest pixels" msgstr "Markeer donkerste en lichtste pixels" -#: f.widgets.cc:334 +#: f.widgets.cc:332 msgid "Chart to adjust monitor color" msgstr "Grafiek instellen monitor kleur" -#: f.widgets.cc:335 +#: f.widgets.cc:333 msgid "Chart to adjust monitor gamma" msgstr "Grafiek instellen monitor gamma" -#: f.widgets.cc:336 +#: f.widgets.cc:334 msgid "Change the GUI language" msgstr "Verander de GUI taal" -#: f.widgets.cc:337 +#: f.widgets.cc:335 msgid "Report missing translations" msgstr "Rapport ontbrekende vertalingen" -#: f.widgets.cc:338 -msgid "Search all image files and report duplicates" +#: f.widgets.cc:336 +msgid "Calibrate printer colors" msgstr "" -#: f.widgets.cc:339 +#: f.widgets.cc:337 msgid "Memory and CPU (to terminal/logfile)" msgstr "Geheugen en CPU (naar beeldscherm/logfile)" -#: f.widgets.cc:343 +#: f.widgets.cc:341 msgid "Rename/convert/resize/move multiple files" msgstr "Hernoemen/Converteren/Herschalen/Verplaatsen meerdere bestanden" -#: f.widgets.cc:344 +#: f.widgets.cc:342 msgid "Upright multiple rotated image files" msgstr "" -#: f.widgets.cc:345 +#: f.widgets.cc:343 msgid "Delete or Trash multiple files" msgstr "" -#: f.widgets.cc:346 +#: f.widgets.cc:344 msgid "Convert camera RAW files using DCraw" msgstr "Converteren camera RAW bestanden met DCraw" -#: f.widgets.cc:347 +#: f.widgets.cc:345 msgid "Convert camera RAW files using Raw Therapee" msgstr "Converteren camera RAW bestanden met Raw Therapee" -#: f.widgets.cc:348 +#: f.widgets.cc:346 msgid "Burn selected image files to CD or DVD" msgstr "Brand geselecteerde afbeeldingsbestanden naar CD of DVD" -#: f.widgets.cc:352 +#: f.widgets.cc:347 +msgid "Search all image files and report duplicates" +msgstr "" + +#: f.widgets.cc:351 msgid "Quick Start mini-guide" msgstr "Snel Start mini-handleiding" -#: f.widgets.cc:353 +#: f.widgets.cc:352 msgid "Read the user guide" msgstr "Lees de gebruikershandleiding" -#: f.widgets.cc:354 +#: f.widgets.cc:353 msgid "Recent user guide changes" msgstr "Recente veranderingen gebruikershandleiding" -#: f.widgets.cc:355 +#: f.widgets.cc:354 msgid "Summary of image edit functions" msgstr "Opsomming van bewerkingsfuncties voor afbeeldingen" -#: f.widgets.cc:356 +#: f.widgets.cc:355 msgid "Technical installation notes" msgstr "Opmerkingen Technische Installatie" -#: f.widgets.cc:357 +#: f.widgets.cc:356 msgid "List updates by Fotoxx version" msgstr "Opsomming updates per Fotoxx versie" -#: f.widgets.cc:358 +#: f.widgets.cc:357 msgid "View the log file and error messages" msgstr "Bekijk het log bestand en foutboodschappen" -#: f.widgets.cc:359 +#: f.widgets.cc:358 msgid "How to do Fotoxx translations" msgstr "Hoe Fotoxx vertalen" -#: f.widgets.cc:360 +#: f.widgets.cc:359 msgid "Show the Fotoxx web page" msgstr "Toon de Fotoxx webpagina" -#: f.widgets.cc:361 +#: f.widgets.cc:360 msgid "Version, license, contact, credits" msgstr "Versie, licentie, contact, bijdragen" -#: f.widgets.cc:364 +#: f.widgets.cc:363 msgid "Organize images into albums" msgstr "" -#: f.widgets.cc:365 +#: f.widgets.cc:364 msgid "Start a slide show" msgstr "Start een diashow" -#: f.widgets.cc:366 +#: f.widgets.cc:365 msgid "Set desktop image from current Fotoxx image" msgstr "" -#: f.widgets.cc:367 +#: f.widgets.cc:366 msgid "Cycle desktop images from a Fotoxx album" msgstr "" -#: f.widgets.cc:389 +#: f.widgets.cc:388 msgid "New Window" msgstr "Nieuw Venster" -#: f.widgets.cc:391 +#: f.widgets.cc:390 msgid "Open Previous File" msgstr "Open vorig bestand" -#: f.widgets.cc:392 +#: f.widgets.cc:391 msgid "Recently Seen Images" msgstr "Onlangs Bekeken Afbeeldingen" -#: f.widgets.cc:393 +#: f.widgets.cc:392 msgid "Newest Images" msgstr "Nieuwste Afbeeldingen" -#: f.widgets.cc:394 +#: f.widgets.cc:393 msgid "Open RAW (ufraw)" msgstr "" -#: f.widgets.cc:395 +#: f.widgets.cc:394 msgid "Open RAW (Raw Therapee)" msgstr "" -#: f.widgets.cc:397 +#: f.widgets.cc:396 msgid "New Blank Image" msgstr "Nieuwe Lege Afbeelding" -#: f.widgets.cc:399 +#: f.widgets.cc:398 msgid "Delete Image File" msgstr "Verwijder Afbeeldings Bestand" -#: f.widgets.cc:400 +#: f.widgets.cc:399 msgid "Print Image" msgstr "Afdrukken Afbeelding" -#: f.widgets.cc:401 f.widgets.cc:538 +#: f.widgets.cc:400 f.widgets.cc:543 msgid "Set Desktop Image" msgstr "" -#: f.widgets.cc:405 +#: f.widgets.cc:404 msgid "View Metadata (short)" msgstr "Tonen Metadata (kort)" -#: f.widgets.cc:406 +#: f.widgets.cc:405 msgid "View Metadata (long)" msgstr "Toon Metadata (lang)" -#: f.widgets.cc:407 +#: f.widgets.cc:406 msgid "Show Captions on Image" msgstr "Toon Onderschriften op Afbeelding" -#: f.widgets.cc:409 +#: f.widgets.cc:408 msgid "Edit Any Metadata" msgstr "Bewerken Metadata" -#: f.widgets.cc:412 f.widgets.cc:531 +#: f.widgets.cc:411 f.widgets.cc:534 msgid "Batch Rename Tags" msgstr "" -#: f.widgets.cc:413 f.widgets.cc:532 +#: f.widgets.cc:412 f.widgets.cc:535 msgid "Batch Add/Change Metadata" msgstr "" -#: f.widgets.cc:416 f.widgets.cc:606 +#: f.widgets.cc:415 f.widgets.cc:537 f.widgets.cc:611 msgid "Images by Geotag" msgstr "" -#: f.widgets.cc:417 f.widgets.cc:607 +#: f.widgets.cc:416 f.widgets.cc:538 f.widgets.cc:612 msgid "Search Images" msgstr "Afbeeldingen doorzoeken" -#: f.widgets.cc:420 fotoxx.h:1156 +#: f.widgets.cc:419 fotoxx.h:1164 msgid "Select" msgstr "Selecteren" -#: f.widgets.cc:421 fotoxx.h:1158 +#: f.widgets.cc:420 fotoxx.h:1166 msgid "Show" msgstr "Tonen" -#: f.widgets.cc:422 fotoxx.h:1112 +#: f.widgets.cc:421 fotoxx.h:1120 msgid "Hide" msgstr "Verbergen" -#: f.widgets.cc:423 fotoxx.h:1098 +#: f.widgets.cc:422 fotoxx.h:1106 msgid "Enable" msgstr "Uitsnede activeren" -#: f.widgets.cc:424 fotoxx.h:1094 +#: f.widgets.cc:423 fotoxx.h:1102 msgid "Disable" msgstr "Uitsnede deactiveren" -#: f.widgets.cc:425 fotoxx.h:1115 +#: f.widgets.cc:424 fotoxx.h:1123 msgid "Invert" msgstr "Uitsnede inverteren" -#: f.widgets.cc:426 fotoxx.h:1172 +#: f.widgets.cc:425 fotoxx.h:1180 msgid "Unselect" msgstr "Deselecteren" +#: f.widgets.cc:426 +msgid "Copy Area" +msgstr "" + #: f.widgets.cc:427 -msgid "Open Area File" +msgid "Paste Area" msgstr "" #: f.widgets.cc:428 +msgid "Open Area File" +msgstr "" + +#: f.widgets.cc:429 msgid "Save Area File" msgstr "" -#: f.widgets.cc:433 +#: f.widgets.cc:434 msgid "Voodoo 1" msgstr "" -#: f.widgets.cc:434 +#: f.widgets.cc:435 msgid "Voodoo 2" msgstr "" -#: f.widgets.cc:436 +#: f.widgets.cc:437 msgid "Adjust Brightness Dist." msgstr "" -#: f.widgets.cc:437 f.widgets.cc:676 +#: f.widgets.cc:438 f.widgets.cc:681 msgid "Zonal Flatten" msgstr "" -#: f.widgets.cc:441 +#: f.widgets.cc:442 msgid "Add Text" msgstr "Schrijf Tekst" -#: f.widgets.cc:442 +#: f.widgets.cc:443 msgid "Add Lines" msgstr "Toevoegen Lijnen" -#: f.widgets.cc:445 +#: f.widgets.cc:446 msgid "Plugins" msgstr "Plugins" -#: f.widgets.cc:450 +#: f.widgets.cc:451 msgid "Denoise" msgstr "Ruis verminderen" -#: f.widgets.cc:452 +#: f.widgets.cc:453 msgid "Red Eyes" msgstr "Rode ogen corrigeren" -#: f.widgets.cc:457 +#: f.widgets.cc:458 msgid "Adjust RGB/CMY" msgstr "" -#: f.widgets.cc:458 +#: f.widgets.cc:459 msgid "Adjust HSL" msgstr "" -#: f.widgets.cc:459 +#: f.widgets.cc:460 msgid "Brightness Ramp" msgstr "Helderheidsverspreiding instellen" -#: f.widgets.cc:461 +#: f.widgets.cc:462 msgid "Match Colors" msgstr "Match Kleuren" -#: f.widgets.cc:462 +#: f.widgets.cc:463 msgid "Color Profile" msgstr "Kleurprofiel" -#: f.widgets.cc:464 +#: f.widgets.cc:465 msgid "Anti-Alias" msgstr "Anti-Alias" -#: f.widgets.cc:470 +#: f.widgets.cc:471 msgid "Fix Perspective" msgstr "Fix Perspectief" -#: f.widgets.cc:475 +#: f.widgets.cc:476 msgid "Flatten Book Page" msgstr "Platstrijken Pagina van Boek" -#: f.widgets.cc:478 +#: f.widgets.cc:479 msgid "Color Depth" msgstr "Kleurdiepte instellen" -#: f.widgets.cc:479 +#: f.widgets.cc:480 msgid "Sketch" msgstr "Schets" -#: f.widgets.cc:483 +#: f.widgets.cc:484 msgid "Embossing" msgstr "Reliefdruk" -#: f.widgets.cc:485 +#: f.widgets.cc:486 msgid "Dots" msgstr "Krantendruk" -#: f.widgets.cc:486 +#: f.widgets.cc:487 msgid "Painting" msgstr "Schilderij" -#: f.widgets.cc:488 +#: f.widgets.cc:489 msgid "Texture" msgstr "Textuur" -#: f.widgets.cc:490 +#: f.widgets.cc:491 msgid "Mosaic" msgstr "Mozaiek" -#: f.widgets.cc:496 +#: f.widgets.cc:497 msgid "High Dynamic Range" msgstr "Hoog dynamisch bereik (HDR)" -#: f.widgets.cc:497 +#: f.widgets.cc:498 msgid "High Depth of Field" msgstr "Hoge scherptediepte (HDF)" -#: f.widgets.cc:498 +#: f.widgets.cc:499 msgid "Stack/Paint" msgstr "Stapelen/Schilderen" -#: f.widgets.cc:499 +#: f.widgets.cc:500 msgid "Stack/Noise" msgstr "Stapelen/Ruis verminderen" -#: f.widgets.cc:500 +#: f.widgets.cc:501 msgid "Panorama" msgstr "Panorama maken" -#: f.widgets.cc:501 +#: f.widgets.cc:502 msgid "Vertical Panorama" msgstr "Verticaal panorama" -#: f.widgets.cc:502 +#: f.widgets.cc:503 msgid "PT Panorama" msgstr "" -#: f.widgets.cc:503 +#: f.widgets.cc:504 msgid "Mashup" msgstr "Mashup" -#: f.widgets.cc:508 +#: f.widgets.cc:509 msgid "Keyboard Shortcuts" msgstr "Keyboard Shortcuts" -#: f.widgets.cc:509 +#: f.widgets.cc:510 msgid "Show Brightness Dist." msgstr "Toon Helderheids Verdeling" -#: f.widgets.cc:514 +#: f.widgets.cc:515 msgid "Dark/Bright Pixels" msgstr "Donker/Licht Pixels" -#: f.widgets.cc:515 +#: f.widgets.cc:516 msgid "Monitor Color" msgstr "Monitor Kleur " -#: f.widgets.cc:517 +#: f.widgets.cc:518 msgid "Change Language" msgstr "Taal veranderen" -#: f.widgets.cc:518 +#: f.widgets.cc:519 msgid "Missing Translations" msgstr "Ontbrekende Vertalingen" -#: f.widgets.cc:520 +#: f.widgets.cc:522 msgid "Resources" msgstr "Hulpbronnen" -#: f.widgets.cc:527 +#: f.widgets.cc:529 msgid "Batch RAW (DCraw)" msgstr "Batchgewijs RAW (DCraw)" -#: f.widgets.cc:528 +#: f.widgets.cc:530 msgid "Batch RAW (Raw Therapee)" msgstr "Batchgewijs RAW (Raw Therapee)" -#: f.widgets.cc:529 +#: f.widgets.cc:531 msgid "Burn Images to CD/DVD" msgstr "Afbeelding op CD/DVD branden" -#: f.widgets.cc:539 +#: f.widgets.cc:544 msgid "Cycle Desktop Image" msgstr "" -#: f.widgets.cc:542 fotoxx-15.08.cc:5513 -msgid "Quick Start" -msgstr "Snel Start" - -#: f.widgets.cc:543 fotoxx-15.08.cc:5516 -msgid "User Guide" -msgstr "Gebruikershandleiding" +#: f.widgets.cc:561 f.widgets.cc:584 f.widgets.cc:606 +msgid "Gallery" +msgstr "Galerie" -#: f.widgets.cc:544 fotoxx-15.08.cc:5519 -msgid "User Guide Changes" -msgstr "Gebruikershandleiding Veranderingen" +#: f.widgets.cc:562 f.widgets.cc:585 f.widgets.cc:607 +msgid "World Maps" +msgstr "" -#: f.widgets.cc:545 fotoxx-15.08.cc:5525 -msgid "Edit Functions Summary" -msgstr "Opsomming Bewerkingsfuncties" - -#: f.widgets.cc:546 fotoxx-15.08.cc:5522 -msgid "README" -msgstr "README" - -#: f.widgets.cc:547 fotoxx-15.08.cc:5528 -msgid "Change Log" -msgstr "Veranderingslogboek" - -#: f.widgets.cc:548 fotoxx-15.08.cc:5531 -msgid "Log File" -msgstr "Log Bestand" - -#: f.widgets.cc:549 fotoxx-15.08.cc:5534 -msgid "Translations" -msgstr "Vertalingen" - -#: f.widgets.cc:550 fotoxx-15.08.cc:5537 -msgid "Home Page" -msgstr "Homepage" - -#: f.widgets.cc:551 fotoxx-15.08.cc:5540 -msgid "About" -msgstr "Over fotoxx" - -#: f.widgets.cc:556 f.widgets.cc:579 f.widgets.cc:601 -msgid "Gallery" -msgstr "Galerie" - -#: f.widgets.cc:557 f.widgets.cc:580 f.widgets.cc:602 -msgid "World Maps" -msgstr "" - -#: f.widgets.cc:559 +#: f.widgets.cc:564 msgid "Favorites" msgstr "Favorieten" -#: f.widgets.cc:561 fotoxx.h:1152 +#: f.widgets.cc:566 fotoxx.h:1160 msgid "Save" msgstr "Opslaan" -#: f.widgets.cc:562 +#: f.widgets.cc:567 msgid "Prev/Next" msgstr "Vorig/Volgend" -#: f.widgets.cc:563 +#: f.widgets.cc:568 msgid "Metadata" msgstr "Metadata" -#: f.widgets.cc:564 +#: f.widgets.cc:569 msgid "Areas" msgstr "Uitsnedes" -#: f.widgets.cc:565 fotoxx.h:1097 +#: f.widgets.cc:570 fotoxx.h:1105 msgid "Edit" msgstr "Bewerken" -#: f.widgets.cc:566 +#: f.widgets.cc:571 msgid "Repair" msgstr "Repareren" -#: f.widgets.cc:567 +#: f.widgets.cc:572 msgid "Bend" msgstr "Krommen" -#: f.widgets.cc:568 +#: f.widgets.cc:573 msgid "Effects" msgstr "Effecten" -#: f.widgets.cc:569 +#: f.widgets.cc:574 msgid "Combine" msgstr "Samenvoegen" -#: f.widgets.cc:570 +#: f.widgets.cc:575 msgid "Undo/Redo" msgstr "Herstel/Opnieuw" -#: f.widgets.cc:571 +#: f.widgets.cc:576 msgid "Tools" msgstr "Gereedschap" -#: f.widgets.cc:572 f.widgets.cc:594 fotoxx-15.08.cc:5544 fotoxx.h:1111 -msgid "Help" -msgstr "Help" - -#: f.widgets.cc:582 +#: f.widgets.cc:587 msgid "Sync.G" msgstr "Sync.G" -#: f.widgets.cc:583 +#: f.widgets.cc:588 msgid "Albums" msgstr "" -#: f.widgets.cc:584 +#: f.widgets.cc:589 msgid "Bookmarks" msgstr "" -#: f.widgets.cc:593 +#: f.widgets.cc:598 msgid "Batch" msgstr "" -#: f.widgets.cc:604 +#: f.widgets.cc:609 msgid "Choose Map" msgstr "" -#: f.widgets.cc:605 +#: f.widgets.cc:610 msgid "Search Range" msgstr "" -#: f.widgets.cc:613 fotoxx.h:1170 +#: f.widgets.cc:618 fotoxx.h:1178 msgid "Undo" msgstr "Ongedaan maken" -#: f.widgets.cc:614 fotoxx.h:1143 +#: f.widgets.cc:619 fotoxx.h:1151 msgid "Redo" msgstr "Opnieuw" -#: f.widgets.cc:655 +#: f.widgets.cc:660 msgid "Popup Image" msgstr "Popup Afbeelding" -#: f.widgets.cc:656 +#: f.widgets.cc:661 msgid "Popup Image (add)" msgstr "" -#: f.widgets.cc:660 fotoxx.h:1146 +#: f.widgets.cc:665 fotoxx.h:1154 msgid "Rename" msgstr "Hernoemen" -#: f.widgets.cc:661 +#: f.widgets.cc:666 msgid "Copy to Location" msgstr "Kopieren naar Locatie" -#: f.widgets.cc:662 +#: f.widgets.cc:667 msgid "Move to Location" msgstr "Verplaatsen naar Locatie" -#: f.widgets.cc:663 +#: f.widgets.cc:668 msgid "Copy to Clipboard" msgstr "Copieer naar Klembord" -#: f.widgets.cc:664 +#: f.widgets.cc:669 msgid "Remove from Album" msgstr "" -#: f.widgets.cc:665 +#: f.widgets.cc:670 msgid "Cut to Image Cache" msgstr "Verplaatsen naar Afbeeldings Cache" -#: f.widgets.cc:666 +#: f.widgets.cc:671 msgid "Copy to Image Cache" msgstr "Copieer naar Afbeeldings Cache" -#: f.widgets.cc:667 +#: f.widgets.cc:672 msgid "Paste Image Cache Here (clear)" msgstr "Plakken Afbeeldings Cache Hier (schonen)" -#: f.widgets.cc:668 +#: f.widgets.cc:673 msgid "Paste Image Cache Here (keep)" msgstr "Plakken Afbeeldings Cache Hier (bewaren)" -#: f.widgets.cc:669 +#: f.widgets.cc:674 msgid "Paste Current Image File Here" msgstr "" -#: f.widgets.cc:673 +#: f.widgets.cc:678 msgid "Voodoo Enhance" msgstr "Voodoo Verbeteren" -#: f.widgets.cc:675 +#: f.widgets.cc:680 msgid "Brightness Dist." msgstr "Helderheids Verdeling" -#: f.widgets.cc:678 +#: f.widgets.cc:683 msgid "Select Area" msgstr "Uitsnede" -#: f.widgets.cc:681 fotoxx.h:1166 +#: f.widgets.cc:686 fotoxx.h:1174 msgid "Trash" msgstr "Prullenbak" -#: f.widgets.cc:806 +#: f.widgets.cc:811 msgid "Image Locations" msgstr "Afbeeldings Locaties" -#: fotoxx-15.08.cc:376 +#: fotoxx-15.09.cc:361 msgid "Please install missing programs:" msgstr "Ontbrekende programma's installeren" -#: fotoxx-15.08.cc:667 +#: fotoxx-15.09.cc:652 msgid "Kill active dialog?" msgstr "Afsluiten actieve dialoog?" -#: fotoxx-15.08.cc:742 +#: fotoxx-15.09.cc:723 msgid "(reduced)" msgstr "(gereduceerd)" -#: fotoxx-15.08.cc:743 +#: fotoxx-15.09.cc:724 msgid "area active" msgstr "uitsnede actief" -#: fotoxx-15.08.cc:744 +#: fotoxx-15.09.cc:725 msgid "dialog open" msgstr "dialoog open" -#: fotoxx-15.08.cc:745 -msgid "BUSY" -msgstr "" - -#: fotoxx-15.08.cc:746 +#: fotoxx-15.09.cc:726 msgid "blocked" msgstr "" -#: fotoxx-15.08.cc:796 +#: fotoxx-15.09.cc:776 msgid "edits" msgstr "wijzigingen" -#: fotoxx-15.08.cc:2805 +#: fotoxx-15.09.cc:2756 msgid "Exceed 50 anchor points" msgstr "50 ankerpunten overschreden" -#: fotoxx-15.08.cc:3018 +#: fotoxx-15.09.cc:2969 msgid "load curve from a file" msgstr "laad curve vanuit bestand" -#: fotoxx-15.08.cc:3091 +#: fotoxx-15.09.cc:3042 msgid "save curve to a file" msgstr "bewaar curve in een bestand" -#: fotoxx-15.08.cc:3161 +#: fotoxx-15.09.cc:3112 msgid "Too many edits, please save image" msgstr "Te veel aanpassingen, graag afbeelding opslaan" -#: fotoxx-15.08.cc:3180 +#: fotoxx-15.09.cc:3131 msgid "" "Select area not active.\n" "Continue?" @@ -4426,373 +4529,373 @@ "Uitsnede niet actief.\n" "Doorgaan?" -#: fotoxx-15.08.cc:3435 +#: fotoxx-15.09.cc:3385 msgid "Load settings from file" msgstr "Laad Instellingen bestand" -#: fotoxx-15.08.cc:3532 +#: fotoxx-15.09.cc:3482 msgid "file data does not fit dialog" msgstr "bestands gegevens niet passend bij dialoog" -#: fotoxx-15.08.cc:3542 +#: fotoxx-15.09.cc:3492 msgid "Save settings to a file" msgstr "Bewaren Instellingen bestand" -#: fotoxx-15.08.cc:3835 +#: fotoxx-15.09.cc:3781 msgid "This action will discard changes to current image" msgstr "Deze actie zal veranderingen weggooien van huidige afbeelding" -#: fotoxx-15.08.cc:3836 fotoxx-15.08.cc:3837 +#: fotoxx-15.09.cc:3782 fotoxx-15.09.cc:3783 msgid "prior function still active" msgstr "vorige functie nog actief" -#: fotoxx-15.08.cc:3838 fotoxx.h:1116 +#: fotoxx-15.09.cc:3784 fotoxx.h:1124 msgid "Keep" msgstr "Handhaven" -#: fotoxx-15.08.cc:3839 +#: fotoxx-15.09.cc:3785 msgid "Discard" msgstr "Weggooien" -#: fotoxx.h:1068 +#: fotoxx.h:1076 msgid "Add" msgstr "Toevoegen" -#: fotoxx.h:1069 +#: fotoxx.h:1077 msgid "Add All" msgstr "Alles toevoegen" -#: fotoxx.h:1071 +#: fotoxx.h:1079 msgid "Amount" msgstr "waarde" -#: fotoxx.h:1072 +#: fotoxx.h:1080 msgid "Angle" msgstr "Hoek" -#: fotoxx.h:1073 +#: fotoxx.h:1081 msgid "Apply" msgstr "Toepassen" -#: fotoxx.h:1074 +#: fotoxx.h:1082 msgid "Auto" msgstr "" -#: fotoxx.h:1075 +#: fotoxx.h:1083 msgid "Black" msgstr "Zwart" -#: fotoxx.h:1076 +#: fotoxx.h:1084 msgid "Blend Width" msgstr "Meng breedte" -#: fotoxx.h:1078 zfuncs.cc:10061 +#: fotoxx.h:1086 zfuncs.cc:10054 msgid "bottom" msgstr "onder" -#: fotoxx.h:1080 +#: fotoxx.h:1088 msgid "Browse" msgstr "Zoeken" -#: fotoxx.h:1081 +#: fotoxx.h:1089 msgid "Cancel" msgstr "Annuleren" -#: fotoxx.h:1082 +#: fotoxx.h:1090 msgid "center" msgstr "centrum" -#: fotoxx.h:1083 +#: fotoxx.h:1091 msgid "Choose" msgstr "Kiezen" -#: fotoxx.h:1084 +#: fotoxx.h:1092 msgid "Clear" msgstr "Herstellen" -#: fotoxx.h:1085 +#: fotoxx.h:1093 msgid "Color" msgstr "Kleur" -#: fotoxx.h:1086 +#: fotoxx.h:1094 msgid "continue" msgstr "" -#: fotoxx.h:1088 +#: fotoxx.h:1096 msgid "Copy" msgstr "Uitsnede kopieren" -#: fotoxx.h:1089 +#: fotoxx.h:1097 msgid "Create" msgstr "Maken" -#: fotoxx.h:1090 +#: fotoxx.h:1098 msgid "Curve File:" msgstr "Curve bestand:" -#: fotoxx.h:1091 +#: fotoxx.h:1099 msgid "Cut" msgstr "Knippen" -#: fotoxx.h:1092 +#: fotoxx.h:1100 msgid "Deband" msgstr "Ontstrepen" -#: fotoxx.h:1093 +#: fotoxx.h:1101 msgid "Delete" msgstr "Uitsnede verwijderen" -#: fotoxx.h:1095 +#: fotoxx.h:1103 msgid "Done" msgstr "Klaar" -#: fotoxx.h:1096 +#: fotoxx.h:1104 msgid "edge" msgstr "rand" -#: fotoxx.h:1099 +#: fotoxx.h:1107 msgid "Erase" msgstr "Verwijderen" -#: fotoxx.h:1100 +#: fotoxx.h:1108 msgid "Fetch" msgstr "Ophalen" -#: fotoxx.h:1101 +#: fotoxx.h:1109 msgid "output file already exists" msgstr "" -#: fotoxx.h:1102 +#: fotoxx.h:1110 #, c-format msgid "%d files selected" msgstr "%d bestanden geselecteerd" -#: fotoxx.h:1103 +#: fotoxx.h:1111 msgid "Find" msgstr "Zoeken" -#: fotoxx.h:1104 +#: fotoxx.h:1112 msgid "Finish" msgstr "Gereed" -#: fotoxx.h:1105 +#: fotoxx.h:1113 msgid "Flatten" msgstr "Afvlakken" -#: fotoxx.h:1106 +#: fotoxx.h:1114 msgid "Font" msgstr "Font" -#: fotoxx.h:1107 +#: fotoxx.h:1115 msgid "Geotags" msgstr "Geotags" -#: fotoxx.h:1109 +#: fotoxx.h:1117 msgid "Grid" msgstr "Raster" -#: fotoxx.h:1110 +#: fotoxx.h:1118 msgid "Height" msgstr "hoogte" -#: fotoxx.h:1113 +#: fotoxx.h:1121 msgid "Images" msgstr "Afbeeldingen" -#: fotoxx.h:1114 +#: fotoxx.h:1122 msgid "Insert" msgstr "Invoegen" -#: fotoxx.h:1117 zfuncs.cc:10065 +#: fotoxx.h:1125 zfuncs.cc:10058 msgid "left" msgstr "links" -#: fotoxx.h:1118 +#: fotoxx.h:1126 msgid "limit" msgstr "limiet" -#: fotoxx.h:1119 +#: fotoxx.h:1127 msgid "Load" msgstr "Laden" -#: fotoxx.h:1120 +#: fotoxx.h:1128 msgid "Make" msgstr "Maken" -#: fotoxx.h:1122 +#: fotoxx.h:1130 msgid "Map" msgstr "Kaart" -#: fotoxx.h:1123 +#: fotoxx.h:1131 msgid "Max" msgstr "Max" -#: fotoxx.h:1124 +#: fotoxx.h:1132 msgid "Negative" msgstr "Negatief" -#: fotoxx.h:1125 +#: fotoxx.h:1133 msgid "New" msgstr "Nieuw" -#: fotoxx.h:1126 +#: fotoxx.h:1134 msgid "Next" msgstr "Volgende" -#: fotoxx.h:1127 zfuncs.cc:9147 +#: fotoxx.h:1135 zfuncs.cc:9148 msgid "No" msgstr "Nee" -#: fotoxx.h:1128 +#: fotoxx.h:1136 msgid "no images" msgstr "geen afbeeldingen" -#: fotoxx.h:1130 +#: fotoxx.h:1138 msgid "no selection" msgstr "geen selectie" -#: fotoxx.h:1131 +#: fotoxx.h:1139 msgid "OK" msgstr "OK" -#: fotoxx.h:1133 +#: fotoxx.h:1141 msgid "Paste" msgstr "Uitsnede plakken" -#: fotoxx.h:1134 +#: fotoxx.h:1142 msgid "Pause" msgstr "Pauze" -#: fotoxx.h:1135 +#: fotoxx.h:1143 msgid "Percent" msgstr "percentage" -#: fotoxx.h:1137 +#: fotoxx.h:1145 msgid "Presets" msgstr "Voorinstelling" -#: fotoxx.h:1138 +#: fotoxx.h:1146 msgid "Prev" msgstr "Vorige" -#: fotoxx.h:1139 +#: fotoxx.h:1147 msgid "Proceed" msgstr "Doorgaan" -#: fotoxx.h:1141 +#: fotoxx.h:1149 msgid "range" msgstr "bereik" -#: fotoxx.h:1144 +#: fotoxx.h:1152 msgid "Reduce" msgstr "verminderen" -#: fotoxx.h:1145 +#: fotoxx.h:1153 msgid "Remove" msgstr "Verwijderen" -#: fotoxx.h:1147 +#: fotoxx.h:1155 msgid "Replace" msgstr "" -#: fotoxx.h:1148 +#: fotoxx.h:1156 msgid "Reserved" msgstr "" -#: fotoxx.h:1149 +#: fotoxx.h:1157 msgid "Reset" msgstr "Reset" -#: fotoxx.h:1150 zfuncs.cc:10069 +#: fotoxx.h:1158 zfuncs.cc:10062 msgid "right" msgstr "rechts" -#: fotoxx.h:1151 +#: fotoxx.h:1159 msgid "Rotate" msgstr "Draaien" -#: fotoxx.h:1153 +#: fotoxx.h:1161 msgid "Unknown file type, save as tiff/jpeg/png to edit" msgstr "Bestandstype onbekend, om te bewerken opslaan als tiff/jpeg/png" -#: fotoxx.h:1154 +#: fotoxx.h:1162 msgid "Search" msgstr "Zoeken" -#: fotoxx.h:1155 +#: fotoxx.h:1163 msgid "Seconds" msgstr "Seconden" -#: fotoxx.h:1159 +#: fotoxx.h:1167 msgid "Size" msgstr "Grootte" -#: fotoxx.h:1160 +#: fotoxx.h:1168 msgid "Start" msgstr "Starten" -#: fotoxx.h:1161 +#: fotoxx.h:1169 msgid "Strength" msgstr "Sterkte" -#: fotoxx.h:1162 +#: fotoxx.h:1170 msgid "Threshold" msgstr "drempel" -#: fotoxx.h:1163 +#: fotoxx.h:1171 #, c-format msgid "exceed %d files" msgstr "overschrijding %d bestanden " -#: fotoxx.h:1164 zfuncs.cc:10057 +#: fotoxx.h:1172 zfuncs.cc:10050 msgid "top" msgstr "boven" -#: fotoxx.h:1165 +#: fotoxx.h:1173 msgid "Transparency" msgstr "Doorzichtigheid" -#: fotoxx.h:1167 +#: fotoxx.h:1175 msgid "Trim" msgstr "Bijsnijden" -#: fotoxx.h:1168 +#: fotoxx.h:1176 msgid "Undo All" msgstr "Alles ongedaan maken" -#: fotoxx.h:1169 +#: fotoxx.h:1177 msgid "Undo Last" msgstr "Laatste ongedaan maken" -#: fotoxx.h:1171 +#: fotoxx.h:1179 msgid "Unfinish" msgstr "Unfinish" -#: fotoxx.h:1173 +#: fotoxx.h:1181 msgid "View" msgstr "Beeld" -#: fotoxx.h:1174 +#: fotoxx.h:1182 msgid "Web" msgstr "Web" -#: fotoxx.h:1175 +#: fotoxx.h:1183 msgid "White" msgstr "Wit" -#: fotoxx.h:1176 +#: fotoxx.h:1184 msgid "Width" msgstr "breedte" -#: fotoxx.h:1177 +#: fotoxx.h:1185 msgid "x-offset" msgstr "x-verschuiving" -#: fotoxx.h:1178 +#: fotoxx.h:1186 msgid "y-offset" msgstr "y-verschuiving" -#: fotoxx.h:1179 zfuncs.cc:9147 +#: fotoxx.h:1187 zfuncs.cc:9148 msgid "Yes" msgstr "Ja" @@ -4809,781 +4912,71 @@ msgid "user guide not found" msgstr "gebruikershandleiding niet gevonden" -#: zfuncs.cc:5182 +#: zfuncs.cc:5183 #, c-format msgid "cannot open file %s" msgstr "kan bestand niet openen %s" -#: zfuncs.cc:5218 +#: zfuncs.cc:5219 msgid "save screen to file" msgstr "schrijf scherm naar bestand" -#: zfuncs.cc:9223 zfuncs.cc:9724 zfuncs.cc:10044 +#: zfuncs.cc:9224 zfuncs.cc:9717 zfuncs.cc:10037 msgid "cancel" msgstr "Annuleren" -#: zfuncs.cc:9685 +#: zfuncs.cc:9678 msgid "choose file" msgstr "kies bestand" -#: zfuncs.cc:9690 +#: zfuncs.cc:9683 msgid "choose files" msgstr "kies bestanden" -#: zfuncs.cc:9695 +#: zfuncs.cc:9688 msgid "save" msgstr "opslaan" -#: zfuncs.cc:9701 +#: zfuncs.cc:9694 msgid "choose folder" msgstr "kies map" -#: zfuncs.cc:9706 +#: zfuncs.cc:9699 msgid "choose folders" msgstr "kies mappen" -#: zfuncs.cc:9711 +#: zfuncs.cc:9704 msgid "create folder" msgstr "aanmaken map" -#: zfuncs.cc:9718 +#: zfuncs.cc:9711 msgid "hidden" msgstr "verborgen" -#: zfuncs.cc:10044 +#: zfuncs.cc:10037 msgid "done" msgstr "klaar" -#: zfuncs.cc:10044 zfuncs.cc:10053 +#: zfuncs.cc:10037 zfuncs.cc:10046 msgid "margins" msgstr "marges" -#: zfuncs.cc:10074 +#: zfuncs.cc:10067 msgid "image scale" msgstr "afbeeldingsschaal" -#: zfuncs.cc:10076 +#: zfuncs.cc:10069 msgid "percent" msgstr "percentage" -#: zfuncs.cc:10083 +#: zfuncs.cc:10076 msgid "image" msgstr "afbeelding" -#: zfuncs.cc:10087 +#: zfuncs.cc:10080 msgid "width" msgstr "breedte" -#: zfuncs.cc:10091 +#: zfuncs.cc:10084 msgid "height" msgstr "hoogte" - -#~ msgid "Play tone" -#~ msgstr "Speel toon" - -#~ msgid "Transition" -#~ msgstr "Transitie" - -#~ msgid "next" -#~ msgstr "volgende" - -#~ msgid "load select area from a file" -#~ msgstr "laden uitsnede-bestand" - -#~ msgid "save select area to a file" -#~ msgstr "bewaren uitsnede-bestand" - -#~ msgid "save select area as a PNG file" -#~ msgstr "bewaar uitsnede als PNG bestand" - -#~ msgid "Darken" -#~ msgstr "Donker maken" - -#~ msgid "Brighten" -#~ msgstr "Lichter maken" - -#~ msgid "Metadata:" -#~ msgstr "Metadata:" - -#~ msgid "Comment" -#~ msgstr "Commentaar" - -#~ msgid "" -#~ "fix text in layout \n" -#~ " start new text" -#~ msgstr "" -#~ "vastleggen tekst in layout \n" -#~ " start nieuwe tekst" - -#~ msgid "color" -#~ msgstr "kleur" - -#~ msgid "" -#~ "area info file missing: \n" -#~ " %s" -#~ msgstr "" -#~ "uitsnede info bestand ontbreekt: \n" -#~ " %s" - -#~ msgid "index busy" -#~ msgstr "indexering bezig" - -#~ msgid "Add geotags to multiple images" -#~ msgstr "Toevoegen geotags aan meerdere afbeeldingen" - -#~ msgid "Copy an area for later pasting" -#~ msgstr "Copieer uitsnede om later te plakken" - -#~ msgid "Paste an area into the current image" -#~ msgstr "Plak een uitsnede in huidige afbeelding" - -#~ msgid "Open a file with a saved area" -#~ msgstr "Open een bestand met een opgeslagen uitsnede" - -#~ msgid "Save an area to a file" -#~ msgstr "Een uitsnede opslaan naar een bestand" - -#~ msgid "Save an area to a PNG file with transparency" -#~ msgstr "Bewaar uitsnede in PNG bestand met doorzichtigheid" - -#~ msgid "Arrange multiple images on a background image" -#~ msgstr "schikken meerdere afbeeldingen op een achtergrond afbeelding" - -#~ msgid "Save PNG" -#~ msgstr "Bewaar PNG" - -#~ msgid "Size:" -#~ msgstr "Grootte:" - -#~ msgid "Image Width:" -#~ msgstr "Breedte Afbeelding:" - -#~ msgid "Height:" -#~ msgstr "Hoogte:" - -#~ msgid "Depth:" -#~ msgstr "Diepte:" - -#~ msgid "add directory" -#~ msgstr "toevoegen map" - -#~ msgid "Thumbnails" -#~ msgstr "Miniaturen" - -#~ msgid "terminated by user" -#~ msgstr "beeindigd door gebruiker" - -#~ msgid "" -#~ "invalid top image directory: \n" -#~ " %s" -#~ msgstr "" -#~ "ongeldige top afbeelding map: \n" -#~ " %s" - -#~ msgid "thumbnails directory not .../thumbnails" -#~ msgstr "miniaturen map niet .../thumbnails" - -#~ msgid "Settings" -#~ msgstr "Instellingen" - -#~ msgid "Directory Gallery" -#~ msgstr "Galerie-map" - -#~ msgid "Image Pan" -#~ msgstr "Afbeelding Pan" - -#~ msgid "Drag" -#~ msgstr "Slepen" - -#~ msgid "Magnified" -#~ msgstr "Vergroot" - -#~ msgid "Make Launcher" -#~ msgstr "Maak Starter" - -#~ msgid "File: Sync, Open, Save, Trash, Rename, Print" -#~ msgstr "Bestand: Sync, Open, Bewaren, Prullenbak, Hernoemen, Print" - -#~ msgid "Create a Gnome menu and launcher" -#~ msgstr "Maak een Gnome menu en starter" - -#~ msgid "Change color of area outlines" -#~ msgstr "Verander kleur van uitsnede contouren" - -#~ msgid "Remove margins from warp, panorama, etc." -#~ msgstr "Verwijder marges na kromtrekken, panorama, etc." - -#~ msgid "Sync Gallery" -#~ msgstr "Sync Galerie" - -#~ msgid "Save to Disk" -#~ msgstr "Bewaar op schijf" - -#~ msgid "User Settings" -#~ msgstr "Gebruikers Instellingen" - -#~ msgid "Menu and Launcher" -#~ msgstr "Menu en Starter" - -#~ msgid "Images by Location/Date" -#~ msgstr "Afbeeldingen per Locatie/Datum" - -#~ msgid "Auto-Trim" -#~ msgstr "Auto-Bijsnijden" - -#~ msgid "open another directory" -#~ msgstr "open andere map" - -#~ msgid "previous row" -#~ msgstr "vorige rij" - -#~ msgid "next row" -#~ msgstr "volgende rij" - -#~ msgid "Batch functions, Combine functions" -#~ msgstr "Batch functies, Samenvoeg functies" - -#~ msgid "Autocomplete" -#~ msgstr "Auto-gereedmaken" - -#~ msgid "no newly added files found" -#~ msgstr "geen nieuw toegevoegde bestanden gevonden" - -#~ msgid "function busy" -#~ msgstr "functie bezig" - -#~ msgid "delete project file?" -#~ msgstr "verwijder project bestand?" - -#~ msgid "menu locked" -#~ msgstr "menu gesloten" - -#~ msgid "printed image width: %.1f height: %.1f cm" -#~ msgstr "geprinte afbeelding breedte: %.1f hoogte: %.1f cm" - -#~ msgid "" -#~ "Initial parameters file created. \n" -#~ "Inspect and revise if necessary." -#~ msgstr "" -#~ "Initieel parameter bestand aangemaakt. \n" -#~ "Zo nodig controleren en verbeteren." - -#~ msgid "load parameters from a file" -#~ msgstr "laden parameters uit bestand" - -#~ msgid "save parameters to a file" -#~ msgstr "schrijf parameters naar bestand" - -#~ msgid "edit parameters" -#~ msgstr "aanpassen parameters" - -#~ msgid "" -#~ "list\n" -#~ "all" -#~ msgstr "" -#~ "opsommen\n" -#~ "alle" - -#~ msgid "" -#~ "load\n" -#~ "file" -#~ msgstr "" -#~ "laden\n" -#~ "bestand" - -#~ msgid "" -#~ "save\n" -#~ "file" -#~ msgstr "" -#~ "opslaan\n" -#~ "bestand" - -#~ msgid "" -#~ "add\n" -#~ "new" -#~ msgstr "" -#~ "toevoegen\n" -#~ "nieuw" - -#~ msgid "apply" -#~ msgstr "toepassen" - -#~ msgid "apply?" -#~ msgstr "toepassen?" - -#~ msgid "(new parm name)" -#~ msgstr "(nieuwe parameter naam)" - -#~ msgid "add parameter" -#~ msgstr "toevoegen parameter" - -#~ msgid "Dist" -#~ msgstr "Dist" - -#~ msgid "image file" -#~ msgstr "afbeeldingsbestand" - -#~ msgid "delete failed: %s" -#~ msgstr "verwijderen mislukt: %s" - -#~ msgid "This action will discard changes to current image \n" -#~ msgstr "Deze actie zal veranderingen weggooien van huidige afbeelding \n" - -#~ msgid "new file name" -#~ msgstr "nieuwe bestandsnaam" - -#~ msgid "0 files selected" -#~ msgstr "geen bestand geselecteerd" - -#~ msgid "" -#~ "Download geotags data (8 megabytes). \n" -#~ "Save in %s \n" -#~ "Proceed?" -#~ msgstr "" -#~ "Download geotags gegevens (8 megabytes). \n" -#~ "Opslaan in %s \n" -#~ "Doorgaan?" - -#~ msgid "Location from World Map" -#~ msgstr "Locatie van Wereldkaart" - -#~ msgid "Both" -#~ msgstr "Beide" - -#~ msgid "Batch Convert RAW Files" -#~ msgstr "Batchgewijs converteren RAW bestanden" - -#~ msgid "Undo one edit" -#~ msgstr "Stap ongedaan maken " - -#~ msgid "Redo one edit" -#~ msgstr "Stap opnieuw uitvoeren" - -#~ msgid "Open the previous file" -#~ msgstr "Open vorig bestand" - -#~ msgid "Open the next file" -#~ msgstr "Open volgend bestand" - -#~ msgid "Retouch" -#~ msgstr "Retoucheren" - -#~ msgid "Batch Convert RAW" -#~ msgstr "Batchgewijs Converteren RAW" - -#~ msgid "Convert multiple camera RAW files" -#~ msgstr "Converteer meerdere RAW bestanden" - -#~ msgid "Fotoxx updates notification" -#~ msgstr "Fotoxx update notificatie" - -#~ msgid "Program Updates" -#~ msgstr "Programma Updates" - -#~ msgid "Open RAW File" -#~ msgstr "Open RAW bestand" - -#~ msgid "Simulate Drawing" -#~ msgstr "Tekenen Nabootsen" - -#~ msgid "Convert to colored line drawing" -#~ msgstr "Converteren naar lijn tekenen" - -#~ msgid "Drawing" -#~ msgstr "Tekenen" - -#~ msgid "Transition:" -#~ msgstr "Transitie:" - -#~ msgid "updating index records" -#~ msgstr "bijwerken index records" - -#~ msgid "" -#~ "First time Fotoxx startup. \n" -#~ "Latest version: http://www.kornelix.com/fotoxx \n" -#~ "File Index process will begin (may need some time) \n" -#~ msgstr "" -#~ "Eerste keer dat Fotoxx opstart. \n" -#~ "Laatste versie: http://www.kornelix.com/fotoxx \n" -#~ "Bestand indexering zal starten (kan even duren) \n" - -#~ msgid "Tab W: world map" -#~ msgstr "Tab W: wereldkaart" - -#~ msgid "Tab G: image gallery" -#~ msgstr "Tab G: afbeeldings galerie" - -#~ msgid "Tab F: image file view/edit" -#~ msgstr "Tab F: afbeeldingsbestand bekijken/bewerken" - -#~ msgid "New Collection" -#~ msgstr "Nieuwe Collectie" - -#~ msgid "Zooms for 200%" -#~ msgstr "Inzoomen 200%" - -#~ msgid "Default JPEG quality" -#~ msgstr "Default JPEG kwaliteit" - -#~ msgid "Toolbar Style" -#~ msgstr "Toolbar stijl" - -#~ msgid "Color of area borders etc." -#~ msgstr "Kleur randen van uitsnede etc." - -#~ msgid "Quick Start, User Guide, Recent Changes ..." -#~ msgstr "Snel Start, Gebruikershandleiding, Recente wijzigingen ..." - -#~ msgid "Use other image editors within Fotoxx" -#~ msgstr "Gebruik andere afbeelding editors binnen Fotoxx" - -#~ msgid "HDR, HDF, Panorama, Stack, Mashup" -#~ msgstr "HDR, HDF, Panorama, Stapelen, Mashup" - -#~ msgid "Special Effects, Arty Transforms" -#~ msgstr "Speciale Effecten, Artistieke Transformaties" - -#~ msgid "Fix Perspective, Bend/Warp image ..." -#~ msgstr "Repareren Perspectief, Buigen/Kromtrekken afbeelding ..." - -#~ msgid "White Balance, Color Profile, Color Matching" -#~ msgstr "Witbalans, Kleurprofiel, Kleurmatching" - -#~ msgid "Sharpen, Clean, Red-eyes, Paint, Clone ..." -#~ msgstr "Verscherpen, Schonen, Rode-ogen, Verven, Klonen ..." - -#~ msgid "Improve brightness, contrast, color ..." -#~ msgstr "Verbeteren helderheid, contrast, kleur ..." - -#~ msgid "Trim/Crop, Rotate, Resize, Add Text" -#~ msgstr "Bijsnijden, Draaien, Herschalen, Tekst toevoegen" - -#~ msgid "Select image areas to edit, copy and paste" -#~ msgstr "Selecteer uitsnedes om te bewerken, te kopieren en te plakken " - -#~ msgid "Captions, Tags, Ratings, Geotags, Search ... " -#~ msgstr "Onderschriften, Tags, Ratings, Geotags, Zoeken ..." - -#~ msgid "Index Files, Settings, Collections, Batch Funcs ..." -#~ msgstr "Indexering, Instellingen, Collecties, Batch functies ..." - -#~ msgid "Open, Save, Trash, Rename, Print" -#~ msgstr "Openen, Bewaren, Verwijderen, Hernoemen, Afdrukken" - -#~ msgid "Keystone Correction" -#~ msgstr "Keystone Correctie" - -#~ msgid "prior function active" -#~ msgstr "vorige functie actief" - -#~ msgid "This action will discard changes\n" -#~ msgstr "Deze bewerking zal veranderingen weggooien\n" - -#~ msgid "New collection created" -#~ msgstr "Nieuwe collectie gemaakt" - -#~ msgid "New collection from current gallery" -#~ msgstr "Nieuwe collectie van huidige galerie " - -#~ msgid "Start a new collection, add images" -#~ msgstr "Begin een nieuwe collectie, afbeeldingen toevoegen" - -#~ msgid "circle color" -#~ msgstr "cirkel kleur" - -#~ msgid "Loading geolocations" -#~ msgstr "Laden geolocaties" - -#~ msgid "Move Collections" -#~ msgstr "Verplaats Collecties" - -#~ msgid "Convert for a new top directory" -#~ msgstr "Converteren voor een nieuwe bovenste map" - -#~ msgid "Replace Collection?" -#~ msgstr "Vervangen Collectie?" - -#~ msgid "new path segment" -#~ msgstr "nieuw pad segment" - -#~ msgid "old path segment" -#~ msgstr "oud pad segment" - -#~ msgid "collection name" -#~ msgstr "naam collectie" - -#~ msgid "Move Collection" -#~ msgstr "Verplaats Afbeeldingen" - -#~ msgid "all collections" -#~ msgstr "alle collecties" - -#~ msgid "Images by Map Location" -#~ msgstr "Afbeeldingen per Kaart Locatie" - -#~ msgid "Find images by clicking a world map" -#~ msgstr "Zoek afbeeldingen door op een wereldkaart te klikken" - -#~ msgid "Download initial geolocation database" -#~ msgstr "Download initiele geolocatie database" - -#~ msgid "Download Geolocations" -#~ msgstr "Download Geolocaties" - -#~ msgid "World Map" -#~ msgstr "Wereld Kaart" - -#~ msgid "please download geolocations data" -#~ msgstr "download geolocatie gegevens" - -#~ msgid "download failed" -#~ msgstr "download mislukt" - -#~ msgid "" -#~ "Download geolocations data (18 megabytes). \n" -#~ "Save in %s \n" -#~ "Proceed?" -#~ msgstr "" -#~ "Download geolocatie gegevens (18 megabytes). \n" -#~ "Bewaren in %s \n" -#~ "Doorgaan?" - -#~ msgid "rotate +90º" -#~ msgstr "roteer +90º" - -#~ msgid "rotate -90º" -#~ msgstr "roteer -90º" - -#~ msgid "Rotate Image 90º" -#~ msgstr "Roteer Afbeelding 90º" - -#~ msgid "JPEG quality" -#~ msgstr "JPEG kwaliteit" - -#~ msgid "%d image files updated \n" -#~ msgstr "%d afbeeldingsbestanden bijgewerkt \n" - -#~ msgid "updating image index and thumbnails" -#~ msgstr "bijwerken afbeelding index en miniaturen" - -#~ msgid "Choose:" -#~ msgstr "Kiezen:" - -#~ msgid "get prev" -#~ msgstr "vorige verkrijgen" - -#~ msgid "Rating: %c (stars)" -#~ msgstr "Rating: %c (sterren)" - -#~ msgid "Add another image editor to the menu" -#~ msgstr "Een andere afbeeldingseditor aan menu toevoegen" - -#~ msgid "Plugins: Use other image editors within Fotoxx" -#~ msgstr "Plugins: Gebruik andere beeldbewerkings software binnen Fotoxx" - -#~ msgid "Thumbnail Gallery" -#~ msgstr "Miniaturen Galerie" - -#~ msgid "Current Image File" -#~ msgstr "Huidig Afbeeldings Bestand" - -#~ msgid "Restart Fotoxx to update plugin menu" -#~ msgstr "Herstart Fotoxx om plugin menu aan te passen" - -#~ msgid "format: menu name = command %%s" -#~ msgstr "format: menu naam = commando %%s" - -#~ msgid "lens bow" -#~ msgstr "lens kromming" - -#~ msgid "flatten" -#~ msgstr "platstrijken" - -#~ msgid "View Captions and Comments" -#~ msgstr "Tonen Onderschriften en Commentaar" - -#~ msgid "List captions and comments only" -#~ msgstr "Opsommen onderschriften en commentaar" - -#~ msgid "after zoom" -#~ msgstr "na zoom" - -#~ msgid "Zoom center" -#~ msgstr "Zoom centrum" - -#~ msgid "Zoom size %" -#~ msgstr "Zoom grootte %" - -#~ msgid "before zoom" -#~ msgstr "voor zoom" - -#~ msgid "+Seconds" -#~ msgstr "+Secondes" - -#~ msgid "Select music file or playlist" -#~ msgstr "Selecteer muziekbestand of speellijst" - -#~ msgid "Show Captions" -#~ msgstr "Tonen Onderschriften" - -#~ msgid "exceeded max. images: %d" -#~ msgstr "overschreden max afbeeldingen: %d" - -#~ msgid "" -#~ "\n" -#~ "Comment: \n" -#~ msgstr "" -#~ "\n" -#~ "Commentaar: \n" - -#~ msgid "Caption: \n" -#~ msgstr "Onderschrift: \n" - -#~ msgid "JPG quality 0-100" -#~ msgstr "JPG kwaliteit 0-100" - -#~ msgid "quality" -#~ msgstr "kwaliteit" - -#~ msgid "Top" -#~ msgstr "Boven" - -#~ msgid "Remove from Collection" -#~ msgstr "Verwijderen uit Collectie" - -#~ msgid "Rotate 90 degrees" -#~ msgstr "Roteer 90 graden" - -#~ msgid "Upright multiple files rotated 90º" -#~ msgstr "Rechtop bestanden gedraaid 90º" - -#~ msgid "Organize images into collections" -#~ msgstr "Organiseer afbeeldingen in collecties" - -#~ msgid "Tools: Index, Settings, Collections, Batch Funcs ..." -#~ msgstr "Tools: Index, Instellingen, Collecties, Batch funcs ..." - -#~ msgid "file already exists" -#~ msgstr "bestand bestaat reeds" - -#~ msgid "new collection created" -#~ msgstr "nieuwe collectie gemaakt" - -#~ msgid "enter a collection name" -#~ msgstr "invoeren collectie naam" - -#~ msgid "make an initially empty collection" -#~ msgstr "maak een initieel lege collectie" - -#~ msgid "Collection Name" -#~ msgstr "Collectie Naam" - -#~ msgid "cache added to empty collection" -#~ msgstr "cache toegevoegd aan lege collectie " - -#~ msgid "Delete Collection" -#~ msgstr "Collectie verwijderen" - -#~ msgid "Choose Collection" -#~ msgstr "Kies Collectie" - -#~ msgid "Delete a collection" -#~ msgstr "Een collectie verwijderen" - -#~ msgid "Collection to view or edit" -#~ msgstr "Collectie om te bekijken of te bewerken" - -#~ msgid "Create or replace a collection" -#~ msgstr "Maak of vervang collectie" - -#~ msgid "Manage Collections" -#~ msgstr "Beheren Collecties" - -#~ msgid "Drag collection thumbnail to new position." -#~ msgstr "Sleep verzameling miniaturen naar nieuwe positie" - -#~ msgid "" -#~ "Right-click collection thumbnail to cut/copy \n" -#~ "to cache, insert from cache, or remove." -#~ msgstr "" -#~ "Rechterklik collectie miniatuur om te knippen/kopieren \n" -#~ "opslaan, invoegen vanuit cache, of verwijderen." - -#~ msgid "open collection" -#~ msgstr "open collectie" - -#~ msgid "invalid collection" -#~ msgstr "ongeldige collectie" - -#~ msgid "Edge Blend" -#~ msgstr "Rand Mengen" - -#~ msgid "current image:" -#~ msgstr "huidige afbeelding:" - -#~ msgid "save project file?" -#~ msgstr "bewaren project bestand?" - -#~ msgid "save project data" -#~ msgstr "bewaren project gegevens" - -#~ msgid "Choose collection" -#~ msgstr "Kies collectie" - -#~ msgid "no collections found" -#~ msgstr "nieuwe collecties gevonden" - -#~ msgid "collections" -#~ msgstr "collecties" - -#~ msgid "target file already exists" -#~ msgstr "doelbestand bestaat reeds" - -#~ msgid "Rotate 90º" -#~ msgstr "Roteer 90º" - -#~ msgid "Adjust color using CMYK or RGB values" -#~ msgstr "Instellen kleur met CMYK of RGB waarden" - -#~ msgid "Fix Color Fringes" -#~ msgstr "Repareren Kleur Franjes" - -#~ msgid "Paint/Clone Pixels" -#~ msgstr "Schilderen/Klonen Pixels" - -#~ msgid "" -#~ "First time Fotoxx startup. \n" -#~ "Latest version is available at: www.kornelix.com/fotoxx \n" -#~ "An image file index will be created. Your image files will \n" -#~ "not be changed, moved, or copied. This process may need \n" -#~ "considerable time if you have thousands of image files." -#~ msgstr "" -#~ "Eerste keer opstarten Fotoxx. \n" -#~ "Laatste versie beschikbaar op: www.kornelix.com/fotoxx \n" -#~ "Een index bestand van afbeeldingen zal worden aangemaakt.Je afbeeldings " -#~ "bestanden zullen niet worden veranderd,verplaatst of gekopieerd. Dit " -#~ "proces kan aanzienlijk veel tijdkosten als je duizenden bestanden hebt." - -#~ msgid "%d images remaining in cache" -#~ msgstr "%d afbeeldingen overgebleven in cache " - -#~ msgid "Top Image Directories" -#~ msgstr "Hoogste Afbeeldings Mappen" - -#~ msgid "Revise RGB" -#~ msgstr "Reviseren RGB" - -#~ msgid "Fix Stuck Pixels" -#~ msgstr "Repareren Defecte Pixels" - -#~ msgid "Chromatic Abberation" -#~ msgstr "Chromatische Aberratie" - -#~ msgid "Set Blur Radius" -#~ msgstr "Instellen straal om te vervagen" - -#~ msgid "Enter line/arrow properties, click/drag on image." -#~ msgstr "Invoeren lijn/pijl eigenschappen, klik/sleep op afbeelding" - -#~ msgid "Enter text, click/drag on image." -#~ msgstr "Invoeren tekst, klik/sleep op afbeelding" diff -Nru fotoxx-15.08/locales/translate-pt.po fotoxx-15.09/locales/translate-pt.po --- fotoxx-15.08/locales/translate-pt.po 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/locales/translate-pt.po 2015-08-31 10:21:01.000000000 +0000 @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: fotoxx-15.07\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-07-29 10:00+0200\n" -"PO-Revision-Date: 2015-07-28 23:59-0300\n" +"POT-Creation-Date: 2015-08-30 21:14+0200\n" +"PO-Revision-Date: 2015-08-28 09:24-0300\n" "Last-Translator: André Campos Rodovalho \n" "Language-Team: Portuguese\n" "Language: pt\n" @@ -30,7 +30,7 @@ msgid "Drag album thumbnail to new position." msgstr "Arrastar miniatura de álbum" -#: f.albums.cc:107 f.widgets.cc:536 +#: f.albums.cc:107 f.widgets.cc:541 msgid "Manage Albums" msgstr "Gerenciar Álbuns" @@ -177,141 +177,145 @@ msgid "fallover" msgstr "tombar" -#: f.albums.cc:1139 f.widgets.cc:537 +#: f.albums.cc:1138 f.widgets.cc:542 msgid "Slide Show" msgstr "Apresentação" -#: f.albums.cc:1150 +#: f.albums.cc:1149 msgid "Clip Limit" msgstr "Limite de Corte" -#: f.albums.cc:1154 +#: f.albums.cc:1153 msgid "Music File" msgstr "Arquivo de Música" -#: f.albums.cc:1159 +#: f.albums.cc:1158 msgid "Full Screen" msgstr "Tela cheia" -#: f.albums.cc:1160 +#: f.albums.cc:1159 msgid "Auto-replay" msgstr "Auto-repetição" -#: f.albums.cc:1166 +#: f.albums.cc:1165 msgid "Customize:" msgstr "Customizar:" -#: f.albums.cc:1167 +#: f.albums.cc:1166 msgid "transitions" msgstr "transições" -#: f.albums.cc:1168 +#: f.albums.cc:1167 msgid "image files" msgstr "arquivos de imagem" -#: f.albums.cc:1173 f.albums.cc:1289 +#: f.albums.cc:1172 f.albums.cc:1286 #, c-format msgid "%d images" msgstr "%d imagens" -#: f.albums.cc:1196 f.albums.cc:1259 f.albums.cc:1349 f.albums.cc:1462 -#: f.albums.cc:1654 f.albums.cc:1738 f.albums.cc:1755 f.albums.cc:1976 +#: f.albums.cc:1194 f.albums.cc:1256 f.albums.cc:1346 f.albums.cc:1459 +#: f.albums.cc:1652 f.albums.cc:1736 f.albums.cc:1753 f.albums.cc:1974 msgid "invalid album" msgstr "álbum inválido" -#: f.albums.cc:1273 +#: f.albums.cc:1270 msgid "open album" msgstr "abrir álbum" -#: f.albums.cc:1305 +#: f.albums.cc:1302 msgid "Select music file" msgstr "Selecionar arquivo de música" -#: f.albums.cc:1329 +#: f.albums.cc:1326 msgid "select random (if 5+ enabled)" msgstr "selecionar aleatoriamente (se 5+ habilitadas)" -#: f.albums.cc:1353 +#: f.albums.cc:1350 msgid "Transition Preferences" msgstr "Preferências de Transição" -#: f.albums.cc:1362 +#: f.albums.cc:1359 msgid "transition" msgstr "transição" -#: f.albums.cc:1363 +#: f.albums.cc:1360 msgid "enabled" msgstr "habilitado" -#: f.albums.cc:1364 +#: f.albums.cc:1361 msgid "slowdown" msgstr "desacelerar" -#: f.albums.cc:1365 +#: f.albums.cc:1362 msgid "preference" msgstr "preferência" -#: f.albums.cc:1468 +#: f.albums.cc:1465 msgid "Image Preferences" msgstr "Preferências de Imagem" -#: f.albums.cc:1472 f.file.cc:1153 f.file.cc:1349 f.file.cc:1557 f.meta.cc:425 +#: f.albums.cc:1469 f.file.cc:1157 f.file.cc:1353 f.file.cc:1561 f.meta.cc:426 msgid "Image File:" msgstr "Arquivo de Imagem:" -#: f.albums.cc:1476 +#: f.albums.cc:1473 msgid "Play tone when image shows" msgstr "Tocar áudio quando imagem aparecer" -#: f.albums.cc:1479 +#: f.albums.cc:1476 msgid "Show image caption" msgstr "Mostrar legenda de imagem" -#: f.albums.cc:1484 +#: f.albums.cc:1481 msgid "Show image comments" msgstr "Mostrar comentários de imagem" -#: f.albums.cc:1489 +#: f.albums.cc:1486 msgid "Wait before zoom" msgstr "Atraso antes do Zoom" -#: f.albums.cc:1494 +#: f.albums.cc:1491 msgid "Zoom type:" msgstr "Tipo de Zoom:" -#: f.albums.cc:1495 +#: f.albums.cc:1492 msgid "none" msgstr "nenhum" -#: f.albums.cc:1496 +#: f.albums.cc:1493 msgid "zoom-in" msgstr "aproximar" -#: f.albums.cc:1497 +#: f.albums.cc:1494 msgid "zoom-out" msgstr "afastar" -#: f.albums.cc:1500 +#: f.albums.cc:1497 msgid "Zoom size (x)" msgstr "Tamanho do Zoom (x)" -#: f.albums.cc:1503 +#: f.albums.cc:1500 msgid "Steps" msgstr "Passos" -#: f.albums.cc:1507 +#: f.albums.cc:1504 msgid "Zoom image location:" msgstr "Localização de Zoom na imagem:" -#: f.albums.cc:1515 +#: f.albums.cc:1512 msgid "Wait after zoom" msgstr "Atraso depois do Zoom" -#: f.albums.cc:1520 +#: f.albums.cc:1517 msgid "Transition to next image" msgstr "Transição para a próxima imagem" -#: f.albums.cc:1961 f.albums.cc:2119 +#: f.albums.cc:1520 f.albums.cc:1622 +msgid "next" +msgstr "próximo" + +#: f.albums.cc:1959 f.albums.cc:2117 #, c-format msgid "" "file format error: \n" @@ -324,7 +328,7 @@ msgid "Select Area for Edits" msgstr "Selecionar área para edições" -#: f.area.cc:80 f.edit.cc:5897 +#: f.area.cc:80 f.edit.cc:5908 msgid "Press F1 for help" msgstr "Pressione F1 para ajuda" @@ -368,7 +372,7 @@ msgid "select all matching colors within mouse" msgstr "selecionar todas as cores correspondentes com o mouse" -#: f.area.cc:139 f.edit.cc:5942 +#: f.area.cc:139 f.edit.cc:5953 msgid "mouse radius" msgstr "raio do mouse" @@ -400,12 +404,12 @@ msgid "area edits fade away within edge distance" msgstr "edições na área esmaecem dentre as distâncias de borda" -#: f.area.cc:353 f.area.cc:536 +#: f.area.cc:351 f.area.cc:534 #, c-format msgid "exceed %d edits" msgstr "excedeu %d edições" -#: f.area.cc:1363 +#: f.area.cc:1355 msgid "" "Click one time inside each enclosed area \n" "(possible gaps in the outline will be found). \n" @@ -415,23 +419,23 @@ "(possíveis fendas no contorno serão encontradas). \n" "Pressione F1 para ajuda." -#: f.area.cc:1391 +#: f.area.cc:1383 msgid "finish area" msgstr "finalize a área" -#: f.area.cc:1399 +#: f.area.cc:1391 msgid "extend to corner:" msgstr "estender até canto:" -#: f.area.cc:1440 +#: f.area.cc:1432 msgid "searching" msgstr "procurando" -#: f.area.cc:1472 +#: f.area.cc:1463 msgid "outline has a gap" msgstr "contorno tem uma fenda" -#: f.area.cc:1476 +#: f.area.cc:1467 msgid "success" msgstr "sucesso" @@ -440,113 +444,114 @@ msgid "found %d pixels" msgstr "encontrados %d pixels" -#: f.area.cc:1918 f.area.cc:1935 f.area.cc:1955 f.area.cc:2260 f.area.cc:2387 +#: f.area.cc:1926 f.area.cc:1943 f.area.cc:1963 f.area.cc:2278 f.area.cc:2354 +#: f.area.cc:2511 msgid "the area is not finished" msgstr "a área não está finalizada" -#: f.area.cc:2049 +#: f.area.cc:2052 msgid "Edge calculation in progress" msgstr "Cálculo de borda em andamento" -#: f.area.cc:2058 +#: f.area.cc:2061 msgid "Area Edge Calc" msgstr "Calc. área de borda" -#: f.area.cc:2338 +#: f.area.cc:2462 msgid "load area from a file" msgstr "carregar área a partir de arquivo" -#: f.area.cc:2421 +#: f.area.cc:2545 msgid "save area as a PNG file" msgstr "salvar área como um arquivo PNG" -#: f.area.cc:2449 +#: f.area.cc:2573 msgid "position with mouse click/drag" msgstr "posicione o mouse clique/arraste" -#: f.area.cc:2493 +#: f.area.cc:2617 msgid "Paste Image" msgstr "Colar Imagem" -#: f.area.cc:2498 f.batch.cc:1135 f.batch.cc:1626 +#: f.area.cc:2622 f.batch.cc:1136 f.batch.cc:1627 msgid "resize" msgstr "redimensionar" -#: f.batch.cc:103 f.widgets.cc:524 +#: f.batch.cc:104 f.widgets.cc:526 msgid "Batch Convert" msgstr "Conversão em Lote" -#: f.batch.cc:110 f.file.cc:781 +#: f.batch.cc:111 f.file.cc:782 msgid "New Name" msgstr "novo nome" -#: f.batch.cc:112 +#: f.batch.cc:113 msgid "base" msgstr "base" -#: f.batch.cc:114 +#: f.batch.cc:115 msgid "adder" msgstr "somador" -#: f.batch.cc:118 +#: f.batch.cc:119 msgid "New Location" msgstr "Nova Localidade" -#: f.batch.cc:123 +#: f.batch.cc:124 msgid "New File Type" msgstr "Novo Tipo de Arquivo" -#: f.batch.cc:127 f.batch.cc:135 +#: f.batch.cc:128 f.batch.cc:136 msgid "no change" msgstr "sem mudanças" -#: f.batch.cc:130 +#: f.batch.cc:131 msgid "max. Width" msgstr "Largura max." -#: f.batch.cc:138 f.batch.cc:531 +#: f.batch.cc:139 f.batch.cc:532 msgid "Delete Originals" msgstr "Excluir Originais" -#: f.batch.cc:139 f.batch.cc:528 +#: f.batch.cc:140 f.batch.cc:529 msgid "Copy Metadata" msgstr "Copiar Metadados" -#: f.batch.cc:140 f.batch.cc:529 f.edit.cc:1396 f.widgets.cc:432 -#: f.widgets.cc:672 +#: f.batch.cc:141 f.batch.cc:530 f.edit.cc:1407 f.widgets.cc:433 +#: f.widgets.cc:677 msgid "Upright" msgstr "Orientar" -#: f.batch.cc:143 f.batch.cc:530 f.batch.cc:1144 f.batch.cc:1635 -#: f.repair.cc:115 f.widgets.cc:448 +#: f.batch.cc:144 f.batch.cc:531 f.batch.cc:1145 f.batch.cc:1636 +#: f.repair.cc:115 f.widgets.cc:449 msgid "Sharpen" msgstr "Aguçar" -#: f.batch.cc:145 f.batch.cc:1146 f.batch.cc:1637 +#: f.batch.cc:146 f.batch.cc:1147 f.batch.cc:1638 msgid "amount" msgstr "quantia" -#: f.batch.cc:148 f.batch.cc:1149 f.batch.cc:1640 +#: f.batch.cc:149 f.batch.cc:1150 f.batch.cc:1641 msgid "threshold" msgstr "limiar" -#: f.batch.cc:250 +#: f.batch.cc:251 msgid "file type not supported" msgstr "tipo de arquivo não suportado" -#: f.batch.cc:314 +#: f.batch.cc:315 msgid "cannot create new file" msgstr "impossível criar novo arquivo" -#: f.batch.cc:361 +#: f.batch.cc:362 msgid "updating albums ..." msgstr "atualizando álbuns ..." -#: f.batch.cc:434 f.batch.cc:1422 f.batch.cc:1828 f.file.cc:1202 +#: f.batch.cc:435 f.batch.cc:1423 f.batch.cc:1829 f.file.cc:1206 msgid "Select directory" msgstr "Selecionar pasta" -#: f.batch.cc:480 +#: f.batch.cc:481 msgid "" "new name/base/adder unreasonable\n" " e.g. newname ### 100 10" @@ -554,149 +559,182 @@ "novo nome/base/somedor anormal \n" " ex. novo-nome ### 100 10" -#: f.batch.cc:503 +#: f.batch.cc:504 #, c-format msgid "max. size %d x %d is not reasonable" msgstr "tamanho max. %d x %d não é razoável" -#: f.batch.cc:522 +#: f.batch.cc:523 #, c-format msgid "Convert %d image files" msgstr "Converter %d arquivos de imagem" -#: f.batch.cc:523 +#: f.batch.cc:524 msgid "Rename to" msgstr "Renomear para" -#: f.batch.cc:524 +#: f.batch.cc:525 msgid "Convert to" msgstr "Converter para" -#: f.batch.cc:525 +#: f.batch.cc:526 msgid "Resize within" msgstr "Redimensionar dentro de" -#: f.batch.cc:526 +#: f.batch.cc:527 msgid "Output to" msgstr "Saída para" -#: f.batch.cc:532 +#: f.batch.cc:533 msgid "PROCEED?" msgstr "PROCEDER?" -#: f.batch.cc:686 f.widgets.cc:525 +#: f.batch.cc:687 f.widgets.cc:527 msgid "Batch Upright" msgstr "Orientação em Lote" -#: f.batch.cc:692 +#: f.batch.cc:693 msgid "Survey all files" msgstr "Examinar todos arquivos" -#: f.batch.cc:746 +#: f.batch.cc:747 msgid "file cannot be read" msgstr "arquivo não pode ser lido" -#: f.batch.cc:864 +#: f.batch.cc:865 msgid "cannot select both options" msgstr "não é possível selecionar ambas as opções" -#: f.batch.cc:908 f.widgets.cc:526 +#: f.batch.cc:909 f.widgets.cc:528 msgid "Batch Delete/Trash" msgstr "Excluir/Descartar em Lote" -#: f.batch.cc:913 +#: f.batch.cc:914 msgid "delete" msgstr "excluir" -#: f.batch.cc:916 +#: f.batch.cc:917 msgid "trash" msgstr "lixo" -#: f.batch.cc:1078 +#: f.batch.cc:1079 msgid "Batch Convert RAW Files (DCraw)" msgstr "Conversão em Lote de Arquivos RAW (DCraw)" -#: f.batch.cc:1087 +#: f.batch.cc:1088 msgid "DCraw not installed" msgstr "DCraw não instalado" -#: f.batch.cc:1122 f.batch.cc:1613 +#: f.batch.cc:1123 f.batch.cc:1614 msgid "output location" msgstr "localização de saída" -#: f.batch.cc:1127 f.batch.cc:1618 +#: f.batch.cc:1128 f.batch.cc:1619 msgid "output file type" msgstr "tipo de arquivo de saída" -#: f.batch.cc:1158 +#: f.batch.cc:1159 msgid "white balance" msgstr "balanço de branco" -#: f.batch.cc:1159 +#: f.batch.cc:1160 msgid "interpolation" msgstr "interpolação" -#: f.batch.cc:1160 +#: f.batch.cc:1161 msgid "color space" msgstr "espaço de cor" -#: f.batch.cc:1161 +#: f.batch.cc:1162 msgid "gamma curve" msgstr "curva de gama" -#: f.batch.cc:1164 +#: f.batch.cc:1165 msgid "camera" msgstr "camera" -#: f.batch.cc:1165 +#: f.batch.cc:1166 msgid "fixed" msgstr "fixado" -#: f.batch.cc:1166 +#: f.batch.cc:1167 msgid "calculated" msgstr "calculado" -#: f.batch.cc:1183 +#: f.batch.cc:1184 msgid "default" msgstr "padrão" -#: f.batch.cc:1189 +#: f.batch.cc:1190 msgid "defaults" msgstr "padrões" -#: f.batch.cc:1576 +#: f.batch.cc:1577 msgid "Batch Convert RAW Files (Raw Therapee)" msgstr "Conversão em Lote de Arquivos RAW (RAW Therapee)" -#: f.batch.cc:1585 f.file.cc:488 +#: f.batch.cc:1586 f.file.cc:489 msgid "Raw Therapee not installed" msgstr "Raw Therapee não instalado" -#: f.batch.cc:1894 +#: f.batch.cc:1895 msgid "Brasero not installed" msgstr "Brasero não instalado" -#: f.bend.cc:82 f.widgets.cc:469 +#: f.batch.cc:1984 f.widgets.cc:532 +msgid "Find Duplicate Images" +msgstr "Encontrar imagens Duplicadas" + +#: f.batch.cc:1986 f.tools.cc:927 +msgid "Thumbnail size" +msgstr "Tamanho de miniatura" + +#: f.batch.cc:1989 +msgid "pixel difference" +msgstr "diferença de pixel" + +#: f.batch.cc:1992 +msgid "pixel count" +msgstr "contagem de pixel" + +#: f.batch.cc:1995 +msgid "Images:" +msgstr "Imagens:" + +#: f.batch.cc:1996 +msgid "searching ..." +msgstr "procurando ..." + +#: f.batch.cc:1998 +msgid "Duplicates:" +msgstr "Duplicidades:" + +#: f.batch.cc:2016 +#, c-format +msgid "only %d image thumbnails found" +msgstr "apenas %d miniaturas de imagem encontrados" + +#: f.bend.cc:86 f.widgets.cc:470 msgid "Unbend" msgstr "Desempenar" -#: f.bend.cc:90 f.edit.cc:4237 f.effects.cc:4620 +#: f.bend.cc:94 f.edit.cc:4248 f.effects.cc:4625 msgid "vertical" msgstr "vertical" -#: f.bend.cc:91 f.edit.cc:4236 f.effects.cc:4616 +#: f.bend.cc:95 f.edit.cc:4247 f.effects.cc:4621 msgid "horizontal" msgstr "horizontal" -#: f.bend.cc:92 +#: f.bend.cc:96 msgid "linear" msgstr "linear" -#: f.bend.cc:95 +#: f.bend.cc:99 msgid "curved" msgstr "curvo" -#: f.bend.cc:363 +#: f.bend.cc:367 msgid "" " Click the four corners of a tetragon area. Press [apply]. \n" " The image is warped to make the tetragon into a rectangle." @@ -704,15 +742,15 @@ " 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:376 +#: f.bend.cc:384 msgid "Perspective Correction" msgstr "Correção de Perspectiva" -#: f.bend.cc:582 +#: f.bend.cc:590 msgid "must have 4 corners" msgstr "precisar ter 4 cantos" -#: f.bend.cc:704 +#: f.bend.cc:712 msgid "" " Select an area to warp using select area function. \n" " Press [start warp] and pull area with mouse. \n" @@ -724,19 +762,19 @@ " Faça vários ajustes até que esteja satisfeito. \n" " Quando terminar, selecione outra área e precione [pronto]." -#: f.bend.cc:717 f.widgets.cc:471 +#: f.bend.cc:725 f.widgets.cc:472 msgid "Warp area" msgstr "Distorcer área" -#: f.bend.cc:722 +#: f.bend.cc:730 msgid "start warp" msgstr "iniciar distorção" -#: f.bend.cc:780 +#: f.bend.cc:788 msgid "no active Select Area" msgstr "nenhuma Área Selecionada ativa" -#: f.bend.cc:1121 f.bend.cc:1431 +#: f.bend.cc:1129 f.bend.cc:1443 msgid "" " Pull an image position using the mouse. \n" " Make multiple mouse pulls until satisfied. \n" @@ -746,19 +784,19 @@ " Faça vários ajustes até que esteja satisfeito. \n" " Quando terminar, precione [pronto]." -#: f.bend.cc:1135 f.widgets.cc:472 +#: f.bend.cc:1147 f.widgets.cc:473 msgid "Warp curved" msgstr "Distorção curva" -#: f.bend.cc:1144 f.mashup.cc:1836 +#: f.bend.cc:1156 f.mashup.cc:1836 msgid "warp span" msgstr "distorção em alcance" -#: f.bend.cc:1445 f.widgets.cc:473 +#: f.bend.cc:1461 f.widgets.cc:474 msgid "Warp linear" msgstr "Distorção linear" -#: f.bend.cc:1760 +#: f.bend.cc:1776 msgid "" " Pull on an image corner using the mouse. \n" " Make multiple mouse pulls until satisfied. \n" @@ -768,15 +806,15 @@ " Faça vários ajustes até que esteja satisfeito. \n" " Quando terminar, precione [pronto]." -#: f.bend.cc:1772 f.widgets.cc:474 +#: f.bend.cc:1792 f.widgets.cc:475 msgid "Warp affine" msgstr "Distorção afim" -#: f.bend.cc:2119 +#: f.bend.cc:2139 msgid "Flatten Book Page Photo" msgstr "Achatar foto de Página de Book" -#: f.bend.cc:2120 +#: f.bend.cc:2140 msgid "" "Trim image to isolate one page. \n" "Map top and bottom edges with \n" @@ -786,88 +824,88 @@ "Mapeie as bordas superior e inferior com \n" "4 ou + cliques no mouse, daí achate: " -#: f.bend.cc:2123 +#: f.bend.cc:2143 msgid "Stretch curved-down surfaces:" msgstr "Estique superfícies curvadas para baixo:" -#: f.bend.cc:2178 +#: f.bend.cc:2198 msgid "top:" msgstr "topo:" -#: f.bend.cc:2181 +#: f.bend.cc:2201 msgid "bottom:" msgstr "rodapé:" -#: f.combine.cc:2119 f.combine.cc:2750 f.combine.cc:3406 f.combine.cc:3938 +#: f.combine.cc:2108 f.combine.cc:2739 f.combine.cc:3395 f.combine.cc:3927 msgid "Select 2 to 9 files" msgstr "Selecionar 2 a 9 arquivos" -#: f.combine.cc:2140 f.combine.cc:2771 f.combine.cc:3427 f.combine.cc:3959 +#: f.combine.cc:2129 f.combine.cc:2760 f.combine.cc:3416 f.combine.cc:3948 msgid "Images are not all the same size" msgstr "Imagens não são todas do mesmo tamanho" -#: f.combine.cc:2484 +#: f.combine.cc:2473 msgid "Adjust Image Contributions" msgstr "Ajustar contribuição de imagem" -#: f.combine.cc:2488 +#: f.combine.cc:2477 msgid "dark pixels" msgstr "pixels escuros" -#: f.combine.cc:2490 +#: f.combine.cc:2479 msgid "light pixels" msgstr "pixels claros" -#: f.combine.cc:2492 +#: f.combine.cc:2481 msgid "file:" msgstr "arquivo:" -#: f.combine.cc:3007 +#: f.combine.cc:2996 msgid "Paint and Warp Image" msgstr "Pintar e distorcer imagem" -#: f.combine.cc:3011 f.combine.cc:3656 f.combine.cc:6246 f.effects.cc:3851 -#: f.widgets.cc:555 f.widgets.cc:578 f.widgets.cc:600 +#: f.combine.cc:3000 f.combine.cc:3645 f.combine.cc:6236 f.effects.cc:3858 +#: f.widgets.cc:560 f.widgets.cc:583 f.widgets.cc:605 msgid "Image" msgstr "Imagem" -#: f.combine.cc:3015 +#: f.combine.cc:3004 msgid "paint" msgstr "pintar" -#: f.combine.cc:3016 +#: f.combine.cc:3005 msgid "warp" msgstr "distorção" -#: f.combine.cc:3654 +#: f.combine.cc:3643 msgid "Select and Paint Image" msgstr "Selecionar e pintar imagem" -#: f.combine.cc:4130 +#: f.combine.cc:4119 msgid "Adjust Pixel Composition" msgstr "Ajustar Composição do Pixel" -#: f.combine.cc:4132 +#: f.combine.cc:4121 msgid "use average" msgstr "usar média" -#: f.combine.cc:4133 +#: f.combine.cc:4122 msgid "use median" msgstr "usar mediana" -#: f.combine.cc:4135 +#: f.combine.cc:4124 msgid "omit low pixel" msgstr "omitir pixel baixos" -#: f.combine.cc:4136 +#: f.combine.cc:4125 msgid "omit high pixel" msgstr "omitir pixels altos" -#: f.combine.cc:4398 f.combine.cc:5504 +#: f.combine.cc:4387 f.combine.cc:5493 msgid "Select 2 to 4 files" msgstr "Selecionar 2 a 4 arquivos" -#: f.combine.cc:4473 +#: f.combine.cc:4462 msgid "" "Drag images into rough alignment.\n" "To rotate, drag from lower edge." @@ -875,76 +913,76 @@ "Arraste as imagens para o alinhamento grosseiro.\n" "Para rotacionar, arraste da borda mais abaixo." -#: f.combine.cc:4475 f.combine.cc:5581 +#: f.combine.cc:4464 f.combine.cc:5570 msgid "no curve (scanned image)" msgstr "não vetorial (imagem digitalizada)" -#: f.combine.cc:4476 f.combine.cc:5582 +#: f.combine.cc:4465 f.combine.cc:5571 msgid "Search for lens mm" msgstr "Procurar por mm de lente" -#: f.combine.cc:4477 f.combine.cc:5583 +#: f.combine.cc:4466 f.combine.cc:5572 msgid "Save lens mm → image EXIF" msgstr "Salvar mm de lente → EXIF imagem" -#: f.combine.cc:4538 f.combine.cc:5644 +#: f.combine.cc:4527 f.combine.cc:5633 msgid "Pre-align Images" msgstr "Pré-alinhamento de imagens" -#: f.combine.cc:4542 f.combine.cc:5648 +#: f.combine.cc:4531 f.combine.cc:5637 msgid "lens mm" msgstr "mm de lente" -#: f.combine.cc:4547 f.combine.cc:5653 +#: f.combine.cc:4536 f.combine.cc:5642 msgid "no auto warp" msgstr "não auto distorcer" -#: f.combine.cc:4549 f.combine.cc:5655 f.widgets.cc:439 f.widgets.cc:671 +#: f.combine.cc:4538 f.combine.cc:5644 f.widgets.cc:440 f.widgets.cc:676 msgid "Resize" msgstr "Redimensionar" -#: f.combine.cc:4550 f.combine.cc:5656 +#: f.combine.cc:4539 f.combine.cc:5645 msgid "resize window" msgstr "redimensionar janela" -#: f.combine.cc:4558 f.combine.cc:5664 +#: f.combine.cc:4547 f.combine.cc:5653 msgid "do not warp images during auto-alignment" msgstr "não distorcer imagem durante auto-alinhamento" -#: f.combine.cc:4603 f.combine.cc:5709 +#: f.combine.cc:4592 f.combine.cc:5698 msgid "use two images only" msgstr "use duas imagens apenas" -#: f.combine.cc:4631 f.combine.cc:4835 f.combine.cc:5021 f.combine.cc:5735 -#: f.combine.cc:5940 f.combine.cc:6126 +#: f.combine.cc:4620 f.combine.cc:4824 f.combine.cc:5010 f.combine.cc:5724 +#: f.combine.cc:5928 f.combine.cc:6114 msgid "Too little overlap, cannot align" msgstr "Baixa sobreposição, não é possível alinhar" -#: f.combine.cc:5096 f.combine.cc:6202 +#: f.combine.cc:5088 f.combine.cc:6192 msgid "Match Brightness and Color" msgstr "Parear Brilho e Cor" -#: f.combine.cc:5141 +#: f.combine.cc:5133 msgid "Select image" msgstr "Selecionar imagem" -#: f.combine.cc:5156 f.combine.cc:6261 +#: f.combine.cc:5148 f.combine.cc:6251 msgid "auto color" msgstr "cor automática" -#: f.combine.cc:5157 f.combine.cc:6262 +#: f.combine.cc:5149 f.combine.cc:6252 msgid "file color" msgstr "arquivo de cor" -#: f.combine.cc:5163 f.combine.cc:6268 +#: f.combine.cc:5155 f.combine.cc:6258 msgid "mouse warp" msgstr "distorcer com mouse" -#: f.combine.cc:5166 +#: f.combine.cc:5158 msgid "curved image" msgstr "imagem curvada" -#: f.combine.cc:5579 +#: f.combine.cc:5568 msgid "" "Drag images into rough alignment.\n" "To rotate, drag from right edge." @@ -952,11 +990,11 @@ "Arraste as imagens para o alinhamento grosseiro.\n" "Para rotacionar, arraste pela borda a direita." -#: f.combine.cc:6482 +#: f.combine.cc:6469 msgid "pano tools (hugin) not installed" msgstr "pano tools (hugin) não instalado" -#: f.combine.cc:6491 +#: f.combine.cc:6478 msgid "Select at least 2 files" msgstr "Selecione pelo menos 2 arquivos" @@ -969,241 +1007,241 @@ msgid "Minor rotate: drag right edge with mouse" msgstr "Pequena rotação: arrastar margem direita com o mouse" -#: f.edit.cc:167 f.widgets.cc:431 f.widgets.cc:670 +#: f.edit.cc:171 f.widgets.cc:432 f.widgets.cc:675 msgid "Trim/Rotate" msgstr "Recortar/Rodar" -#: f.edit.cc:179 f.edit.cc:577 +#: f.edit.cc:183 f.edit.cc:585 msgid "ratio" msgstr "taxa" -#: f.edit.cc:183 +#: f.edit.cc:187 msgid "trim size:" msgstr "tamanho do recorte:" -#: f.edit.cc:188 +#: f.edit.cc:192 msgid "Lock Ratio" msgstr "Travar taxa" -#: f.edit.cc:193 +#: f.edit.cc:197 msgid "Customize" msgstr "Customizar" -#: f.edit.cc:201 +#: f.edit.cc:205 msgid "Rotate: degrees" msgstr "Rotação: graus" -#: f.edit.cc:203 +#: f.edit.cc:207 msgid "auto-trim" msgstr "auto-recorte" -#: f.edit.cc:573 +#: f.edit.cc:581 msgid "Trim Buttons" msgstr "Aparar rodapés" -#: f.edit.cc:576 +#: f.edit.cc:584 msgid "label" msgstr "etiqueta" -#: f.edit.cc:1394 +#: f.edit.cc:1405 msgid "Upright Image" msgstr "Orientar Imagem" -#: f.edit.cc:1458 +#: f.edit.cc:1469 msgid "rotation unknown" msgstr "rotação desconhecida" -#: f.edit.cc:2009 f.widgets.cc:435 f.widgets.cc:674 +#: f.edit.cc:2020 f.widgets.cc:436 f.widgets.cc:679 msgid "Retouch Combo" msgstr "Kit Retoque" -#: f.edit.cc:2030 +#: f.edit.cc:2041 msgid "Amplifier" msgstr "Amplificador" -#: f.edit.cc:2031 fotoxx.h:1079 +#: f.edit.cc:2042 fotoxx.h:1087 msgid "Brightness" msgstr "Briho" -#: f.edit.cc:2032 fotoxx.h:1087 +#: f.edit.cc:2043 fotoxx.h:1095 msgid "Contrast" msgstr "Contraste" -#: f.edit.cc:2033 +#: f.edit.cc:2044 msgid "Low Color" msgstr "Cor baixa" -#: f.edit.cc:2034 +#: f.edit.cc:2045 msgid "Warmer" msgstr "Mais quente" -#: f.edit.cc:2035 f.effects.cc:1009 +#: f.edit.cc:2046 f.effects.cc:1010 msgid "Dark Areas" msgstr "Áreas Escuras" -#: f.edit.cc:2044 +#: f.edit.cc:2055 msgid "Max." msgstr "Máx." -#: f.edit.cc:2045 f.edit.cc:2046 f.edit.cc:2047 +#: f.edit.cc:2056 f.edit.cc:2057 f.edit.cc:2058 msgid "High" msgstr "Alto" -#: f.edit.cc:2048 +#: f.edit.cc:2059 msgid "Cooler" msgstr "Mais frio" -#: f.edit.cc:2049 +#: f.edit.cc:2060 msgid "Bright" msgstr "Brilho" -#: f.edit.cc:2052 f.tools.cc:1595 +#: f.edit.cc:2063 f.tools.cc:1621 msgid "Brightness Distribution" msgstr "Distribuição de Brilho" -#: f.edit.cc:2055 +#: f.edit.cc:2066 msgid "Click for white balance or black level" msgstr "Clique para balancear o nível de branco ou preto" -#: f.edit.cc:2058 +#: f.edit.cc:2069 msgid "Settings File" msgstr "Arquivos de Configuração" -#: f.edit.cc:2062 +#: f.edit.cc:2073 msgid "recall previous settings used" msgstr "recolocar configurações prévias utilizadas" -#: f.edit.cc:2764 +#: f.edit.cc:2775 msgid "Adjust Brightness Distribution" msgstr "Ajustar Distribuição de Brilho" -#: f.edit.cc:2801 +#: f.edit.cc:2812 msgid "Low Cutoff" msgstr "Corte Baixo" -#: f.edit.cc:2802 +#: f.edit.cc:2813 msgid "High Cutoff" msgstr "Corte Elevado" -#: f.edit.cc:2803 +#: f.edit.cc:2814 msgid "Low Flatten" msgstr "Achatamento Baixo" -#: f.edit.cc:2804 +#: f.edit.cc:2815 msgid "Mid Flatten" msgstr "Achatamento Médio" -#: f.edit.cc:2805 +#: f.edit.cc:2816 msgid "High Flatten" msgstr "Achatamento Elevado" -#: f.edit.cc:2806 +#: f.edit.cc:2817 msgid "Low Stretch" msgstr "Estiramento Baixo" -#: f.edit.cc:2807 +#: f.edit.cc:2818 msgid "Mid Stretch" msgstr "Estiramento Médio" -#: f.edit.cc:2808 +#: f.edit.cc:2819 msgid "High Stretch" msgstr "Estiramento Elevado" -#: f.edit.cc:3138 +#: f.edit.cc:3149 msgid "Zonal Flatten Brightness" msgstr "Brilho de Achatamento Zonal" -#: f.edit.cc:3169 +#: f.edit.cc:3180 msgid "Zones" msgstr "Zonas" -#: f.edit.cc:3176 +#: f.edit.cc:3187 msgid "Deband Dark" msgstr "Debandar Escuridão" -#: f.edit.cc:3179 +#: f.edit.cc:3190 msgid "Deband Bright" msgstr "Debandar Claridade" -#: f.edit.cc:3624 f.widgets.cc:438 f.widgets.cc:677 +#: f.edit.cc:3635 f.widgets.cc:439 f.widgets.cc:682 msgid "Tone Mapping" msgstr "Mapeamento Tonal" -#: f.edit.cc:3653 +#: f.edit.cc:3664 msgid "low" msgstr "baixo" -#: f.edit.cc:3655 +#: f.edit.cc:3666 msgid "high" msgstr "alto" -#: f.edit.cc:3658 +#: f.edit.cc:3669 msgid "Amplify" msgstr "Ampliar" -#: f.edit.cc:4033 +#: f.edit.cc:4044 msgid "Lock aspect ratio" msgstr "Manter proporção" -#: f.edit.cc:4055 +#: f.edit.cc:4066 msgid "Resize Image" msgstr "Redimensionar" -#: f.edit.cc:4232 f.widgets.cc:440 +#: f.edit.cc:4243 f.widgets.cc:441 msgid "Flip" msgstr "Virar" -#: f.edit.cc:4338 +#: f.edit.cc:4349 msgid "+Version" msgstr "+Versão" -#: f.edit.cc:4361 +#: f.edit.cc:4372 msgid "Write Text on Image" msgstr "Escrever Texto na Imagem" -#: f.edit.cc:4362 +#: f.edit.cc:4373 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.edit.cc:4411 f.mashup.cc:2437 +#: f.edit.cc:4422 f.mashup.cc:2437 msgid "Text" msgstr "Texto" -#: f.edit.cc:4416 +#: f.edit.cc:4427 msgid "Use metadata key" msgstr "Use chave de metadado" -#: f.edit.cc:4421 +#: f.edit.cc:4432 msgid "Use text file" msgstr "Usar arquivo de texto" -#: f.edit.cc:4440 f.mashup.cc:2455 +#: f.edit.cc:4451 f.mashup.cc:2455 msgid "text" msgstr "texto" -#: f.edit.cc:4441 f.edit.cc:5279 f.mashup.cc:2456 f.mashup.cc:2798 +#: f.edit.cc:4452 f.edit.cc:5290 f.mashup.cc:2456 f.mashup.cc:2798 msgid "backing" msgstr "fundo" -#: f.edit.cc:4442 f.edit.cc:5280 f.mashup.cc:2457 f.mashup.cc:2799 +#: f.edit.cc:4453 f.edit.cc:5291 f.mashup.cc:2457 f.mashup.cc:2799 msgid "outline" msgstr "contorno" -#: f.edit.cc:4443 f.edit.cc:5281 f.mashup.cc:2458 f.mashup.cc:2800 +#: f.edit.cc:4454 f.edit.cc:5292 f.mashup.cc:2458 f.mashup.cc:2800 msgid "shadow" msgstr "sombra" -#: f.edit.cc:4469 +#: f.edit.cc:4480 msgid "save to current file" msgstr "salvar em arquivo atual" -#: f.edit.cc:4470 f.file.cc:605 +#: f.edit.cc:4481 f.file.cc:606 msgid "save as new file version" msgstr "salvar como nova versão de arquivo" -#: f.edit.cc:4471 +#: f.edit.cc:4482 msgid "" "save to current file \n" "open next file with same text" @@ -1211,15 +1249,15 @@ "salvar para arquivo atual \n" "abrir próximo arquivo com o mesmo texto" -#: f.edit.cc:4632 f.mashup.cc:2557 +#: f.edit.cc:4643 f.mashup.cc:2557 f.tools.cc:1060 msgid "select font" msgstr "selecionar fonte" -#: f.edit.cc:4896 +#: f.edit.cc:4907 msgid "text file is defective" msgstr "arquivo de texto está defeituoso" -#: f.edit.cc:5219 +#: f.edit.cc:5230 msgid "" "Enter line or arrow properties in dialog, \n" "click/drag on image, right click to remove" @@ -1227,23 +1265,23 @@ "Inserir propriedades de linha ou seta em caixa de diálogo, \n" "clique/arraste na imagem, clique com botão direito para remover" -#: f.edit.cc:5250 +#: f.edit.cc:5261 msgid "Write Line or Arrow on Image" msgstr "Gravar Linha ou Seta na Imagem" -#: f.edit.cc:5258 f.mashup.cc:2777 +#: f.edit.cc:5269 f.mashup.cc:2777 msgid "Line length" msgstr "Comprimento de linha" -#: f.edit.cc:5265 f.mashup.cc:2784 +#: f.edit.cc:5276 f.mashup.cc:2784 msgid "Arrow head" msgstr "Ponta de seta" -#: f.edit.cc:5278 f.mashup.cc:2797 +#: f.edit.cc:5289 f.mashup.cc:2797 msgid "line" msgstr "linha" -#: f.edit.cc:5307 +#: f.edit.cc:5318 msgid "" "fix line/arrow in layout \n" " start new line/arrow" @@ -1251,11 +1289,11 @@ "fixar linha/seta no leiaute \n" " começar nova linha/seta" -#: f.edit.cc:5896 f.widgets.cc:443 +#: f.edit.cc:5907 f.widgets.cc:444 msgid "Paint Edits" msgstr "Primir Edições" -#: f.edit.cc:5903 f.edit.cc:6132 fotoxx-15.08.cc:3172 +#: f.edit.cc:5914 f.edit.cc:6143 fotoxx-15.09.cc:3123 msgid "" "Select area cannot be kept.\n" "Continue?" @@ -1263,59 +1301,59 @@ "Área selecionada não pode ser capturada.\n" "Continuar?" -#: f.edit.cc:5911 f.edit.cc:6140 f.tools.cc:2127 +#: f.edit.cc:5922 f.edit.cc:6151 f.tools.cc:2147 msgid "Edit function must be active" msgstr "Função Editar tem de estar ativada" -#: f.edit.cc:5916 +#: f.edit.cc:5927 msgid "Cannot use Paint Edits" msgstr "Impossível usar Edições Aplicadas" -#: f.edit.cc:5945 +#: f.edit.cc:5956 msgid "power: center" msgstr "alimentação: centro" -#: f.edit.cc:5950 +#: f.edit.cc:5961 msgid "reset area" msgstr "redefinir área" -#: f.edit.cc:6125 f.widgets.cc:444 +#: f.edit.cc:6136 f.widgets.cc:445 msgid "Leverage Edits" msgstr "Influenciar Edições" -#: f.edit.cc:6126 +#: f.edit.cc:6137 msgid "Edit Function Amplifier" msgstr "Editar função Amplificador" -#: f.edit.cc:6145 +#: f.edit.cc:6156 msgid "Cannot use Leverage Edits" msgstr "Impossível usar Edições Influenciadas" -#: f.edit.cc:6178 +#: f.edit.cc:6189 msgid "minimum" msgstr "mínimo" -#: f.edit.cc:6180 +#: f.edit.cc:6191 msgid "maximum" msgstr "máximo" -#: f.edit.cc:6481 +#: f.edit.cc:6490 msgid "Edit Plugins" msgstr "Editar Extensões" -#: f.edit.cc:6482 +#: f.edit.cc:6491 msgid "Edit plugins menu" msgstr "Editar menu de plugins" -#: f.edit.cc:6490 +#: f.edit.cc:6499 msgid "Run as Fotoxx edit function" msgstr "Executar como função de edição do Fotoxx" -#: f.edit.cc:6728 +#: f.edit.cc:6737 msgid "Plugin working ..." msgstr "Plugin funcionando ..." -#: f.edit.cc:6737 +#: f.edit.cc:6746 msgid "plugin failed" msgstr "extensão falhou" @@ -1347,7 +1385,7 @@ msgid "Background" msgstr "Plano de Fundo" -#: f.effects.cc:713 f.widgets.cc:480 +#: f.effects.cc:713 f.widgets.cc:481 msgid "Line Drawing" msgstr "Desenho de linha" @@ -1355,201 +1393,201 @@ msgid "black/white" msgstr "preto/branco" -#: f.effects.cc:1003 f.widgets.cc:481 +#: f.effects.cc:1004 f.widgets.cc:482 msgid "Color Drawing" msgstr "Desenho de Cores" -#: f.effects.cc:1010 +#: f.effects.cc:1011 msgid "Bright Areas" msgstr "Áreas claras" -#: f.effects.cc:1264 f.widgets.cc:482 +#: f.effects.cc:1265 f.widgets.cc:483 msgid "Graduated Blur" msgstr "Desfoque Graduado" -#: f.effects.cc:1268 +#: f.effects.cc:1269 msgid "Contrast Limit" msgstr "Limite de Contraste" -#: f.effects.cc:1271 f.repair.cc:747 +#: f.effects.cc:1272 f.repair.cc:748 msgid "Blur Radius" msgstr "Raio de Desfoque" -#: f.effects.cc:1485 +#: f.effects.cc:1486 msgid "Simulate Embossing" msgstr "Simular Gravação em relevo" -#: f.effects.cc:1502 +#: f.effects.cc:1503 msgid "depth" msgstr "profundidade" -#: f.effects.cc:1703 +#: f.effects.cc:1705 msgid "Simulate Tiles" msgstr "Simular Ladrilho" -#: f.effects.cc:1707 +#: f.effects.cc:1709 msgid "tile size" msgstr "tamanho do ladrilho" -#: f.effects.cc:1710 +#: f.effects.cc:1712 msgid "tile gap" msgstr "espaçamento dos ladrilhos" -#: f.effects.cc:1713 +#: f.effects.cc:1715 msgid "3D depth" msgstr "profundidade 3D" -#: f.effects.cc:1937 +#: f.effects.cc:1939 msgid "Convert Image to Dots" msgstr "Converter imagem para pontos" -#: f.effects.cc:1941 +#: f.effects.cc:1943 msgid "dot size" msgstr "tamanho do ponto" -#: f.effects.cc:2161 +#: f.effects.cc:2168 msgid "Simulate Painting" msgstr "Simular Pintura" -#: f.effects.cc:2165 +#: f.effects.cc:2172 msgid "color depth" msgstr "resolução de cor" -#: f.effects.cc:2169 +#: f.effects.cc:2176 msgid "patch area goal" msgstr "remendar área objetivo" -#: f.effects.cc:2173 +#: f.effects.cc:2180 msgid "req. color match" msgstr "correspondência de cores requeridas" -#: f.effects.cc:2177 +#: f.effects.cc:2184 msgid "borders" msgstr "bordas" -#: f.effects.cc:2750 f.widgets.cc:487 +#: f.effects.cc:2757 f.widgets.cc:488 msgid "Vignette" msgstr "Vinheta" -#: f.effects.cc:3118 +#: f.effects.cc:3125 msgid "Add Texture" msgstr "Adicionar Textura" -#: f.effects.cc:3334 +#: f.effects.cc:3341 msgid "Background Pattern" msgstr "Padrão de Plano de Fundo" -#: f.effects.cc:3338 +#: f.effects.cc:3345 msgid "Pattern File:" msgstr "Arquivo de Padrão:" -#: f.effects.cc:3343 +#: f.effects.cc:3350 msgid "Geometry" msgstr "Geometria" -#: f.effects.cc:3344 +#: f.effects.cc:3351 msgid "Calculate" msgstr "Calcular" -#: f.effects.cc:3346 +#: f.effects.cc:3353 msgid "Zoom" msgstr "Zoom" -#: f.effects.cc:3357 f.widgets.cc:489 +#: f.effects.cc:3364 f.widgets.cc:490 msgid "Pattern" msgstr "Padrão" -#: f.effects.cc:3364 +#: f.effects.cc:3371 msgid "Overlap" msgstr "Sobreposição" -#: f.effects.cc:3371 +#: f.effects.cc:3378 msgid "Opacity" msgstr "Opacidade" -#: f.effects.cc:3410 +#: f.effects.cc:3417 msgid "choose pattern tile" msgstr "escolha padrão do ladrilho" -#: f.effects.cc:3755 +#: f.effects.cc:3762 msgid "Create Mosaic" msgstr "Criar Mosaico" -#: f.effects.cc:3841 +#: f.effects.cc:3848 msgid "Tile" msgstr "Ladrilho" -#: f.effects.cc:3849 f.widgets.cc:484 +#: f.effects.cc:3856 f.widgets.cc:485 msgid "Tiles" msgstr "Ladrilhos" -#: f.effects.cc:3855 +#: f.effects.cc:3862 msgid "Tile blending" msgstr "Mistura de Ladrilhos" -#: f.effects.cc:3935 +#: f.effects.cc:3942 #, c-format msgid "exceeded max. tiles: %d" msgstr "excedeu máx. de ladrilhos: %d" -#: f.effects.cc:3950 +#: f.effects.cc:3957 #, c-format msgid "only %d tile images found" msgstr "apenas %d imagens de ladrilho encontradas" -#: f.effects.cc:4326 f.widgets.cc:491 +#: f.effects.cc:4333 f.widgets.cc:492 msgid "Custom Kernel" msgstr "Customizar Núcleo" -#: f.effects.cc:4330 +#: f.effects.cc:4337 msgid "Kernel size" msgstr "Tamanho de Núcleo" -#: f.effects.cc:4335 +#: f.effects.cc:4342 msgid "Divisor" msgstr "Divisor" -#: f.effects.cc:4340 +#: f.effects.cc:4347 msgid "Data file" msgstr "Arquivo de Dados" -#: f.effects.cc:4606 f.widgets.cc:492 +#: f.effects.cc:4611 f.widgets.cc:493 msgid "Make Waves" msgstr "Criar Ondas" -#: f.effects.cc:4613 +#: f.effects.cc:4618 msgid "wavelength" msgstr "comprimento de onda" -#: f.effects.cc:4614 +#: f.effects.cc:4619 msgid "amplitude" msgstr "amplitude" -#: f.effects.cc:4615 +#: f.effects.cc:4620 msgid "variance" msgstr "variância" -#: f.effects.cc:4626 +#: f.effects.cc:4631 msgid "perspective" msgstr "perspectiva" -#: f.effects.cc:4800 +#: f.effects.cc:4805 msgid "Pull image using the mouse." msgstr "Puxe a imagem utilizando o mouse." -#: f.effects.cc:4821 f.widgets.cc:493 +#: f.effects.cc:4826 f.widgets.cc:494 msgid "Directed Blur" msgstr "Desfoque Direcionado" -#: f.effects.cc:4825 +#: f.effects.cc:4830 msgid "blur span" msgstr "extensão de desfoque" -#: f.effects.cc:4828 +#: f.effects.cc:4833 msgid "intensity" msgstr "intensidade" -#: f.file.cc:247 +#: f.file.cc:248 msgid "" "use EXIF photo date or \n" " file modification date" @@ -1557,103 +1595,103 @@ "usar dados EXIF da foto ou \n" " data de modificação do arquivo" -#: f.file.cc:264 f.widgets.cc:560 +#: f.file.cc:265 f.widgets.cc:565 msgid "File" msgstr "Arquivo" -#: f.file.cc:357 f.file.cc:1483 f.file.cc:1622 +#: f.file.cc:358 f.file.cc:1487 f.file.cc:1626 msgid "no more images" msgstr "imagens esgotadas" -#: f.file.cc:417 +#: f.file.cc:418 msgid "UFraw not installed" msgstr "UFraw não instalado" -#: f.file.cc:433 f.widgets.cc:679 +#: f.file.cc:434 f.widgets.cc:684 msgid "Open RAW file (ufraw)" msgstr "Abrir arquivo RAW (ufraw)" -#: f.file.cc:438 f.file.cc:509 +#: f.file.cc:439 f.file.cc:510 msgid "RAW type not registered in User Settings" msgstr "Tipo RAW não reconhecido nas Configurações de Usuário" -#: f.file.cc:504 f.widgets.cc:680 +#: f.file.cc:505 f.widgets.cc:685 msgid "Open RAW file (Raw Therapee)" msgstr "Abrir arquivo RAW (Raw Therapee)" -#: f.file.cc:587 +#: f.file.cc:588 msgid "Save Image File" msgstr "Salvar Arquivo-imagem" -#: f.file.cc:597 +#: f.file.cc:598 msgid "new version" msgstr "nova versão" -#: f.file.cc:598 +#: f.file.cc:599 msgid "new file" msgstr "novo arquivo" -#: f.file.cc:599 +#: f.file.cc:600 msgid "replace file" msgstr "substituir arquivo" -#: f.file.cc:606 f.file.cc:2281 +#: f.file.cc:607 f.file.cc:2344 msgid "save as new file name or type" msgstr "salvar com novo nome ou tipo de arquivo" -#: f.file.cc:608 +#: f.file.cc:609 msgid "replace old file (OVERWRITE)" msgstr "substituir arquivo antigo (SOBRESCREVER)" -#: f.file.cc:646 f.file.cc:2071 +#: f.file.cc:647 f.file.cc:2124 msgid "cannot save as RAW type" msgstr "não foi possível salvar como RAW" -#: f.file.cc:773 f.widgets.cc:396 +#: f.file.cc:774 f.widgets.cc:395 msgid "Rename Image File" msgstr "Renomear arquivo" -#: f.file.cc:780 +#: f.file.cc:781 msgid "Old Name" msgstr "nome antigo" -#: f.file.cc:790 +#: f.file.cc:791 msgid "previous name" msgstr "nome anterior" -#: f.file.cc:791 +#: f.file.cc:792 msgid "add 1" msgstr "adicionar 1" -#: f.file.cc:946 +#: f.file.cc:950 msgid "Create Blank Image" msgstr "Criar imagem em branco" -#: f.file.cc:948 +#: f.file.cc:952 msgid "file name" msgstr "nome do arquvo" -#: f.file.cc:982 +#: f.file.cc:986 msgid "supply a file name" msgstr "forneça um nome de arquivo" -#: f.file.cc:1114 +#: f.file.cc:1118 msgid "Copy Image File" msgstr "Copiar Arquivo de Imagem" -#: f.file.cc:1115 +#: f.file.cc:1119 msgid "Move Image File" msgstr "Mover Arquivo de Imagem" -#: f.file.cc:1158 +#: f.file.cc:1162 msgid "new location" msgstr "nova localidade" -#: f.file.cc:1228 +#: f.file.cc:1232 msgid "new location is not a directory" msgstr "nova localidade não é um diretório" -#: f.file.cc:1270 f.file.cc:1467 f.file.cc:1605 +#: f.file.cc:1274 f.file.cc:1471 f.file.cc:1609 #, c-format msgid "" "delete failed: \n" @@ -1662,15 +1700,15 @@ "exclusão falhou: \n" " %s" -#: f.file.cc:1312 f.widgets.cc:398 +#: f.file.cc:1316 f.widgets.cc:397 msgid "Trash Image File" msgstr "Mover arquivo para lixeira" -#: f.file.cc:1313 f.file.cc:1520 +#: f.file.cc:1317 f.file.cc:1524 msgid "(automatic step to next image)" msgstr "(passar automaticamente para a próxima imagem)" -#: f.file.cc:1381 +#: f.file.cc:1385 msgid "" "Linux standard trash does not work. \n" "Desktop trash folder will be created." @@ -1678,7 +1716,7 @@ "Lixeira padrão Linux não funciona. \n" "Diretório de lixo será criado na Área de Trabalho." -#: f.file.cc:1384 +#: f.file.cc:1388 msgid "" "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" @@ -1686,49 +1724,101 @@ "Lixeira padrão Linux e Diretório de lixo não funcionam. \n" "Excluir permanentemente arquivo de imagem?" -#: f.file.cc:1387 +#: f.file.cc:1391 #, c-format msgid "Cannot create trash folder: %s" msgstr "Não foi possível criar pasta lixeira: %s" -#: f.file.cc:1399 +#: f.file.cc:1403 msgid "Move read-only file to trash?" msgstr "Mover arquivo de apenas leitura para lixeira?" -#: f.file.cc:1454 +#: f.file.cc:1458 #, c-format msgid "error: %s" msgstr "erro: %s" -#: f.file.cc:1519 +#: f.file.cc:1523 msgid "Delete Image File - CANNOT BE REVERSED" msgstr "Excluir arquivo de Imagem - IRREVERSÍVEL" -#: f.file.cc:1595 +#: f.file.cc:1599 msgid "Delete read-only file?" msgstr "Excluir arquivo somente leitura?" -#: f.file.cc:1911 f.widgets.cc:390 +#: f.file.cc:1820 f.widgets.cc:547 +msgid "Quick Start" +msgstr "Guia Rápido" + +#: f.file.cc:1823 f.widgets.cc:548 +msgid "User Guide" +msgstr "Guia de usuário" + +#: f.file.cc:1826 f.widgets.cc:549 +msgid "User Guide Changes" +msgstr "Mudanças no Guia de Usuários" + +#: f.file.cc:1829 f.widgets.cc:551 +msgid "README" +msgstr "LEIAME" + +#: f.file.cc:1832 f.widgets.cc:550 +msgid "Edit Functions Summary" +msgstr "Editar Resumo de Funções" + +#: f.file.cc:1835 f.widgets.cc:552 +msgid "Change Log" +msgstr "Relatório de mudanças" + +#: f.file.cc:1838 f.widgets.cc:553 +msgid "Log File" +msgstr "Arquivo de Log" + +#: f.file.cc:1841 f.widgets.cc:554 +msgid "Translations" +msgstr "Traduções" + +#: f.file.cc:1844 f.widgets.cc:555 +msgid "Home Page" +msgstr "Página na web" + +#: f.file.cc:1847 f.widgets.cc:556 +msgid "About" +msgstr "Sobre" + +#: f.file.cc:1851 f.widgets.cc:577 f.widgets.cc:599 fotoxx.h:1119 +msgid "Help" +msgstr "Ajuda" + +#: f.file.cc:1961 f.widgets.cc:389 msgid "Open Image File" msgstr "Abrir arquivo" -#: f.file.cc:1929 +#: f.file.cc:1979 msgid "unknown file type" msgstr "tipo de arquivo desconhecido" -#: f.file.cc:2197 +#: f.file.cc:2117 +msgid "" +"Transparency map will be lost.\n" +"save to PNG file to retain." +msgstr "" +"Mapa de Transparência será perdido. \n" +"salve em arquivo PNG para mantê-lo." + +#: f.file.cc:2260 msgid "Unable to copy EXIF/IPTC data" msgstr "Incapaz de copiar dados EXIF/IPTC" -#: f.file.cc:2297 +#: f.file.cc:2360 msgid "make current" msgstr "tornar atual" -#: f.file.cc:2390 +#: f.file.cc:2453 msgid "jpeg quality must be 1-100" msgstr "qualidade de jpeg deve estar entre 1-100" -#: f.file.cc:2417 +#: f.file.cc:2480 #, c-format msgid "" "Overwrite file? \n" @@ -1737,138 +1827,138 @@ "Sobrescrever arquivo? \n" " %s" -#: f.file.cc:2669 f.file.cc:2738 +#: f.file.cc:2732 f.file.cc:2801 #, c-format msgid "file not found: %s" msgstr "arquivo não encontrado: %s" -#: f.file.cc:2675 f.file.cc:2744 +#: f.file.cc:2738 f.file.cc:2807 #, c-format msgid "file type not supported: %s" msgstr "tipo de arquivo não suportado: %s" -#: f.gallery.cc:921 f.gallery.cc:1010 f.widgets.cc:592 +#: f.gallery.cc:911 f.gallery.cc:1000 f.widgets.cc:597 msgid "Scroll" msgstr "Rolar" -#: f.gallery.cc:925 +#: f.gallery.cc:915 msgid "Sync" msgstr "Sinc" -#: f.gallery.cc:935 f.repair.cc:5783 f.repair.cc:5788 fotoxx.h:1132 +#: f.gallery.cc:925 f.repair.cc:5779 f.repair.cc:5784 fotoxx.h:1140 msgid "Open" msgstr "Abrir" -#: f.gallery.cc:936 +#: f.gallery.cc:926 msgid "change directory" msgstr "mudar diretório" -#: f.gallery.cc:944 +#: f.gallery.cc:934 msgid "GoTo" msgstr "IrPara" -#: f.gallery.cc:950 f.widgets.cc:587 +#: f.gallery.cc:940 f.widgets.cc:592 msgid "Sort" msgstr "Ordenar" -#: f.gallery.cc:956 f.gallery.cc:1528 f.gallery.cc:1529 f.gallery.cc:1531 -#: f.widgets.cc:585 +#: f.gallery.cc:946 f.gallery.cc:1510 f.gallery.cc:1511 f.gallery.cc:1513 +#: f.widgets.cc:590 msgid "Zoom+" msgstr "Zoom+" -#: f.gallery.cc:966 f.gallery.cc:1530 f.gallery.cc:1532 f.widgets.cc:586 +#: f.gallery.cc:956 f.gallery.cc:1512 f.gallery.cc:1514 f.widgets.cc:591 msgid "Zoom-" msgstr "Zoom-" -#: f.gallery.cc:978 f.gallery.cc:1536 +#: f.gallery.cc:968 f.gallery.cc:1518 msgid "Row↑" msgstr "Linha↑" -#: f.gallery.cc:986 f.gallery.cc:1537 +#: f.gallery.cc:976 f.gallery.cc:1519 msgid "Row↓" msgstr "Linha↓" -#: f.gallery.cc:994 f.gallery.cc:1534 f.gallery.cc:1541 f.widgets.cc:590 +#: f.gallery.cc:984 f.gallery.cc:1516 f.gallery.cc:1523 f.widgets.cc:595 msgid "Page↑" msgstr "Página↑" -#: f.gallery.cc:1002 f.gallery.cc:1535 f.gallery.cc:1542 f.widgets.cc:591 +#: f.gallery.cc:992 f.gallery.cc:1517 f.gallery.cc:1524 f.widgets.cc:596 msgid "Page↓" msgstr "Página↓" -#: f.gallery.cc:1016 f.gallery.cc:1539 f.widgets.cc:588 +#: f.gallery.cc:1006 f.gallery.cc:1521 f.widgets.cc:593 msgid "First" msgstr "Primeiro" -#: f.gallery.cc:1017 f.gallery.cc:1540 f.widgets.cc:589 +#: f.gallery.cc:1007 f.gallery.cc:1522 f.widgets.cc:594 msgid "Last" msgstr "Último" -#: f.gallery.cc:1134 +#: f.gallery.cc:1120 msgid "Choose image directory" msgstr "Escolher diretório de imagens" -#: f.gallery.cc:1141 f.gallery.cc:1155 +#: f.gallery.cc:1127 f.gallery.cc:1141 msgid "recent" msgstr "recente" -#: f.gallery.cc:1142 f.gallery.cc:1160 +#: f.gallery.cc:1128 f.gallery.cc:1146 msgid "newest" msgstr "mais novo" -#: f.gallery.cc:1224 +#: f.gallery.cc:1210 msgid "no albums found" msgstr "nenhum álbum encontrado" -#: f.gallery.cc:1231 +#: f.gallery.cc:1217 msgid "Choose album" msgstr "Escolher álbum" -#: f.gallery.cc:1281 +#: f.gallery.cc:1267 msgid "Gallery Sort" msgstr "Ordenar Galeria" -#: f.gallery.cc:1285 +#: f.gallery.cc:1271 msgid "File Name" msgstr "Nome de Arquivo" -#: f.gallery.cc:1286 +#: f.gallery.cc:1272 msgid "File Mod Date/Time" msgstr "Data/Hora da Modificação do Arquivo" -#: f.gallery.cc:1287 +#: f.gallery.cc:1273 msgid "Photo Date/Time (EXIF)" msgstr "Foto Data/Hora (EXIF)" -#: f.gallery.cc:1289 +#: f.gallery.cc:1275 msgid "ascending" msgstr "ascendente" -#: f.gallery.cc:1290 +#: f.gallery.cc:1276 msgid "descending" msgstr "descendente" -#: f.gallery.cc:2244 fotoxx.h:1157 +#: f.gallery.cc:2213 fotoxx.h:1165 msgid "Select Files" msgstr "Selecionar arquivos" -#: f.gallery.cc:2716 +#: f.gallery.cc:2684 msgid "Click list position. Click thumbnail to add." msgstr "Clique na posição da lista. Clique na miniatura para adicionar." -#: f.gallery.cc:2742 f.gallery.cc:2990 +#: f.gallery.cc:2710 f.gallery.cc:2958 msgid "Edit Bookmarks" msgstr "Editar Favoritos" -#: f.gallery.cc:2917 +#: f.gallery.cc:2885 msgid "unable to save bookmarks file" msgstr "incapaz de salvar arquivo de favoritos" -#: f.gallery.cc:2990 +#: f.gallery.cc:2958 msgid "Go To Bookmark" msgstr "Ir para Favorito" -#: f.gallery.cc:3047 f.meta.cc:2732 f.repair.cc:7410 +#: f.gallery.cc:3015 f.meta.cc:2772 f.repair.cc:7407 msgid "file not found" msgstr "arquivo não encontrado" @@ -2062,7 +2152,7 @@ msgid "Hard" msgstr "Rígido" -#: f.mashup.cc:1304 f.repair.cc:5378 +#: f.mashup.cc:1304 f.repair.cc:5375 msgid "Blend" msgstr "Mistura" @@ -2078,7 +2168,7 @@ msgid "Gradual" msgstr "Gradual" -#: f.mashup.cc:1580 fotoxx.h:1136 +#: f.mashup.cc:1580 fotoxx.h:1144 msgid "Power" msgstr "Força" @@ -2137,123 +2227,127 @@ msgid "exceeded %d line entries" msgstr "excederam%d linhas de entrada" -#: f.meta.cc:179 f.widgets.cc:657 +#: f.meta.cc:179 f.widgets.cc:662 msgid "View Metadata" msgstr "Ver metadados" -#: f.meta.cc:420 f.meta.cc:1756 f.widgets.cc:408 f.widgets.cc:658 +#: f.meta.cc:419 f.meta.cc:1796 f.widgets.cc:407 f.widgets.cc:663 msgid "Edit Metadata" msgstr "Editar Metadados" -#: f.meta.cc:430 +#: f.meta.cc:422 f.meta.cc:3748 +msgid "save metadata to file" +msgstr "salvar metadados em arquivo" + +#: f.meta.cc:431 msgid "Image Date" msgstr "Data da Imagem" -#: f.meta.cc:433 +#: f.meta.cc:434 msgid "Time" msgstr "Hora" -#: f.meta.cc:439 +#: f.meta.cc:440 msgid "Rating (stars):" msgstr "Avaliação (estrelas):" -#: f.meta.cc:451 +#: f.meta.cc:452 msgid "Caption" msgstr "Legenda" -#: f.meta.cc:457 +#: f.meta.cc:458 msgid "Comments" msgstr "Comentários" -#: f.meta.cc:465 +#: f.meta.cc:466 msgid "Enter New Tag" msgstr "Entre com Nova Etiqueta" -#: f.meta.cc:472 f.meta.cc:4889 +#: f.meta.cc:473 f.meta.cc:4930 msgid "Matching Tags" msgstr "Etiquetas Correspondentes" -#: f.meta.cc:480 +#: f.meta.cc:481 msgid "Image Tags" msgstr "Etiquetas da imagem" -#: f.meta.cc:486 +#: f.meta.cc:487 msgid "Recent Tags" msgstr "etiquetas recentes" -#: f.meta.cc:495 f.meta.cc:1978 f.meta.cc:4896 +#: f.meta.cc:496 f.meta.cc:2018 f.meta.cc:4937 msgid "Defined Tags Category" msgstr "Categorias de Etiquetas Definidas" -#: f.meta.cc:886 +#: f.meta.cc:887 msgid "date format is YYYY-MM-DD" msgstr "formato da data é AAAA-MM-DD" -#: f.meta.cc:890 +#: f.meta.cc:891 msgid "date is invalid" msgstr "data inválida" -#: f.meta.cc:924 +#: f.meta.cc:925 msgid "time format is HH:MM [:SS]" msgstr "formato da hora é HH:MM [: SS]" -#: f.meta.cc:928 +#: f.meta.cc:929 msgid "time is invalid" msgstr "hora inválida" -#: f.meta.cc:974 fotoxx.h:1121 +#: f.meta.cc:1014 fotoxx.h:1129 msgid "Manage Tags" msgstr "Gerenciar Etiquetas" -#: f.meta.cc:974 +#: f.meta.cc:1014 msgid "orphan tags" msgstr "etiquetas órfãs" -#: f.meta.cc:978 +#: f.meta.cc:1018 msgid "category" msgstr "categoria" -#: f.meta.cc:981 +#: f.meta.cc:1021 msgid "tag" msgstr "etiqueta" -#: f.meta.cc:988 +#: f.meta.cc:1028 msgid "Defined Tags:" msgstr "etiquetas definidas:" -#: f.meta.cc:1760 f.meta.cc:2418 +#: f.meta.cc:1800 f.meta.cc:2458 msgid "key name" msgstr "nome chave" -#: f.meta.cc:1762 f.meta.cc:2419 +#: f.meta.cc:1802 f.meta.cc:2459 msgid "key value" msgstr "valor chave" -#: f.meta.cc:1849 f.widgets.cc:410 +#: f.meta.cc:1889 f.widgets.cc:409 msgid "Delete Metadata" msgstr "Excluir Metadados" -#: f.meta.cc:1851 fotoxx.h:1070 +#: f.meta.cc:1891 fotoxx.h:1078 msgid "All" msgstr "Todos" -#: f.meta.cc:1852 +#: f.meta.cc:1892 msgid "One Key:" msgstr "Uma chave:" -#: f.meta.cc:1955 f.widgets.cc:411 f.widgets.cc:530 +#: f.meta.cc:1995 f.widgets.cc:410 f.widgets.cc:533 msgid "Batch Add/Remove Tags" msgstr "Adicionar/Remover Etiqueras em Lote" -#: f.meta.cc:1966 +#: f.meta.cc:2006 msgid "tags to add" msgstr "etiquetas a adicionar" -#: f.meta.cc:1967 +#: f.meta.cc:2007 msgid "tags to remove" msgstr "etiquetas a remover" -#: f.meta.cc:2051 +#: f.meta.cc:2091 #, c-format msgid "" "%s \n" @@ -2262,15 +2356,15 @@ "%s \n" " etiquetas demasiadas" -#: f.meta.cc:2166 +#: f.meta.cc:2206 msgid "specify files and tags" msgstr "especificar arquivos e etiquetas" -#: f.meta.cc:2226 +#: f.meta.cc:2266 msgid "tag names file" msgstr "arquivo de nomes de etiqueta" -#: f.meta.cc:2298 +#: f.meta.cc:2338 #, c-format msgid "" "%d tags to rename \n" @@ -2281,32 +2375,32 @@ "em %d arquivos de imagem. \n" "Proceder?" -#: f.meta.cc:2409 +#: f.meta.cc:2449 msgid "Batch Metadata" msgstr "Metadados em Lote" -#: f.meta.cc:2455 +#: f.meta.cc:2495 msgid "enter key names" msgstr "inserir nome de chave" -#: f.meta.cc:2461 fotoxx.h:1129 +#: f.meta.cc:2501 fotoxx.h:1137 msgid "no files selected" msgstr "nenhum arquivo selecionado" -#: f.meta.cc:3164 f.meta.cc:3899 f.meta.cc:4163 +#: f.meta.cc:3204 f.meta.cc:3940 f.meta.cc:4204 #, c-format msgid "bad latitude/longitude: %s %s" msgstr "latitude/longitude inválido: %s %s" -#: f.meta.cc:3207 f.meta.cc:3571 f.meta.cc:4372 f.meta.cc:4780 +#: f.meta.cc:3247 f.meta.cc:3611 f.meta.cc:4413 f.meta.cc:4821 msgid "-noindex in use, disabled" msgstr "-noindex em uso, desabilitado" -#: f.meta.cc:3223 +#: f.meta.cc:3263 msgid "choose map file" msgstr "escolher arquivo de mapa" -#: f.meta.cc:3332 +#: f.meta.cc:3372 msgid "" "fotoxx-maps package not installed \n" "(see http://kornelix.com/packages and /tarballs)" @@ -2314,12 +2408,12 @@ "pacote fotoxx-maps não instalado \n" "(http://kornelix.com/packages e /tarballs)" -#: f.meta.cc:3337 +#: f.meta.cc:3377 #, c-format msgid "map file %s is missing" msgstr "arquivo de mapa file %s faltando" -#: f.meta.cc:3341 +#: f.meta.cc:3381 #, c-format msgid "" "map latitude/longitude data unreasonable \n" @@ -2328,39 +2422,39 @@ "dados latitude/longitude do mapa não fazem sentido \n" " %.3f %.3f %.3f %.3f" -#: f.meta.cc:3620 +#: f.meta.cc:3660 msgid "No matching images found" msgstr "Nenhuma imagem encontrada" -#: f.meta.cc:3660 +#: f.meta.cc:3700 msgid "search range (km)" msgstr "procurar distância (km)" -#: f.meta.cc:3693 f.widgets.cc:414 f.widgets.cc:659 +#: f.meta.cc:3733 f.widgets.cc:413 f.widgets.cc:664 msgid "Edit Geotags" msgstr "Editar Georreferências" -#: f.meta.cc:3694 +#: f.meta.cc:3734 msgid "Geocoding web service courtesy of" msgstr "Serviço de geocodificação web cortesia de" -#: f.meta.cc:3709 f.meta.cc:3949 f.meta.cc:5655 +#: f.meta.cc:3750 f.meta.cc:3990 f.meta.cc:5710 msgid "city" msgstr "cidade" -#: f.meta.cc:3712 f.meta.cc:3952 f.meta.cc:5658 +#: f.meta.cc:3753 f.meta.cc:3993 f.meta.cc:5713 msgid "country" msgstr "país" -#: f.meta.cc:3794 f.meta.cc:4080 +#: f.meta.cc:3835 f.meta.cc:4121 msgid "city not found" msgstr "cidade não encontrada" -#: f.meta.cc:3915 f.widgets.cc:415 f.widgets.cc:533 +#: f.meta.cc:3956 f.widgets.cc:414 f.widgets.cc:536 msgid "Batch Add Geotags" msgstr "Adicionar Georreferências em Lote" -#: f.meta.cc:4142 +#: f.meta.cc:4183 msgid "" "data is incomplete \n" " proceed?" @@ -2368,140 +2462,140 @@ "Dados incompletos \n" " continuar?" -#: f.meta.cc:4199 +#: f.meta.cc:4240 msgid "choose city" msgstr "escolher cidade" -#: f.meta.cc:4286 +#: f.meta.cc:4327 msgid "not found" msgstr "não encontrado" -#: f.meta.cc:4287 +#: f.meta.cc:4328 msgid "city and country required" msgstr "cidade e país requerido" -#: f.meta.cc:4387 +#: f.meta.cc:4428 msgid "Report Geotag Groups" msgstr "Relatório de Grupos de Georreferências" -#: f.meta.cc:4388 +#: f.meta.cc:4429 msgid "Group by country" msgstr "Agrupar por país" -#: f.meta.cc:4389 +#: f.meta.cc:4430 msgid "Group by country/city" msgstr "Agrupar por país/cidade" -#: f.meta.cc:4390 +#: f.meta.cc:4431 msgid "Group by country/city/date" msgstr "Agrupar por país/cidade/data" -#: f.meta.cc:4393 +#: f.meta.cc:4434 msgid "Combine within" msgstr "Combinar interiormente" -#: f.meta.cc:4395 +#: f.meta.cc:4436 msgid "days" msgstr "dias" -#: f.meta.cc:4511 +#: f.meta.cc:4552 msgid "geotag groups" msgstr "grupos de georreferência" -#: f.meta.cc:4817 +#: f.meta.cc:4858 msgid "Search Image Metadata" msgstr "Procurar por Metadados de Imagem" -#: f.meta.cc:4821 +#: f.meta.cc:4862 msgid "images to search:" msgstr "imagens para busca:" -#: f.meta.cc:4822 +#: f.meta.cc:4863 msgid "all" msgstr "todos" -#: f.meta.cc:4823 +#: f.meta.cc:4864 msgid "current set only" msgstr "configuração atual apenas" -#: f.meta.cc:4826 +#: f.meta.cc:4867 msgid "matching images:" msgstr "imagens correspondentes:" -#: f.meta.cc:4827 +#: f.meta.cc:4868 msgid "new set" msgstr "nova configuração" -#: f.meta.cc:4828 +#: f.meta.cc:4869 msgid "add to set" msgstr "adicionar à configuração" -#: f.meta.cc:4829 +#: f.meta.cc:4870 msgid "remove" msgstr "remover" -#: f.meta.cc:4832 +#: f.meta.cc:4873 msgid "report type:" msgstr "tipo relatório:" -#: f.meta.cc:4833 +#: f.meta.cc:4874 msgid "gallery" msgstr "galeria" -#: f.meta.cc:4834 fotoxx-15.08.cc:801 +#: f.meta.cc:4875 fotoxx-15.09.cc:781 msgid "metadata" msgstr "metadados" -#: f.meta.cc:4840 +#: f.meta.cc:4881 msgid "date range" msgstr "variação de data" -#: f.meta.cc:4841 +#: f.meta.cc:4882 msgid "stars range" msgstr "variação de estrelas" -#: f.meta.cc:4842 +#: f.meta.cc:4883 msgid "search tags" msgstr "procurar etiquetas" -#: f.meta.cc:4843 +#: f.meta.cc:4884 msgid "search text" msgstr "procurar texto" -#: f.meta.cc:4844 +#: f.meta.cc:4885 msgid "search files" msgstr "procurar arquivos" -#: f.meta.cc:4849 +#: f.meta.cc:4890 msgid "(yyyymmdd)" msgstr "(aaaammdd)" -#: f.meta.cc:4854 +#: f.meta.cc:4895 msgid "last version only" msgstr "última versão apenas" -#: f.meta.cc:4856 +#: f.meta.cc:4897 msgid "all/any" msgstr "todos/qualquer" -#: f.meta.cc:4875 +#: f.meta.cc:4916 msgid "other criteria" msgstr "outro critério" -#: f.meta.cc:4879 +#: f.meta.cc:4920 msgid "other" msgstr "outro" -#: f.meta.cc:4885 +#: f.meta.cc:4926 msgid "Enter Search Tag" msgstr "Entre com a Etiqueta de Busca" -#: f.meta.cc:5179 +#: f.meta.cc:5221 #, c-format msgid "not a defined tag: %s" msgstr "não é etiqueta definida: %s" -#: f.meta.cc:5210 +#: f.meta.cc:5252 msgid "" "to remove images from current set, \n" "search current set" @@ -2509,7 +2603,7 @@ "para remover imagens da configuração atual, \n" "busque na configuração atual" -#: f.meta.cc:5217 +#: f.meta.cc:5259 msgid "" "to add images to current set, \n" "search all images" @@ -2517,32 +2611,41 @@ "para adicionar imagens à configuração atual, \n" "busque todas as imagens" -#: f.meta.cc:5266 +#: f.meta.cc:5303 +#, c-format +msgid "" +"search dates not reasonable \n" +" %s %s" +msgstr "" +"datas de procura não fazem sentido \n" +" %s %s" + +#: f.meta.cc:5321 msgid "stars range not reasonable" msgstr "varição de avaliação não é razoável" -#: f.meta.cc:5511 +#: f.meta.cc:5566 #, c-format msgid "images added: %d removed: %d new count: %d" msgstr "imagens adicionadas: %d removidas: %d nova contagem: %d" -#: f.meta.cc:5514 +#: f.meta.cc:5569 msgid "no changes made" msgstr "nenhuma mudança feita" -#: f.meta.cc:5652 +#: f.meta.cc:5707 msgid "Add Geotags Search Criteria" msgstr "Adicionar Critério de Busca Georreferencial" -#: f.meta.cc:5671 +#: f.meta.cc:5726 msgid "range (km)" msgstr "alcance (km)" -#: f.meta.cc:5764 +#: f.meta.cc:5819 msgid "error in latitude/longitude/range" msgstr "erro na latitude/longitude/distância" -#: f.meta.cc:5828 +#: f.meta.cc:5883 msgid "" "These items are always reported: \n" "date, stars, tags, caption, comment" @@ -2550,19 +2653,19 @@ "Esses itens são sempre relatados: \n" "data, estrelas, etiquetas, legenda, comentário" -#: f.meta.cc:5852 +#: f.meta.cc:5907 msgid "Additional Items for Report" msgstr "Itens Adicionais para Relatar" -#: f.meta.cc:5858 +#: f.meta.cc:5913 msgid "Keyword" msgstr "Palavra chave" -#: f.meta.cc:5865 +#: f.meta.cc:5920 msgid "Match Criteria" msgstr "Equiparar Critério" -#: f.meta.cc:6425 +#: f.meta.cc:6480 msgid "image index is missing" msgstr "índice de imagem faltando" @@ -2578,47 +2681,47 @@ msgid "Kuwahara method" msgstr "Método Kuwahara" -#: f.repair.cc:1012 +#: f.repair.cc:1014 msgid "Apply repeatedly while watching the image." msgstr "Aplicar repetidamente enquanto visualiza a imagem." -#: f.repair.cc:1013 +#: f.repair.cc:1015 msgid "Measure" msgstr "Mensurar" -#: f.repair.cc:1047 +#: f.repair.cc:1049 msgid "Noise Reduction" msgstr "Redução de ruído" -#: f.repair.cc:1063 +#: f.repair.cc:1065 msgid "Flatten Outliers 1" msgstr "Achatamento Atípico 1" -#: f.repair.cc:1064 +#: f.repair.cc:1066 msgid "Flatten Outliers 2" msgstr "Achatamento Atípico 2" -#: f.repair.cc:1065 +#: f.repair.cc:1067 msgid "Median Brightness" msgstr "Brilho Mediano" -#: f.repair.cc:1093 +#: f.repair.cc:1095 msgid "dark areas" msgstr "áreas escuras" -#: f.repair.cc:1095 +#: f.repair.cc:1097 msgid "all areas" msgstr "todas as áreas" -#: f.repair.cc:1193 +#: f.repair.cc:1195 msgid "Measure Noise" msgstr "Mensurar Ruído" -#: f.repair.cc:1194 +#: f.repair.cc:1196 msgid "Click on a monotone image area." msgstr "Clique em uma área monocórdica na imagem." -#: f.repair.cc:2095 +#: f.repair.cc:2098 msgid "" "1. Drag mouse to select. \n" "2. Erase. 3. Repeat. " @@ -2626,23 +2729,23 @@ "1. Arraste o mouse para selecionar. \n" "2. Apague. 3. Repita. " -#: f.repair.cc:2117 f.widgets.cc:451 +#: f.repair.cc:2120 f.widgets.cc:452 msgid "Smart Erase" msgstr "Apagador inteligente" -#: f.repair.cc:2122 fotoxx.h:1140 +#: f.repair.cc:2125 fotoxx.h:1148 msgid "Radius" msgstr "Raio" -#: f.repair.cc:2124 f.widgets.cc:449 +#: f.repair.cc:2127 f.widgets.cc:450 msgid "Blur" msgstr "Embaçar" -#: f.repair.cc:2127 +#: f.repair.cc:2130 msgid "New Area" msgstr "Nova Área" -#: f.repair.cc:2475 +#: f.repair.cc:2479 msgid "" "Method 1:\n" " Left-click on red-eye to darken.\n" @@ -2660,11 +2763,11 @@ "Retornar ao olho vermelho:\n" " Clique com o botão direito no olho vermelho." -#: f.repair.cc:2491 +#: f.repair.cc:2495 msgid "Red Eye Reduction" msgstr "Redução de olhos vermelhos" -#: f.repair.cc:2955 +#: f.repair.cc:2959 msgid "" "shift + left click: pick color or image position \n" "left click or drag: paint color or copy image \n" @@ -2674,40 +2777,40 @@ "clique esquerdo ou arrastar: cor da pintura ou copiar imagem \n" "clique direito ou arrastar: remover cor ou imagem" -#: f.repair.cc:2987 f.widgets.cc:453 +#: f.repair.cc:2991 f.widgets.cc:454 msgid "Paint/Clone" msgstr "Pintar Pixels" -#: f.repair.cc:2991 +#: f.repair.cc:2995 msgid "paint color" msgstr "cor da pintura" -#: f.repair.cc:2994 +#: f.repair.cc:2998 msgid "copy from image" msgstr "copiar da imagem" -#: f.repair.cc:3001 f.repair.cc:3557 +#: f.repair.cc:3005 f.repair.cc:3562 msgid "paintbrush radius" msgstr "raio do pincel" -#: f.repair.cc:3002 +#: f.repair.cc:3006 msgid "transparency center" msgstr "centro de transparência" -#: f.repair.cc:3003 +#: f.repair.cc:3007 msgid "transparency edge" msgstr "borda de transparência" -#: f.repair.cc:3010 f.repair.cc:3564 +#: f.repair.cc:3014 f.repair.cc:3569 msgid "gradual paint" msgstr "pintura gradual" -#: f.repair.cc:3017 +#: f.repair.cc:3021 #, c-format msgid "Undo Memory %d%c" msgstr "Desfazer memória %d%c" -#: f.repair.cc:3352 +#: f.repair.cc:3357 msgid "" "Undo memory limit has been reached. \n" "Save work with [done], then resume painting." @@ -2715,7 +2818,7 @@ "Limite de memória para Desfazer chegou ao limite. \n" "Salve o trabalho com [feito], depois retorne à pintura." -#: f.repair.cc:3517 +#: f.repair.cc:3522 msgid "" "left drag: add transparency \n" "right drag: add opacity" @@ -2723,172 +2826,172 @@ "arrasto com botão esquerdo: adiciona transparência \n" "arrasto com botão direito: adiciona opacidade" -#: f.repair.cc:3549 f.widgets.cc:454 +#: f.repair.cc:3554 f.widgets.cc:455 msgid "Paint Transparency" msgstr "Aplicar Transparência" -#: f.repair.cc:3558 +#: f.repair.cc:3563 msgid "strength center" msgstr "fortalecer centro" -#: f.repair.cc:3559 +#: f.repair.cc:3564 msgid "strength edge" msgstr "fortalecer borda" -#: f.repair.cc:3769 f.widgets.cc:455 +#: f.repair.cc:3778 f.widgets.cc:456 msgid "Color Mode" msgstr "Modos de Cores" -#: f.repair.cc:3772 +#: f.repair.cc:3781 msgid "black/white positive" msgstr "preto/branco positivo" -#: f.repair.cc:3773 +#: f.repair.cc:3782 msgid "black/white negative" msgstr "preto/branco negativo" -#: f.repair.cc:3774 +#: f.repair.cc:3783 msgid "color positive" msgstr "cor positiva" -#: f.repair.cc:3775 +#: f.repair.cc:3784 msgid "color negative" msgstr "cor negativa" -#: f.repair.cc:3776 +#: f.repair.cc:3785 msgid "sepia" msgstr "sepia" -#: f.repair.cc:3945 f.widgets.cc:456 +#: f.repair.cc:3954 f.widgets.cc:457 msgid "Shift Colors" msgstr "Deslocar Cores" -#: f.repair.cc:4217 +#: f.repair.cc:4226 msgid "+Brightness" msgstr "+Brilho" -#: f.repair.cc:4218 +#: f.repair.cc:4227 msgid "+Red -Cyan" msgstr "+Vermelho -Ciano" -#: f.repair.cc:4219 +#: f.repair.cc:4228 msgid "+Green -Magenta" msgstr "+Verde -Magenta" -#: f.repair.cc:4220 +#: f.repair.cc:4229 msgid "+Blue -Yellow" msgstr "+Azul -Amarelo" -#: f.repair.cc:4226 fotoxx.h:1142 +#: f.repair.cc:4235 fotoxx.h:1150 msgid "Red" msgstr "Vermelho" -#: f.repair.cc:4227 fotoxx.h:1108 +#: f.repair.cc:4236 fotoxx.h:1116 msgid "Green" msgstr "Verde" -#: f.repair.cc:4228 fotoxx.h:1077 +#: f.repair.cc:4237 fotoxx.h:1085 msgid "Blue" msgstr "Azul" -#: f.repair.cc:4527 +#: f.repair.cc:4536 msgid "Color Hue" msgstr "Matiz de Cor" -#: f.repair.cc:4528 +#: f.repair.cc:4537 msgid "Saturation" msgstr "Saturação" -#: f.repair.cc:4529 +#: f.repair.cc:4538 msgid "Lightness" msgstr "Luminosidade" -#: f.repair.cc:4530 +#: f.repair.cc:4539 msgid "Adjustment" msgstr "Ajuste" -#: f.repair.cc:4869 +#: f.repair.cc:4878 msgid "Ramp brightness across image" msgstr "Curva de Brilho sobre a imagem" -#: f.repair.cc:5278 f.tools.cc:2014 +#: f.repair.cc:5286 f.tools.cc:2038 msgid "Click image to select pixels." msgstr "Clique na imagem para selecionar pixels." -#: f.repair.cc:5312 f.widgets.cc:460 +#: f.repair.cc:5317 f.widgets.cc:461 msgid "Color Ramp" msgstr "Paleta de Cores" -#: f.repair.cc:5323 +#: f.repair.cc:5328 msgid "Metric:" msgstr "Métrica:" -#: f.repair.cc:5754 +#: f.repair.cc:5751 msgid "Color Match Images" msgstr "Imagens para mesclagem de cor" -#: f.repair.cc:5781 +#: f.repair.cc:5777 msgid "mouse radius for color sample" msgstr "raio do mouse para a amostra de cor" -#: f.repair.cc:5784 +#: f.repair.cc:5780 msgid "image for source color" msgstr "imagem para fonte de cor" -#: f.repair.cc:5786 +#: f.repair.cc:5782 msgid "click on image to get source color" msgstr "clique na imagem para obter a cor fonte" -#: f.repair.cc:5789 +#: f.repair.cc:5785 msgid "image to set matching color" msgstr "imagem para mesclagem de cor" -#: f.repair.cc:5791 +#: f.repair.cc:5787 msgid "click on image to set matching color" msgstr "clique na imagem para aplicar mesclagem de cor" -#: f.repair.cc:5851 +#: f.repair.cc:5848 msgid "select source image color first" msgstr "selecione imagem para fonte de cor primeiro" -#: f.repair.cc:6036 +#: f.repair.cc:6033 msgid "Change Color Profile" msgstr "Mudar Perfil de Cores" -#: f.repair.cc:6040 +#: f.repair.cc:6037 msgid "input profile" msgstr "perfil de entrada" -#: f.repair.cc:6044 +#: f.repair.cc:6041 msgid "output profile" msgstr "perfil de saída" -#: f.repair.cc:6060 +#: f.repair.cc:6057 msgid "color profile" msgstr "perfil de cor" -#: f.repair.cc:6106 f.repair.cc:6112 +#: f.repair.cc:6103 f.repair.cc:6109 #, c-format msgid "unknown cms profile %s" msgstr "perfil cms desconhecido %s" -#: f.repair.cc:6244 f.widgets.cc:463 +#: f.repair.cc:6241 f.widgets.cc:464 msgid "Remove Dust" msgstr "Remover Sujeira" -#: f.repair.cc:6248 +#: f.repair.cc:6245 msgid "spot size limit" msgstr "limite de tamanho de mancha" -#: f.repair.cc:6251 +#: f.repair.cc:6248 msgid "max. brightness" msgstr "brilho máximo" -#: f.repair.cc:6254 +#: f.repair.cc:6251 msgid "min. contrast" msgstr "contraste mínimo" -#: f.repair.cc:7035 +#: f.repair.cc:7032 msgid "" " Adjust each RGB color to minimize \n" " color fringes at the image extremes. " @@ -2896,35 +2999,35 @@ " Ajustar cada cor RGB para minimizar \n" " franjas púrpuras nas extremidades da imagem. " -#: f.repair.cc:7058 f.widgets.cc:465 +#: f.repair.cc:7055 f.widgets.cc:466 msgid "Color Fringes" msgstr "Franjas Púrpuras" -#: f.repair.cc:7257 f.widgets.cc:466 +#: f.repair.cc:7254 f.widgets.cc:467 msgid "Stuck Pixels" msgstr "Pixels Presos" -#: f.repair.cc:7263 +#: f.repair.cc:7260 msgid "pixel group" msgstr "grupo de pixels" -#: f.repair.cc:7271 f.repair.cc:7339 +#: f.repair.cc:7268 f.repair.cc:7336 msgid "stuck pixels:" msgstr "pixels presos:" -#: f.repair.cc:7367 +#: f.repair.cc:7364 msgid "Load Stuck Pixels" msgstr "Carregar Pixels Presos" -#: f.repair.cc:7369 +#: f.repair.cc:7366 msgid "File:" msgstr "Arquivo:" -#: f.repair.cc:7394 f.repair.cc:7451 +#: f.repair.cc:7391 f.repair.cc:7448 msgid "Stuck Pixels file" msgstr "Arquvio de Pixels Presos" -#: f.repair.cc:7431 +#: f.repair.cc:7428 msgid "file format error" msgstr "erro de formato de arquivo" @@ -2954,7 +3057,7 @@ "A indexação é necessário para funções de busca e mapeamento \n" "e para tornar as páginas da galeria aceitavelmente ágeis." -#: f.tools.cc:106 f.widgets.cc:506 +#: f.tools.cc:106 f.widgets.cc:507 msgid "Index Image Files" msgstr "Arquivos de Índice de imagens" @@ -3013,184 +3116,184 @@ " %s \n" "Por favor, remova." -#: f.tools.cc:394 +#: f.tools.cc:392 msgid "no thumbnails directory defined" msgstr "nenhum diretório de miniaturas definido" -#: f.tools.cc:739 +#: f.tools.cc:734 msgid "COMPLETED" msgstr "COMPLETO" -#: f.tools.cc:778 +#: f.tools.cc:775 msgid "Indexing is required for first-time startup." msgstr "A indexação é necessário na primeira inicialização." -#: f.tools.cc:840 +#: f.tools.cc:837 msgid "Recent Files Gallery" msgstr "Arquivos Recentes da Galeria" -#: f.tools.cc:841 +#: f.tools.cc:838 msgid "Newest Files Gallery" msgstr "Galeria de Arquivos Recentes" -#: f.tools.cc:842 +#: f.tools.cc:839 msgid "Previous Gallery" msgstr "Galeria Anterior" -#: f.tools.cc:843 +#: f.tools.cc:840 msgid "Previous Image" msgstr "Imagem Anterior" -#: f.tools.cc:844 +#: f.tools.cc:841 msgid "Blank Window" msgstr "Janela em Branco" -#: f.tools.cc:845 +#: f.tools.cc:842 msgid "Directory" msgstr "Diretório" -#: f.tools.cc:846 +#: f.tools.cc:843 msgid "Image File" msgstr "Arquivo de Imagem" -#: f.tools.cc:887 f.widgets.cc:507 +#: f.tools.cc:885 f.widgets.cc:508 msgid "User Options" msgstr "Opções de Usuário" -#: f.tools.cc:890 +#: f.tools.cc:888 msgid "Startup Display" msgstr "Exibição Inicial" -#: f.tools.cc:901 +#: f.tools.cc:899 msgid "Menu Style" msgstr "Estilo de Menu" -#: f.tools.cc:902 +#: f.tools.cc:900 msgid "Icons" msgstr "Ícones" -#: f.tools.cc:903 +#: f.tools.cc:901 msgid "Icons + Text" msgstr "Ícones + Texto" -#: f.tools.cc:905 +#: f.tools.cc:903 msgid "Icon size" msgstr "Tamanho de ícone" -#: f.tools.cc:909 +#: f.tools.cc:907 +msgid "Dialog font and size" +msgstr "Tamanho de fonte da caixa de Diálogo" + +#: f.tools.cc:912 msgid "Image Pan/scroll:" msgstr "Deslocamento de Imagem Horizontal:" -#: f.tools.cc:912 +#: f.tools.cc:915 msgid "Zooms for 2x" msgstr "Zoom para 2x" -#: f.tools.cc:921 +#: f.tools.cc:924 msgid "JPEG save quality" msgstr "Qualidade para JPEG" -#: f.tools.cc:924 f.tools.cc:3041 -msgid "Thumbnail size" -msgstr "Tamanho de miniatura" - -#: f.tools.cc:928 +#: f.tools.cc:931 msgid "show hidden directories in gallery view" msgstr "mostrar diretórios ocultos na visão de galeria" -#: f.tools.cc:931 +#: f.tools.cc:934 msgid "prev/next shows last file version only" msgstr "prox./ant. mostra apenas a última versão do arquivo" -#: f.tools.cc:934 +#: f.tools.cc:937 msgid "RAW command" msgstr "comando RAW" -#: f.tools.cc:938 +#: f.tools.cc:941 msgid "RAW file types" msgstr "Tipos de arquivos RAW" -#: f.tools.cc:1015 +#: f.tools.cc:1021 msgid "Delete present thumbnails to make effective" msgstr "Excluir miniaturas presentes para efetivar" -#: f.tools.cc:1037 +#: f.tools.cc:1043 msgid "Select startup directory" msgstr "Selecionar diretório de inicialização" -#: f.tools.cc:1044 +#: f.tools.cc:1050 msgid "Select startup image file" msgstr "Selecionar arquivo de imagem inicial" -#: f.tools.cc:1066 +#: f.tools.cc:1088 msgid "startup directory is invalid" msgstr "diretório de iniciação é inválido" -#: f.tools.cc:1077 +#: f.tools.cc:1099 msgid "startup file is invalid" msgstr "arquivo de iniação é inválido" -#: f.tools.cc:1211 +#: f.tools.cc:1237 msgid "Edit KB Shortcuts" msgstr "Editar Atalhos" -#: f.tools.cc:1216 +#: f.tools.cc:1242 msgid "shortcut key:" msgstr "tecla de atalho:" -#: f.tools.cc:1217 +#: f.tools.cc:1243 msgid "(enter key)" msgstr "(tecla enter)" -#: f.tools.cc:1343 +#: f.tools.cc:1369 #, c-format msgid "\"%s\" Reserved, cannot be used" msgstr "\"%s\" Reservado, não pode ser usado" -#: f.tools.cc:1497 +#: f.tools.cc:1523 msgid "unable to save KB-shortcuts file" msgstr "incapaz de salvar arquivo de atalhos do teclado" -#: f.tools.cc:1801 f.widgets.cc:510 +#: f.tools.cc:1827 f.widgets.cc:511 msgid "Grid Lines" msgstr "Linhas de grade" -#: f.tools.cc:1810 +#: f.tools.cc:1836 msgid "x-spacing" msgstr "espaçamento-x" -#: f.tools.cc:1811 +#: f.tools.cc:1837 msgid "x-count" msgstr "contagem-x" -#: f.tools.cc:1812 +#: f.tools.cc:1838 msgid "x-enable" msgstr "x-habilitado" -#: f.tools.cc:1818 +#: f.tools.cc:1844 msgid "y-spacing" msgstr "espaçamento-y" -#: f.tools.cc:1819 +#: f.tools.cc:1845 msgid "y-count" msgstr "contagem-y" -#: f.tools.cc:1820 +#: f.tools.cc:1846 msgid "y-enable" msgstr "y-habilitado" -#: f.tools.cc:1940 f.tools.cc:1945 f.widgets.cc:511 +#: f.tools.cc:1966 f.tools.cc:1971 f.widgets.cc:512 msgid "Line Color" msgstr "Cor da linha" -#: f.tools.cc:1942 +#: f.tools.cc:1968 msgid "Area Color" msgstr "Cor da área" -#: f.tools.cc:2050 f.widgets.cc:512 +#: f.tools.cc:2073 f.widgets.cc:513 msgid "Show RGB" msgstr "Mostrar RGB" -#: f.tools.cc:2345 +#: f.tools.cc:2365 msgid "" "Drag mouse on image. \n" "Left click to cancel. \n" @@ -3200,27 +3303,27 @@ "Clique com botão esquerdo para cancelar. \n" "Tecla M alterna a caixa de diálogo." -#: f.tools.cc:2371 f.widgets.cc:513 +#: f.tools.cc:2391 f.widgets.cc:514 msgid "Magnify Image" msgstr "Ampliar Imagens" -#: f.tools.cc:2380 +#: f.tools.cc:2400 msgid "X-size" msgstr "Tamanho-X" -#: f.tools.cc:2625 +#: f.tools.cc:2645 msgid "Darkest and Brightest Pixels" msgstr "Pixels mais Escuros e Brilhantes" -#: f.tools.cc:2648 +#: f.tools.cc:2668 msgid "Dark Limit" msgstr "Limite Escuro" -#: f.tools.cc:2649 +#: f.tools.cc:2669 msgid "Bright Limit" msgstr "Limite Claro" -#: f.tools.cc:2744 +#: f.tools.cc:2764 msgid "" "Brightness should show a gradual ramp \n" "extending all the way to the edges." @@ -3228,113 +3331,153 @@ "Brilho deveria mostrar uma inclinação gradual \n" "estendendo-se até as bordas." -#: f.tools.cc:2840 f.widgets.cc:516 +#: f.tools.cc:2860 f.widgets.cc:517 msgid "Monitor Gamma" msgstr "Monitor Gamma" -#: f.tools.cc:2900 +#: f.tools.cc:2920 msgid "Available Translations" msgstr "Traduções disponíveis" -#: f.tools.cc:2904 +#: f.tools.cc:2924 msgid "Set Language" msgstr "Configurar língua" -#: f.tools.cc:3039 f.widgets.cc:519 -msgid "Find Duplicate Images" -msgstr "Encontrar imagens Duplicadas" +#: f.tools.cc:3064 f.widgets.cc:520 +msgid "Calibrate Printer" +msgstr "Calibrar Impressora" + +#: f.tools.cc:3087 +msgid "print color chart" +msgstr "imprimir gráfico de cores" + +#: f.tools.cc:3088 +msgid "scan and save color chart" +msgstr "digitalizar e salvar gráfico de cores" + +#: f.tools.cc:3089 +msgid "align and trim color chart" +msgstr "alinhar e aparar gráfico de cores" + +#: f.tools.cc:3090 +msgid "open and process color chart" +msgstr "abrir e processar gráfico de cores" + +#: f.tools.cc:3091 +msgid "print image with revised colors" +msgstr "imprimir imagem com cores revisadas" -#: f.tools.cc:3044 -msgid "pixel difference" -msgstr "diferença de pixel" +#: f.tools.cc:3258 +#, c-format +msgid "" +"Scan the printed color chart. \n" +"Save in %s/" +msgstr "" +"Digitalizar o gráfico de cores impresso. \n" +"Salvar em %s/" -#: f.tools.cc:3047 -msgid "pixel count" -msgstr "contagem de pixel" +#: f.tools.cc:3272 +msgid "" +"Open and edit the scanned color chart file. \n" +"Remove any skew or rotation caused by the scanner. \n" +"Trim off all margins. Be careful not to cut off \n" +"any color tile edges or leave any white margins." +msgstr "" +"Abrir e editar o arquivo do gráfico de cores digitalizado. \n" +"Remover qualquer inclinação ou rotação causado pelo digitalizador. \n" +"Aparar todas as margens. Tenha cuidado para não retirar \n" +"nenhuma cor da borda das figuras ou deixar qualquer margens brancas." -#: f.tools.cc:3050 -msgid "Images:" -msgstr "Imagens:" +#: f.tools.cc:3308 +msgid "Open the trimmed color chart file" +msgstr "Abrir arquivo de gráfico de cores aparado" -#: f.tools.cc:3051 -msgid "searching ..." -msgstr "procurando ..." +#: f.tools.cc:3405 +msgid "" +"Set the file name and location \n" +"for the output color map file." +msgstr "" +"Configurar o nome e localização do arquivo \n" +"de saída para o mapa de cores." -#: f.tools.cc:3053 -msgid "Duplicates:" -msgstr "Duplicidades:" +#: f.tools.cc:3440 +msgid "Color map file to use" +msgstr "Arquivo de mapa de cores a usar" -#: f.tools.cc:3071 -#, c-format -msgid "only %d image thumbnails found" -msgstr "apenas %d miniaturas de imagem encontrados" +#: f.tools.cc:3461 +msgid "Select the image file to print." +msgstr "Selecione o arquivo de imagem para imprimir." -#: f.widgets.cc:112 -msgid "TOP" -msgstr "TOPO" +#: f.tools.cc:3588 +msgid "Image colors are converted for printing." +msgstr "Cores da imagem foram convertidas para impressão." -#: f.widgets.cc:115 +#: f.widgets.cc:111 msgid "Album" -msgstr "" +msgstr "Álbum" + +#: f.widgets.cc:113 +msgid "TOP" +msgstr "TOPO" -#: f.widgets.cc:169 +#: f.widgets.cc:165 msgid "Current Image File (key F)" msgstr "Arquivo de Imagem atual (tecla F)" -#: f.widgets.cc:170 +#: f.widgets.cc:166 msgid "Thumbnail Gallery (key G)" msgstr "Miniatura de Galeria (tecla G)" -#: f.widgets.cc:171 +#: f.widgets.cc:167 msgid "World Maps (key W)" msgstr "Mapa Mundial (tecla W)" -#: f.widgets.cc:174 +#: f.widgets.cc:170 msgid "Favorite Functions" msgstr "Funções Favoritas" -#: f.widgets.cc:175 +#: f.widgets.cc:171 msgid "File: Open, RAW, Rename, Trash, Print" msgstr "Arquivo: Abrir, RAW, Renomear, Descartar, Imprimir" -#: f.widgets.cc:176 +#: f.widgets.cc:172 msgid "Save modified image file to disk" msgstr "Salvar arquivo-imagem modificado no disco " -#: f.widgets.cc:177 +#: f.widgets.cc:173 msgid "Open previous or next file (left/right mouse click)" msgstr "Abrir arquivo prévio ou próximo (clique direito/esquerdo do mouse)" -#: f.widgets.cc:178 +#: f.widgets.cc:174 msgid "Metadata: Captions, Tags, Ratings, Geotags, Search ... " msgstr "Metadados: Legendas, Etiquetas, Avaliações, Georreferências, Busca..." -#: f.widgets.cc:179 +#: f.widgets.cc:175 msgid "Areas: Select areas to edit, copy and paste" msgstr "Áreas: Selecionar área para editar, copiar e colar" -#: f.widgets.cc:180 +#: f.widgets.cc:176 msgid "Edit: Trim, Rotate, Resize, Brightness, Contrast, Text ..." msgstr "" "Editar: Recortar, Rotacionar, Redimensionar, Brilho, Contraste, Texto..." -#: f.widgets.cc:181 +#: f.widgets.cc:177 msgid "Repair: Sharpen, Noise, Red-eyes, Color, Paint, Clone ..." msgstr "Reparo: Aguçar, Ruído, Olhos Vermelhos, Colorir, Pintar, Clonar..." -#: f.widgets.cc:182 +#: f.widgets.cc:178 msgid "Bend: Fix Perspective, Bend/Warp image ..." msgstr "Curvar: Corrigir perspectiva, Curvar/Distorcer imagem..." -#: f.widgets.cc:183 +#: f.widgets.cc:179 msgid "Effects: Special Effects, Arty Transforms" msgstr "Efeitos: Efeitos especiais, Transformações Artísticas" -#: f.widgets.cc:184 +#: f.widgets.cc:180 msgid "Combine: HDR, HDF, Panorama, Stack, Mashup" msgstr "Combinação: HDR, HDF, Panorama, Empilhamento, Mistura" -#: f.widgets.cc:185 +#: f.widgets.cc:181 msgid "" "Undo or Redo one edit (left/right mouse click) \n" " hold key A to include all edits" @@ -3342,1123 +3485,1095 @@ "Desfazer ou Refazer uma edição (clique direito/esquerdo do mouse) \n" " segure a tecla A para incluir todas as edições" -#: f.widgets.cc:187 +#: f.widgets.cc:183 msgid "Tools: Index, Options, Shortcuts, Magnify ..." msgstr "Ferramentas: Índice, Opções, Atalhos, Ampliar ..." -#: f.widgets.cc:188 +#: f.widgets.cc:184 msgid "Help: Quick Start, User Guide, Recent Changes ..." msgstr "Ajuda: Guia Rápido, Guia de Usuário, Mudanças Recentes..." -#: f.widgets.cc:191 +#: f.widgets.cc:187 msgid "Set gallery from current image file" msgstr "Definir galeria a partir de imagem atual" -#: f.widgets.cc:192 +#: f.widgets.cc:188 msgid "Albums: Manage Albums, Slide Show, Desktop Background" msgstr "Álbuns: Gerenciar álbuns, Apresentação de Slides, Papel de Parede" -#: f.widgets.cc:193 +#: f.widgets.cc:189 msgid "go to bookmarked image" msgstr "Ir para a imagem marcada como favorita" -#: f.widgets.cc:194 +#: f.widgets.cc:190 msgid "increase thumbnail size" msgstr "aumentar tamanho de miniaturas" -#: f.widgets.cc:195 +#: f.widgets.cc:191 msgid "reduce thumbnail size" msgstr "reduzir tamanho de miniaturas" -#: f.widgets.cc:196 +#: f.widgets.cc:192 msgid "change sort order" msgstr "alterar a ordem de classificação" -#: f.widgets.cc:197 +#: f.widgets.cc:193 msgid "jump to beginning (top)" msgstr "saltar para o início (topo)" -#: f.widgets.cc:198 +#: f.widgets.cc:194 msgid "jump to end (bottom)" msgstr "saltar para final (rodapé)" -#: f.widgets.cc:199 +#: f.widgets.cc:195 msgid "previous page" msgstr "página anterior" -#: f.widgets.cc:200 +#: f.widgets.cc:196 msgid "next page" msgstr "próxima página" -#: f.widgets.cc:201 +#: f.widgets.cc:197 msgid "slow scroll" msgstr "rolar lentamente" -#: f.widgets.cc:202 +#: f.widgets.cc:198 msgid "Batch conversion, metadata, RAW processing" -msgstr "" +msgstr "Conversões em Lote, metadados, processamento RAW" -#: f.widgets.cc:205 +#: f.widgets.cc:201 msgid "Choose a map for image locations" msgstr "Escolher um mapa para localidades de imagem" -#: f.widgets.cc:206 +#: f.widgets.cc:202 msgid "Set image search radius for map click" msgstr "Definir raio de busca de imagem por clique no mapa" -#: f.widgets.cc:209 +#: f.widgets.cc:205 msgid "Open another window" msgstr "Abrir outra Janela" -#: f.widgets.cc:210 +#: f.widgets.cc:206 msgid "Open a new image file" msgstr "Abrir novo arquvio de imagem" -#: f.widgets.cc:211 +#: f.widgets.cc:207 msgid "Open the previously seen file" msgstr "Abrir o arquivo visto anteriormente" -#: f.widgets.cc:212 +#: f.widgets.cc:208 msgid "Open a recently seen file" msgstr "Abrir um arquivo visto recentemente" -#: f.widgets.cc:213 +#: f.widgets.cc:209 msgid "Open a newly added file" msgstr "Abrir arquivo adicionado recentemente" -#: f.widgets.cc:214 f.widgets.cc:215 +#: f.widgets.cc:210 f.widgets.cc:211 msgid "Open and edit a camera RAW file" msgstr "Abrir e editar um arquivo RAW da câmera" -#: f.widgets.cc:216 +#: f.widgets.cc:212 msgid "Change the image file name" msgstr "Mudar nome do arquivo" -#: f.widgets.cc:217 +#: f.widgets.cc:213 msgid "Create a blank image" msgstr "Criar uma imagem em branco" -#: f.widgets.cc:218 +#: f.widgets.cc:214 msgid "Move image file to Trash" msgstr "Mover arquivo para Lixeira" -#: f.widgets.cc:219 +#: f.widgets.cc:215 msgid "Permanently delete image file" msgstr "Excluir permanentemente arquivo de imagem" -#: f.widgets.cc:220 +#: f.widgets.cc:216 msgid "Print the current image" msgstr "Imprimir imagem atual" -#: f.widgets.cc:221 f.widgets.cc:402 +#: f.widgets.cc:217 f.widgets.cc:401 msgid "Quit Fotoxx" msgstr "Fechar Fotoxx" -#: f.widgets.cc:224 +#: f.widgets.cc:220 msgid "List a few key metadata items" msgstr "Listar poucos ítens de metadados chave" -#: f.widgets.cc:225 +#: f.widgets.cc:221 msgid "List all metadata items" msgstr "Listar todos ítens de metadados" -#: f.widgets.cc:226 +#: f.widgets.cc:222 msgid "(Toggle) show captions and comments" msgstr "(Comutativo) mostrar legendas e comentários" -#: f.widgets.cc:227 +#: f.widgets.cc:223 msgid "Edit image tags/caption/rating ..." msgstr "Editar etiquetas de imagem/legendas/avaliações ..." -#: f.widgets.cc:228 +#: f.widgets.cc:224 msgid "Edit any image metadata" msgstr "Edita qualquer metadados de uma imagem" -#: f.widgets.cc:229 +#: f.widgets.cc:225 msgid "Remove all metadata from an image" msgstr "Remover todos metadados de uma imagem" -#: f.widgets.cc:230 +#: f.widgets.cc:226 msgid "Add/remove tags for multiple images" msgstr "Adicionar/remover etiquetas para múltiplas imagens" -#: f.widgets.cc:231 +#: f.widgets.cc:227 msgid "Convert tag names for all images" msgstr "Converter nome de etiqueta para todas as imagens" -#: f.widgets.cc:232 +#: f.widgets.cc:228 msgid "Add/change/delete metadata for multiple images" msgstr "Adicionar/Mudar/Excluir metadados em várias imagens" -#: f.widgets.cc:233 +#: f.widgets.cc:229 msgid "Edit image location and geotags" msgstr "Editar localidade de imagem e georreferências" -#: f.widgets.cc:234 +#: f.widgets.cc:230 msgid "Add/revise geotags for multiple images" msgstr "Adicionar/Revisar georeferências para várias imagens" -#: f.widgets.cc:235 +#: f.widgets.cc:231 msgid "Find all images for a location [date]" msgstr "Encontrar todas imagens por uma localidade [data]" -#: f.widgets.cc:236 +#: f.widgets.cc:232 msgid "Find images meeting select criteria" msgstr "Encontrar imagens satisfazendo critério selecionado" -#: f.widgets.cc:239 +#: f.widgets.cc:235 msgid "Select object or area for editing" msgstr "Selecionar objeto ou área para edição" -#: f.widgets.cc:240 +#: f.widgets.cc:236 msgid "Show (outline) existing area" msgstr "Mostrar (traçado) de área existente" -#: f.widgets.cc:241 +#: f.widgets.cc:237 msgid "Hide existing area" msgstr "Esconder área existente" -#: f.widgets.cc:242 +#: f.widgets.cc:238 msgid "Enable area for editing" msgstr "Habilitar área para edição" -#: f.widgets.cc:243 +#: f.widgets.cc:239 msgid "Disable area for editing" msgstr "Desabilitar área para edição" -#: f.widgets.cc:244 +#: f.widgets.cc:240 msgid "Reverse existing area" msgstr "Inverter área existente" -#: f.widgets.cc:245 +#: f.widgets.cc:241 msgid "Erase existing area" msgstr "Apagar área existente" -#: f.widgets.cc:246 +#: f.widgets.cc:242 +msgid "Copy area for later pasting into image" +msgstr "Copiar área para posterior colagem em imagem" + +#: f.widgets.cc:243 +msgid "Paste previously copied area into image" +msgstr "Colar área previamente copiada em imagem" + +#: f.widgets.cc:244 msgid "Open a file and paste as area into image" msgstr "Abrir um arquivo e colar como área na imagem" -#: f.widgets.cc:247 +#: f.widgets.cc:245 msgid "Save area to a file with transparency" msgstr "Salvar área em arquivo com transparência" -#: f.widgets.cc:250 +#: f.widgets.cc:248 msgid "Trim/Crop margins and/or Rotate" msgstr "Recortar/Aparar margens e/ou Rodar" -#: f.widgets.cc:251 +#: f.widgets.cc:249 msgid "Upright a rotated image" msgstr "Orientar imagem rotacionada" -#: f.widgets.cc:252 f.widgets.cc:253 +#: f.widgets.cc:250 f.widgets.cc:251 msgid "Fast auto enhance that may work OK" msgstr "Realce automático rápido que deve funcionar bem" -#: f.widgets.cc:254 +#: f.widgets.cc:252 msgid "Adjust brightness, contrast, color" msgstr "Ajusta brilho, contraste, cor" -#: f.widgets.cc:255 +#: f.widgets.cc:253 msgid "Add local contrast, enhance details" msgstr "Adicionar contraste local, realçar detalhes" -#: f.widgets.cc:256 +#: f.widgets.cc:254 msgid "Adjust brightness distribution" msgstr "Ajustar distribuição de brilho" -#: f.widgets.cc:257 +#: f.widgets.cc:255 msgid "Flatten zonal brightness distribution" msgstr "Achatar distribuição de brilho zonal" -#: f.widgets.cc:258 +#: f.widgets.cc:256 msgid "Change pixel dimensions" msgstr "Mudar dimensões de pixel" -#: f.widgets.cc:259 +#: f.widgets.cc:257 msgid "Mirror image horizontally or vertically" msgstr "Espelhar imagem horizontalmente ou verticalmente" -#: f.widgets.cc:260 +#: f.widgets.cc:258 msgid "Write text on image" msgstr "Escrever texto em imagem" -#: f.widgets.cc:261 +#: f.widgets.cc:259 msgid "Write lines or arrows on image" msgstr "Gravar linhas ou setas na imagem" -#: f.widgets.cc:262 +#: f.widgets.cc:260 msgid "Fix brightness uniformity across image" msgstr "Corrigir uniformidade de brilho por toda imagem" -#: f.widgets.cc:263 +#: f.widgets.cc:261 msgid "Paint edit function gradually with mouse" msgstr "Função de pintura gradual com o mouse" -#: f.widgets.cc:264 +#: f.widgets.cc:262 msgid "Leverage edits by brightness or color" msgstr "Influenciar edições por brilho ou cor" -#: f.widgets.cc:265 +#: f.widgets.cc:263 msgid "Edit plugins menu or run a plugin function" msgstr "Editar menu de plugins ou executar uma função de plugin" -#: f.widgets.cc:268 +#: f.widgets.cc:266 msgid "Make the image look sharper" msgstr "Tornar a imagem mais nítida" -#: f.widgets.cc:269 +#: f.widgets.cc:267 msgid "Make the image look fuzzy" msgstr "Deixam a imagem difusa" -#: f.widgets.cc:270 +#: f.widgets.cc:268 msgid "Filter noise from low-light photos" msgstr "Filtrar ruído de fotos com pouca luz" -#: f.widgets.cc:271 +#: f.widgets.cc:269 msgid "Remove unwanted objects" msgstr "Remover objetos indesejados" -#: f.widgets.cc:272 +#: f.widgets.cc:270 msgid "Fix red-eyes from electronic flash" msgstr "Corrigir olhos vermelhos por flash eletrônico" -#: f.widgets.cc:273 +#: f.widgets.cc:271 msgid "Paint image pixels using the mouse" msgstr "Pintar pixels de imagem utilizando o mouse" -#: f.widgets.cc:274 +#: f.widgets.cc:272 msgid "Paint image transparency using the mouse" msgstr "Aplicar transparência de imagem usando o mouse" -#: f.widgets.cc:275 +#: f.widgets.cc:273 msgid "Make BW/color, negative/positive, sepia" msgstr "Fazer PB/colorido, negativo/positivo, sepia" -#: f.widgets.cc:276 +#: f.widgets.cc:274 msgid "Shift/convert colors into other colors" msgstr "Deslocar/converter cores em outras" -#: f.widgets.cc:277 +#: f.widgets.cc:275 msgid "Adjust color using RGB or CMY colors" msgstr "Ajustar cor usando cores RGB ou CMY" -#: f.widgets.cc:278 +#: f.widgets.cc:276 msgid "Adjust color using HSL colors" msgstr "Ajustar cor usando cores HSL" -#: f.widgets.cc:279 +#: f.widgets.cc:277 msgid "Adjust color in selected image areas" msgstr "Ajustar cor em áreas selecionadas da imagem" -#: f.widgets.cc:280 +#: f.widgets.cc:278 msgid "Match colors on one image with another" msgstr "Equiparar cores de uma imagem com outra" -#: f.widgets.cc:281 +#: f.widgets.cc:279 msgid "Convert to another color profile" msgstr "Converter para outro perfil de cores" -#: f.widgets.cc:282 +#: f.widgets.cc:280 msgid "Remove dust spots from scanned slides" msgstr "Remover pontos de sujeira de digitalizações" -#: f.widgets.cc:283 +#: f.widgets.cc:281 msgid "Smoothen edges with jaggies" msgstr "Suavisar contornos irregulares" -#: f.widgets.cc:284 +#: f.widgets.cc:282 msgid "Reduce Chromatic Abberation" msgstr "Reduzir Aberrações Cromáticas" -#: f.widgets.cc:285 +#: f.widgets.cc:283 msgid "Erase known hot and dark pixels" msgstr "Apagar pixels quentes ou escuros conhecidos" -#: f.widgets.cc:288 +#: f.widgets.cc:286 msgid "Remove curvature, esp. panoramas" msgstr "Remover curvatura, esp. panoramas" -#: f.widgets.cc:289 +#: f.widgets.cc:287 msgid "Straighten objects seen from an angle" msgstr "Endireitar objetos vistos a um ângulo" -#: f.widgets.cc:290 +#: f.widgets.cc:288 msgid "Distort image areas using the mouse" msgstr "Distorcer as áreas da imagem usando o mouse" -#: f.widgets.cc:291 f.widgets.cc:292 f.widgets.cc:293 +#: f.widgets.cc:289 f.widgets.cc:290 f.widgets.cc:291 msgid "Distort the whole image using the mouse" msgstr "Distorcer toda a imagem utilizando o mouse" -#: f.widgets.cc:294 +#: f.widgets.cc:292 msgid "Flatten a photographed book page" msgstr "Achatar uma página fotografada de um book" -#: f.widgets.cc:297 +#: f.widgets.cc:295 msgid "Reduce color depth (posterize)" msgstr "Reduzir profundidade de cor (posterizar)" -#: f.widgets.cc:298 +#: f.widgets.cc:296 msgid "Convert to pencil sketch" msgstr "Converter para esboço a lápis" -#: f.widgets.cc:299 +#: f.widgets.cc:297 msgid "Convert to line drawing (edge detection)" msgstr "Converter para desenho de contorno (detecção de borda)" -#: f.widgets.cc:300 +#: f.widgets.cc:298 msgid "Convert to solid color drawing" msgstr "Converter em desenho de cor sólida" -#: f.widgets.cc:301 +#: f.widgets.cc:299 msgid "Graduated Blur depending on contrast" msgstr "Desfoque Graduado dependente do contraste" -#: f.widgets.cc:302 +#: f.widgets.cc:300 msgid "Create an embossed or 3D appearance" msgstr "Criar relevo ou aparência de 3D" -#: f.widgets.cc:303 +#: f.widgets.cc:301 msgid "Convert to square tiles" msgstr "Converter para ladrilhos quadrados" -#: f.widgets.cc:304 +#: f.widgets.cc:302 msgid "Convert to dots (Roy Lichtenstein effect)" msgstr "Converter para pontos (efeito Roy Lichtenstein)" -#: f.widgets.cc:305 +#: f.widgets.cc:303 msgid "Convert into a simulated painting" msgstr "Converter em uma pintura simulada" -#: f.widgets.cc:306 +#: f.widgets.cc:304 msgid "Change brightness or color radially" msgstr "Alterar o brilho ou cor radialmente" -#: f.widgets.cc:307 +#: f.widgets.cc:305 msgid "Add texture to an image" msgstr "Adicionar textura a uma imagem" -#: f.widgets.cc:308 +#: f.widgets.cc:306 msgid "Tile image with a repeating pattern" msgstr "Ladrilhar imagem com um padrão repetitivo" -#: f.widgets.cc:309 +#: f.widgets.cc:307 msgid "Create a mosaic with tiles made from all images" msgstr "Criar um mosaico com ladrilhos feitos de todas as imagens" -#: f.widgets.cc:310 +#: f.widgets.cc:308 msgid "Process an image using a custom kernel" msgstr "Processar uma imagem usando um núcleo customizado" -#: f.widgets.cc:311 +#: f.widgets.cc:309 msgid "Warp an image with a wave pattern" msgstr "Distorce uma imagem com um padrão de onda" -#: f.widgets.cc:312 +#: f.widgets.cc:310 msgid "Blur an image in the direction of mouse drags" msgstr "Desfocar uma imagem na direção dos arrastes com o mouse" -#: f.widgets.cc:315 +#: f.widgets.cc:313 msgid "Combine bright/dark images for better detail" msgstr "Combine imagens claras/escuras para melhores detalhes" -#: f.widgets.cc:316 +#: f.widgets.cc:314 msgid "Combine near/far focus images for deeper focus" msgstr "Combinar imagens de foco perto/longe para foco profundo" -#: f.widgets.cc:317 +#: f.widgets.cc:315 msgid "Combine images to erase passing people, etc." msgstr "Combinar imagens para apagar pessoas que passam, etc" -#: f.widgets.cc:318 +#: f.widgets.cc:316 msgid "Combine noisy images into a low-noise image" msgstr "Combinar imagens cheias de ruído em uma imagem com baixo ruído" -#: f.widgets.cc:319 +#: f.widgets.cc:317 msgid "Combine images into a panorama" msgstr "Combinar imagens em um panorama" -#: f.widgets.cc:320 +#: f.widgets.cc:318 msgid "Combine images into a vertical panorama" msgstr "Combinar imagens em um panorama vertical" -#: f.widgets.cc:321 +#: f.widgets.cc:319 msgid "Combine images into a panorama (panorama tools)" msgstr "Combinar imagens em um panorama (panorama tools)" -#: f.widgets.cc:322 +#: f.widgets.cc:320 msgid "Arrange images and text in a layout (montage)" msgstr "Arranjar imagens e texto em um leiaute (montagem)" -#: f.widgets.cc:325 +#: f.widgets.cc:323 msgid "Index new files and make thumbnails" msgstr "Indexar novos arquivos gerar miniaturas" -#: f.widgets.cc:326 +#: f.widgets.cc:324 msgid "Change user preferences" msgstr "Mudar preferências de usuário" -#: f.widgets.cc:327 +#: f.widgets.cc:325 msgid "Change Keyboard Shortcut Keys" msgstr "Mudar Atalhos de Teclado" -#: f.widgets.cc:328 +#: f.widgets.cc:326 msgid "Show a brightness distribution graph" msgstr "Mostrar gráfico de distribuição de brilho" -#: f.widgets.cc:329 +#: f.widgets.cc:327 msgid "Show or revise grid lines" msgstr "Mostrar ou corrigir linhas de grade" -#: f.widgets.cc:330 +#: f.widgets.cc:328 msgid "Change color of foreground lines" msgstr "Mudar cor de linhas de primeiro plano" -#: f.widgets.cc:331 +#: f.widgets.cc:329 msgid "Show RGB colors at mouse click" msgstr "Mostrar cores RGB ao clique do mouse" -#: f.widgets.cc:332 +#: f.widgets.cc:330 msgid "Magnify image around the mouse position" msgstr "Ampliar imagem em torno da posição do mouse" -#: f.widgets.cc:333 +#: f.widgets.cc:331 msgid "Highlight darkest and brightest pixels" msgstr "Destacar pixels mais escuros e mais brilhantes" -#: f.widgets.cc:334 +#: f.widgets.cc:332 msgid "Chart to adjust monitor color" msgstr "Gráfico para ajustar cores do monitor" -#: f.widgets.cc:335 +#: f.widgets.cc:333 msgid "Chart to adjust monitor gamma" msgstr "Gráfico para ajustar gama do monitor" -#: f.widgets.cc:336 +#: f.widgets.cc:334 msgid "Change the GUI language" msgstr "Mudar a língua da GUI" -#: f.widgets.cc:337 +#: f.widgets.cc:335 msgid "Report missing translations" msgstr "Relatar tradução em falta" -#: f.widgets.cc:338 -msgid "Search all image files and report duplicates" -msgstr "Procurar em todas os arquivos de imagem e relatar duplicidades" +#: f.widgets.cc:336 +msgid "Calibrate printer colors" +msgstr "Calibrar cores de impressora" -#: f.widgets.cc:339 +#: f.widgets.cc:337 msgid "Memory and CPU (to terminal/logfile)" msgstr "Memória e CPU (para terminal/arquivo log)" -#: f.widgets.cc:343 +#: f.widgets.cc:341 msgid "Rename/convert/resize/move multiple files" msgstr "Renomear/converter/redimensionar/mover vários arquivos" -#: f.widgets.cc:344 +#: f.widgets.cc:342 msgid "Upright multiple rotated image files" msgstr "Orientar múltiplos arquivos de imagem rotacionados" -#: f.widgets.cc:345 +#: f.widgets.cc:343 msgid "Delete or Trash multiple files" msgstr "Excluir ou Remover vários arquivos" -#: f.widgets.cc:346 +#: f.widgets.cc:344 msgid "Convert camera RAW files using DCraw" msgstr "Converter arquivos RAW da camera usando o DCRaw" -#: f.widgets.cc:347 +#: f.widgets.cc:345 msgid "Convert camera RAW files using Raw Therapee" msgstr "Converter arquivos RAW da camera usando o Raw Therapee" -#: f.widgets.cc:348 +#: f.widgets.cc:346 msgid "Burn selected image files to CD or DVD" msgstr "Gravar imagens selecionadas em CD ou DVD" -#: f.widgets.cc:352 +#: f.widgets.cc:347 +msgid "Search all image files and report duplicates" +msgstr "Procurar em todas os arquivos de imagem e relatar duplicidades" + +#: f.widgets.cc:351 msgid "Quick Start mini-guide" msgstr "Mini-guia resumido" -#: f.widgets.cc:353 +#: f.widgets.cc:352 msgid "Read the user guide" msgstr "Leia o Guia de Usuários" -#: f.widgets.cc:354 +#: f.widgets.cc:353 msgid "Recent user guide changes" msgstr "Mudanças recentes no Guia de Usuários" -#: f.widgets.cc:355 +#: f.widgets.cc:354 msgid "Summary of image edit functions" msgstr "Resumo das funções de edição de imagem" -#: f.widgets.cc:356 +#: f.widgets.cc:355 msgid "Technical installation notes" msgstr "Notas técnicas da instalação do Fotoxx" -#: f.widgets.cc:357 +#: f.widgets.cc:356 msgid "List updates by Fotoxx version" msgstr "Listar atualizações por versão do Fotoxx" -#: f.widgets.cc:358 +#: f.widgets.cc:357 msgid "View the log file and error messages" msgstr "Ver arquivo de log e mensagens de erro" -#: f.widgets.cc:359 +#: f.widgets.cc:358 msgid "How to do Fotoxx translations" msgstr "Como fazer traduções para o Fotoxx" -#: f.widgets.cc:360 +#: f.widgets.cc:359 msgid "Show the Fotoxx web page" msgstr "Mostrar a página do Fotoxx na web" -#: f.widgets.cc:361 +#: f.widgets.cc:360 msgid "Version, license, contact, credits" msgstr "Versão, licença, contato, créditos" -#: f.widgets.cc:364 +#: f.widgets.cc:363 msgid "Organize images into albums" msgstr "Organizar imagens em Álbuns" -#: f.widgets.cc:365 +#: f.widgets.cc:364 msgid "Start a slide show" msgstr "Iniciar Apresentação de Slides" -#: f.widgets.cc:366 +#: f.widgets.cc:365 msgid "Set desktop image from current Fotoxx image" msgstr "Definir imagem de Área de Trabalho através de imagem Fotoxx aberta" -#: f.widgets.cc:367 +#: f.widgets.cc:366 msgid "Cycle desktop images from a Fotoxx album" msgstr "Criar rodízio de imagens através de um álbum do Fotoxx" -#: f.widgets.cc:389 +#: f.widgets.cc:388 msgid "New Window" msgstr "Nova Janela" -#: f.widgets.cc:391 +#: f.widgets.cc:390 msgid "Open Previous File" msgstr "Abrir arquivo anterior" -#: f.widgets.cc:392 +#: f.widgets.cc:391 msgid "Recently Seen Images" msgstr "Imagens vistas recentemente" -#: f.widgets.cc:393 +#: f.widgets.cc:392 msgid "Newest Images" msgstr "Imagens mais Novas" -#: f.widgets.cc:394 +#: f.widgets.cc:393 msgid "Open RAW (ufraw)" msgstr "Abrir RAW (ufraw)" -#: f.widgets.cc:395 +#: f.widgets.cc:394 msgid "Open RAW (Raw Therapee)" msgstr "Abrir RAW (Raw Therapee)" -#: f.widgets.cc:397 +#: f.widgets.cc:396 msgid "New Blank Image" msgstr "Nova Imagem em Branco" -#: f.widgets.cc:399 +#: f.widgets.cc:398 msgid "Delete Image File" msgstr "Excluir arquivo de Imagem" -#: f.widgets.cc:400 +#: f.widgets.cc:399 msgid "Print Image" msgstr "Imprimir Imagem" -#: f.widgets.cc:401 f.widgets.cc:538 +#: f.widgets.cc:400 f.widgets.cc:543 msgid "Set Desktop Image" msgstr "Definir Imagem da Área de Trabalho" -#: f.widgets.cc:405 +#: f.widgets.cc:404 msgid "View Metadata (short)" msgstr "Visualizar Metadados (curto)" -#: f.widgets.cc:406 +#: f.widgets.cc:405 msgid "View Metadata (long)" msgstr "Visualizar Metadados (longo)" -#: f.widgets.cc:407 +#: f.widgets.cc:406 msgid "Show Captions on Image" msgstr "Mostrar Legendas na Imagem" -#: f.widgets.cc:409 +#: f.widgets.cc:408 msgid "Edit Any Metadata" msgstr "Editar qualquer Metadado" -#: f.widgets.cc:412 f.widgets.cc:531 +#: f.widgets.cc:411 f.widgets.cc:534 msgid "Batch Rename Tags" msgstr "Renomear Etiquetas em Lote" -#: f.widgets.cc:413 f.widgets.cc:532 +#: f.widgets.cc:412 f.widgets.cc:535 msgid "Batch Add/Change Metadata" msgstr "Adicionar/Modificar Metadados em Lote" -#: f.widgets.cc:416 f.widgets.cc:606 +#: f.widgets.cc:415 f.widgets.cc:537 f.widgets.cc:611 msgid "Images by Geotag" msgstr "Imagens por Georreferência" -#: f.widgets.cc:417 f.widgets.cc:607 +#: f.widgets.cc:416 f.widgets.cc:538 f.widgets.cc:612 msgid "Search Images" msgstr "Procurar Imagens" -#: f.widgets.cc:420 fotoxx.h:1156 +#: f.widgets.cc:419 fotoxx.h:1164 msgid "Select" msgstr "Selecionar" -#: f.widgets.cc:421 fotoxx.h:1158 +#: f.widgets.cc:420 fotoxx.h:1166 msgid "Show" msgstr "Mostrar" -#: f.widgets.cc:422 fotoxx.h:1112 +#: f.widgets.cc:421 fotoxx.h:1120 msgid "Hide" msgstr "Ocultar" -#: f.widgets.cc:423 fotoxx.h:1098 +#: f.widgets.cc:422 fotoxx.h:1106 msgid "Enable" msgstr "Habilitar" -#: f.widgets.cc:424 fotoxx.h:1094 +#: f.widgets.cc:423 fotoxx.h:1102 msgid "Disable" msgstr "Desabilitar" -#: f.widgets.cc:425 fotoxx.h:1115 +#: f.widgets.cc:424 fotoxx.h:1123 msgid "Invert" msgstr "Inverter" -#: f.widgets.cc:426 fotoxx.h:1172 +#: f.widgets.cc:425 fotoxx.h:1180 msgid "Unselect" msgstr "Deselecionar" +#: f.widgets.cc:426 +msgid "Copy Area" +msgstr "Copiar Área" + #: f.widgets.cc:427 +msgid "Paste Area" +msgstr "Colar Área" + +#: f.widgets.cc:428 msgid "Open Area File" msgstr "Abrir Arquivo de Área" -#: f.widgets.cc:428 +#: f.widgets.cc:429 msgid "Save Area File" msgstr "Salvar Arquivo de Área" -#: f.widgets.cc:433 +#: f.widgets.cc:434 msgid "Voodoo 1" msgstr "Voodoo 1" -#: f.widgets.cc:434 +#: f.widgets.cc:435 msgid "Voodoo 2" msgstr "Voodoo 2" -#: f.widgets.cc:436 +#: f.widgets.cc:437 msgid "Adjust Brightness Dist." msgstr "Ajustar Dist. de Brilho" -#: f.widgets.cc:437 f.widgets.cc:676 +#: f.widgets.cc:438 f.widgets.cc:681 msgid "Zonal Flatten" msgstr "Achatamento Zonal" -#: f.widgets.cc:441 +#: f.widgets.cc:442 msgid "Add Text" msgstr "Escrever Texto" -#: f.widgets.cc:442 +#: f.widgets.cc:443 msgid "Add Lines" msgstr "Adicionar Linhas" -#: f.widgets.cc:445 +#: f.widgets.cc:446 msgid "Plugins" msgstr "Extensões" -#: f.widgets.cc:450 +#: f.widgets.cc:451 msgid "Denoise" msgstr "Reduzir ruído" -#: f.widgets.cc:452 +#: f.widgets.cc:453 msgid "Red Eyes" msgstr "Olhos vermelhos" -#: f.widgets.cc:457 +#: f.widgets.cc:458 msgid "Adjust RGB/CMY" msgstr "Ajustar RGB/CMY" -#: f.widgets.cc:458 +#: f.widgets.cc:459 msgid "Adjust HSL" msgstr "Ajustar HSL" -#: f.widgets.cc:459 +#: f.widgets.cc:460 msgid "Brightness Ramp" msgstr "Curvas de brilho" -#: f.widgets.cc:461 +#: f.widgets.cc:462 msgid "Match Colors" msgstr "Mesclar Cores" -#: f.widgets.cc:462 +#: f.widgets.cc:463 msgid "Color Profile" msgstr "Perfil de Cores" -#: f.widgets.cc:464 +#: f.widgets.cc:465 msgid "Anti-Alias" msgstr "Antisserrilhado" -#: f.widgets.cc:470 +#: f.widgets.cc:471 msgid "Fix Perspective" msgstr "Corrigdir perspectiva" -#: f.widgets.cc:475 +#: f.widgets.cc:476 msgid "Flatten Book Page" msgstr "Achatar Página de Book" -#: f.widgets.cc:478 +#: f.widgets.cc:479 msgid "Color Depth" msgstr "Resolução de cor" -#: f.widgets.cc:479 +#: f.widgets.cc:480 msgid "Sketch" msgstr "Esboço" -#: f.widgets.cc:483 +#: f.widgets.cc:484 msgid "Embossing" msgstr "Alto-relevo" -#: f.widgets.cc:485 +#: f.widgets.cc:486 msgid "Dots" msgstr "Pontos" -#: f.widgets.cc:486 +#: f.widgets.cc:487 msgid "Painting" msgstr "Pintura" -#: f.widgets.cc:488 +#: f.widgets.cc:489 msgid "Texture" msgstr "Textura" -#: f.widgets.cc:490 +#: f.widgets.cc:491 msgid "Mosaic" msgstr "Mosaico" -#: f.widgets.cc:496 +#: f.widgets.cc:497 msgid "High Dynamic Range" msgstr "Grande Alcance Dinâmico (HDR)" -#: f.widgets.cc:497 +#: f.widgets.cc:498 msgid "High Depth of Field" msgstr "Alta Profundidade de Campo (HDF)" -#: f.widgets.cc:498 +#: f.widgets.cc:499 msgid "Stack/Paint" msgstr "Pilha/Pintura" -#: f.widgets.cc:499 +#: f.widgets.cc:500 msgid "Stack/Noise" msgstr "Pilha/Ruído" -#: f.widgets.cc:500 +#: f.widgets.cc:501 msgid "Panorama" msgstr "Panorama" -#: f.widgets.cc:501 +#: f.widgets.cc:502 msgid "Vertical Panorama" msgstr "Panorama Vertical" -#: f.widgets.cc:502 +#: f.widgets.cc:503 msgid "PT Panorama" msgstr "Panorama PT" -#: f.widgets.cc:503 +#: f.widgets.cc:504 msgid "Mashup" msgstr "Mistura" -#: f.widgets.cc:508 +#: f.widgets.cc:509 msgid "Keyboard Shortcuts" msgstr "Teclas de Atalho" -#: f.widgets.cc:509 +#: f.widgets.cc:510 msgid "Show Brightness Dist." msgstr "Mostrar Dist. de Brilho" -#: f.widgets.cc:514 +#: f.widgets.cc:515 msgid "Dark/Bright Pixels" msgstr "Pixels Claros/Escuros" -#: f.widgets.cc:515 +#: f.widgets.cc:516 msgid "Monitor Color" msgstr "Cores do Monitor" -#: f.widgets.cc:517 +#: f.widgets.cc:518 msgid "Change Language" msgstr "Trocar língua" -#: f.widgets.cc:518 +#: f.widgets.cc:519 msgid "Missing Translations" msgstr "Traduções em falta" -#: f.widgets.cc:520 +#: f.widgets.cc:522 msgid "Resources" msgstr "Recursos" -#: f.widgets.cc:527 +#: f.widgets.cc:529 msgid "Batch RAW (DCraw)" msgstr "RAW em Lote (DCRaw)" -#: f.widgets.cc:528 +#: f.widgets.cc:530 msgid "Batch RAW (Raw Therapee)" msgstr "RAW em Lote (Raw Therapee)" -#: f.widgets.cc:529 +#: f.widgets.cc:531 msgid "Burn Images to CD/DVD" msgstr "Gravar imagens em CD/DVD" -#: f.widgets.cc:539 +#: f.widgets.cc:544 msgid "Cycle Desktop Image" msgstr "Rodízio de Imagem da Área de Trabalho" -#: f.widgets.cc:542 fotoxx-15.08.cc:5513 -msgid "Quick Start" -msgstr "Guia Rápido" +#: f.widgets.cc:561 f.widgets.cc:584 f.widgets.cc:606 +msgid "Gallery" +msgstr "Galeria" -#: f.widgets.cc:543 fotoxx-15.08.cc:5516 -msgid "User Guide" -msgstr "Guia de usuário" +#: f.widgets.cc:562 f.widgets.cc:585 f.widgets.cc:607 +msgid "World Maps" +msgstr "Mapas Mundiais" -#: f.widgets.cc:544 fotoxx-15.08.cc:5519 -msgid "User Guide Changes" -msgstr "Mudanças no Guia de Usuários" +#: f.widgets.cc:564 +msgid "Favorites" +msgstr "Favoritos" -#: f.widgets.cc:545 fotoxx-15.08.cc:5525 -msgid "Edit Functions Summary" -msgstr "Editar Resumo de Funções" - -#: f.widgets.cc:546 fotoxx-15.08.cc:5522 -msgid "README" -msgstr "LEIAME" - -#: f.widgets.cc:547 fotoxx-15.08.cc:5528 -msgid "Change Log" -msgstr "Relatório de mudanças" - -#: f.widgets.cc:548 fotoxx-15.08.cc:5531 -msgid "Log File" -msgstr "Arquivo de Log" - -#: f.widgets.cc:549 fotoxx-15.08.cc:5534 -msgid "Translations" -msgstr "Traduções" - -#: f.widgets.cc:550 fotoxx-15.08.cc:5537 -msgid "Home Page" -msgstr "Página na web" - -#: f.widgets.cc:551 fotoxx-15.08.cc:5540 -msgid "About" -msgstr "Sobre" - -#: f.widgets.cc:556 f.widgets.cc:579 f.widgets.cc:601 -msgid "Gallery" -msgstr "Galeria" - -#: f.widgets.cc:557 f.widgets.cc:580 f.widgets.cc:602 -msgid "World Maps" -msgstr "Mapas Mundiais" - -#: f.widgets.cc:559 -msgid "Favorites" -msgstr "Favoritos" - -#: f.widgets.cc:561 fotoxx.h:1152 +#: f.widgets.cc:566 fotoxx.h:1160 msgid "Save" msgstr "Salvar" -#: f.widgets.cc:562 +#: f.widgets.cc:567 msgid "Prev/Next" msgstr "Ant./Prox." -#: f.widgets.cc:563 +#: f.widgets.cc:568 msgid "Metadata" msgstr "Metadados" -#: f.widgets.cc:564 +#: f.widgets.cc:569 msgid "Areas" msgstr "Áreas" -#: f.widgets.cc:565 fotoxx.h:1097 +#: f.widgets.cc:570 fotoxx.h:1105 msgid "Edit" msgstr "Editar" -#: f.widgets.cc:566 +#: f.widgets.cc:571 msgid "Repair" msgstr "Reparo" -#: f.widgets.cc:567 +#: f.widgets.cc:572 msgid "Bend" msgstr "Curvar" -#: f.widgets.cc:568 +#: f.widgets.cc:573 msgid "Effects" msgstr "Efeitos" -#: f.widgets.cc:569 +#: f.widgets.cc:574 msgid "Combine" msgstr "Combinar" -#: f.widgets.cc:570 +#: f.widgets.cc:575 msgid "Undo/Redo" msgstr "Desfazer/Refazer" -#: f.widgets.cc:571 +#: f.widgets.cc:576 msgid "Tools" msgstr "Ferramentas" -#: f.widgets.cc:572 f.widgets.cc:594 fotoxx-15.08.cc:5544 fotoxx.h:1111 -msgid "Help" -msgstr "Ajuda" - -#: f.widgets.cc:582 +#: f.widgets.cc:587 msgid "Sync.G" msgstr "Sinc.G" -#: f.widgets.cc:583 +#: f.widgets.cc:588 msgid "Albums" msgstr "Álbuns" -#: f.widgets.cc:584 +#: f.widgets.cc:589 msgid "Bookmarks" msgstr "Favoritos" -#: f.widgets.cc:593 +#: f.widgets.cc:598 msgid "Batch" -msgstr "" +msgstr "Lote" -#: f.widgets.cc:604 +#: f.widgets.cc:609 msgid "Choose Map" msgstr "Escolher Mapa" -#: f.widgets.cc:605 +#: f.widgets.cc:610 msgid "Search Range" msgstr "Buscar Intervalo" -#: f.widgets.cc:613 fotoxx.h:1170 +#: f.widgets.cc:618 fotoxx.h:1178 msgid "Undo" msgstr "Desfazer" -#: f.widgets.cc:614 fotoxx.h:1143 +#: f.widgets.cc:619 fotoxx.h:1151 msgid "Redo" msgstr "Refazer" -#: f.widgets.cc:655 +#: f.widgets.cc:660 msgid "Popup Image" msgstr "Imagem Popup" -#: f.widgets.cc:656 +#: f.widgets.cc:661 msgid "Popup Image (add)" msgstr "Imagem Popup (adicionar)" -#: f.widgets.cc:660 fotoxx.h:1146 +#: f.widgets.cc:665 fotoxx.h:1154 msgid "Rename" msgstr "Renomear" -#: f.widgets.cc:661 +#: f.widgets.cc:666 msgid "Copy to Location" msgstr "Copiar para Localidade" -#: f.widgets.cc:662 +#: f.widgets.cc:667 msgid "Move to Location" msgstr "Mover para Localidade" -#: f.widgets.cc:663 +#: f.widgets.cc:668 msgid "Copy to Clipboard" msgstr "Copiar para Área de Transferência" -#: f.widgets.cc:664 +#: f.widgets.cc:669 msgid "Remove from Album" msgstr "Remover do Álbum" -#: f.widgets.cc:665 +#: f.widgets.cc:670 msgid "Cut to Image Cache" msgstr "Recortar para Reserva de Imagens" -#: f.widgets.cc:666 +#: f.widgets.cc:671 msgid "Copy to Image Cache" msgstr "Copiar para Reserva de Imagens" -#: f.widgets.cc:667 +#: f.widgets.cc:672 msgid "Paste Image Cache Here (clear)" msgstr "Colar Reserva de Imagens aqui (limpar)" -#: f.widgets.cc:668 +#: f.widgets.cc:673 msgid "Paste Image Cache Here (keep)" msgstr "Colar Reserva de Imagens aqui (manter)" -#: f.widgets.cc:669 +#: f.widgets.cc:674 msgid "Paste Current Image File Here" msgstr "Colar Arquivo de Imagem Atual Aqui" -#: f.widgets.cc:673 +#: f.widgets.cc:678 msgid "Voodoo Enhance" msgstr "Realce Vudu" -#: f.widgets.cc:675 +#: f.widgets.cc:680 msgid "Brightness Dist." msgstr "Dist. de Brilho" -#: f.widgets.cc:678 +#: f.widgets.cc:683 msgid "Select Area" msgstr "Selecionar Área" -#: f.widgets.cc:681 fotoxx.h:1166 +#: f.widgets.cc:686 fotoxx.h:1174 msgid "Trash" msgstr "Lixeira" -#: f.widgets.cc:806 +#: f.widgets.cc:811 msgid "Image Locations" msgstr "Localidade de Imagem" -#: fotoxx-15.08.cc:376 +#: fotoxx-15.09.cc:361 msgid "Please install missing programs:" msgstr "Por favor, instale os programas que faltam:" -#: fotoxx-15.08.cc:667 +#: fotoxx-15.09.cc:652 msgid "Kill active dialog?" msgstr "Fechar caixa de diálogo ativa?" -#: fotoxx-15.08.cc:742 +#: fotoxx-15.09.cc:723 msgid "(reduced)" msgstr "(reduzido)" -#: fotoxx-15.08.cc:743 +#: fotoxx-15.09.cc:724 msgid "area active" msgstr "área ativada" -#: fotoxx-15.08.cc:744 +#: fotoxx-15.09.cc:725 msgid "dialog open" msgstr "caixa de diálogo aberta" -#: fotoxx-15.08.cc:745 -msgid "BUSY" -msgstr "OCUPADO" - -#: fotoxx-15.08.cc:746 +#: fotoxx-15.09.cc:726 msgid "blocked" msgstr "bloqueado" -#: fotoxx-15.08.cc:796 +#: fotoxx-15.09.cc:776 msgid "edits" msgstr "edições" -#: fotoxx-15.08.cc:2805 +#: fotoxx-15.09.cc:2756 msgid "Exceed 50 anchor points" msgstr "Excedeu 50 pontos de ancoragem" -#: fotoxx-15.08.cc:3018 +#: fotoxx-15.09.cc:2969 msgid "load curve from a file" msgstr "carregar curva de arquivo" -#: fotoxx-15.08.cc:3091 +#: fotoxx-15.09.cc:3042 msgid "save curve to a file" msgstr "salvar curva para arquivo" -#: fotoxx-15.08.cc:3161 +#: fotoxx-15.09.cc:3112 msgid "Too many edits, please save image" msgstr "Muitas edições, favor salvar imagem" -#: fotoxx-15.08.cc:3180 +#: fotoxx-15.09.cc:3131 msgid "" "Select area not active.\n" "Continue?" @@ -4466,373 +4581,373 @@ "Área selecionada não ativa.\n" "Continuar?" -#: fotoxx-15.08.cc:3435 +#: fotoxx-15.09.cc:3385 msgid "Load settings from file" msgstr "Carregar configurações de um arquivo" -#: fotoxx-15.08.cc:3532 +#: fotoxx-15.09.cc:3482 msgid "file data does not fit dialog" msgstr "dados do arquivo não cabem em caixa de diálogo" -#: fotoxx-15.08.cc:3542 +#: fotoxx-15.09.cc:3492 msgid "Save settings to a file" msgstr "Salvar configurações em arquivo" -#: fotoxx-15.08.cc:3835 +#: fotoxx-15.09.cc:3781 msgid "This action will discard changes to current image" msgstr "Esta ação irá descartar as alterações para a imagem atual" -#: fotoxx-15.08.cc:3836 fotoxx-15.08.cc:3837 +#: fotoxx-15.09.cc:3782 fotoxx-15.09.cc:3783 msgid "prior function still active" msgstr "função prévia ainda ativa" -#: fotoxx-15.08.cc:3838 fotoxx.h:1116 +#: fotoxx-15.09.cc:3784 fotoxx.h:1124 msgid "Keep" msgstr "Manter" -#: fotoxx-15.08.cc:3839 +#: fotoxx-15.09.cc:3785 msgid "Discard" msgstr "Descartar" -#: fotoxx.h:1068 +#: fotoxx.h:1076 msgid "Add" msgstr "Adicionar" -#: fotoxx.h:1069 +#: fotoxx.h:1077 msgid "Add All" msgstr "Adicionar todos" -#: fotoxx.h:1071 +#: fotoxx.h:1079 msgid "Amount" msgstr "Quantidade" -#: fotoxx.h:1072 +#: fotoxx.h:1080 msgid "Angle" msgstr "Ângulo" -#: fotoxx.h:1073 +#: fotoxx.h:1081 msgid "Apply" msgstr "Aplicar" -#: fotoxx.h:1074 +#: fotoxx.h:1082 msgid "Auto" msgstr "Auto" -#: fotoxx.h:1075 +#: fotoxx.h:1083 msgid "Black" msgstr "Preto" -#: fotoxx.h:1076 +#: fotoxx.h:1084 msgid "Blend Width" msgstr "Quantidade de mistura" -#: fotoxx.h:1078 zfuncs.cc:10061 +#: fotoxx.h:1086 zfuncs.cc:10054 msgid "bottom" msgstr "rodapé" -#: fotoxx.h:1080 +#: fotoxx.h:1088 msgid "Browse" msgstr "Procurar" -#: fotoxx.h:1081 +#: fotoxx.h:1089 msgid "Cancel" msgstr "Cancelar" -#: fotoxx.h:1082 +#: fotoxx.h:1090 msgid "center" msgstr "centralizar" -#: fotoxx.h:1083 +#: fotoxx.h:1091 msgid "Choose" msgstr "Escolher" -#: fotoxx.h:1084 +#: fotoxx.h:1092 msgid "Clear" msgstr "Limpar" -#: fotoxx.h:1085 +#: fotoxx.h:1093 msgid "Color" msgstr "Cor" -#: fotoxx.h:1086 +#: fotoxx.h:1094 msgid "continue" msgstr "continuar" -#: fotoxx.h:1088 +#: fotoxx.h:1096 msgid "Copy" msgstr "Copiar" -#: fotoxx.h:1089 +#: fotoxx.h:1097 msgid "Create" msgstr "Criar" -#: fotoxx.h:1090 +#: fotoxx.h:1098 msgid "Curve File:" msgstr "Arquivo de curva:" -#: fotoxx.h:1091 +#: fotoxx.h:1099 msgid "Cut" msgstr "Recortar" -#: fotoxx.h:1092 +#: fotoxx.h:1100 msgid "Deband" msgstr "Debandar" -#: fotoxx.h:1093 +#: fotoxx.h:1101 msgid "Delete" msgstr "Exlcuir" -#: fotoxx.h:1095 +#: fotoxx.h:1103 msgid "Done" msgstr "Pronto" -#: fotoxx.h:1096 +#: fotoxx.h:1104 msgid "edge" msgstr "borda" -#: fotoxx.h:1099 +#: fotoxx.h:1107 msgid "Erase" msgstr "Apagar" -#: fotoxx.h:1100 +#: fotoxx.h:1108 msgid "Fetch" msgstr "Buscar" -#: fotoxx.h:1101 +#: fotoxx.h:1109 msgid "output file already exists" msgstr "arquivo de saída já existe" -#: fotoxx.h:1102 +#: fotoxx.h:1110 #, c-format msgid "%d files selected" msgstr "%d arquivos selecionados" -#: fotoxx.h:1103 +#: fotoxx.h:1111 msgid "Find" msgstr "Encontrar" -#: fotoxx.h:1104 +#: fotoxx.h:1112 msgid "Finish" msgstr "Finalizar" -#: fotoxx.h:1105 +#: fotoxx.h:1113 msgid "Flatten" msgstr "Abrandar" -#: fotoxx.h:1106 +#: fotoxx.h:1114 msgid "Font" msgstr "Fonte" -#: fotoxx.h:1107 +#: fotoxx.h:1115 msgid "Geotags" msgstr "Georreferências" -#: fotoxx.h:1109 +#: fotoxx.h:1117 msgid "Grid" msgstr "Grade" -#: fotoxx.h:1110 +#: fotoxx.h:1118 msgid "Height" msgstr "Altura" -#: fotoxx.h:1113 +#: fotoxx.h:1121 msgid "Images" msgstr "Imagens" -#: fotoxx.h:1114 +#: fotoxx.h:1122 msgid "Insert" msgstr "Inserir" -#: fotoxx.h:1117 zfuncs.cc:10065 +#: fotoxx.h:1125 zfuncs.cc:10058 msgid "left" msgstr "esquerda" -#: fotoxx.h:1118 +#: fotoxx.h:1126 msgid "limit" msgstr "limite" -#: fotoxx.h:1119 +#: fotoxx.h:1127 msgid "Load" msgstr "Carga" -#: fotoxx.h:1120 +#: fotoxx.h:1128 msgid "Make" msgstr "Gerar" -#: fotoxx.h:1122 +#: fotoxx.h:1130 msgid "Map" msgstr "Mapa" -#: fotoxx.h:1123 +#: fotoxx.h:1131 msgid "Max" msgstr "Máximo" -#: fotoxx.h:1124 +#: fotoxx.h:1132 msgid "Negative" msgstr "Negativo" -#: fotoxx.h:1125 +#: fotoxx.h:1133 msgid "New" msgstr "Novo" -#: fotoxx.h:1126 +#: fotoxx.h:1134 msgid "Next" msgstr "Próximo" -#: fotoxx.h:1127 zfuncs.cc:9147 +#: fotoxx.h:1135 zfuncs.cc:9148 msgid "No" msgstr "Não" -#: fotoxx.h:1128 +#: fotoxx.h:1136 msgid "no images" msgstr "não há imagens" -#: fotoxx.h:1130 +#: fotoxx.h:1138 msgid "no selection" msgstr "não há seleção" -#: fotoxx.h:1131 +#: fotoxx.h:1139 msgid "OK" msgstr "OK" -#: fotoxx.h:1133 +#: fotoxx.h:1141 msgid "Paste" msgstr "Colar" -#: fotoxx.h:1134 +#: fotoxx.h:1142 msgid "Pause" msgstr "Pausar" -#: fotoxx.h:1135 +#: fotoxx.h:1143 msgid "Percent" msgstr "Percentagem" -#: fotoxx.h:1137 +#: fotoxx.h:1145 msgid "Presets" msgstr "Predefinições" -#: fotoxx.h:1138 +#: fotoxx.h:1146 msgid "Prev" msgstr "Anterior" -#: fotoxx.h:1139 +#: fotoxx.h:1147 msgid "Proceed" msgstr "Continuar" -#: fotoxx.h:1141 +#: fotoxx.h:1149 msgid "range" msgstr "variação" -#: fotoxx.h:1144 +#: fotoxx.h:1152 msgid "Reduce" msgstr "Reduzir" -#: fotoxx.h:1145 +#: fotoxx.h:1153 msgid "Remove" msgstr "Remover" -#: fotoxx.h:1147 +#: fotoxx.h:1155 msgid "Replace" msgstr "Substituir" -#: fotoxx.h:1148 +#: fotoxx.h:1156 msgid "Reserved" msgstr "Reservados" -#: fotoxx.h:1149 +#: fotoxx.h:1157 msgid "Reset" msgstr "Redefinir" -#: fotoxx.h:1150 zfuncs.cc:10069 +#: fotoxx.h:1158 zfuncs.cc:10062 msgid "right" msgstr "direita" -#: fotoxx.h:1151 +#: fotoxx.h:1159 msgid "Rotate" msgstr "Rotacionar" -#: fotoxx.h:1153 +#: fotoxx.h:1161 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:1154 +#: fotoxx.h:1162 msgid "Search" msgstr "Buscar" -#: fotoxx.h:1155 +#: fotoxx.h:1163 msgid "Seconds" msgstr "Segundos" -#: fotoxx.h:1159 +#: fotoxx.h:1167 msgid "Size" msgstr "Tamanho" -#: fotoxx.h:1160 +#: fotoxx.h:1168 msgid "Start" msgstr "Iniciar" -#: fotoxx.h:1161 +#: fotoxx.h:1169 msgid "Strength" msgstr "Força" -#: fotoxx.h:1162 +#: fotoxx.h:1170 msgid "Threshold" msgstr "Limiar" -#: fotoxx.h:1163 +#: fotoxx.h:1171 #, c-format msgid "exceed %d files" msgstr "excedido %d arquivos" -#: fotoxx.h:1164 zfuncs.cc:10057 +#: fotoxx.h:1172 zfuncs.cc:10050 msgid "top" msgstr "topo" -#: fotoxx.h:1165 +#: fotoxx.h:1173 msgid "Transparency" msgstr "Transparência" -#: fotoxx.h:1167 +#: fotoxx.h:1175 msgid "Trim" msgstr "Recortar" -#: fotoxx.h:1168 +#: fotoxx.h:1176 msgid "Undo All" msgstr "Desfazer tudo" -#: fotoxx.h:1169 +#: fotoxx.h:1177 msgid "Undo Last" msgstr "Desfazer último" -#: fotoxx.h:1171 +#: fotoxx.h:1179 msgid "Unfinish" msgstr "Inacabado" -#: fotoxx.h:1173 +#: fotoxx.h:1181 msgid "View" msgstr "Ver" -#: fotoxx.h:1174 +#: fotoxx.h:1182 msgid "Web" msgstr "Web" -#: fotoxx.h:1175 +#: fotoxx.h:1183 msgid "White" msgstr "Branco" -#: fotoxx.h:1176 +#: fotoxx.h:1184 msgid "Width" msgstr "Largura" -#: fotoxx.h:1177 +#: fotoxx.h:1185 msgid "x-offset" msgstr "deslocamento-x" -#: fotoxx.h:1178 +#: fotoxx.h:1186 msgid "y-offset" msgstr "deslocamento-y" -#: fotoxx.h:1179 zfuncs.cc:9147 +#: fotoxx.h:1187 zfuncs.cc:9148 msgid "Yes" msgstr "Sim" @@ -4849,473 +4964,71 @@ msgid "user guide not found" msgstr "guia de usuário não encontrado" -#: zfuncs.cc:5182 +#: zfuncs.cc:5183 #, c-format msgid "cannot open file %s" msgstr "não foi possível abrir arquivo %s" -#: zfuncs.cc:5218 +#: zfuncs.cc:5219 msgid "save screen to file" msgstr "salvar tela para arquivo" -#: zfuncs.cc:9223 zfuncs.cc:9724 zfuncs.cc:10044 +#: zfuncs.cc:9224 zfuncs.cc:9717 zfuncs.cc:10037 msgid "cancel" msgstr "cancelar" -#: zfuncs.cc:9685 +#: zfuncs.cc:9678 msgid "choose file" msgstr "escolher arquivo" -#: zfuncs.cc:9690 +#: zfuncs.cc:9683 msgid "choose files" msgstr "escolher arquivos" -#: zfuncs.cc:9695 +#: zfuncs.cc:9688 msgid "save" msgstr "salvar" -#: zfuncs.cc:9701 +#: zfuncs.cc:9694 msgid "choose folder" msgstr "escolher diretório" -#: zfuncs.cc:9706 +#: zfuncs.cc:9699 msgid "choose folders" msgstr "escolher diretórios" -#: zfuncs.cc:9711 +#: zfuncs.cc:9704 msgid "create folder" msgstr "criar pasta" -#: zfuncs.cc:9718 +#: zfuncs.cc:9711 msgid "hidden" msgstr "oculto" -#: zfuncs.cc:10044 +#: zfuncs.cc:10037 msgid "done" msgstr "pronto" -#: zfuncs.cc:10044 zfuncs.cc:10053 +#: zfuncs.cc:10037 zfuncs.cc:10046 msgid "margins" msgstr "margens" -#: zfuncs.cc:10074 +#: zfuncs.cc:10067 msgid "image scale" msgstr "escala de imagem" -#: zfuncs.cc:10076 +#: zfuncs.cc:10069 msgid "percent" msgstr "porcentagem" -#: zfuncs.cc:10083 +#: zfuncs.cc:10076 msgid "image" msgstr "imagem" -#: zfuncs.cc:10087 +#: zfuncs.cc:10080 msgid "width" msgstr "largura" -#: zfuncs.cc:10091 +#: zfuncs.cc:10084 msgid "height" msgstr "altura" - -#~ msgid "Remove margins from warp, panorama, etc." -#~ msgstr "Remover margens de distorções, panoramas, etc." - -#~ msgid "Auto-Trim" -#~ msgstr "Auto-Recortar" - -#~ msgid "Autocomplete" -#~ msgstr "Autocompletar" - -#~ msgid "Enter text, click/drag on image." -#~ msgstr "Digite o texto, clique/arraste na imagem." - -#~ msgid "Enter line/arrow properties, click/drag on image." -#~ msgstr "Inserir proriedades de linha/seta, clique/arraste na imagem." - -#~ msgid "Set Blur Radius" -#~ msgstr "Configurar raio de desfoque" - -#~ msgid "Chromatic Abberation" -#~ msgstr "Aberração Cromática" - -#~ msgid "Fix Stuck Pixels" -#~ msgstr "Corrigir Pixels Presos" - -#~ msgid "Revise RGB" -#~ msgstr "Revisar RGB" - -#~ msgid "Top Image Directories" -#~ msgstr "Diretórios superiores de Imagem" - -#~ msgid "%d images remaining in cache" -#~ msgstr "%d imagens permanecem em reserva" - -#~ msgid "" -#~ "First time Fotoxx startup. \n" -#~ "Latest version is available at: www.kornelix.com/fotoxx \n" -#~ "An image file index will be created. Your image files will \n" -#~ "not be changed, moved, or copied. This process may need \n" -#~ "considerable time if you have thousands of image files." -#~ msgstr "" -#~ "Primeira inicialização do Fotoxx. \n" -#~ "Últimas versões estão disponíveis em: www.kornelix.com/fotoxx \n" -#~ "Um arquivo de índice de imagem será criado. Seus arquivos de imagem \n" -#~ "não serão modificados, movidos, ou copiados. Este processo poderá levar \n" -#~ "considerável tempo se você tiver milhares de arquivos de imagem." - -#~ msgid "Tools: Index, Settings, Albums, Batch Funcs ..." -#~ msgstr "Ferramentas: Índice, Configurações, Álbuns, Funções em Lote..." - -#~ msgid "Paint/Clone Pixels" -#~ msgstr "Pintar/Clonar Pixels" - -#~ msgid "Fix Color Fringes" -#~ msgstr "Corrigir Franjas Púrpuras" - -#~ msgid "Adjust color using CMYK or RGB values" -#~ msgstr "Ajustar cor usando valores CMYK ou RGB" - -#~ msgid "Rotate 90º" -#~ msgstr "Rotacionar 90º" - -#~ msgid "target file already exists" -#~ msgstr "arquivo alvo já existe" - -#~ msgid "collections" -#~ msgstr "coleções" - -#~ msgid "no collections found" -#~ msgstr "nenhuma coleção encontrada" - -#~ msgid "Choose collection" -#~ msgstr "Escolher coleção" - -#~ msgid "save project data" -#~ msgstr "salvar dados de projeto" - -#~ msgid "save project file?" -#~ msgstr "salvar arquivo de projeto?" - -#~ msgid "current image:" -#~ msgstr "imagem atual:" - -#~ msgid "Edge Blend" -#~ msgstr "Mistura de Borda" - -#~ msgid "invalid collection" -#~ msgstr "coleção inválida" - -#~ msgid "open collection" -#~ msgstr "abrir coleção" - -#~ msgid "" -#~ "Right-click collection thumbnail to cut/copy \n" -#~ "to cache, insert from cache, or remove." -#~ msgstr "" -#~ "Clique direito com o mouse nas miniaturas da coleção para \n" -#~ "recortar/colar na reserva, inserir a partir da reserva, ou remover." - -#~ msgid "Drag collection thumbnail to new position." -#~ msgstr "Arrastar miniatura de coleção para nova posição" - -#~ msgid "Manage Collections" -#~ msgstr "Gerenciar Coleções" - -#~ msgid "Create or replace a collection" -#~ msgstr "Criar ou substituir uma coleção" - -#~ msgid "Collection to view or edit" -#~ msgstr "Coleção para ver ou editar " - -#~ msgid "Delete a collection" -#~ msgstr "Excluir uma Coleção" - -#~ msgid "Choose Collection" -#~ msgstr "Escolher Coleção" - -#~ msgid "Delete Collection" -#~ msgstr "Excluir Coleção" - -#~ msgid "cache added to empty collection" -#~ msgstr "reservar adicionadas em uma coleção vazia" - -#~ msgid "Collection Name" -#~ msgstr "Nome de Coleção" - -#~ msgid "make an initially empty collection" -#~ msgstr "criar uma colação inicial vazia" - -#~ msgid "enter a collection name" -#~ msgstr "inserir um nome para a coleção" - -#~ msgid "new collection created" -#~ msgstr "nova coleção criada" - -#~ msgid "file already exists" -#~ msgstr "arquivo já existe" - -#~ msgid "updating collections ..." -#~ msgstr "atualizando coleçoes..." - -#~ msgid "Tools: Index, Settings, Collections, Batch Funcs ..." -#~ msgstr "Ferramentas: Índice, Configurações, Coleções, Funções em Lote..." - -#~ msgid "Organize images into collections" -#~ msgstr "Organizar imagens em Coleções" - -#~ msgid "Upright multiple files rotated 90º" -#~ msgstr "Orientar múltiplos arquivos rotacionados em 90º" - -#~ msgid "Rotate 90 degrees" -#~ msgstr "Rotacionar 90 graus" - -#~ msgid "Remove from Collection" -#~ msgstr "Remover da Coleção" - -#~ msgid "Top" -#~ msgstr "Topo" - -#~ msgid "quality" -#~ msgstr "qualidade" - -#~ msgid "JPG quality 0-100" -#~ msgstr "Qualidade JPG 0-100" - -#~ msgid "fotoxx-maps package not installed" -#~ msgstr "pacote fotoxx-maps não instalado" - -#~ msgid "printed image width: %.1f height: %.1f cm" -#~ msgstr "largura de imagem impressa: %.1f altura: %.1f cm" - -#~ msgid "menu locked" -#~ msgstr "menu bloqueado" - -#~ msgid "shrink" -#~ msgstr "retrair" - -#~ msgid "delete project file?" -#~ msgstr "excluir arquivo de projeto? " - -#~ msgid "save output file" -#~ msgstr "salvar arquivo de saída" - -#~ msgid "function busy" -#~ msgstr "função em andamento" - -#~ msgid "no newly added files found" -#~ msgstr "nenhum arquivo adicionado recentemente encontrado" - -#~ msgid "no selection made" -#~ msgstr "nenhuma seleção feita" - -#~ msgid "Batch functions, Combine functions" -#~ msgstr "Funções em Lote, Funções de Combinação" - -#~ msgid "next row" -#~ msgstr "próxiuma coluna" - -#~ msgid "previous row" -#~ msgstr "coluna anterior" - -#~ msgid "open another directory" -#~ msgstr "abrir outro diretório" - -#~ msgid "Images by Location/Date" -#~ msgstr "Imagens por Localidade/Data" - -#~ msgid "Menu and Launcher" -#~ msgstr "Menu e Atalho" - -#~ msgid "User Settings" -#~ msgstr "Preferências de Usuário" - -#~ msgid "Save to Disk" -#~ msgstr "Salvar em disco" - -#~ msgid "Sync Gallery" -#~ msgstr "Sincronizar Galeria" - -#~ msgid "Change color of area outlines" -#~ msgstr "Mudar a cor do contorno de área" - -#~ msgid "Create a Gnome menu and launcher" -#~ msgstr "Criar um menu e atalho do Gnome" - -#~ msgid "Tools: Index, Settings, Batch Funcs, Magnify ..." -#~ msgstr "Ferramentas: Índice, Configurações, Funções em lote, Ampliar ..." - -#~ msgid "File: Sync, Open, Save, Trash, Rename, Print" -#~ msgstr "Arquivo: Sinc., Abrir, Salvar, Lixo, Renomear, Imprimir" - -#~ msgid "Make Launcher" -#~ msgstr "Criar Atalho" - -#~ msgid "Monitor scale" -#~ msgstr "Escala de Monitor" - -#~ msgid "Magnified" -#~ msgstr "Ampliado" - -#~ msgid "Drag" -#~ msgstr "Arrastar" - -#~ msgid "Image Pan" -#~ msgstr "Navegador de Imagem" - -#~ msgid "Directory Gallery" -#~ msgstr "Diretório de Galeria" - -#~ msgid "Settings" -#~ msgstr "Configurações" - -#~ msgid "thumbnails directory not .../thumbnails" -#~ msgstr "diretório de miniaturas não é .../thumbnails" - -#~ msgid "" -#~ "invalid top image directory: \n" -#~ " %s" -#~ msgstr "" -#~ "diretório topo de imagem inválido: \n" -#~ " %s" - -#~ msgid "terminated by user" -#~ msgstr "finalizado pelo usuário" - -#~ msgid "Thumbnails" -#~ msgstr "Miniaturas" - -#~ msgid "add directory" -#~ msgstr "adicionar diretório" - -#~ msgid "Enter directory for thumbnails (or keep default)." -#~ msgstr "Entre com o diretório para as miniaturas (ou mantenha padrão)." - -#~ msgid "Or use the button to browse:" -#~ msgstr "Ou utilize o botão para consultar:" - -#~ msgid "" -#~ "Enter directories containing images below \n" -#~ "(subdirectories are included automatically)." -#~ msgstr "" -#~ "Entre com as pastas que contenham imagens abaixo \n" -#~ "(subdiretórios são incluídos automaticamente)." - -#~ msgid "Depth:" -#~ msgstr "Profundidade:" - -#~ msgid "Height:" -#~ msgstr "Altura:" - -#~ msgid "Image Width:" -#~ msgstr "Largura da imagem:" - -#~ msgid "Size:" -#~ msgstr "Tamanho:" - -#~ msgid "Newest Files" -#~ msgstr "Arquivos mais recentes" - -#~ msgid "Pencil Sketch" -#~ msgstr "Esboço a Lápis" - -#~ msgid "Save PNG" -#~ msgstr "Salvar PNG" - -#~ msgid "Delete or Trash selected files" -#~ msgstr "Excluir ou Descartar arquivos selecionados" - -#~ msgid "Arrange multiple images on a background image" -#~ msgstr "Dispor múltiplas imagens numa imagem de fundo" - -#~ msgid "Save an area to a PNG file with transparency" -#~ msgstr "Salvar uma área para um arquivo PNG com transparência" - -#~ msgid "Save an area to a file" -#~ msgstr "Salvar área em um arquivo" - -#~ msgid "Open a file with a saved area" -#~ msgstr "Abrir um arquivo com uma área salva" - -#~ msgid "Paste an area into the current image" -#~ msgstr "Colar uma área dentro de imagem atual" - -#~ msgid "Copy an area for later pasting" -#~ msgstr "Copiar uma área para colar depois" - -#~ msgid "Add geotags to multiple images" -#~ msgstr "Adicionar georreferência a múltiplas imagens" - -#~ msgid "Convert multiple tags for all images" -#~ msgstr "Converter múltiplas etiquetas para todas as imagens" - -#~ msgid "index busy" -#~ msgstr "índice ocupado" - -#~ msgid "" -#~ "area info file missing: \n" -#~ " %s" -#~ msgstr "" -#~ "arquivo de Informação de Área faltando: \n" -#~ " %s" - -#~ msgid "color" -#~ msgstr "cor" - -#~ msgid "" -#~ "fix text in layout \n" -#~ " start new text" -#~ msgstr "" -#~ "fixar texto no leiaute \n" -#~ " começar novo texto" - -#~ msgid "Comment" -#~ msgstr "Comentário" - -#~ msgid "Metadata:" -#~ msgstr "Metadados:" - -#~ msgid "Brighten" -#~ msgstr "Iluminar" - -#~ msgid "Darken" -#~ msgstr "Escurecer" - -#~ msgid "save select area as a PNG file" -#~ msgstr "salvar área selecionada como arquivo PNG" - -#~ msgid "save select area to a file" -#~ msgstr "salve a área selecionada em um arquivo" - -#~ msgid "load select area from a file" -#~ msgstr "carregar selecionador de área de um arquivo" - -#~ msgid "next" -#~ msgstr "próximo" - -#~ msgid "Transition" -#~ msgstr "Transição" - -#~ msgid "Zoom location" -#~ msgstr "Localidade do Zoom" - -#~ msgid "Zoom type" -#~ msgstr "Tipo de Zoom" - -#~ msgid "Wait" -#~ msgstr "Aguarde" - -#~ msgid "Show Comments" -#~ msgstr "Mostrar Comentários" - -#~ msgid "Show Caption" -#~ msgstr "Mostrar Legenda" - -#~ msgid "Play tone" -#~ msgstr "Reproduzir tom" - -#~ msgid "Batch functions, Search Functions ..." -#~ msgstr "Funções em Lotes, Funções de pesquisa ..." - -#~ msgid "albums" -#~ msgstr "álbuns" diff -Nru fotoxx-15.08/locales/translate-ru.po fotoxx-15.09/locales/translate-ru.po --- fotoxx-15.08/locales/translate-ru.po 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/locales/translate-ru.po 2015-08-31 10:21:01.000000000 +0000 @@ -2,7 +2,7 @@ msgstr "" "Project-Id-Version: fotoxx-13.08.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-07-29 09:31+0200\n" +"POT-Creation-Date: 2015-08-30 21:14+0200\n" "PO-Revision-Date: 2014-09-29 15:54+0300\n" "Last-Translator: Nikolay Kachulin \n" "Language-Team: Russian \n" @@ -26,7 +26,7 @@ msgid "Drag album thumbnail to new position." msgstr "Перетащите иконку альбома в новое место" -#: f.albums.cc:107 f.widgets.cc:536 +#: f.albums.cc:107 f.widgets.cc:541 msgid "Manage Albums" msgstr "Управление альбомами" @@ -173,141 +173,145 @@ msgid "fallover" msgstr "" -#: f.albums.cc:1139 f.widgets.cc:537 +#: f.albums.cc:1138 f.widgets.cc:542 msgid "Slide Show" msgstr "Слайд-шоу" -#: f.albums.cc:1150 +#: f.albums.cc:1149 msgid "Clip Limit" msgstr "возможной обрезки" -#: f.albums.cc:1154 +#: f.albums.cc:1153 msgid "Music File" msgstr "Музыкальный файл" -#: f.albums.cc:1159 +#: f.albums.cc:1158 msgid "Full Screen" msgstr "На Весь Экран" -#: f.albums.cc:1160 +#: f.albums.cc:1159 msgid "Auto-replay" msgstr "Автоповтор" -#: f.albums.cc:1166 +#: f.albums.cc:1165 msgid "Customize:" msgstr "Настроить:" -#: f.albums.cc:1167 +#: f.albums.cc:1166 msgid "transitions" msgstr "Переходы" -#: f.albums.cc:1168 +#: f.albums.cc:1167 msgid "image files" msgstr "файлы изображений" -#: f.albums.cc:1173 f.albums.cc:1289 +#: f.albums.cc:1172 f.albums.cc:1286 #, c-format msgid "%d images" msgstr "%d изображений" -#: f.albums.cc:1196 f.albums.cc:1259 f.albums.cc:1349 f.albums.cc:1462 -#: f.albums.cc:1654 f.albums.cc:1738 f.albums.cc:1755 f.albums.cc:1976 +#: f.albums.cc:1194 f.albums.cc:1256 f.albums.cc:1346 f.albums.cc:1459 +#: f.albums.cc:1652 f.albums.cc:1736 f.albums.cc:1753 f.albums.cc:1974 msgid "invalid album" msgstr "несуществующий альбом" -#: f.albums.cc:1273 +#: f.albums.cc:1270 msgid "open album" msgstr "открыть альбом" -#: f.albums.cc:1305 +#: f.albums.cc:1302 msgid "Select music file" msgstr "Выберите музыкальный файл" -#: f.albums.cc:1329 +#: f.albums.cc:1326 msgid "select random (if 5+ enabled)" msgstr "произвольный выбор (если отмечено >5)" -#: f.albums.cc:1353 +#: f.albums.cc:1350 msgid "Transition Preferences" msgstr "Настройка Переходов" -#: f.albums.cc:1362 +#: f.albums.cc:1359 msgid "transition" msgstr "переход" -#: f.albums.cc:1363 +#: f.albums.cc:1360 msgid "enabled" msgstr "выбран" -#: f.albums.cc:1364 +#: f.albums.cc:1361 msgid "slowdown" msgstr "замедление" -#: f.albums.cc:1365 +#: f.albums.cc:1362 msgid "preference" msgstr "удельный вес" -#: f.albums.cc:1468 +#: f.albums.cc:1465 msgid "Image Preferences" msgstr "Настройки Изображения" -#: f.albums.cc:1472 f.file.cc:1153 f.file.cc:1349 f.file.cc:1557 f.meta.cc:425 +#: f.albums.cc:1469 f.file.cc:1157 f.file.cc:1353 f.file.cc:1561 f.meta.cc:426 msgid "Image File:" msgstr "Файл изображения:" -#: f.albums.cc:1476 +#: f.albums.cc:1473 msgid "Play tone when image shows" msgstr "" -#: f.albums.cc:1479 +#: f.albums.cc:1476 msgid "Show image caption" msgstr "" -#: f.albums.cc:1484 +#: f.albums.cc:1481 msgid "Show image comments" msgstr "" -#: f.albums.cc:1489 +#: f.albums.cc:1486 msgid "Wait before zoom" msgstr "" -#: f.albums.cc:1494 +#: f.albums.cc:1491 msgid "Zoom type:" msgstr "" -#: f.albums.cc:1495 +#: f.albums.cc:1492 msgid "none" msgstr "" -#: f.albums.cc:1496 +#: f.albums.cc:1493 msgid "zoom-in" msgstr "" -#: f.albums.cc:1497 +#: f.albums.cc:1494 msgid "zoom-out" msgstr "" -#: f.albums.cc:1500 +#: f.albums.cc:1497 msgid "Zoom size (x)" msgstr "Увеличение (х)" -#: f.albums.cc:1503 +#: f.albums.cc:1500 msgid "Steps" msgstr "Шагов" -#: f.albums.cc:1507 +#: f.albums.cc:1504 msgid "Zoom image location:" msgstr "" -#: f.albums.cc:1515 +#: f.albums.cc:1512 msgid "Wait after zoom" msgstr "" -#: f.albums.cc:1520 +#: f.albums.cc:1517 msgid "Transition to next image" msgstr "" -#: f.albums.cc:1961 f.albums.cc:2119 +#: f.albums.cc:1520 f.albums.cc:1622 +msgid "next" +msgstr "cледующий" + +#: f.albums.cc:1959 f.albums.cc:2117 #, c-format msgid "" "file format error: \n" @@ -320,7 +324,7 @@ msgid "Select Area for Edits" msgstr "Выберите область редактирования" -#: f.area.cc:80 f.edit.cc:5897 +#: f.area.cc:80 f.edit.cc:5908 msgid "Press F1 for help" msgstr "F1 для вызова справки" @@ -364,7 +368,7 @@ msgid "select all matching colors within mouse" msgstr "выделить все совпадающие цвета вокруг мыши" -#: f.area.cc:139 f.edit.cc:5942 +#: f.area.cc:139 f.edit.cc:5953 msgid "mouse radius" msgstr "Радиус пятна" @@ -396,12 +400,12 @@ msgid "area edits fade away within edge distance" msgstr "плавность перехода для избегания видимых швов " -#: f.area.cc:353 f.area.cc:536 +#: f.area.cc:351 f.area.cc:534 #, c-format msgid "exceed %d edits" msgstr "Лимит %d редакций" -#: f.area.cc:1363 +#: f.area.cc:1355 msgid "" "Click one time inside each enclosed area \n" "(possible gaps in the outline will be found). \n" @@ -411,23 +415,23 @@ "(будут найдены возможные разрывы контура). \n" "F1 для вызова справки." -#: f.area.cc:1391 +#: f.area.cc:1383 msgid "finish area" msgstr "Замкнуть область" -#: f.area.cc:1399 +#: f.area.cc:1391 msgid "extend to corner:" msgstr "расширить до угла" -#: f.area.cc:1440 +#: f.area.cc:1432 msgid "searching" msgstr "Поиск" -#: f.area.cc:1472 +#: f.area.cc:1463 msgid "outline has a gap" msgstr "Контур имеет разрыв" -#: f.area.cc:1476 +#: f.area.cc:1467 msgid "success" msgstr "Успешно" @@ -436,113 +440,114 @@ msgid "found %d pixels" msgstr "Найдено %d пикселей" -#: f.area.cc:1918 f.area.cc:1935 f.area.cc:1955 f.area.cc:2260 f.area.cc:2387 +#: f.area.cc:1926 f.area.cc:1943 f.area.cc:1963 f.area.cc:2278 f.area.cc:2354 +#: f.area.cc:2511 msgid "the area is not finished" msgstr "Область не замкнута" -#: f.area.cc:2049 +#: f.area.cc:2052 msgid "Edge calculation in progress" msgstr "Процесс вычисления границы" -#: f.area.cc:2058 +#: f.area.cc:2061 msgid "Area Edge Calc" msgstr "Расчет границы области" -#: f.area.cc:2338 +#: f.area.cc:2462 msgid "load area from a file" msgstr "" -#: f.area.cc:2421 +#: f.area.cc:2545 msgid "save area as a PNG file" msgstr "" -#: f.area.cc:2449 +#: f.area.cc:2573 msgid "position with mouse click/drag" msgstr "Укажите мышью новое положение" -#: f.area.cc:2493 +#: f.area.cc:2617 msgid "Paste Image" msgstr "Вставить изображение" -#: f.area.cc:2498 f.batch.cc:1135 f.batch.cc:1626 +#: f.area.cc:2622 f.batch.cc:1136 f.batch.cc:1627 msgid "resize" msgstr "Изменить размер" -#: f.batch.cc:103 f.widgets.cc:524 +#: f.batch.cc:104 f.widgets.cc:526 msgid "Batch Convert" msgstr "Групповое преобразование" -#: f.batch.cc:110 f.file.cc:781 +#: f.batch.cc:111 f.file.cc:782 msgid "New Name" msgstr "Новое Имя" -#: f.batch.cc:112 +#: f.batch.cc:113 msgid "base" msgstr "базовое имя" -#: f.batch.cc:114 +#: f.batch.cc:115 msgid "adder" msgstr "модификатор" -#: f.batch.cc:118 +#: f.batch.cc:119 msgid "New Location" msgstr "Новое Расположение" -#: f.batch.cc:123 +#: f.batch.cc:124 msgid "New File Type" msgstr "Новый тип файла" -#: f.batch.cc:127 f.batch.cc:135 +#: f.batch.cc:128 f.batch.cc:136 msgid "no change" msgstr "без изменения" -#: f.batch.cc:130 +#: f.batch.cc:131 msgid "max. Width" msgstr "макс. ширина" -#: f.batch.cc:138 f.batch.cc:531 +#: f.batch.cc:139 f.batch.cc:532 msgid "Delete Originals" msgstr "Удалять оригиналы" -#: f.batch.cc:139 f.batch.cc:528 +#: f.batch.cc:140 f.batch.cc:529 msgid "Copy Metadata" msgstr "Копировать метаданные" -#: f.batch.cc:140 f.batch.cc:529 f.edit.cc:1396 f.widgets.cc:432 -#: f.widgets.cc:672 +#: f.batch.cc:141 f.batch.cc:530 f.edit.cc:1407 f.widgets.cc:433 +#: f.widgets.cc:677 msgid "Upright" msgstr "Автоповорот" -#: f.batch.cc:143 f.batch.cc:530 f.batch.cc:1144 f.batch.cc:1635 -#: f.repair.cc:115 f.widgets.cc:448 +#: f.batch.cc:144 f.batch.cc:531 f.batch.cc:1145 f.batch.cc:1636 +#: f.repair.cc:115 f.widgets.cc:449 msgid "Sharpen" msgstr "Увеличить резкость" -#: f.batch.cc:145 f.batch.cc:1146 f.batch.cc:1637 +#: f.batch.cc:146 f.batch.cc:1147 f.batch.cc:1638 msgid "amount" msgstr "сила" -#: f.batch.cc:148 f.batch.cc:1149 f.batch.cc:1640 +#: f.batch.cc:149 f.batch.cc:1150 f.batch.cc:1641 msgid "threshold" msgstr "порог" -#: f.batch.cc:250 +#: f.batch.cc:251 msgid "file type not supported" msgstr "формат файла не поддерживается" -#: f.batch.cc:314 +#: f.batch.cc:315 msgid "cannot create new file" msgstr "невозможно создать новый файл" -#: f.batch.cc:361 +#: f.batch.cc:362 msgid "updating albums ..." msgstr "обновление альбомов" -#: f.batch.cc:434 f.batch.cc:1422 f.batch.cc:1828 f.file.cc:1202 +#: f.batch.cc:435 f.batch.cc:1423 f.batch.cc:1829 f.file.cc:1206 msgid "Select directory" msgstr "Выбрать каталог" -#: f.batch.cc:480 +#: f.batch.cc:481 msgid "" "new name/base/adder unreasonable\n" " e.g. newname ### 100 10" @@ -550,150 +555,183 @@ "плохое новое имя/модификатор\n" "например имя ### 100 10" -#: f.batch.cc:503 +#: f.batch.cc:504 #, c-format msgid "max. size %d x %d is not reasonable" msgstr "Макс.размер %d x %d не приемлем" -#: f.batch.cc:522 +#: f.batch.cc:523 #, c-format msgid "Convert %d image files" msgstr "Конвертируется %d изображений" -#: f.batch.cc:523 +#: f.batch.cc:524 msgid "Rename to" msgstr "Переименовать в" -#: f.batch.cc:524 +#: f.batch.cc:525 msgid "Convert to" msgstr "Преобразовать в" -#: f.batch.cc:525 +#: f.batch.cc:526 msgid "Resize within" msgstr "Новый размер" -#: f.batch.cc:526 +#: f.batch.cc:527 msgid "Output to" msgstr "Записать в" -#: f.batch.cc:532 +#: f.batch.cc:533 msgid "PROCEED?" msgstr "ПРОДОЛЖИТЬ?" -#: f.batch.cc:686 f.widgets.cc:525 +#: f.batch.cc:687 f.widgets.cc:527 msgid "Batch Upright" msgstr "Пакетное ориентирование" -#: f.batch.cc:692 +#: f.batch.cc:693 msgid "Survey all files" msgstr "" -#: f.batch.cc:746 +#: f.batch.cc:747 msgid "file cannot be read" msgstr "" -#: f.batch.cc:864 +#: f.batch.cc:865 msgid "cannot select both options" msgstr "" -#: f.batch.cc:908 f.widgets.cc:526 +#: f.batch.cc:909 f.widgets.cc:528 msgid "Batch Delete/Trash" msgstr "" -#: f.batch.cc:913 +#: f.batch.cc:914 msgid "delete" msgstr "" -#: f.batch.cc:916 +#: f.batch.cc:917 msgid "trash" msgstr "" -#: f.batch.cc:1078 +#: f.batch.cc:1079 msgid "Batch Convert RAW Files (DCraw)" msgstr "Пакетное преобразование RAW (DCraw)" -#: f.batch.cc:1087 +#: f.batch.cc:1088 msgid "DCraw not installed" msgstr "DCraw не установлен" -#: f.batch.cc:1122 f.batch.cc:1613 +#: f.batch.cc:1123 f.batch.cc:1614 msgid "output location" msgstr "выходная папка" -#: f.batch.cc:1127 f.batch.cc:1618 +#: f.batch.cc:1128 f.batch.cc:1619 msgid "output file type" msgstr "тип выходного файла" -#: f.batch.cc:1158 +#: f.batch.cc:1159 msgid "white balance" msgstr "баланс белого" -#: f.batch.cc:1159 +#: f.batch.cc:1160 msgid "interpolation" msgstr "интерполяция" -#: f.batch.cc:1160 +#: f.batch.cc:1161 msgid "color space" msgstr "цветовое пространство" -#: f.batch.cc:1161 +#: f.batch.cc:1162 msgid "gamma curve" msgstr "гамма-кривая" -#: f.batch.cc:1164 +#: f.batch.cc:1165 msgid "camera" msgstr "камера" -#: f.batch.cc:1165 +#: f.batch.cc:1166 msgid "fixed" msgstr "фиксированный" -#: f.batch.cc:1166 +#: f.batch.cc:1167 msgid "calculated" msgstr "вычисленный" -#: f.batch.cc:1183 +#: f.batch.cc:1184 #, fuzzy msgid "default" msgstr "по умолчанию" -#: f.batch.cc:1189 +#: f.batch.cc:1190 msgid "defaults" msgstr "по умолчанию" -#: f.batch.cc:1576 +#: f.batch.cc:1577 msgid "Batch Convert RAW Files (Raw Therapee)" msgstr "Пакетное преобразование RAW (RAW Therapee)" -#: f.batch.cc:1585 f.file.cc:488 +#: f.batch.cc:1586 f.file.cc:489 msgid "Raw Therapee not installed" msgstr "Raw Therapee не установлен" -#: f.batch.cc:1894 +#: f.batch.cc:1895 msgid "Brasero not installed" msgstr "Brasero не установлен" -#: f.bend.cc:82 f.widgets.cc:469 +#: f.batch.cc:1984 f.widgets.cc:532 +msgid "Find Duplicate Images" +msgstr "Поиск повторяющихся изображений" + +#: f.batch.cc:1986 f.tools.cc:927 +msgid "Thumbnail size" +msgstr "Размер иконки" + +#: f.batch.cc:1989 +msgid "pixel difference" +msgstr "попиксельная разница" + +#: f.batch.cc:1992 +msgid "pixel count" +msgstr "количество пикселей" + +#: f.batch.cc:1995 +msgid "Images:" +msgstr "Изображений:" + +#: f.batch.cc:1996 +msgid "searching ..." +msgstr "поиск..." + +#: f.batch.cc:1998 +msgid "Duplicates:" +msgstr "Дублей:" + +#: f.batch.cc:2016 +#, c-format +msgid "only %d image thumbnails found" +msgstr "найдено лишь %d иконок" + +#: f.bend.cc:86 f.widgets.cc:470 msgid "Unbend" msgstr "Выпрямить изображение" -#: f.bend.cc:90 f.edit.cc:4237 f.effects.cc:4620 +#: f.bend.cc:94 f.edit.cc:4248 f.effects.cc:4625 msgid "vertical" msgstr "вертикаль" -#: f.bend.cc:91 f.edit.cc:4236 f.effects.cc:4616 +#: f.bend.cc:95 f.edit.cc:4247 f.effects.cc:4621 msgid "horizontal" msgstr "горизонталь" -#: f.bend.cc:92 +#: f.bend.cc:96 msgid "linear" msgstr "Линейный" -#: f.bend.cc:95 +#: f.bend.cc:99 msgid "curved" msgstr "Изогнутый" -#: f.bend.cc:363 +#: f.bend.cc:367 msgid "" " Click the four corners of a tetragon area. Press [apply]. \n" " The image is warped to make the tetragon into a rectangle." @@ -701,15 +739,15 @@ "Кликните на четырех углах площади четырехугольника. Нажмите [Применить] \n" "Четырехугольник станет прямоугольником." -#: f.bend.cc:376 +#: f.bend.cc:384 msgid "Perspective Correction" msgstr "Коррекция перстпективы" -#: f.bend.cc:582 +#: f.bend.cc:590 msgid "must have 4 corners" msgstr "должно быть 4 угла" -#: f.bend.cc:704 +#: f.bend.cc:712 msgid "" " Select an area to warp using select area function. \n" " Press [start warp] and pull area with mouse. \n" @@ -721,19 +759,19 @@ "При необходимости сделайте несколько движений . \n" "Для завершения выберите другую область или нажмите [Изменить]" -#: f.bend.cc:717 f.widgets.cc:471 +#: f.bend.cc:725 f.widgets.cc:472 msgid "Warp area" msgstr "Деформация области" -#: f.bend.cc:722 +#: f.bend.cc:730 msgid "start warp" msgstr "Начать деформацию" -#: f.bend.cc:780 +#: f.bend.cc:788 msgid "no active Select Area" msgstr "Не выбрана активная область" -#: f.bend.cc:1121 f.bend.cc:1431 +#: f.bend.cc:1129 f.bend.cc:1443 msgid "" " Pull an image position using the mouse. \n" " Make multiple mouse pulls until satisfied. \n" @@ -743,19 +781,19 @@ "При необходимости сделайте несколько движений . \n" "По окончании нажмите [Изменить]." -#: f.bend.cc:1135 f.widgets.cc:472 +#: f.bend.cc:1147 f.widgets.cc:473 msgid "Warp curved" msgstr "Деформация в кривых" -#: f.bend.cc:1144 f.mashup.cc:1836 +#: f.bend.cc:1156 f.mashup.cc:1836 msgid "warp span" msgstr "область искривления" -#: f.bend.cc:1445 f.widgets.cc:473 +#: f.bend.cc:1461 f.widgets.cc:474 msgid "Warp linear" msgstr "Деформация линейная" -#: f.bend.cc:1760 +#: f.bend.cc:1776 msgid "" " Pull on an image corner using the mouse. \n" " Make multiple mouse pulls until satisfied. \n" @@ -765,15 +803,15 @@ "При необходимости сделайте несколько движений . \n" "По окончании нажмите [Изменить]" -#: f.bend.cc:1772 f.widgets.cc:474 +#: f.bend.cc:1792 f.widgets.cc:475 msgid "Warp affine" msgstr "Деформация аффинная" -#: f.bend.cc:2119 +#: f.bend.cc:2139 msgid "Flatten Book Page Photo" msgstr "Выровнять фотографию книжной страницы" -#: f.bend.cc:2120 +#: f.bend.cc:2140 msgid "" "Trim image to isolate one page. \n" "Map top and bottom edges with \n" @@ -783,88 +821,88 @@ "Карта верхней и нижней границ в \n" "4+ клика мыши, затем растянуть: " -#: f.bend.cc:2123 +#: f.bend.cc:2143 msgid "Stretch curved-down surfaces:" msgstr "Растянуть изогнутые вниз поверхности:" -#: f.bend.cc:2178 +#: f.bend.cc:2198 msgid "top:" msgstr "Верх:" -#: f.bend.cc:2181 +#: f.bend.cc:2201 msgid "bottom:" msgstr "Низ:" -#: f.combine.cc:2119 f.combine.cc:2750 f.combine.cc:3406 f.combine.cc:3938 +#: f.combine.cc:2108 f.combine.cc:2739 f.combine.cc:3395 f.combine.cc:3927 msgid "Select 2 to 9 files" msgstr "Выберите от 2 до 9 файлов" -#: f.combine.cc:2140 f.combine.cc:2771 f.combine.cc:3427 f.combine.cc:3959 +#: f.combine.cc:2129 f.combine.cc:2760 f.combine.cc:3416 f.combine.cc:3948 msgid "Images are not all the same size" msgstr "Изображения разного размера" -#: f.combine.cc:2484 +#: f.combine.cc:2473 msgid "Adjust Image Contributions" msgstr "Настройка состава изображения" -#: f.combine.cc:2488 +#: f.combine.cc:2477 msgid "dark pixels" msgstr "Темные пиксели" -#: f.combine.cc:2490 +#: f.combine.cc:2479 msgid "light pixels" msgstr "Светлые пиксели" -#: f.combine.cc:2492 +#: f.combine.cc:2481 msgid "file:" msgstr "Файл:" -#: f.combine.cc:3007 +#: f.combine.cc:2996 msgid "Paint and Warp Image" msgstr "Окраска и деформация изображения" -#: f.combine.cc:3011 f.combine.cc:3656 f.combine.cc:6246 f.effects.cc:3851 -#: f.widgets.cc:555 f.widgets.cc:578 f.widgets.cc:600 +#: f.combine.cc:3000 f.combine.cc:3645 f.combine.cc:6236 f.effects.cc:3858 +#: f.widgets.cc:560 f.widgets.cc:583 f.widgets.cc:605 msgid "Image" msgstr "Изображение" -#: f.combine.cc:3015 +#: f.combine.cc:3004 msgid "paint" msgstr "Окраска" -#: f.combine.cc:3016 +#: f.combine.cc:3005 msgid "warp" msgstr "Деформация" -#: f.combine.cc:3654 +#: f.combine.cc:3643 msgid "Select and Paint Image" msgstr "Выбор и окраска изображения" -#: f.combine.cc:4130 +#: f.combine.cc:4119 msgid "Adjust Pixel Composition" msgstr "Настроить попиксельное объединение" -#: f.combine.cc:4132 +#: f.combine.cc:4121 msgid "use average" msgstr "использовать среднее" -#: f.combine.cc:4133 +#: f.combine.cc:4122 msgid "use median" msgstr "использовать медиану" -#: f.combine.cc:4135 +#: f.combine.cc:4124 msgid "omit low pixel" msgstr "пропустить тёмный пиксель" -#: f.combine.cc:4136 +#: f.combine.cc:4125 msgid "omit high pixel" msgstr "пропустить светлый пиксель" -#: f.combine.cc:4398 f.combine.cc:5504 +#: f.combine.cc:4387 f.combine.cc:5493 msgid "Select 2 to 4 files" msgstr "Выберите от 2 до 4 файлов" -#: f.combine.cc:4473 +#: f.combine.cc:4462 msgid "" "Drag images into rough alignment.\n" "To rotate, drag from lower edge." @@ -872,76 +910,76 @@ "Потяните изображение для грубого выравнивания.\n" "Для вращения потяните за нижний край." -#: f.combine.cc:4475 f.combine.cc:5581 +#: f.combine.cc:4464 f.combine.cc:5570 msgid "no curve (scanned image)" msgstr "кривая отсутствует (сканированное изображение)" -#: f.combine.cc:4476 f.combine.cc:5582 +#: f.combine.cc:4465 f.combine.cc:5571 msgid "Search for lens mm" msgstr "Поиск фокусного расстояния" -#: f.combine.cc:4477 f.combine.cc:5583 +#: f.combine.cc:4466 f.combine.cc:5572 msgid "Save lens mm → image EXIF" msgstr "Сохранить фокусное расстояние в EXIF" -#: f.combine.cc:4538 f.combine.cc:5644 +#: f.combine.cc:4527 f.combine.cc:5633 msgid "Pre-align Images" msgstr "Предварительное выравнивание изображений" -#: f.combine.cc:4542 f.combine.cc:5648 +#: f.combine.cc:4531 f.combine.cc:5637 msgid "lens mm" msgstr "Фокусное расстояние" -#: f.combine.cc:4547 f.combine.cc:5653 +#: f.combine.cc:4536 f.combine.cc:5642 msgid "no auto warp" msgstr "без автодеформации" -#: f.combine.cc:4549 f.combine.cc:5655 f.widgets.cc:439 f.widgets.cc:671 +#: f.combine.cc:4538 f.combine.cc:5644 f.widgets.cc:440 f.widgets.cc:676 msgid "Resize" msgstr "Изменить размер" -#: f.combine.cc:4550 f.combine.cc:5656 +#: f.combine.cc:4539 f.combine.cc:5645 msgid "resize window" msgstr "Изменить размер окна" -#: f.combine.cc:4558 f.combine.cc:5664 +#: f.combine.cc:4547 f.combine.cc:5653 msgid "do not warp images during auto-alignment" msgstr "не деформировать изображение при автовыравнивании" -#: f.combine.cc:4603 f.combine.cc:5709 +#: f.combine.cc:4592 f.combine.cc:5698 msgid "use two images only" msgstr "Использовать только два изображения" -#: f.combine.cc:4631 f.combine.cc:4835 f.combine.cc:5021 f.combine.cc:5735 -#: f.combine.cc:5940 f.combine.cc:6126 +#: f.combine.cc:4620 f.combine.cc:4824 f.combine.cc:5010 f.combine.cc:5724 +#: f.combine.cc:5928 f.combine.cc:6114 msgid "Too little overlap, cannot align" msgstr "Слишком маленькое наложение, не удается выровнять" -#: f.combine.cc:5096 f.combine.cc:6202 +#: f.combine.cc:5088 f.combine.cc:6192 msgid "Match Brightness and Color" msgstr "Подбор яркости и цветности" -#: f.combine.cc:5141 +#: f.combine.cc:5133 msgid "Select image" msgstr "Выберите изображение" -#: f.combine.cc:5156 f.combine.cc:6261 +#: f.combine.cc:5148 f.combine.cc:6251 msgid "auto color" msgstr "Автокоррекция цветов" -#: f.combine.cc:5157 f.combine.cc:6262 +#: f.combine.cc:5149 f.combine.cc:6252 msgid "file color" msgstr "Сохранить цвета" -#: f.combine.cc:5163 f.combine.cc:6268 +#: f.combine.cc:5155 f.combine.cc:6258 msgid "mouse warp" msgstr "деформация мышью" -#: f.combine.cc:5166 +#: f.combine.cc:5158 msgid "curved image" msgstr "убрать искажения" -#: f.combine.cc:5579 +#: f.combine.cc:5568 msgid "" "Drag images into rough alignment.\n" "To rotate, drag from right edge." @@ -949,11 +987,11 @@ "Потяните изображение для грубого выравнивания.\n" "Для вращения потяните за правый край." -#: f.combine.cc:6482 +#: f.combine.cc:6469 msgid "pano tools (hugin) not installed" msgstr "" -#: f.combine.cc:6491 +#: f.combine.cc:6478 msgid "Select at least 2 files" msgstr "Выберите не менее 2 файлов" @@ -965,255 +1003,255 @@ msgid "Minor rotate: drag right edge with mouse" msgstr "Плавное вращение перетаскивание за правый край" -#: f.edit.cc:167 f.widgets.cc:431 f.widgets.cc:670 +#: f.edit.cc:171 f.widgets.cc:432 f.widgets.cc:675 msgid "Trim/Rotate" msgstr "Обрезать/Повернуть" -#: f.edit.cc:179 f.edit.cc:577 +#: f.edit.cc:183 f.edit.cc:585 msgid "ratio" msgstr "Соотношение" -#: f.edit.cc:183 +#: f.edit.cc:187 msgid "trim size:" msgstr "размер обрезки:" -#: f.edit.cc:188 +#: f.edit.cc:192 msgid "Lock Ratio" msgstr "Фиксированное соотношение" -#: f.edit.cc:193 +#: f.edit.cc:197 msgid "Customize" msgstr "Настройка" -#: f.edit.cc:201 +#: f.edit.cc:205 msgid "Rotate: degrees" msgstr "Поворот: градусы" -#: f.edit.cc:203 +#: f.edit.cc:207 msgid "auto-trim" msgstr "автообрезка" -#: f.edit.cc:573 +#: f.edit.cc:581 msgid "Trim Buttons" msgstr "Кнопки обрезки" -#: f.edit.cc:576 +#: f.edit.cc:584 msgid "label" msgstr "Метка" -#: f.edit.cc:1394 +#: f.edit.cc:1405 msgid "Upright Image" msgstr "Вертикальное изображение" -#: f.edit.cc:1458 +#: f.edit.cc:1469 msgid "rotation unknown" msgstr "ориентация неизвестна" -#: f.edit.cc:2009 f.widgets.cc:435 f.widgets.cc:674 +#: f.edit.cc:2020 f.widgets.cc:436 f.widgets.cc:679 msgid "Retouch Combo" msgstr "Ретушь" -#: f.edit.cc:2030 +#: f.edit.cc:2041 msgid "Amplifier" msgstr "Усилитель" -#: f.edit.cc:2031 fotoxx.h:1079 +#: f.edit.cc:2042 fotoxx.h:1087 msgid "Brightness" msgstr "Яркость" -#: f.edit.cc:2032 fotoxx.h:1087 +#: f.edit.cc:2043 fotoxx.h:1095 msgid "Contrast" msgstr "Контраст" -#: f.edit.cc:2033 +#: f.edit.cc:2044 msgid "Low Color" msgstr "Цвет мин" -#: f.edit.cc:2034 +#: f.edit.cc:2045 msgid "Warmer" msgstr "Теплее" -#: f.edit.cc:2035 f.effects.cc:1009 +#: f.edit.cc:2046 f.effects.cc:1010 msgid "Dark Areas" msgstr "Тёмные зоны" -#: f.edit.cc:2044 +#: f.edit.cc:2055 msgid "Max." msgstr "Макс." -#: f.edit.cc:2045 f.edit.cc:2046 f.edit.cc:2047 +#: f.edit.cc:2056 f.edit.cc:2057 f.edit.cc:2058 msgid "High" msgstr "Макс" -#: f.edit.cc:2048 +#: f.edit.cc:2059 msgid "Cooler" msgstr "Холоднее" -#: f.edit.cc:2049 +#: f.edit.cc:2060 msgid "Bright" msgstr "Светлые" -#: f.edit.cc:2052 f.tools.cc:1595 +#: f.edit.cc:2063 f.tools.cc:1621 msgid "Brightness Distribution" msgstr "Распределение яркости" -#: f.edit.cc:2055 +#: f.edit.cc:2066 msgid "Click for white balance or black level" msgstr "Устанавливать ББ и точку чёрного" -#: f.edit.cc:2058 +#: f.edit.cc:2069 msgid "Settings File" msgstr "Файл установок" -#: f.edit.cc:2062 +#: f.edit.cc:2073 msgid "recall previous settings used" msgstr "вернут предыдущие установки" -#: f.edit.cc:2764 +#: f.edit.cc:2775 msgid "Adjust Brightness Distribution" msgstr "Выровнять распределение яркости" -#: f.edit.cc:2801 +#: f.edit.cc:2812 msgid "Low Cutoff" msgstr "" -#: f.edit.cc:2802 +#: f.edit.cc:2813 msgid "High Cutoff" msgstr "" -#: f.edit.cc:2803 +#: f.edit.cc:2814 msgid "Low Flatten" msgstr "" -#: f.edit.cc:2804 +#: f.edit.cc:2815 msgid "Mid Flatten" msgstr "" -#: f.edit.cc:2805 +#: f.edit.cc:2816 msgid "High Flatten" msgstr "" -#: f.edit.cc:2806 +#: f.edit.cc:2817 msgid "Low Stretch" msgstr "" -#: f.edit.cc:2807 +#: f.edit.cc:2818 msgid "Mid Stretch" msgstr "" -#: f.edit.cc:2808 +#: f.edit.cc:2819 msgid "High Stretch" msgstr "" -#: f.edit.cc:3138 +#: f.edit.cc:3149 msgid "Zonal Flatten Brightness" msgstr "" -#: f.edit.cc:3169 +#: f.edit.cc:3180 msgid "Zones" msgstr "" -#: f.edit.cc:3176 +#: f.edit.cc:3187 msgid "Deband Dark" msgstr "" -#: f.edit.cc:3179 +#: f.edit.cc:3190 msgid "Deband Bright" msgstr "" -#: f.edit.cc:3624 f.widgets.cc:438 f.widgets.cc:677 +#: f.edit.cc:3635 f.widgets.cc:439 f.widgets.cc:682 msgid "Tone Mapping" msgstr "Преобразование тона" -#: f.edit.cc:3653 +#: f.edit.cc:3664 msgid "low" msgstr "Низкий" -#: f.edit.cc:3655 +#: f.edit.cc:3666 msgid "high" msgstr "Высокий" -#: f.edit.cc:3658 +#: f.edit.cc:3669 msgid "Amplify" msgstr "Усилить" -#: f.edit.cc:4033 +#: f.edit.cc:4044 msgid "Lock aspect ratio" msgstr "Зафиксировать соотношение сторон" -#: f.edit.cc:4055 +#: f.edit.cc:4066 msgid "Resize Image" msgstr "Изменить размер изображения" -#: f.edit.cc:4232 f.widgets.cc:440 +#: f.edit.cc:4243 f.widgets.cc:441 msgid "Flip" msgstr "Отразить зеркально" -#: f.edit.cc:4338 +#: f.edit.cc:4349 msgid "+Version" msgstr "" -#: f.edit.cc:4361 +#: f.edit.cc:4372 msgid "Write Text on Image" msgstr "Написать текст на изображении" -#: f.edit.cc:4362 +#: f.edit.cc:4373 msgid "Enter text, click/drag on image, right click to remove" msgstr "" "Введите текст, кликните/переместите по изображению, клик правой кнопкой для " "удаления" -#: f.edit.cc:4411 f.mashup.cc:2437 +#: f.edit.cc:4422 f.mashup.cc:2437 msgid "Text" msgstr "Текст" -#: f.edit.cc:4416 +#: f.edit.cc:4427 msgid "Use metadata key" msgstr "" -#: f.edit.cc:4421 +#: f.edit.cc:4432 msgid "Use text file" msgstr "" -#: f.edit.cc:4440 f.mashup.cc:2455 +#: f.edit.cc:4451 f.mashup.cc:2455 msgid "text" msgstr "Текст" -#: f.edit.cc:4441 f.edit.cc:5279 f.mashup.cc:2456 f.mashup.cc:2798 +#: f.edit.cc:4452 f.edit.cc:5290 f.mashup.cc:2456 f.mashup.cc:2798 msgid "backing" msgstr "Фон" -#: f.edit.cc:4442 f.edit.cc:5280 f.mashup.cc:2457 f.mashup.cc:2799 +#: f.edit.cc:4453 f.edit.cc:5291 f.mashup.cc:2457 f.mashup.cc:2799 msgid "outline" msgstr "Контур" -#: f.edit.cc:4443 f.edit.cc:5281 f.mashup.cc:2458 f.mashup.cc:2800 +#: f.edit.cc:4454 f.edit.cc:5292 f.mashup.cc:2458 f.mashup.cc:2800 msgid "shadow" msgstr "тень" -#: f.edit.cc:4469 +#: f.edit.cc:4480 msgid "save to current file" msgstr "" -#: f.edit.cc:4470 f.file.cc:605 +#: f.edit.cc:4481 f.file.cc:606 msgid "save as new file version" msgstr "сохранить как новую версию" -#: f.edit.cc:4471 +#: f.edit.cc:4482 msgid "" "save to current file \n" "open next file with same text" msgstr "" -#: f.edit.cc:4632 f.mashup.cc:2557 +#: f.edit.cc:4643 f.mashup.cc:2557 f.tools.cc:1060 msgid "select font" msgstr "Выбрать шрифт" -#: f.edit.cc:4896 +#: f.edit.cc:4907 msgid "text file is defective" msgstr "текстовый файл повреждён" -#: f.edit.cc:5219 +#: f.edit.cc:5230 msgid "" "Enter line or arrow properties in dialog, \n" "click/drag on image, right click to remove" @@ -1221,23 +1259,23 @@ "Введите свойства линии/стрелки в диалог \n" "клик/перемещение по полю, правый клик для удаления" -#: f.edit.cc:5250 +#: f.edit.cc:5261 msgid "Write Line or Arrow on Image" msgstr "Добавить линию/стрелку на изображение" -#: f.edit.cc:5258 f.mashup.cc:2777 +#: f.edit.cc:5269 f.mashup.cc:2777 msgid "Line length" msgstr "Длина линии" -#: f.edit.cc:5265 f.mashup.cc:2784 +#: f.edit.cc:5276 f.mashup.cc:2784 msgid "Arrow head" msgstr "Направление стрелки" -#: f.edit.cc:5278 f.mashup.cc:2797 +#: f.edit.cc:5289 f.mashup.cc:2797 msgid "line" msgstr "линия" -#: f.edit.cc:5307 +#: f.edit.cc:5318 msgid "" "fix line/arrow in layout \n" " start new line/arrow" @@ -1245,11 +1283,11 @@ "фиксировать линию/стрелку в размещении \n" " начать новую линию/стрелку" -#: f.edit.cc:5896 f.widgets.cc:443 +#: f.edit.cc:5907 f.widgets.cc:444 msgid "Paint Edits" msgstr "Редактор окраски" -#: f.edit.cc:5903 f.edit.cc:6132 fotoxx-15.08.cc:3172 +#: f.edit.cc:5914 f.edit.cc:6143 fotoxx-15.09.cc:3123 msgid "" "Select area cannot be kept.\n" "Continue?" @@ -1257,59 +1295,59 @@ "Избранная область не может быть сохранена.\n" "Продолжить?" -#: f.edit.cc:5911 f.edit.cc:6140 f.tools.cc:2127 +#: f.edit.cc:5922 f.edit.cc:6151 f.tools.cc:2147 msgid "Edit function must be active" msgstr "Функция редактирования должна быть активна" -#: f.edit.cc:5916 +#: f.edit.cc:5927 msgid "Cannot use Paint Edits" msgstr "" -#: f.edit.cc:5945 +#: f.edit.cc:5956 msgid "power: center" msgstr "Усиление: центр" -#: f.edit.cc:5950 +#: f.edit.cc:5961 msgid "reset area" msgstr "Сбросить область" -#: f.edit.cc:6125 f.widgets.cc:444 +#: f.edit.cc:6136 f.widgets.cc:445 msgid "Leverage Edits" msgstr "Нелинейное редактирование" -#: f.edit.cc:6126 +#: f.edit.cc:6137 msgid "Edit Function Amplifier" msgstr "Усилитель функций редактирования" -#: f.edit.cc:6145 +#: f.edit.cc:6156 msgid "Cannot use Leverage Edits" msgstr "" -#: f.edit.cc:6178 +#: f.edit.cc:6189 msgid "minimum" msgstr "минимум" -#: f.edit.cc:6180 +#: f.edit.cc:6191 msgid "maximum" msgstr "максимум" -#: f.edit.cc:6481 +#: f.edit.cc:6490 msgid "Edit Plugins" msgstr "Редактировать плагины" -#: f.edit.cc:6482 +#: f.edit.cc:6491 msgid "Edit plugins menu" msgstr "Редактировать меню плагинов" -#: f.edit.cc:6490 +#: f.edit.cc:6499 msgid "Run as Fotoxx edit function" msgstr "Запустить как функцию редактирования Fotoxx" -#: f.edit.cc:6728 +#: f.edit.cc:6737 msgid "Plugin working ..." msgstr "Работает плагин..." -#: f.edit.cc:6737 +#: f.edit.cc:6746 msgid "plugin failed" msgstr "сбой плагина" @@ -1341,7 +1379,7 @@ msgid "Background" msgstr "" -#: f.effects.cc:713 f.widgets.cc:480 +#: f.effects.cc:713 f.widgets.cc:481 msgid "Line Drawing" msgstr "Рисунок линиями" @@ -1349,303 +1387,303 @@ msgid "black/white" msgstr "ч.б" -#: f.effects.cc:1003 f.widgets.cc:481 +#: f.effects.cc:1004 f.widgets.cc:482 msgid "Color Drawing" msgstr "Рисунок цветом" -#: f.effects.cc:1010 +#: f.effects.cc:1011 msgid "Bright Areas" msgstr "Яркие области" -#: f.effects.cc:1264 f.widgets.cc:482 +#: f.effects.cc:1265 f.widgets.cc:483 msgid "Graduated Blur" msgstr "Размытие полутонов" -#: f.effects.cc:1268 +#: f.effects.cc:1269 msgid "Contrast Limit" msgstr "Ограничение контрастности" -#: f.effects.cc:1271 f.repair.cc:747 +#: f.effects.cc:1272 f.repair.cc:748 msgid "Blur Radius" msgstr "Радиус размытия" -#: f.effects.cc:1485 +#: f.effects.cc:1486 msgid "Simulate Embossing" msgstr "Имитировать чеканку" -#: f.effects.cc:1502 +#: f.effects.cc:1503 msgid "depth" msgstr "Глубина" -#: f.effects.cc:1703 +#: f.effects.cc:1705 msgid "Simulate Tiles" msgstr "Имитировать мозаику" -#: f.effects.cc:1707 +#: f.effects.cc:1709 msgid "tile size" msgstr "Размер мозаики" -#: f.effects.cc:1710 +#: f.effects.cc:1712 msgid "tile gap" msgstr "Расстояние между элементами" -#: f.effects.cc:1713 +#: f.effects.cc:1715 msgid "3D depth" msgstr "Глубина 3D" -#: f.effects.cc:1937 +#: f.effects.cc:1939 msgid "Convert Image to Dots" msgstr "Преобразование изображения в точки" -#: f.effects.cc:1941 +#: f.effects.cc:1943 msgid "dot size" msgstr "Размер точки" -#: f.effects.cc:2161 +#: f.effects.cc:2168 msgid "Simulate Painting" msgstr "Имитировать живопись" -#: f.effects.cc:2165 +#: f.effects.cc:2172 msgid "color depth" msgstr "Глубина цвета" -#: f.effects.cc:2169 +#: f.effects.cc:2176 msgid "patch area goal" msgstr "Мозаичные области" -#: f.effects.cc:2173 +#: f.effects.cc:2180 msgid "req. color match" msgstr "Точность совпадения цвета " -#: f.effects.cc:2177 +#: f.effects.cc:2184 msgid "borders" msgstr "Кромки" -#: f.effects.cc:2750 f.widgets.cc:487 +#: f.effects.cc:2757 f.widgets.cc:488 msgid "Vignette" msgstr "Инструмент виньетка" -#: f.effects.cc:3118 +#: f.effects.cc:3125 msgid "Add Texture" msgstr "Добавить текстуру" -#: f.effects.cc:3334 +#: f.effects.cc:3341 msgid "Background Pattern" msgstr "Паттерн фона" -#: f.effects.cc:3338 +#: f.effects.cc:3345 msgid "Pattern File:" msgstr "Файл паттерна:" -#: f.effects.cc:3343 +#: f.effects.cc:3350 msgid "Geometry" msgstr "Геометрия" -#: f.effects.cc:3344 +#: f.effects.cc:3351 msgid "Calculate" msgstr "Вычислить" -#: f.effects.cc:3346 +#: f.effects.cc:3353 msgid "Zoom" msgstr "Приблизить" -#: f.effects.cc:3357 f.widgets.cc:489 +#: f.effects.cc:3364 f.widgets.cc:490 msgid "Pattern" msgstr "Паттерн" -#: f.effects.cc:3364 +#: f.effects.cc:3371 msgid "Overlap" msgstr "Наложение" -#: f.effects.cc:3371 +#: f.effects.cc:3378 msgid "Opacity" msgstr "Прозрачность" -#: f.effects.cc:3410 +#: f.effects.cc:3417 msgid "choose pattern tile" msgstr "выбрать элемент паттерна" -#: f.effects.cc:3755 +#: f.effects.cc:3762 msgid "Create Mosaic" msgstr "Создать мозаику" -#: f.effects.cc:3841 +#: f.effects.cc:3848 msgid "Tile" msgstr "Плитка" -#: f.effects.cc:3849 f.widgets.cc:484 +#: f.effects.cc:3856 f.widgets.cc:485 msgid "Tiles" msgstr "Мозаика" -#: f.effects.cc:3855 +#: f.effects.cc:3862 msgid "Tile blending" msgstr "Смешивание плитки" -#: f.effects.cc:3935 +#: f.effects.cc:3942 #, c-format msgid "exceeded max. tiles: %d" msgstr "превышен максимум в %d плиток" -#: f.effects.cc:3950 +#: f.effects.cc:3957 #, c-format msgid "only %d tile images found" msgstr "найдено только %d файлов плиток" -#: f.effects.cc:4326 f.widgets.cc:491 +#: f.effects.cc:4333 f.widgets.cc:492 msgid "Custom Kernel" msgstr "Матричное преобразование" -#: f.effects.cc:4330 +#: f.effects.cc:4337 msgid "Kernel size" msgstr "Размер ядра" -#: f.effects.cc:4335 +#: f.effects.cc:4342 msgid "Divisor" msgstr "Делитель" -#: f.effects.cc:4340 +#: f.effects.cc:4347 msgid "Data file" msgstr "Файл данных" -#: f.effects.cc:4606 f.widgets.cc:492 +#: f.effects.cc:4611 f.widgets.cc:493 msgid "Make Waves" msgstr "Волны" -#: f.effects.cc:4613 +#: f.effects.cc:4618 msgid "wavelength" msgstr "длина волны" -#: f.effects.cc:4614 +#: f.effects.cc:4619 msgid "amplitude" msgstr "амплитуда" -#: f.effects.cc:4615 +#: f.effects.cc:4620 msgid "variance" msgstr "отклонение" -#: f.effects.cc:4626 +#: f.effects.cc:4631 msgid "perspective" msgstr "перспектива" -#: f.effects.cc:4800 +#: f.effects.cc:4805 msgid "Pull image using the mouse." msgstr "" -#: f.effects.cc:4821 f.widgets.cc:493 +#: f.effects.cc:4826 f.widgets.cc:494 msgid "Directed Blur" msgstr "" -#: f.effects.cc:4825 +#: f.effects.cc:4830 msgid "blur span" msgstr "" -#: f.effects.cc:4828 +#: f.effects.cc:4833 msgid "intensity" msgstr "" -#: f.file.cc:247 +#: f.file.cc:248 msgid "" "use EXIF photo date or \n" " file modification date" msgstr "" -#: f.file.cc:264 f.widgets.cc:560 +#: f.file.cc:265 f.widgets.cc:565 msgid "File" msgstr "Файл" -#: f.file.cc:357 f.file.cc:1483 f.file.cc:1622 +#: f.file.cc:358 f.file.cc:1487 f.file.cc:1626 msgid "no more images" msgstr "последнее изображение" -#: f.file.cc:417 +#: f.file.cc:418 msgid "UFraw not installed" msgstr "UFraw не установлен" -#: f.file.cc:433 f.widgets.cc:679 +#: f.file.cc:434 f.widgets.cc:684 msgid "Open RAW file (ufraw)" msgstr "Открыть RAW файл (ufraw)" -#: f.file.cc:438 f.file.cc:509 +#: f.file.cc:439 f.file.cc:510 msgid "RAW type not registered in User Settings" msgstr "Данный тип RAW отсутствует в настройках пользователя" -#: f.file.cc:504 f.widgets.cc:680 +#: f.file.cc:505 f.widgets.cc:685 msgid "Open RAW file (Raw Therapee)" msgstr "Открыть файл RAW (Raw Therapee)" -#: f.file.cc:587 +#: f.file.cc:588 msgid "Save Image File" msgstr "Сохранение Файла Изображения" -#: f.file.cc:597 +#: f.file.cc:598 msgid "new version" msgstr "новая версия" -#: f.file.cc:598 +#: f.file.cc:599 msgid "new file" msgstr "новый файл" -#: f.file.cc:599 +#: f.file.cc:600 msgid "replace file" msgstr "замещение файла" -#: f.file.cc:606 f.file.cc:2281 +#: f.file.cc:607 f.file.cc:2344 msgid "save as new file name or type" msgstr "сохранить с новым именем/форматом" -#: f.file.cc:608 +#: f.file.cc:609 msgid "replace old file (OVERWRITE)" msgstr "замещение файла (ПЕРЕЗАПИСЬ)" -#: f.file.cc:646 f.file.cc:2071 +#: f.file.cc:647 f.file.cc:2124 msgid "cannot save as RAW type" msgstr "невозможно сохранить в RAW" -#: f.file.cc:773 f.widgets.cc:396 +#: f.file.cc:774 f.widgets.cc:395 msgid "Rename Image File" msgstr "Переименовать файл изображения" -#: f.file.cc:780 +#: f.file.cc:781 msgid "Old Name" msgstr "Старое Имя" -#: f.file.cc:790 +#: f.file.cc:791 msgid "previous name" msgstr "предыдущее имя" -#: f.file.cc:791 +#: f.file.cc:792 msgid "add 1" msgstr "Плюс 1" -#: f.file.cc:946 +#: f.file.cc:950 msgid "Create Blank Image" msgstr "Создать пустое изображение" -#: f.file.cc:948 +#: f.file.cc:952 msgid "file name" msgstr "Имя файла" -#: f.file.cc:982 +#: f.file.cc:986 msgid "supply a file name" msgstr "введите имя файлв" -#: f.file.cc:1114 +#: f.file.cc:1118 msgid "Copy Image File" msgstr "Копировать изображение" -#: f.file.cc:1115 +#: f.file.cc:1119 msgid "Move Image File" msgstr "Переместить изображение" -#: f.file.cc:1158 +#: f.file.cc:1162 msgid "new location" msgstr "Новое расположение" -#: f.file.cc:1228 +#: f.file.cc:1232 msgid "new location is not a directory" msgstr "Местоположение каталога не действительно" -#: f.file.cc:1270 f.file.cc:1467 f.file.cc:1605 +#: f.file.cc:1274 f.file.cc:1471 f.file.cc:1609 #, c-format msgid "" "delete failed: \n" @@ -1654,15 +1692,15 @@ "Удаление не удалось: \n" " %s" -#: f.file.cc:1312 f.widgets.cc:398 +#: f.file.cc:1316 f.widgets.cc:397 msgid "Trash Image File" msgstr "Поместить изображение в корзину" -#: f.file.cc:1313 f.file.cc:1520 +#: f.file.cc:1317 f.file.cc:1524 msgid "(automatic step to next image)" msgstr "(автоматический переход к следующему изображению)" -#: f.file.cc:1381 +#: f.file.cc:1385 msgid "" "Linux standard trash does not work. \n" "Desktop trash folder will be created." @@ -1670,7 +1708,7 @@ "Стандартная корзина Linux не работает \n" "Корзина будет создана на рабочем столе." -#: f.file.cc:1384 +#: f.file.cc:1388 msgid "" "Linux and Desktop trash do not work. \n" "Permanently delete the image file?" @@ -1678,49 +1716,99 @@ "Корзина для Linux не работает. \n" "Удалить файл окончательно?" -#: f.file.cc:1387 +#: f.file.cc:1391 #, c-format msgid "Cannot create trash folder: %s" msgstr "Не удалось создать папку корзины: %s" -#: f.file.cc:1399 +#: f.file.cc:1403 msgid "Move read-only file to trash?" msgstr "Переместить файл только для чтения в корзину?" -#: f.file.cc:1454 +#: f.file.cc:1458 #, c-format msgid "error: %s" msgstr "Ошибка: %s" -#: f.file.cc:1519 +#: f.file.cc:1523 msgid "Delete Image File - CANNOT BE REVERSED" msgstr "Удаление изображения (НЕОБРАТИМО!)" -#: f.file.cc:1595 +#: f.file.cc:1599 msgid "Delete read-only file?" msgstr "Удалить файл только для чтения?" -#: f.file.cc:1911 f.widgets.cc:390 +#: f.file.cc:1820 f.widgets.cc:547 +msgid "Quick Start" +msgstr "Быстрый Старт" + +#: f.file.cc:1823 f.widgets.cc:548 +msgid "User Guide" +msgstr "Руководство пользователя" + +#: f.file.cc:1826 f.widgets.cc:549 +msgid "User Guide Changes" +msgstr "Изменения в руководстве пользователя" + +#: f.file.cc:1829 f.widgets.cc:551 +msgid "README" +msgstr "README" + +#: f.file.cc:1832 f.widgets.cc:550 +msgid "Edit Functions Summary" +msgstr "Краткое изложение функций" + +#: f.file.cc:1835 f.widgets.cc:552 +msgid "Change Log" +msgstr "Журнал изменений" + +#: f.file.cc:1838 f.widgets.cc:553 +msgid "Log File" +msgstr "Файл журнала" + +#: f.file.cc:1841 f.widgets.cc:554 +msgid "Translations" +msgstr "Переводы" + +#: f.file.cc:1844 f.widgets.cc:555 +msgid "Home Page" +msgstr "Домашняя страница" + +#: f.file.cc:1847 f.widgets.cc:556 +msgid "About" +msgstr "О программе" + +#: f.file.cc:1851 f.widgets.cc:577 f.widgets.cc:599 fotoxx.h:1119 +msgid "Help" +msgstr "Справка" + +#: f.file.cc:1961 f.widgets.cc:389 msgid "Open Image File" msgstr "Открыть файл изображения" -#: f.file.cc:1929 +#: f.file.cc:1979 msgid "unknown file type" msgstr "неизвестный тип файла" -#: f.file.cc:2197 +#: f.file.cc:2117 +msgid "" +"Transparency map will be lost.\n" +"save to PNG file to retain." +msgstr "" + +#: f.file.cc:2260 msgid "Unable to copy EXIF/IPTC data" msgstr "Невозможно скопировать данные EXIF/IPTC" -#: f.file.cc:2297 +#: f.file.cc:2360 msgid "make current" msgstr "Сделать текущим" -#: f.file.cc:2390 +#: f.file.cc:2453 msgid "jpeg quality must be 1-100" msgstr "Качество jpeg должно быть 1-100" -#: f.file.cc:2417 +#: f.file.cc:2480 #, c-format msgid "" "Overwrite file? \n" @@ -1729,138 +1817,138 @@ "Перезаписать файл? \n" " %s" -#: f.file.cc:2669 f.file.cc:2738 +#: f.file.cc:2732 f.file.cc:2801 #, c-format msgid "file not found: %s" msgstr "Файл не найден: %s" -#: f.file.cc:2675 f.file.cc:2744 +#: f.file.cc:2738 f.file.cc:2807 #, c-format msgid "file type not supported: %s" msgstr "тип файла не поддерживается: %s" -#: f.gallery.cc:921 f.gallery.cc:1010 f.widgets.cc:592 +#: f.gallery.cc:911 f.gallery.cc:1000 f.widgets.cc:597 msgid "Scroll" msgstr "Скролл" -#: f.gallery.cc:925 +#: f.gallery.cc:915 msgid "Sync" msgstr "Синхронизация" -#: f.gallery.cc:935 f.repair.cc:5783 f.repair.cc:5788 fotoxx.h:1132 +#: f.gallery.cc:925 f.repair.cc:5779 f.repair.cc:5784 fotoxx.h:1140 msgid "Open" msgstr "Открыть" -#: f.gallery.cc:936 +#: f.gallery.cc:926 msgid "change directory" msgstr "Смена каталога" -#: f.gallery.cc:944 +#: f.gallery.cc:934 msgid "GoTo" msgstr "Переход" -#: f.gallery.cc:950 f.widgets.cc:587 +#: f.gallery.cc:940 f.widgets.cc:592 msgid "Sort" msgstr "Сортировка" -#: f.gallery.cc:956 f.gallery.cc:1528 f.gallery.cc:1529 f.gallery.cc:1531 -#: f.widgets.cc:585 +#: f.gallery.cc:946 f.gallery.cc:1510 f.gallery.cc:1511 f.gallery.cc:1513 +#: f.widgets.cc:590 msgid "Zoom+" msgstr "Увеличить" -#: f.gallery.cc:966 f.gallery.cc:1530 f.gallery.cc:1532 f.widgets.cc:586 +#: f.gallery.cc:956 f.gallery.cc:1512 f.gallery.cc:1514 f.widgets.cc:591 msgid "Zoom-" msgstr "Уменьшить" -#: f.gallery.cc:978 f.gallery.cc:1536 +#: f.gallery.cc:968 f.gallery.cc:1518 msgid "Row↑" msgstr "Строка↑" -#: f.gallery.cc:986 f.gallery.cc:1537 +#: f.gallery.cc:976 f.gallery.cc:1519 msgid "Row↓" msgstr "Строка↓" -#: f.gallery.cc:994 f.gallery.cc:1534 f.gallery.cc:1541 f.widgets.cc:590 +#: f.gallery.cc:984 f.gallery.cc:1516 f.gallery.cc:1523 f.widgets.cc:595 msgid "Page↑" msgstr "Страница↑" -#: f.gallery.cc:1002 f.gallery.cc:1535 f.gallery.cc:1542 f.widgets.cc:591 +#: f.gallery.cc:992 f.gallery.cc:1517 f.gallery.cc:1524 f.widgets.cc:596 msgid "Page↓" msgstr "Страница↓" -#: f.gallery.cc:1016 f.gallery.cc:1539 f.widgets.cc:588 +#: f.gallery.cc:1006 f.gallery.cc:1521 f.widgets.cc:593 msgid "First" msgstr "В начало" -#: f.gallery.cc:1017 f.gallery.cc:1540 f.widgets.cc:589 +#: f.gallery.cc:1007 f.gallery.cc:1522 f.widgets.cc:594 msgid "Last" msgstr "В конец" -#: f.gallery.cc:1134 +#: f.gallery.cc:1120 msgid "Choose image directory" msgstr "Выберите папку для файлов" -#: f.gallery.cc:1141 f.gallery.cc:1155 +#: f.gallery.cc:1127 f.gallery.cc:1141 msgid "recent" msgstr "недавние" -#: f.gallery.cc:1142 f.gallery.cc:1160 +#: f.gallery.cc:1128 f.gallery.cc:1146 msgid "newest" msgstr "новые" -#: f.gallery.cc:1224 +#: f.gallery.cc:1210 msgid "no albums found" msgstr "альбомы не найдены" -#: f.gallery.cc:1231 +#: f.gallery.cc:1217 msgid "Choose album" msgstr "Выберите альбом" -#: f.gallery.cc:1281 +#: f.gallery.cc:1267 msgid "Gallery Sort" msgstr "Сортировка галереи" -#: f.gallery.cc:1285 +#: f.gallery.cc:1271 msgid "File Name" msgstr "Имя файла" -#: f.gallery.cc:1286 +#: f.gallery.cc:1272 msgid "File Mod Date/Time" msgstr "Время/Дата модификации" -#: f.gallery.cc:1287 +#: f.gallery.cc:1273 msgid "Photo Date/Time (EXIF)" msgstr "Дата/время изображения (EXIF)" -#: f.gallery.cc:1289 +#: f.gallery.cc:1275 msgid "ascending" msgstr "по нарастанию" -#: f.gallery.cc:1290 +#: f.gallery.cc:1276 msgid "descending" msgstr "по убыванию" -#: f.gallery.cc:2244 fotoxx.h:1157 +#: f.gallery.cc:2213 fotoxx.h:1165 msgid "Select Files" msgstr "Выбрать файлы" -#: f.gallery.cc:2716 +#: f.gallery.cc:2684 msgid "Click list position. Click thumbnail to add." msgstr "Щёлкните по элементу списка. Щелкните по миниатюре для добавления" -#: f.gallery.cc:2742 f.gallery.cc:2990 +#: f.gallery.cc:2710 f.gallery.cc:2958 msgid "Edit Bookmarks" msgstr "Редактировать закладки" -#: f.gallery.cc:2917 +#: f.gallery.cc:2885 msgid "unable to save bookmarks file" msgstr "невозможно сокранить файл закладок" -#: f.gallery.cc:2990 +#: f.gallery.cc:2958 msgid "Go To Bookmark" msgstr "Перейти по закладке" -#: f.gallery.cc:3047 f.meta.cc:2732 f.repair.cc:7410 +#: f.gallery.cc:3015 f.meta.cc:2772 f.repair.cc:7407 msgid "file not found" msgstr "Файл не найден" @@ -2054,7 +2142,7 @@ msgid "Hard" msgstr "Резкая" -#: f.mashup.cc:1304 f.repair.cc:5378 +#: f.mashup.cc:1304 f.repair.cc:5375 msgid "Blend" msgstr "Смешивание" @@ -2070,7 +2158,7 @@ msgid "Gradual" msgstr "Постепенный" -#: f.mashup.cc:1580 fotoxx.h:1136 +#: f.mashup.cc:1580 fotoxx.h:1144 msgid "Power" msgstr "Скорость" @@ -2129,123 +2217,127 @@ msgid "exceeded %d line entries" msgstr "превышение %d хранимых линий" -#: f.meta.cc:179 f.widgets.cc:657 +#: f.meta.cc:179 f.widgets.cc:662 msgid "View Metadata" msgstr "Просмотр метаданных" -#: f.meta.cc:420 f.meta.cc:1756 f.widgets.cc:408 f.widgets.cc:658 +#: f.meta.cc:419 f.meta.cc:1796 f.widgets.cc:407 f.widgets.cc:663 msgid "Edit Metadata" msgstr "Редактировать метаданные" -#: f.meta.cc:430 +#: f.meta.cc:422 f.meta.cc:3748 +msgid "save metadata to file" +msgstr "" + +#: f.meta.cc:431 msgid "Image Date" msgstr "Дата" -#: f.meta.cc:433 +#: f.meta.cc:434 msgid "Time" msgstr "Время" -#: f.meta.cc:439 +#: f.meta.cc:440 msgid "Rating (stars):" msgstr "Рейтинг:" -#: f.meta.cc:451 +#: f.meta.cc:452 msgid "Caption" msgstr "Подпись" -#: f.meta.cc:457 +#: f.meta.cc:458 msgid "Comments" msgstr "Комментарий" -#: f.meta.cc:465 +#: f.meta.cc:466 msgid "Enter New Tag" msgstr "" -#: f.meta.cc:472 f.meta.cc:4889 +#: f.meta.cc:473 f.meta.cc:4930 msgid "Matching Tags" msgstr "" -#: f.meta.cc:480 +#: f.meta.cc:481 msgid "Image Tags" msgstr "Теги изображений" -#: f.meta.cc:486 +#: f.meta.cc:487 msgid "Recent Tags" msgstr "Последние теги" -#: f.meta.cc:495 f.meta.cc:1978 f.meta.cc:4896 +#: f.meta.cc:496 f.meta.cc:2018 f.meta.cc:4937 msgid "Defined Tags Category" msgstr "" -#: f.meta.cc:886 +#: f.meta.cc:887 msgid "date format is YYYY-MM-DD" msgstr "формат даты ГГГГ-ММ-ДД" -#: f.meta.cc:890 +#: f.meta.cc:891 msgid "date is invalid" msgstr "неверная дата" -#: f.meta.cc:924 +#: f.meta.cc:925 msgid "time format is HH:MM [:SS]" msgstr "формат времени ЧЧ:ММ[:СС]" -#: f.meta.cc:928 +#: f.meta.cc:929 msgid "time is invalid" msgstr "неверное время" -#: f.meta.cc:974 fotoxx.h:1121 +#: f.meta.cc:1014 fotoxx.h:1129 msgid "Manage Tags" msgstr "Управление тегами" -#: f.meta.cc:974 +#: f.meta.cc:1014 msgid "orphan tags" msgstr "неиспользуемые тэги" -#: f.meta.cc:978 +#: f.meta.cc:1018 msgid "category" msgstr "Категория" -#: f.meta.cc:981 +#: f.meta.cc:1021 msgid "tag" msgstr "тег" -#: f.meta.cc:988 +#: f.meta.cc:1028 msgid "Defined Tags:" msgstr "Известные теги:" -#: f.meta.cc:1760 f.meta.cc:2418 +#: f.meta.cc:1800 f.meta.cc:2458 msgid "key name" msgstr "имя ключа" -#: f.meta.cc:1762 f.meta.cc:2419 +#: f.meta.cc:1802 f.meta.cc:2459 msgid "key value" msgstr "значение ключа" -#: f.meta.cc:1849 f.widgets.cc:410 +#: f.meta.cc:1889 f.widgets.cc:409 msgid "Delete Metadata" msgstr "Удалить метаданные" -#: f.meta.cc:1851 fotoxx.h:1070 +#: f.meta.cc:1891 fotoxx.h:1078 msgid "All" msgstr "Все" -#: f.meta.cc:1852 +#: f.meta.cc:1892 msgid "One Key:" msgstr "Один ключ:" -#: f.meta.cc:1955 f.widgets.cc:411 f.widgets.cc:530 +#: f.meta.cc:1995 f.widgets.cc:410 f.widgets.cc:533 msgid "Batch Add/Remove Tags" msgstr "Групповое добавление/удаление тэгов" -#: f.meta.cc:1966 +#: f.meta.cc:2006 msgid "tags to add" msgstr "Теги для добавления" -#: f.meta.cc:1967 +#: f.meta.cc:2007 msgid "tags to remove" msgstr "удаляемые тэги" -#: f.meta.cc:2051 +#: f.meta.cc:2091 #, c-format msgid "" "%s \n" @@ -2254,15 +2346,15 @@ "%s \n" "слишком много тегов" -#: f.meta.cc:2166 +#: f.meta.cc:2206 msgid "specify files and tags" msgstr "задайте файлы и тэги" -#: f.meta.cc:2226 +#: f.meta.cc:2266 msgid "tag names file" msgstr "" -#: f.meta.cc:2298 +#: f.meta.cc:2338 #, c-format msgid "" "%d tags to rename \n" @@ -2270,43 +2362,43 @@ "Proceed?" msgstr "" -#: f.meta.cc:2409 +#: f.meta.cc:2449 msgid "Batch Metadata" msgstr "" -#: f.meta.cc:2455 +#: f.meta.cc:2495 msgid "enter key names" msgstr "" -#: f.meta.cc:2461 fotoxx.h:1129 +#: f.meta.cc:2501 fotoxx.h:1137 msgid "no files selected" msgstr "нет выбранных файлов" -#: f.meta.cc:3164 f.meta.cc:3899 f.meta.cc:4163 +#: f.meta.cc:3204 f.meta.cc:3940 f.meta.cc:4204 #, c-format msgid "bad latitude/longitude: %s %s" msgstr "Неправильная широта/долгота: %s %s" -#: f.meta.cc:3207 f.meta.cc:3571 f.meta.cc:4372 f.meta.cc:4780 +#: f.meta.cc:3247 f.meta.cc:3611 f.meta.cc:4413 f.meta.cc:4821 msgid "-noindex in use, disabled" msgstr "невозможно: запущено с -noindex" -#: f.meta.cc:3223 +#: f.meta.cc:3263 msgid "choose map file" msgstr "выберите файл карты" -#: f.meta.cc:3332 +#: f.meta.cc:3372 msgid "" "fotoxx-maps package not installed \n" "(see http://kornelix.com/packages and /tarballs)" msgstr "" -#: f.meta.cc:3337 +#: f.meta.cc:3377 #, c-format msgid "map file %s is missing" msgstr "файл карты %s не найден" -#: f.meta.cc:3341 +#: f.meta.cc:3381 #, c-format msgid "" "map latitude/longitude data unreasonable \n" @@ -2315,39 +2407,39 @@ "данные широты/долготы бессмысленны \n" " %.3f %.3f %.3f %.3f" -#: f.meta.cc:3620 +#: f.meta.cc:3660 msgid "No matching images found" msgstr "Соответствующие изображения не найдены" -#: f.meta.cc:3660 +#: f.meta.cc:3700 msgid "search range (km)" msgstr "Диапазон поиска (км)" -#: f.meta.cc:3693 f.widgets.cc:414 f.widgets.cc:659 +#: f.meta.cc:3733 f.widgets.cc:413 f.widgets.cc:664 msgid "Edit Geotags" msgstr "Редактировать геотеги" -#: f.meta.cc:3694 +#: f.meta.cc:3734 msgid "Geocoding web service courtesy of" msgstr "Благодаря веб-сервису геокодирования" -#: f.meta.cc:3709 f.meta.cc:3949 f.meta.cc:5655 +#: f.meta.cc:3750 f.meta.cc:3990 f.meta.cc:5710 msgid "city" msgstr "Город" -#: f.meta.cc:3712 f.meta.cc:3952 f.meta.cc:5658 +#: f.meta.cc:3753 f.meta.cc:3993 f.meta.cc:5713 msgid "country" msgstr "Страна" -#: f.meta.cc:3794 f.meta.cc:4080 +#: f.meta.cc:3835 f.meta.cc:4121 msgid "city not found" msgstr "Город не найден" -#: f.meta.cc:3915 f.widgets.cc:415 f.widgets.cc:533 +#: f.meta.cc:3956 f.widgets.cc:414 f.widgets.cc:536 msgid "Batch Add Geotags" msgstr "Групповое добавление геотегов" -#: f.meta.cc:4142 +#: f.meta.cc:4183 msgid "" "data is incomplete \n" " proceed?" @@ -2355,140 +2447,140 @@ "Данные не полные \n" " Продолжить?" -#: f.meta.cc:4199 +#: f.meta.cc:4240 msgid "choose city" msgstr "Выбрать город" -#: f.meta.cc:4286 +#: f.meta.cc:4327 msgid "not found" msgstr "Не найден" -#: f.meta.cc:4287 +#: f.meta.cc:4328 msgid "city and country required" msgstr "укажите город и страну" -#: f.meta.cc:4387 +#: f.meta.cc:4428 msgid "Report Geotag Groups" msgstr "Сообщение группы геотегов" -#: f.meta.cc:4388 +#: f.meta.cc:4429 msgid "Group by country" msgstr "Группировать по стране" -#: f.meta.cc:4389 +#: f.meta.cc:4430 msgid "Group by country/city" msgstr "Группировать по стране/городу" -#: f.meta.cc:4390 +#: f.meta.cc:4431 msgid "Group by country/city/date" msgstr "Группировать по стране/городу/дате" -#: f.meta.cc:4393 +#: f.meta.cc:4434 msgid "Combine within" msgstr "Объединить в" -#: f.meta.cc:4395 +#: f.meta.cc:4436 msgid "days" msgstr "Дней" -#: f.meta.cc:4511 +#: f.meta.cc:4552 msgid "geotag groups" msgstr "группы геотегов" -#: f.meta.cc:4817 +#: f.meta.cc:4858 msgid "Search Image Metadata" msgstr "Поиск  метаданных изображения" -#: f.meta.cc:4821 +#: f.meta.cc:4862 msgid "images to search:" msgstr "изображения для поиска:" -#: f.meta.cc:4822 +#: f.meta.cc:4863 msgid "all" msgstr "все" -#: f.meta.cc:4823 +#: f.meta.cc:4864 msgid "current set only" msgstr "только активный набор" -#: f.meta.cc:4826 +#: f.meta.cc:4867 msgid "matching images:" msgstr "подходящие изображения:" -#: f.meta.cc:4827 +#: f.meta.cc:4868 msgid "new set" msgstr "новый набор" -#: f.meta.cc:4828 +#: f.meta.cc:4869 msgid "add to set" msgstr "добавить в набор" -#: f.meta.cc:4829 +#: f.meta.cc:4870 msgid "remove" msgstr "удалить" -#: f.meta.cc:4832 +#: f.meta.cc:4873 msgid "report type:" msgstr "тип отчёта:" -#: f.meta.cc:4833 +#: f.meta.cc:4874 msgid "gallery" msgstr "галерея" -#: f.meta.cc:4834 fotoxx-15.08.cc:801 +#: f.meta.cc:4875 fotoxx-15.09.cc:781 msgid "metadata" msgstr "метаданные" -#: f.meta.cc:4840 +#: f.meta.cc:4881 msgid "date range" msgstr "Диапазон дат" -#: f.meta.cc:4841 +#: f.meta.cc:4882 msgid "stars range" msgstr "Диапазон рейтинга" -#: f.meta.cc:4842 +#: f.meta.cc:4883 msgid "search tags" msgstr "Поиск тегов" -#: f.meta.cc:4843 +#: f.meta.cc:4884 msgid "search text" msgstr "Поиск текста" -#: f.meta.cc:4844 +#: f.meta.cc:4885 msgid "search files" msgstr "Поиск файлов" -#: f.meta.cc:4849 +#: f.meta.cc:4890 msgid "(yyyymmdd)" msgstr "(ггггммдд)" -#: f.meta.cc:4854 +#: f.meta.cc:4895 msgid "last version only" msgstr "только последняя версия" -#: f.meta.cc:4856 +#: f.meta.cc:4897 msgid "all/any" msgstr "Все/любой" -#: f.meta.cc:4875 +#: f.meta.cc:4916 msgid "other criteria" msgstr "Другие критерии" -#: f.meta.cc:4879 +#: f.meta.cc:4920 msgid "other" msgstr "Другое" -#: f.meta.cc:4885 +#: f.meta.cc:4926 msgid "Enter Search Tag" msgstr "" -#: f.meta.cc:5179 +#: f.meta.cc:5221 #, c-format msgid "not a defined tag: %s" msgstr "" -#: f.meta.cc:5210 +#: f.meta.cc:5252 msgid "" "to remove images from current set, \n" "search current set" @@ -2496,7 +2588,7 @@ "для удаления изображений из активного набора, \n" "поиск активного набора" -#: f.meta.cc:5217 +#: f.meta.cc:5259 msgid "" "to add images to current set, \n" "search all images" @@ -2504,32 +2596,39 @@ "для добавления изображений в активный набор \n" "поиск всех изображений" -#: f.meta.cc:5266 +#: f.meta.cc:5303 +#, c-format +msgid "" +"search dates not reasonable \n" +" %s %s" +msgstr "" + +#: f.meta.cc:5321 msgid "stars range not reasonable" msgstr "неверный диапазон рейтинга" -#: f.meta.cc:5511 +#: f.meta.cc:5566 #, c-format msgid "images added: %d removed: %d new count: %d" msgstr "добавлено изображений: %d удалено: %d осталось: %d" -#: f.meta.cc:5514 +#: f.meta.cc:5569 msgid "no changes made" msgstr "без изменений" -#: f.meta.cc:5652 +#: f.meta.cc:5707 msgid "Add Geotags Search Criteria" msgstr "Добавить критерии поиска геотегов" -#: f.meta.cc:5671 +#: f.meta.cc:5726 msgid "range (km)" msgstr "Расстояние (км)" -#: f.meta.cc:5764 +#: f.meta.cc:5819 msgid "error in latitude/longitude/range" msgstr "Ошибка в широте/долготе/расстоянии" -#: f.meta.cc:5828 +#: f.meta.cc:5883 msgid "" "These items are always reported: \n" "date, stars, tags, caption, comment" @@ -2537,19 +2636,19 @@ "Всегда предоставляются: \n" "дата, рейтинг, теги, подпись, комментарии" -#: f.meta.cc:5852 +#: f.meta.cc:5907 msgid "Additional Items for Report" msgstr "Дополнительные пункты для отчета" -#: f.meta.cc:5858 +#: f.meta.cc:5913 msgid "Keyword" msgstr "Ключевое слово" -#: f.meta.cc:5865 +#: f.meta.cc:5920 msgid "Match Criteria" msgstr "Критерии подбора" -#: f.meta.cc:6425 +#: f.meta.cc:6480 msgid "image index is missing" msgstr "нет индекса изображений" @@ -2565,47 +2664,47 @@ msgid "Kuwahara method" msgstr "Метод Кувахара" -#: f.repair.cc:1012 +#: f.repair.cc:1014 msgid "Apply repeatedly while watching the image." msgstr "" -#: f.repair.cc:1013 +#: f.repair.cc:1015 msgid "Measure" msgstr "" -#: f.repair.cc:1047 +#: f.repair.cc:1049 msgid "Noise Reduction" msgstr "Подавление шума" -#: f.repair.cc:1063 +#: f.repair.cc:1065 msgid "Flatten Outliers 1" msgstr "Усреднить выпадающие 1" -#: f.repair.cc:1064 +#: f.repair.cc:1066 msgid "Flatten Outliers 2" msgstr "Усреднить выпадающие 2" -#: f.repair.cc:1065 +#: f.repair.cc:1067 msgid "Median Brightness" msgstr "Усреднить по яркости" -#: f.repair.cc:1093 +#: f.repair.cc:1095 msgid "dark areas" msgstr "тёмные зоны" -#: f.repair.cc:1095 +#: f.repair.cc:1097 msgid "all areas" msgstr "все зоны" -#: f.repair.cc:1193 +#: f.repair.cc:1195 msgid "Measure Noise" msgstr "" -#: f.repair.cc:1194 +#: f.repair.cc:1196 msgid "Click on a monotone image area." msgstr "" -#: f.repair.cc:2095 +#: f.repair.cc:2098 msgid "" "1. Drag mouse to select. \n" "2. Erase. 3. Repeat. " @@ -2613,23 +2712,23 @@ "1. Передвинуть мышь для выбора. \n" "2. Стереть. 3. Повторить. " -#: f.repair.cc:2117 f.widgets.cc:451 +#: f.repair.cc:2120 f.widgets.cc:452 msgid "Smart Erase" msgstr "Умное стирание" -#: f.repair.cc:2122 fotoxx.h:1140 +#: f.repair.cc:2125 fotoxx.h:1148 msgid "Radius" msgstr "Радиус" -#: f.repair.cc:2124 f.widgets.cc:449 +#: f.repair.cc:2127 f.widgets.cc:450 msgid "Blur" msgstr "Размыть" -#: f.repair.cc:2127 +#: f.repair.cc:2130 msgid "New Area" msgstr "Новая область" -#: f.repair.cc:2475 +#: f.repair.cc:2479 msgid "" "Method 1:\n" " Left-click on red-eye to darken.\n" @@ -2647,11 +2746,11 @@ " Для отмены:\n" " Кликните правой кнопкой мышки на красных глазах." -#: f.repair.cc:2491 +#: f.repair.cc:2495 msgid "Red Eye Reduction" msgstr "Снижение эффекта красных глаз" -#: f.repair.cc:2955 +#: f.repair.cc:2959 msgid "" "shift + left click: pick color or image position \n" "left click or drag: paint color or copy image \n" @@ -2661,40 +2760,40 @@ "Левый клик/перемещение: рисовать цветом / копировать фрагмент \n" "Правый клик/перемещение: удаление цвета/фрагмента" -#: f.repair.cc:2987 f.widgets.cc:453 +#: f.repair.cc:2991 f.widgets.cc:454 msgid "Paint/Clone" msgstr "Перекрасить пиксели" -#: f.repair.cc:2991 +#: f.repair.cc:2995 msgid "paint color" msgstr "Рисовать цветом" -#: f.repair.cc:2994 +#: f.repair.cc:2998 msgid "copy from image" msgstr "Копировать из изображения" -#: f.repair.cc:3001 f.repair.cc:3557 +#: f.repair.cc:3005 f.repair.cc:3562 msgid "paintbrush radius" msgstr "Радиус кисти" -#: f.repair.cc:3002 +#: f.repair.cc:3006 msgid "transparency center" msgstr "Прозрачность центра" -#: f.repair.cc:3003 +#: f.repair.cc:3007 msgid "transparency edge" msgstr "Прозрачность края" -#: f.repair.cc:3010 f.repair.cc:3564 +#: f.repair.cc:3014 f.repair.cc:3569 msgid "gradual paint" msgstr "закрашивание" -#: f.repair.cc:3017 +#: f.repair.cc:3021 #, c-format msgid "Undo Memory %d%c" msgstr "Память отмены %d%c" -#: f.repair.cc:3352 +#: f.repair.cc:3357 msgid "" "Undo memory limit has been reached. \n" "Save work with [done], then resume painting." @@ -2702,178 +2801,178 @@ "Был достигнут предел памяти отмены. \n" "Нажмите [Изменить] для сохранения изменений, затем продолжите рисование." -#: f.repair.cc:3517 +#: f.repair.cc:3522 msgid "" "left drag: add transparency \n" "right drag: add opacity" msgstr "" -#: f.repair.cc:3549 f.widgets.cc:454 +#: f.repair.cc:3554 f.widgets.cc:455 msgid "Paint Transparency" msgstr "" -#: f.repair.cc:3558 +#: f.repair.cc:3563 msgid "strength center" msgstr "" -#: f.repair.cc:3559 +#: f.repair.cc:3564 msgid "strength edge" msgstr "" -#: f.repair.cc:3769 f.widgets.cc:455 +#: f.repair.cc:3778 f.widgets.cc:456 msgid "Color Mode" msgstr "Цветовые режимы" -#: f.repair.cc:3772 +#: f.repair.cc:3781 msgid "black/white positive" msgstr "Черно-белый позитив" -#: f.repair.cc:3773 +#: f.repair.cc:3782 msgid "black/white negative" msgstr "Черно-белый негатив" -#: f.repair.cc:3774 +#: f.repair.cc:3783 msgid "color positive" msgstr "Цветной позитив" -#: f.repair.cc:3775 +#: f.repair.cc:3784 msgid "color negative" msgstr "Цветной негатив" -#: f.repair.cc:3776 +#: f.repair.cc:3785 msgid "sepia" msgstr "Сепия" -#: f.repair.cc:3945 f.widgets.cc:456 +#: f.repair.cc:3954 f.widgets.cc:457 msgid "Shift Colors" msgstr "Исправить цвет" -#: f.repair.cc:4217 +#: f.repair.cc:4226 msgid "+Brightness" msgstr "+Яркость" -#: f.repair.cc:4218 +#: f.repair.cc:4227 msgid "+Red -Cyan" msgstr "+Красный -Голубой" -#: f.repair.cc:4219 +#: f.repair.cc:4228 msgid "+Green -Magenta" msgstr "+Зеленый -Пурпурный" -#: f.repair.cc:4220 +#: f.repair.cc:4229 msgid "+Blue -Yellow" msgstr "+Синий -Желтый" -#: f.repair.cc:4226 fotoxx.h:1142 +#: f.repair.cc:4235 fotoxx.h:1150 msgid "Red" msgstr "Красный" -#: f.repair.cc:4227 fotoxx.h:1108 +#: f.repair.cc:4236 fotoxx.h:1116 msgid "Green" msgstr "Зеленый" -#: f.repair.cc:4228 fotoxx.h:1077 +#: f.repair.cc:4237 fotoxx.h:1085 msgid "Blue" msgstr "Синий" -#: f.repair.cc:4527 +#: f.repair.cc:4536 msgid "Color Hue" msgstr "" -#: f.repair.cc:4528 +#: f.repair.cc:4537 msgid "Saturation" msgstr "" -#: f.repair.cc:4529 +#: f.repair.cc:4538 msgid "Lightness" msgstr "" -#: f.repair.cc:4530 +#: f.repair.cc:4539 msgid "Adjustment" msgstr "" -#: f.repair.cc:4869 +#: f.repair.cc:4878 msgid "Ramp brightness across image" msgstr "Смещение яркости по изображению" -#: f.repair.cc:5278 f.tools.cc:2014 +#: f.repair.cc:5286 f.tools.cc:2038 msgid "Click image to select pixels." msgstr "Кликните изображение для выбора пикселей." -#: f.repair.cc:5312 f.widgets.cc:460 +#: f.repair.cc:5317 f.widgets.cc:461 msgid "Color Ramp" msgstr "" -#: f.repair.cc:5323 +#: f.repair.cc:5328 msgid "Metric:" msgstr "Метрика:" -#: f.repair.cc:5754 +#: f.repair.cc:5751 msgid "Color Match Images" msgstr "Подобрать цвет изображений" -#: f.repair.cc:5781 +#: f.repair.cc:5777 msgid "mouse radius for color sample" msgstr "Радиус мыши для образца цвета" -#: f.repair.cc:5784 +#: f.repair.cc:5780 msgid "image for source color" msgstr "Изображениедля источника цвета" -#: f.repair.cc:5786 +#: f.repair.cc:5782 msgid "click on image to get source color" msgstr "Кликните по изображению для получения исходного цвета" -#: f.repair.cc:5789 +#: f.repair.cc:5785 msgid "image to set matching color" msgstr "Изображение для подбора цвета" -#: f.repair.cc:5791 +#: f.repair.cc:5787 msgid "click on image to set matching color" msgstr "Кликните по изображению для подбора цвета" -#: f.repair.cc:5851 +#: f.repair.cc:5848 msgid "select source image color first" msgstr "Сначала выберите исходный цвет" -#: f.repair.cc:6036 +#: f.repair.cc:6033 msgid "Change Color Profile" msgstr "Изменение цветового профиля" -#: f.repair.cc:6040 +#: f.repair.cc:6037 msgid "input profile" msgstr "Профиль ввода" -#: f.repair.cc:6044 +#: f.repair.cc:6041 msgid "output profile" msgstr "профиль вывода" -#: f.repair.cc:6060 +#: f.repair.cc:6057 msgid "color profile" msgstr "профиль цветов" -#: f.repair.cc:6106 f.repair.cc:6112 +#: f.repair.cc:6103 f.repair.cc:6109 #, c-format msgid "unknown cms profile %s" msgstr "неизвестный профиль cms %s" -#: f.repair.cc:6244 f.widgets.cc:463 +#: f.repair.cc:6241 f.widgets.cc:464 msgid "Remove Dust" msgstr "Удалить пыль" -#: f.repair.cc:6248 +#: f.repair.cc:6245 msgid "spot size limit" msgstr "Предельный размер пятна" -#: f.repair.cc:6251 +#: f.repair.cc:6248 msgid "max. brightness" msgstr "Макс. яркость" -#: f.repair.cc:6254 +#: f.repair.cc:6251 msgid "min. contrast" msgstr "Мин. контраст" -#: f.repair.cc:7035 +#: f.repair.cc:7032 msgid "" " Adjust each RGB color to minimize \n" " color fringes at the image extremes. " @@ -2881,35 +2980,35 @@ "Отрегулируйте каждый цвет RGB для уменьшения \n" "ореола по краям." -#: f.repair.cc:7058 f.widgets.cc:465 +#: f.repair.cc:7055 f.widgets.cc:466 msgid "Color Fringes" msgstr "" -#: f.repair.cc:7257 f.widgets.cc:466 +#: f.repair.cc:7254 f.widgets.cc:467 msgid "Stuck Pixels" msgstr "" -#: f.repair.cc:7263 +#: f.repair.cc:7260 msgid "pixel group" msgstr "Группа пикселей" -#: f.repair.cc:7271 f.repair.cc:7339 +#: f.repair.cc:7268 f.repair.cc:7336 msgid "stuck pixels:" msgstr "горячие пиксели:" -#: f.repair.cc:7367 +#: f.repair.cc:7364 msgid "Load Stuck Pixels" msgstr "Загрузка горячих пикселей" -#: f.repair.cc:7369 +#: f.repair.cc:7366 msgid "File:" msgstr "Файл:" -#: f.repair.cc:7394 f.repair.cc:7451 +#: f.repair.cc:7391 f.repair.cc:7448 msgid "Stuck Pixels file" msgstr "Файл горячих пикселей" -#: f.repair.cc:7431 +#: f.repair.cc:7428 msgid "file format error" msgstr "Ошибка формата файла" @@ -2934,7 +3033,7 @@ "and to make the gallery pages acceptably fast." msgstr "" -#: f.tools.cc:106 f.widgets.cc:506 +#: f.tools.cc:106 f.widgets.cc:507 msgid "Index Image Files" msgstr "Индекс файлов изображений" @@ -2979,184 +3078,184 @@ "Please remove." msgstr "" -#: f.tools.cc:394 +#: f.tools.cc:392 msgid "no thumbnails directory defined" msgstr "каталог миниатюр не определён" -#: f.tools.cc:739 +#: f.tools.cc:734 msgid "COMPLETED" msgstr "ЗАВЕРШЕНО" -#: f.tools.cc:778 +#: f.tools.cc:775 msgid "Indexing is required for first-time startup." msgstr "" -#: f.tools.cc:840 +#: f.tools.cc:837 msgid "Recent Files Gallery" msgstr "Галерея недавно открытых файлов" -#: f.tools.cc:841 +#: f.tools.cc:838 msgid "Newest Files Gallery" msgstr "Галерея Свежих Файлов" -#: f.tools.cc:842 +#: f.tools.cc:839 msgid "Previous Gallery" msgstr "Предыдущая Галерея" -#: f.tools.cc:843 +#: f.tools.cc:840 msgid "Previous Image" msgstr "Предыдущее Изображение" -#: f.tools.cc:844 +#: f.tools.cc:841 msgid "Blank Window" msgstr "Пустое окно" -#: f.tools.cc:845 +#: f.tools.cc:842 msgid "Directory" msgstr "" -#: f.tools.cc:846 +#: f.tools.cc:843 msgid "Image File" msgstr "Файл изображения" -#: f.tools.cc:887 f.widgets.cc:507 +#: f.tools.cc:885 f.widgets.cc:508 msgid "User Options" msgstr "" -#: f.tools.cc:890 +#: f.tools.cc:888 msgid "Startup Display" msgstr "Начальный экран" -#: f.tools.cc:901 +#: f.tools.cc:899 msgid "Menu Style" msgstr "Стиль Меню" -#: f.tools.cc:902 +#: f.tools.cc:900 msgid "Icons" msgstr "Значки" -#: f.tools.cc:903 +#: f.tools.cc:901 msgid "Icons + Text" msgstr "Иконки + Текст" -#: f.tools.cc:905 +#: f.tools.cc:903 msgid "Icon size" msgstr "Размер иконок" -#: f.tools.cc:909 -msgid "Image Pan/scroll:" +#: f.tools.cc:907 +msgid "Dialog font and size" msgstr "" #: f.tools.cc:912 +msgid "Image Pan/scroll:" +msgstr "" + +#: f.tools.cc:915 msgid "Zooms for 2x" msgstr "Увеличение для 2х" -#: f.tools.cc:921 +#: f.tools.cc:924 msgid "JPEG save quality" msgstr "Качество сохраняемого JPEG" -#: f.tools.cc:924 f.tools.cc:3041 -msgid "Thumbnail size" -msgstr "Размер иконки" - -#: f.tools.cc:928 +#: f.tools.cc:931 msgid "show hidden directories in gallery view" msgstr "" -#: f.tools.cc:931 +#: f.tools.cc:934 msgid "prev/next shows last file version only" msgstr "вперёд/назад показывает только последние версии" -#: f.tools.cc:934 +#: f.tools.cc:937 msgid "RAW command" msgstr "Команда RAW" -#: f.tools.cc:938 +#: f.tools.cc:941 msgid "RAW file types" msgstr "Типы файлов RAW" -#: f.tools.cc:1015 +#: f.tools.cc:1021 msgid "Delete present thumbnails to make effective" msgstr "Удалите существующие иконки для смены размера" -#: f.tools.cc:1037 +#: f.tools.cc:1043 msgid "Select startup directory" msgstr "Выбрать начальный каталог" -#: f.tools.cc:1044 +#: f.tools.cc:1050 msgid "Select startup image file" msgstr "Выбрать начальный файл изображения" -#: f.tools.cc:1066 +#: f.tools.cc:1088 msgid "startup directory is invalid" msgstr "Некорректный начальный каталог" -#: f.tools.cc:1077 +#: f.tools.cc:1099 msgid "startup file is invalid" msgstr "Некорректный начальный файл" -#: f.tools.cc:1211 +#: f.tools.cc:1237 msgid "Edit KB Shortcuts" msgstr "Редактировать горячие клавиши" -#: f.tools.cc:1216 +#: f.tools.cc:1242 msgid "shortcut key:" msgstr "горячая клавиша:" -#: f.tools.cc:1217 +#: f.tools.cc:1243 msgid "(enter key)" msgstr "(клавиша ввод)" -#: f.tools.cc:1343 +#: f.tools.cc:1369 #, c-format msgid "\"%s\" Reserved, cannot be used" msgstr "\"%s\" Зарезервировано: переопределить невозможно" -#: f.tools.cc:1497 +#: f.tools.cc:1523 msgid "unable to save KB-shortcuts file" msgstr "невозможно сохранить файл горячих клавиш" -#: f.tools.cc:1801 f.widgets.cc:510 +#: f.tools.cc:1827 f.widgets.cc:511 msgid "Grid Lines" msgstr "Линии сетки" -#: f.tools.cc:1810 +#: f.tools.cc:1836 msgid "x-spacing" msgstr "x-интервал" -#: f.tools.cc:1811 +#: f.tools.cc:1837 msgid "x-count" msgstr "x-значение" -#: f.tools.cc:1812 +#: f.tools.cc:1838 msgid "x-enable" msgstr "x-включить" -#: f.tools.cc:1818 +#: f.tools.cc:1844 msgid "y-spacing" msgstr "y-интервал" -#: f.tools.cc:1819 +#: f.tools.cc:1845 msgid "y-count" msgstr "y-значение" -#: f.tools.cc:1820 +#: f.tools.cc:1846 msgid "y-enable" msgstr "y-включить" -#: f.tools.cc:1940 f.tools.cc:1945 f.widgets.cc:511 +#: f.tools.cc:1966 f.tools.cc:1971 f.widgets.cc:512 msgid "Line Color" msgstr "Цвет Линии" -#: f.tools.cc:1942 +#: f.tools.cc:1968 msgid "Area Color" msgstr "Цвет области" -#: f.tools.cc:2050 f.widgets.cc:512 +#: f.tools.cc:2073 f.widgets.cc:513 msgid "Show RGB" msgstr "Показать RGB" -#: f.tools.cc:2345 +#: f.tools.cc:2365 msgid "" "Drag mouse on image. \n" "Left click to cancel. \n" @@ -3166,27 +3265,27 @@ "Левый щелчок для отмены \n" "M включает/выключает диалог" -#: f.tools.cc:2371 f.widgets.cc:513 +#: f.tools.cc:2391 f.widgets.cc:514 msgid "Magnify Image" msgstr "Лупа" -#: f.tools.cc:2380 +#: f.tools.cc:2400 msgid "X-size" msgstr "Увеличение" -#: f.tools.cc:2625 +#: f.tools.cc:2645 msgid "Darkest and Brightest Pixels" msgstr "Тёмные и яркие пиксели" -#: f.tools.cc:2648 +#: f.tools.cc:2668 msgid "Dark Limit" msgstr "Граница тёмных" -#: f.tools.cc:2649 +#: f.tools.cc:2669 msgid "Bright Limit" msgstr "Граница светлых" -#: f.tools.cc:2744 +#: f.tools.cc:2764 msgid "" "Brightness should show a gradual ramp \n" "extending all the way to the edges." @@ -3194,113 +3293,145 @@ "Яркость должна постепенно изменяться \n" "в направлении краев." -#: f.tools.cc:2840 f.widgets.cc:516 +#: f.tools.cc:2860 f.widgets.cc:517 msgid "Monitor Gamma" msgstr "Гамма монитора" -#: f.tools.cc:2900 +#: f.tools.cc:2920 msgid "Available Translations" msgstr "Доступные переводы" -#: f.tools.cc:2904 +#: f.tools.cc:2924 msgid "Set Language" msgstr "Установка языка" -#: f.tools.cc:3039 f.widgets.cc:519 -msgid "Find Duplicate Images" -msgstr "Поиск повторяющихся изображений" +#: f.tools.cc:3064 f.widgets.cc:520 +msgid "Calibrate Printer" +msgstr "" -#: f.tools.cc:3044 -msgid "pixel difference" -msgstr "попиксельная разница" +#: f.tools.cc:3087 +msgid "print color chart" +msgstr "" -#: f.tools.cc:3047 -msgid "pixel count" -msgstr "количество пикселей" +#: f.tools.cc:3088 +msgid "scan and save color chart" +msgstr "" -#: f.tools.cc:3050 -msgid "Images:" -msgstr "Изображений:" +#: f.tools.cc:3089 +msgid "align and trim color chart" +msgstr "" -#: f.tools.cc:3051 -msgid "searching ..." -msgstr "поиск..." +#: f.tools.cc:3090 +msgid "open and process color chart" +msgstr "" -#: f.tools.cc:3053 -msgid "Duplicates:" -msgstr "Дублей:" +#: f.tools.cc:3091 +msgid "print image with revised colors" +msgstr "" -#: f.tools.cc:3071 +#: f.tools.cc:3258 #, c-format -msgid "only %d image thumbnails found" -msgstr "найдено лишь %d иконок" +msgid "" +"Scan the printed color chart. \n" +"Save in %s/" +msgstr "" -#: f.widgets.cc:112 -msgid "TOP" -msgstr "ВЕРХ" +#: f.tools.cc:3272 +msgid "" +"Open and edit the scanned color chart file. \n" +"Remove any skew or rotation caused by the scanner. \n" +"Trim off all margins. Be careful not to cut off \n" +"any color tile edges or leave any white margins." +msgstr "" + +#: f.tools.cc:3308 +msgid "Open the trimmed color chart file" +msgstr "" + +#: f.tools.cc:3405 +msgid "" +"Set the file name and location \n" +"for the output color map file." +msgstr "" + +#: f.tools.cc:3440 +msgid "Color map file to use" +msgstr "" + +#: f.tools.cc:3461 +msgid "Select the image file to print." +msgstr "" + +#: f.tools.cc:3588 +msgid "Image colors are converted for printing." +msgstr "" -#: f.widgets.cc:115 +#: f.widgets.cc:111 msgid "Album" msgstr "" -#: f.widgets.cc:169 +#: f.widgets.cc:113 +msgid "TOP" +msgstr "ВЕРХ" + +#: f.widgets.cc:165 msgid "Current Image File (key F)" msgstr "Текущий файл изображения (F)" -#: f.widgets.cc:170 +#: f.widgets.cc:166 msgid "Thumbnail Gallery (key G)" msgstr "Галерея иконок (G)" -#: f.widgets.cc:171 +#: f.widgets.cc:167 msgid "World Maps (key W)" msgstr "Карта мира (W)" -#: f.widgets.cc:174 +#: f.widgets.cc:170 msgid "Favorite Functions" msgstr "Любимые функции" -#: f.widgets.cc:175 +#: f.widgets.cc:171 msgid "File: Open, RAW, Rename, Trash, Print" msgstr "" -#: f.widgets.cc:176 +#: f.widgets.cc:172 msgid "Save modified image file to disk" msgstr "Сохранить изменённое изображение на диск" -#: f.widgets.cc:177 +#: f.widgets.cc:173 msgid "Open previous or next file (left/right mouse click)" msgstr "Открыть предыдущий/следующий файл (лев/прав клик)" -#: f.widgets.cc:178 +#: f.widgets.cc:174 msgid "Metadata: Captions, Tags, Ratings, Geotags, Search ... " msgstr "Метаданные: Комментарии, Теги, Рейтинг, Поиск..." -#: f.widgets.cc:179 +#: f.widgets.cc:175 msgid "Areas: Select areas to edit, copy and paste" msgstr "Области: выбор областей для редактирования, копирования/вставки" -#: f.widgets.cc:180 +#: f.widgets.cc:176 msgid "Edit: Trim, Rotate, Resize, Brightness, Contrast, Text ..." msgstr "Редактирование: Обрезка, Поворот, Размер, Яркость, Контраст, Текст...." -#: f.widgets.cc:181 +#: f.widgets.cc:177 msgid "Repair: Sharpen, Noise, Red-eyes, Color, Paint, Clone ..." msgstr "" "Улучшение: Резкость, Шум, Красные глаза, Цвет, Рисование, Клонирование..." -#: f.widgets.cc:182 +#: f.widgets.cc:178 msgid "Bend: Fix Perspective, Bend/Warp image ..." msgstr "Деформация: Перспектива, Деформации..." -#: f.widgets.cc:183 +#: f.widgets.cc:179 msgid "Effects: Special Effects, Arty Transforms" msgstr "Эффекты: Художественная трансформация, Спецэффекты" -#: f.widgets.cc:184 +#: f.widgets.cc:180 msgid "Combine: HDR, HDF, Panorama, Stack, Mashup" msgstr "Комбинирование: HDR, HDF, Панорама, Стек, Коллаж" -#: f.widgets.cc:185 +#: f.widgets.cc:181 msgid "" "Undo or Redo one edit (left/right mouse click) \n" " hold key A to include all edits" @@ -3308,1125 +3439,1097 @@ "Отменить/повторить операцию (лев/прав клик) \n" " удерживайте A для всех операций" -#: f.widgets.cc:187 +#: f.widgets.cc:183 msgid "Tools: Index, Options, Shortcuts, Magnify ..." msgstr "" -#: f.widgets.cc:188 +#: f.widgets.cc:184 msgid "Help: Quick Start, User Guide, Recent Changes ..." msgstr "Помощь: Быстрый старт, Руководство Пользователя, Новые возможности" -#: f.widgets.cc:191 +#: f.widgets.cc:187 msgid "Set gallery from current image file" msgstr "Задать галерею с текущего изображения" -#: f.widgets.cc:192 +#: f.widgets.cc:188 msgid "Albums: Manage Albums, Slide Show, Desktop Background" msgstr "" -#: f.widgets.cc:193 +#: f.widgets.cc:189 msgid "go to bookmarked image" msgstr "перейти по закладке" -#: f.widgets.cc:194 +#: f.widgets.cc:190 msgid "increase thumbnail size" msgstr "Увеличение размера миниатюры" -#: f.widgets.cc:195 +#: f.widgets.cc:191 msgid "reduce thumbnail size" msgstr "Уменьшить размер миниатюр" -#: f.widgets.cc:196 +#: f.widgets.cc:192 msgid "change sort order" msgstr "изменить порядок сортировки" -#: f.widgets.cc:197 +#: f.widgets.cc:193 msgid "jump to beginning (top)" msgstr "на начало" -#: f.widgets.cc:198 +#: f.widgets.cc:194 msgid "jump to end (bottom)" msgstr "в конец" -#: f.widgets.cc:199 +#: f.widgets.cc:195 msgid "previous page" msgstr "Предыдущая страница" -#: f.widgets.cc:200 +#: f.widgets.cc:196 msgid "next page" msgstr "Следующая страница" -#: f.widgets.cc:201 +#: f.widgets.cc:197 msgid "slow scroll" msgstr "медленный скролл" -#: f.widgets.cc:202 +#: f.widgets.cc:198 msgid "Batch conversion, metadata, RAW processing" msgstr "" -#: f.widgets.cc:205 +#: f.widgets.cc:201 msgid "Choose a map for image locations" msgstr "Выберите карту для позиционирования фото" -#: f.widgets.cc:206 +#: f.widgets.cc:202 msgid "Set image search radius for map click" msgstr "Установите радиус поиска при клике по карте" -#: f.widgets.cc:209 +#: f.widgets.cc:205 msgid "Open another window" msgstr "Открыть другое окно" -#: f.widgets.cc:210 +#: f.widgets.cc:206 msgid "Open a new image file" msgstr "Открыть новый файл изображения" -#: f.widgets.cc:211 +#: f.widgets.cc:207 msgid "Open the previously seen file" msgstr "Открыть ранее просмотренный файл" -#: f.widgets.cc:212 +#: f.widgets.cc:208 msgid "Open a recently seen file" msgstr "Открыть недавно просмотренный файл" -#: f.widgets.cc:213 +#: f.widgets.cc:209 msgid "Open a newly added file" msgstr "Открыть добавленный файл" -#: f.widgets.cc:214 f.widgets.cc:215 +#: f.widgets.cc:210 f.widgets.cc:211 msgid "Open and edit a camera RAW file" msgstr "Открыть и редактировать RAW файл" -#: f.widgets.cc:216 +#: f.widgets.cc:212 msgid "Change the image file name" msgstr "Переименовать файл изображения" -#: f.widgets.cc:217 +#: f.widgets.cc:213 msgid "Create a blank image" msgstr "Создать пустое изображение" -#: f.widgets.cc:218 +#: f.widgets.cc:214 msgid "Move image file to Trash" msgstr "Переместить файл изображения в корзину?" -#: f.widgets.cc:219 +#: f.widgets.cc:215 msgid "Permanently delete image file" msgstr "Удалить файл изображения навсегда" -#: f.widgets.cc:220 +#: f.widgets.cc:216 msgid "Print the current image" msgstr "Печатать текущее изображения" -#: f.widgets.cc:221 f.widgets.cc:402 +#: f.widgets.cc:217 f.widgets.cc:401 msgid "Quit Fotoxx" msgstr "Выход из fotoxx" -#: f.widgets.cc:224 +#: f.widgets.cc:220 msgid "List a few key metadata items" msgstr "Список ключевых элементов метаданных" -#: f.widgets.cc:225 +#: f.widgets.cc:221 msgid "List all metadata items" msgstr "Список всех элементов метаданных" -#: f.widgets.cc:226 +#: f.widgets.cc:222 msgid "(Toggle) show captions and comments" msgstr "(Переключение) показать подписи/комментарии" -#: f.widgets.cc:227 +#: f.widgets.cc:223 msgid "Edit image tags/caption/rating ..." msgstr "Редактировать теги/рейтинг/описание" -#: f.widgets.cc:228 +#: f.widgets.cc:224 msgid "Edit any image metadata" msgstr "Редактировать метаданные изображения" -#: f.widgets.cc:229 +#: f.widgets.cc:225 msgid "Remove all metadata from an image" msgstr "Удалить все метаданные из изображения" -#: f.widgets.cc:230 +#: f.widgets.cc:226 msgid "Add/remove tags for multiple images" msgstr "Групповое изменение тэгов" -#: f.widgets.cc:231 +#: f.widgets.cc:227 msgid "Convert tag names for all images" msgstr "" -#: f.widgets.cc:232 +#: f.widgets.cc:228 msgid "Add/change/delete metadata for multiple images" msgstr "" -#: f.widgets.cc:233 +#: f.widgets.cc:229 msgid "Edit image location and geotags" msgstr "Редактировать геотеги " -#: f.widgets.cc:234 +#: f.widgets.cc:230 msgid "Add/revise geotags for multiple images" msgstr "" -#: f.widgets.cc:235 +#: f.widgets.cc:231 msgid "Find all images for a location [date]" msgstr "Найти все изображения по расположению [дате]" -#: f.widgets.cc:236 +#: f.widgets.cc:232 msgid "Find images meeting select criteria" msgstr "Найти изображения, соответствующие выбранным критериям" -#: f.widgets.cc:239 +#: f.widgets.cc:235 msgid "Select object or area for editing" msgstr "Выберите объект или область для редактирования" -#: f.widgets.cc:240 +#: f.widgets.cc:236 msgid "Show (outline) existing area" msgstr "Показать (контур) существующую область" -#: f.widgets.cc:241 +#: f.widgets.cc:237 msgid "Hide existing area" msgstr "Скрыть существующую область" -#: f.widgets.cc:242 +#: f.widgets.cc:238 msgid "Enable area for editing" msgstr "Включить область для последующих изменений" -#: f.widgets.cc:243 +#: f.widgets.cc:239 msgid "Disable area for editing" msgstr "Временно исключить область из списка измененяемых" -#: f.widgets.cc:244 +#: f.widgets.cc:240 msgid "Reverse existing area" msgstr "Инвертировать существующую область" -#: f.widgets.cc:245 +#: f.widgets.cc:241 msgid "Erase existing area" msgstr "Стереть существующую область" -#: f.widgets.cc:246 +#: f.widgets.cc:242 +msgid "Copy area for later pasting into image" +msgstr "" + +#: f.widgets.cc:243 +msgid "Paste previously copied area into image" +msgstr "" + +#: f.widgets.cc:244 msgid "Open a file and paste as area into image" msgstr "" -#: f.widgets.cc:247 +#: f.widgets.cc:245 msgid "Save area to a file with transparency" msgstr "" -#: f.widgets.cc:250 +#: f.widgets.cc:248 msgid "Trim/Crop margins and/or Rotate" msgstr "Границы при обрезке и/или повороте" -#: f.widgets.cc:251 +#: f.widgets.cc:249 msgid "Upright a rotated image" msgstr "Поворот изображения вертикально" -#: f.widgets.cc:252 f.widgets.cc:253 +#: f.widgets.cc:250 f.widgets.cc:251 msgid "Fast auto enhance that may work OK" msgstr "Быстрое авто улучшение (может сработать хорошо)" -#: f.widgets.cc:254 +#: f.widgets.cc:252 msgid "Adjust brightness, contrast, color" msgstr "Настроить яркость, контрастность, цветность" -#: f.widgets.cc:255 +#: f.widgets.cc:253 msgid "Add local contrast, enhance details" msgstr "Добавить локальный контраст, усилить детали" -#: f.widgets.cc:256 +#: f.widgets.cc:254 msgid "Adjust brightness distribution" msgstr "Выровнять распределение яркости" -#: f.widgets.cc:257 +#: f.widgets.cc:255 msgid "Flatten zonal brightness distribution" msgstr "" -#: f.widgets.cc:258 +#: f.widgets.cc:256 msgid "Change pixel dimensions" msgstr "Изменение размеров в пикселах" -#: f.widgets.cc:259 +#: f.widgets.cc:257 msgid "Mirror image horizontally or vertically" msgstr "Зеркальное отражение по горизонтали или вертикали" -#: f.widgets.cc:260 +#: f.widgets.cc:258 msgid "Write text on image" msgstr "Запись текста на изображение" -#: f.widgets.cc:261 +#: f.widgets.cc:259 msgid "Write lines or arrows on image" msgstr "Начертить линии или стрелки" -#: f.widgets.cc:262 +#: f.widgets.cc:260 msgid "Fix brightness uniformity across image" msgstr "Исправить неоднородность яркости по изображению" -#: f.widgets.cc:263 +#: f.widgets.cc:261 msgid "Paint edit function gradually with mouse" msgstr "Закрашивайте движениями мышки" -#: f.widgets.cc:264 +#: f.widgets.cc:262 msgid "Leverage edits by brightness or color" msgstr "Усиление/ослабление функции в зависимости от яркости или цвета" -#: f.widgets.cc:265 +#: f.widgets.cc:263 msgid "Edit plugins menu or run a plugin function" msgstr "Редактировать меню плагинов или запустить плагин" -#: f.widgets.cc:268 +#: f.widgets.cc:266 msgid "Make the image look sharper" msgstr "Повысить чёткость изображения" -#: f.widgets.cc:269 +#: f.widgets.cc:267 msgid "Make the image look fuzzy" msgstr "Размыть изображение " -#: f.widgets.cc:270 +#: f.widgets.cc:268 msgid "Filter noise from low-light photos" msgstr "Фильтрация шума в темных изображениях" -#: f.widgets.cc:271 +#: f.widgets.cc:269 msgid "Remove unwanted objects" msgstr "Удаление нежелательных объектов" -#: f.widgets.cc:272 +#: f.widgets.cc:270 msgid "Fix red-eyes from electronic flash" msgstr "Исправить эффект красных глаз при вспышке" -#: f.widgets.cc:273 +#: f.widgets.cc:271 msgid "Paint image pixels using the mouse" msgstr "Окраска пикселей мышью" -#: f.widgets.cc:274 +#: f.widgets.cc:272 msgid "Paint image transparency using the mouse" msgstr "" -#: f.widgets.cc:275 +#: f.widgets.cc:273 msgid "Make BW/color, negative/positive, sepia" msgstr "Преобразовать Ч/Б/цвет, негатив/позитив, сепия" -#: f.widgets.cc:276 +#: f.widgets.cc:274 msgid "Shift/convert colors into other colors" msgstr "Сдвиг/преобразования цветов" -#: f.widgets.cc:277 +#: f.widgets.cc:275 msgid "Adjust color using RGB or CMY colors" msgstr "" -#: f.widgets.cc:278 +#: f.widgets.cc:276 msgid "Adjust color using HSL colors" msgstr "" -#: f.widgets.cc:279 +#: f.widgets.cc:277 msgid "Adjust color in selected image areas" msgstr "Настройка цвета в выбранной области изображения" -#: f.widgets.cc:280 +#: f.widgets.cc:278 msgid "Match colors on one image with another" msgstr "Совмещение цветов одного изображения с другим" -#: f.widgets.cc:281 +#: f.widgets.cc:279 msgid "Convert to another color profile" msgstr "Преобразование в другой профиль цветов" -#: f.widgets.cc:282 +#: f.widgets.cc:280 msgid "Remove dust spots from scanned slides" msgstr "Удаление пятен пыли из отсканированных слайдов" -#: f.widgets.cc:283 +#: f.widgets.cc:281 msgid "Smoothen edges with jaggies" msgstr "Спрямить зазубренные края" -#: f.widgets.cc:284 +#: f.widgets.cc:282 msgid "Reduce Chromatic Abberation" msgstr "Коррекция хроматической аберрации" -#: f.widgets.cc:285 +#: f.widgets.cc:283 msgid "Erase known hot and dark pixels" msgstr "Стереть известные горячие и темные пиксели" -#: f.widgets.cc:288 +#: f.widgets.cc:286 msgid "Remove curvature, esp. panoramas" msgstr "Удаление искривления, особенно панорам" -#: f.widgets.cc:289 +#: f.widgets.cc:287 msgid "Straighten objects seen from an angle" msgstr "Выравнивание геометрии объектов, снятых под углом" -#: f.widgets.cc:290 +#: f.widgets.cc:288 msgid "Distort image areas using the mouse" msgstr "Исказить области изображения мышкой" -#: f.widgets.cc:291 f.widgets.cc:292 f.widgets.cc:293 +#: f.widgets.cc:289 f.widgets.cc:290 f.widgets.cc:291 msgid "Distort the whole image using the mouse" msgstr "Исказить всё изображение мышкой" -#: f.widgets.cc:294 +#: f.widgets.cc:292 msgid "Flatten a photographed book page" msgstr "Выровнять сфотографированную книжную страницу" -#: f.widgets.cc:297 +#: f.widgets.cc:295 msgid "Reduce color depth (posterize)" msgstr "Уменьшение глубины цвета (эффект плаката)" -#: f.widgets.cc:298 +#: f.widgets.cc:296 msgid "Convert to pencil sketch" msgstr "Преобразовать в карандашный набросок" -#: f.widgets.cc:299 +#: f.widgets.cc:297 msgid "Convert to line drawing (edge detection)" msgstr "Преобразовать в графику (распознавание границ)" -#: f.widgets.cc:300 +#: f.widgets.cc:298 msgid "Convert to solid color drawing" msgstr "Преобразовать в цветной рисунок" -#: f.widgets.cc:301 +#: f.widgets.cc:299 msgid "Graduated Blur depending on contrast" msgstr "Размытие в зависимости от контраста" -#: f.widgets.cc:302 +#: f.widgets.cc:300 msgid "Create an embossed or 3D appearance" msgstr "Создать рельеф или видимость 3D" -#: f.widgets.cc:303 +#: f.widgets.cc:301 msgid "Convert to square tiles" msgstr "Преобразование в квадратные плитки" -#: f.widgets.cc:304 +#: f.widgets.cc:302 msgid "Convert to dots (Roy Lichtenstein effect)" msgstr "Преобразование в точки (эффект Roy Lichtenstein)" -#: f.widgets.cc:305 +#: f.widgets.cc:303 msgid "Convert into a simulated painting" msgstr "Преобразование в моделируемую картину" -#: f.widgets.cc:306 +#: f.widgets.cc:304 msgid "Change brightness or color radially" msgstr "Изменение яркости и цвета радиально" -#: f.widgets.cc:307 +#: f.widgets.cc:305 msgid "Add texture to an image" msgstr "Добавить текстуру" -#: f.widgets.cc:308 +#: f.widgets.cc:306 msgid "Tile image with a repeating pattern" msgstr "Замостить изображение повторяющимся шаблоном" -#: f.widgets.cc:309 +#: f.widgets.cc:307 msgid "Create a mosaic with tiles made from all images" msgstr "Создать мозаику изо всех изображений" -#: f.widgets.cc:310 +#: f.widgets.cc:308 msgid "Process an image using a custom kernel" msgstr "Матричное преобразование изображение" -#: f.widgets.cc:311 +#: f.widgets.cc:309 msgid "Warp an image with a wave pattern" msgstr "Добавить волнистость" -#: f.widgets.cc:312 +#: f.widgets.cc:310 msgid "Blur an image in the direction of mouse drags" msgstr "" -#: f.widgets.cc:315 +#: f.widgets.cc:313 msgid "Combine bright/dark images for better detail" msgstr "Объединение ярких/темных изображений для улучшения деталей" -#: f.widgets.cc:316 +#: f.widgets.cc:314 msgid "Combine near/far focus images for deeper focus" msgstr "" "Объединение близко/далеко фокусных изображений для более глубокого фокуса" -#: f.widgets.cc:317 +#: f.widgets.cc:315 msgid "Combine images to erase passing people, etc." msgstr "Объединение изображений чтобы стереть проходящих людей и т.д." -#: f.widgets.cc:318 +#: f.widgets.cc:316 msgid "Combine noisy images into a low-noise image" msgstr "Объединение изображений с шумом и изображений с малым шумом" -#: f.widgets.cc:319 +#: f.widgets.cc:317 msgid "Combine images into a panorama" msgstr "Объединение изображений в панораму" -#: f.widgets.cc:320 +#: f.widgets.cc:318 msgid "Combine images into a vertical panorama" msgstr "Объединение изображений в вертикальную панораму" -#: f.widgets.cc:321 +#: f.widgets.cc:319 msgid "Combine images into a panorama (panorama tools)" msgstr "Объединение изображений в панораму (panorama tools)" -#: f.widgets.cc:322 +#: f.widgets.cc:320 msgid "Arrange images and text in a layout (montage)" msgstr "" -#: f.widgets.cc:325 +#: f.widgets.cc:323 msgid "Index new files and make thumbnails" msgstr "Индексировать новые файлы и сделать миниатюры" -#: f.widgets.cc:326 +#: f.widgets.cc:324 msgid "Change user preferences" msgstr "Изменение пользовательских настроек" -#: f.widgets.cc:327 +#: f.widgets.cc:325 msgid "Change Keyboard Shortcut Keys" msgstr "Изменить горячие клавиши" -#: f.widgets.cc:328 +#: f.widgets.cc:326 msgid "Show a brightness distribution graph" msgstr "Показать график распределения яркости" -#: f.widgets.cc:329 +#: f.widgets.cc:327 msgid "Show or revise grid lines" msgstr "Показать или изменить линии сетки" -#: f.widgets.cc:330 +#: f.widgets.cc:328 msgid "Change color of foreground lines" msgstr "Изменить цвет линий переднего плана" -#: f.widgets.cc:331 +#: f.widgets.cc:329 msgid "Show RGB colors at mouse click" msgstr "Показать цвета RGB при щелчке мышью" -#: f.widgets.cc:332 +#: f.widgets.cc:330 msgid "Magnify image around the mouse position" msgstr "Увеличить часть изображения под мышью" -#: f.widgets.cc:333 +#: f.widgets.cc:331 msgid "Highlight darkest and brightest pixels" msgstr "Подсветка слишком тёмных или ярких пикселей" -#: f.widgets.cc:334 +#: f.widgets.cc:332 msgid "Chart to adjust monitor color" msgstr "График для настройки цвета монитора" -#: f.widgets.cc:335 +#: f.widgets.cc:333 msgid "Chart to adjust monitor gamma" msgstr "График для настройки гаммы монитора" -#: f.widgets.cc:336 +#: f.widgets.cc:334 msgid "Change the GUI language" msgstr "Изменение языка GUI" -#: f.widgets.cc:337 +#: f.widgets.cc:335 msgid "Report missing translations" msgstr "Сообщить о пропущенном переводе" -#: f.widgets.cc:338 -msgid "Search all image files and report duplicates" -msgstr "Просматривает все файлы в поисках дублей" +#: f.widgets.cc:336 +msgid "Calibrate printer colors" +msgstr "" -#: f.widgets.cc:339 +#: f.widgets.cc:337 msgid "Memory and CPU (to terminal/logfile)" msgstr "Память и ЦПУ (в терминал/лог файл)" -#: f.widgets.cc:343 +#: f.widgets.cc:341 msgid "Rename/convert/resize/move multiple files" msgstr "Переименовать/преобразовать/переместить группу файлов" -#: f.widgets.cc:344 +#: f.widgets.cc:342 msgid "Upright multiple rotated image files" msgstr "Пакетный поворот изображений вертикально" -#: f.widgets.cc:345 +#: f.widgets.cc:343 msgid "Delete or Trash multiple files" msgstr "" -#: f.widgets.cc:346 +#: f.widgets.cc:344 msgid "Convert camera RAW files using DCraw" msgstr "Преобразование RAW посредством DCRaw" -#: f.widgets.cc:347 +#: f.widgets.cc:345 msgid "Convert camera RAW files using Raw Therapee" msgstr "Преобразование RAW посредством Raw Therapee" -#: f.widgets.cc:348 +#: f.widgets.cc:346 msgid "Burn selected image files to CD or DVD" msgstr "Записать изображения на CD/DVD" -#: f.widgets.cc:352 +#: f.widgets.cc:347 +msgid "Search all image files and report duplicates" +msgstr "Просматривает все файлы в поисках дублей" + +#: f.widgets.cc:351 msgid "Quick Start mini-guide" msgstr "Руководство по быстрому старту" -#: f.widgets.cc:353 +#: f.widgets.cc:352 msgid "Read the user guide" msgstr "Причитать руководство пользователя" -#: f.widgets.cc:354 +#: f.widgets.cc:353 msgid "Recent user guide changes" msgstr "Последние изменения руководства пользователя" -#: f.widgets.cc:355 +#: f.widgets.cc:354 msgid "Summary of image edit functions" msgstr "Обзор функций для редактирования изображений" -#: f.widgets.cc:356 +#: f.widgets.cc:355 msgid "Technical installation notes" msgstr "Технические замечания по установке" -#: f.widgets.cc:357 +#: f.widgets.cc:356 msgid "List updates by Fotoxx version" msgstr "Список обновлений версии Fotoxx" -#: f.widgets.cc:358 +#: f.widgets.cc:357 msgid "View the log file and error messages" msgstr "Просмотр файла журнала и сообщений об ошибках" -#: f.widgets.cc:359 +#: f.widgets.cc:358 msgid "How to do Fotoxx translations" msgstr "Как сделать перевод Fotoxx" -#: f.widgets.cc:360 +#: f.widgets.cc:359 msgid "Show the Fotoxx web page" msgstr "Показать веб страницу Fotoxx" -#: f.widgets.cc:361 +#: f.widgets.cc:360 msgid "Version, license, contact, credits" msgstr "Версия, лицензия, контакты, кредиты" -#: f.widgets.cc:364 +#: f.widgets.cc:363 msgid "Organize images into albums" msgstr "Рассортировать изображения по альбомам" -#: f.widgets.cc:365 +#: f.widgets.cc:364 msgid "Start a slide show" msgstr "Запустить слайд-шоу" -#: f.widgets.cc:366 +#: f.widgets.cc:365 msgid "Set desktop image from current Fotoxx image" msgstr "" -#: f.widgets.cc:367 +#: f.widgets.cc:366 msgid "Cycle desktop images from a Fotoxx album" msgstr "" -#: f.widgets.cc:389 +#: f.widgets.cc:388 msgid "New Window" msgstr "Новое окно" -#: f.widgets.cc:391 +#: f.widgets.cc:390 msgid "Open Previous File" msgstr "Открыть предыдущий файл" -#: f.widgets.cc:392 +#: f.widgets.cc:391 msgid "Recently Seen Images" msgstr "Недавно просмотренные изображения" -#: f.widgets.cc:393 +#: f.widgets.cc:392 msgid "Newest Images" msgstr "Последние сообщения" -#: f.widgets.cc:394 +#: f.widgets.cc:393 msgid "Open RAW (ufraw)" msgstr "" -#: f.widgets.cc:395 +#: f.widgets.cc:394 msgid "Open RAW (Raw Therapee)" msgstr "" -#: f.widgets.cc:397 +#: f.widgets.cc:396 msgid "New Blank Image" msgstr "Новое пустое изображение" -#: f.widgets.cc:399 +#: f.widgets.cc:398 msgid "Delete Image File" msgstr "Удалить файл изображения" -#: f.widgets.cc:400 +#: f.widgets.cc:399 msgid "Print Image" msgstr "Печать изображения" -#: f.widgets.cc:401 f.widgets.cc:538 +#: f.widgets.cc:400 f.widgets.cc:543 msgid "Set Desktop Image" msgstr "" -#: f.widgets.cc:405 +#: f.widgets.cc:404 msgid "View Metadata (short)" msgstr "Просмотр метаданных (коротко)" -#: f.widgets.cc:406 +#: f.widgets.cc:405 msgid "View Metadata (long)" msgstr "Просмотр метаданных (полностью)" -#: f.widgets.cc:407 +#: f.widgets.cc:406 msgid "Show Captions on Image" msgstr "Показать подписи на изображении" -#: f.widgets.cc:409 +#: f.widgets.cc:408 msgid "Edit Any Metadata" msgstr "Редактировать любые метаданные" -#: f.widgets.cc:412 f.widgets.cc:531 +#: f.widgets.cc:411 f.widgets.cc:534 msgid "Batch Rename Tags" msgstr "" -#: f.widgets.cc:413 f.widgets.cc:532 +#: f.widgets.cc:412 f.widgets.cc:535 msgid "Batch Add/Change Metadata" msgstr "" -#: f.widgets.cc:416 f.widgets.cc:606 +#: f.widgets.cc:415 f.widgets.cc:537 f.widgets.cc:611 msgid "Images by Geotag" msgstr "" -#: f.widgets.cc:417 f.widgets.cc:607 +#: f.widgets.cc:416 f.widgets.cc:538 f.widgets.cc:612 msgid "Search Images" msgstr "Поиск изображений" -#: f.widgets.cc:420 fotoxx.h:1156 +#: f.widgets.cc:419 fotoxx.h:1164 msgid "Select" msgstr "Выбрать" -#: f.widgets.cc:421 fotoxx.h:1158 +#: f.widgets.cc:420 fotoxx.h:1166 msgid "Show" msgstr "Показать" -#: f.widgets.cc:422 fotoxx.h:1112 +#: f.widgets.cc:421 fotoxx.h:1120 msgid "Hide" msgstr "Скрыть" -#: f.widgets.cc:423 fotoxx.h:1098 +#: f.widgets.cc:422 fotoxx.h:1106 msgid "Enable" msgstr "Включить" -#: f.widgets.cc:424 fotoxx.h:1094 +#: f.widgets.cc:423 fotoxx.h:1102 msgid "Disable" msgstr "Отключить" -#: f.widgets.cc:425 fotoxx.h:1115 +#: f.widgets.cc:424 fotoxx.h:1123 msgid "Invert" msgstr "Инвертировать" -#: f.widgets.cc:426 fotoxx.h:1172 +#: f.widgets.cc:425 fotoxx.h:1180 msgid "Unselect" msgstr "Отменить выбор" +#: f.widgets.cc:426 +msgid "Copy Area" +msgstr "" + #: f.widgets.cc:427 -msgid "Open Area File" +msgid "Paste Area" msgstr "" #: f.widgets.cc:428 +msgid "Open Area File" +msgstr "" + +#: f.widgets.cc:429 msgid "Save Area File" msgstr "" -#: f.widgets.cc:433 +#: f.widgets.cc:434 msgid "Voodoo 1" msgstr "" -#: f.widgets.cc:434 +#: f.widgets.cc:435 msgid "Voodoo 2" msgstr "" -#: f.widgets.cc:436 +#: f.widgets.cc:437 msgid "Adjust Brightness Dist." msgstr "" -#: f.widgets.cc:437 f.widgets.cc:676 +#: f.widgets.cc:438 f.widgets.cc:681 msgid "Zonal Flatten" msgstr "" -#: f.widgets.cc:441 +#: f.widgets.cc:442 msgid "Add Text" msgstr "Вписать текст" -#: f.widgets.cc:442 +#: f.widgets.cc:443 msgid "Add Lines" msgstr "Добавить Линии" -#: f.widgets.cc:445 +#: f.widgets.cc:446 msgid "Plugins" msgstr "Плагины" -#: f.widgets.cc:450 +#: f.widgets.cc:451 msgid "Denoise" msgstr "Уменьшить шум" -#: f.widgets.cc:452 +#: f.widgets.cc:453 msgid "Red Eyes" msgstr "Красные глаза" -#: f.widgets.cc:457 +#: f.widgets.cc:458 msgid "Adjust RGB/CMY" msgstr "" -#: f.widgets.cc:458 +#: f.widgets.cc:459 msgid "Adjust HSL" msgstr "" -#: f.widgets.cc:459 +#: f.widgets.cc:460 msgid "Brightness Ramp" msgstr "Спад яркости" -#: f.widgets.cc:461 +#: f.widgets.cc:462 msgid "Match Colors" msgstr "Подбор цветов" -#: f.widgets.cc:462 +#: f.widgets.cc:463 msgid "Color Profile" msgstr "Профиль цветов" -#: f.widgets.cc:464 +#: f.widgets.cc:465 msgid "Anti-Alias" msgstr "Антиалиасинг" -#: f.widgets.cc:470 +#: f.widgets.cc:471 msgid "Fix Perspective" msgstr "Исправить Перспективу" -#: f.widgets.cc:475 +#: f.widgets.cc:476 msgid "Flatten Book Page" msgstr "Выровнять страницу книги" -#: f.widgets.cc:478 +#: f.widgets.cc:479 msgid "Color Depth" msgstr "Глубина цвета" -#: f.widgets.cc:479 +#: f.widgets.cc:480 msgid "Sketch" msgstr "Набросок" -#: f.widgets.cc:483 +#: f.widgets.cc:484 msgid "Embossing" msgstr "Рельефное тиснение" -#: f.widgets.cc:485 +#: f.widgets.cc:486 msgid "Dots" msgstr "Точки" -#: f.widgets.cc:486 +#: f.widgets.cc:487 msgid "Painting" msgstr "Живопись" -#: f.widgets.cc:488 +#: f.widgets.cc:489 msgid "Texture" msgstr "Текстура" -#: f.widgets.cc:490 +#: f.widgets.cc:491 msgid "Mosaic" msgstr "Мозаика" -#: f.widgets.cc:496 +#: f.widgets.cc:497 msgid "High Dynamic Range" msgstr "Высокий динамический диапазон" -#: f.widgets.cc:497 +#: f.widgets.cc:498 msgid "High Depth of Field" msgstr "Высокая глубина резкости" -#: f.widgets.cc:498 +#: f.widgets.cc:499 msgid "Stack/Paint" msgstr "Стопка/Грим" -#: f.widgets.cc:499 +#: f.widgets.cc:500 msgid "Stack/Noise" msgstr "Стопка/Шум" -#: f.widgets.cc:500 +#: f.widgets.cc:501 msgid "Panorama" msgstr "Панорама" -#: f.widgets.cc:501 +#: f.widgets.cc:502 msgid "Vertical Panorama" msgstr "Вертикальная панорама" -#: f.widgets.cc:502 +#: f.widgets.cc:503 msgid "PT Panorama" msgstr "PT Панорама" -#: f.widgets.cc:503 +#: f.widgets.cc:504 msgid "Mashup" msgstr "Коллаж" -#: f.widgets.cc:508 +#: f.widgets.cc:509 msgid "Keyboard Shortcuts" msgstr "Сочетания клавиш" -#: f.widgets.cc:509 +#: f.widgets.cc:510 msgid "Show Brightness Dist." msgstr "Укажите Яркость" -#: f.widgets.cc:514 +#: f.widgets.cc:515 msgid "Dark/Bright Pixels" msgstr "Тёмные/Яркие Пиксели" -#: f.widgets.cc:515 +#: f.widgets.cc:516 msgid "Monitor Color" msgstr "Цветность монитора" -#: f.widgets.cc:517 +#: f.widgets.cc:518 msgid "Change Language" msgstr "Изменить язык" -#: f.widgets.cc:518 +#: f.widgets.cc:519 msgid "Missing Translations" msgstr "Пропущен перевод" -#: f.widgets.cc:520 +#: f.widgets.cc:522 msgid "Resources" msgstr "Ресурсы" -#: f.widgets.cc:527 +#: f.widgets.cc:529 msgid "Batch RAW (DCraw)" msgstr "Пакетная RAW-конв (DCraw)" -#: f.widgets.cc:528 +#: f.widgets.cc:530 msgid "Batch RAW (Raw Therapee)" msgstr "Пакетная RAW-конв (Raw Therapee)" -#: f.widgets.cc:529 +#: f.widgets.cc:531 msgid "Burn Images to CD/DVD" msgstr "Записать изображения на CD/DVD" -#: f.widgets.cc:539 +#: f.widgets.cc:544 msgid "Cycle Desktop Image" msgstr "" -#: f.widgets.cc:542 fotoxx-15.08.cc:5513 -msgid "Quick Start" -msgstr "Быстрый Старт" - -#: f.widgets.cc:543 fotoxx-15.08.cc:5516 -msgid "User Guide" -msgstr "Руководство пользователя" - -#: f.widgets.cc:544 fotoxx-15.08.cc:5519 -msgid "User Guide Changes" -msgstr "Изменения в руководстве пользователя" - -#: f.widgets.cc:545 fotoxx-15.08.cc:5525 -msgid "Edit Functions Summary" -msgstr "Краткое изложение функций" - -#: f.widgets.cc:546 fotoxx-15.08.cc:5522 -msgid "README" -msgstr "README" - -#: f.widgets.cc:547 fotoxx-15.08.cc:5528 -msgid "Change Log" -msgstr "Журнал изменений" - -#: f.widgets.cc:548 fotoxx-15.08.cc:5531 -msgid "Log File" -msgstr "Файл журнала" - -#: f.widgets.cc:549 fotoxx-15.08.cc:5534 -msgid "Translations" -msgstr "Переводы" - -#: f.widgets.cc:550 fotoxx-15.08.cc:5537 -msgid "Home Page" -msgstr "Домашняя страница" - -#: f.widgets.cc:551 fotoxx-15.08.cc:5540 -msgid "About" -msgstr "О программе" - -#: f.widgets.cc:556 f.widgets.cc:579 f.widgets.cc:601 +#: f.widgets.cc:561 f.widgets.cc:584 f.widgets.cc:606 msgid "Gallery" msgstr "Галерея" -#: f.widgets.cc:557 f.widgets.cc:580 f.widgets.cc:602 +#: f.widgets.cc:562 f.widgets.cc:585 f.widgets.cc:607 msgid "World Maps" msgstr "Карты Мира" -#: f.widgets.cc:559 +#: f.widgets.cc:564 msgid "Favorites" msgstr "Любимые" -#: f.widgets.cc:561 fotoxx.h:1152 +#: f.widgets.cc:566 fotoxx.h:1160 msgid "Save" msgstr "Сохранить" -#: f.widgets.cc:562 +#: f.widgets.cc:567 msgid "Prev/Next" msgstr "Пред/След" -#: f.widgets.cc:563 +#: f.widgets.cc:568 msgid "Metadata" msgstr "Метаданные" -#: f.widgets.cc:564 +#: f.widgets.cc:569 msgid "Areas" msgstr "Области" -#: f.widgets.cc:565 fotoxx.h:1097 +#: f.widgets.cc:570 fotoxx.h:1105 msgid "Edit" msgstr "Редактировать" -#: f.widgets.cc:566 +#: f.widgets.cc:571 msgid "Repair" msgstr "Исправить" -#: f.widgets.cc:567 +#: f.widgets.cc:572 msgid "Bend" msgstr "Деформация" -#: f.widgets.cc:568 +#: f.widgets.cc:573 msgid "Effects" msgstr "Эффекты" -#: f.widgets.cc:569 +#: f.widgets.cc:574 msgid "Combine" msgstr "Объединение" -#: f.widgets.cc:570 +#: f.widgets.cc:575 msgid "Undo/Redo" msgstr "Отменить/Повторить" -#: f.widgets.cc:571 +#: f.widgets.cc:576 msgid "Tools" msgstr "Инструменты" -#: f.widgets.cc:572 f.widgets.cc:594 fotoxx-15.08.cc:5544 fotoxx.h:1111 -msgid "Help" -msgstr "Справка" - -#: f.widgets.cc:582 +#: f.widgets.cc:587 #, fuzzy msgid "Sync.G" msgstr "Галерея" -#: f.widgets.cc:583 +#: f.widgets.cc:588 msgid "Albums" msgstr "" -#: f.widgets.cc:584 +#: f.widgets.cc:589 msgid "Bookmarks" msgstr "" -#: f.widgets.cc:593 +#: f.widgets.cc:598 msgid "Batch" msgstr "" -#: f.widgets.cc:604 +#: f.widgets.cc:609 msgid "Choose Map" msgstr "Выберите карту" -#: f.widgets.cc:605 +#: f.widgets.cc:610 msgid "Search Range" msgstr "Радиус Поиска" -#: f.widgets.cc:613 fotoxx.h:1170 +#: f.widgets.cc:618 fotoxx.h:1178 msgid "Undo" msgstr "Отменить" -#: f.widgets.cc:614 fotoxx.h:1143 +#: f.widgets.cc:619 fotoxx.h:1151 msgid "Redo" msgstr "Вернуть" -#: f.widgets.cc:655 +#: f.widgets.cc:660 msgid "Popup Image" msgstr "Выпадающее изображение" -#: f.widgets.cc:656 +#: f.widgets.cc:661 msgid "Popup Image (add)" msgstr "Всплывающее изображение (добавить)" -#: f.widgets.cc:660 fotoxx.h:1146 +#: f.widgets.cc:665 fotoxx.h:1154 msgid "Rename" msgstr "Переименовать" -#: f.widgets.cc:661 +#: f.widgets.cc:666 msgid "Copy to Location" msgstr "Копировать в папку" -#: f.widgets.cc:662 +#: f.widgets.cc:667 msgid "Move to Location" msgstr "Переместить в папку" -#: f.widgets.cc:663 +#: f.widgets.cc:668 msgid "Copy to Clipboard" msgstr "Копировать в буфер" -#: f.widgets.cc:664 +#: f.widgets.cc:669 msgid "Remove from Album" msgstr "Удалить из альбома" -#: f.widgets.cc:665 +#: f.widgets.cc:670 msgid "Cut to Image Cache" msgstr "Вырезать в кэш изображений" -#: f.widgets.cc:666 +#: f.widgets.cc:671 msgid "Copy to Image Cache" msgstr "Скопировать в кэш изображений" -#: f.widgets.cc:667 +#: f.widgets.cc:672 msgid "Paste Image Cache Here (clear)" msgstr "Поместить сюда кэш изображений с очисткой" -#: f.widgets.cc:668 +#: f.widgets.cc:673 msgid "Paste Image Cache Here (keep)" msgstr "Поместить сюда кэш изображений с сохранением" -#: f.widgets.cc:669 +#: f.widgets.cc:674 msgid "Paste Current Image File Here" msgstr "" -#: f.widgets.cc:673 +#: f.widgets.cc:678 msgid "Voodoo Enhance" msgstr "Улучшение Voodoo" -#: f.widgets.cc:675 +#: f.widgets.cc:680 msgid "Brightness Dist." msgstr "Распределение яркости" -#: f.widgets.cc:678 +#: f.widgets.cc:683 msgid "Select Area" msgstr "Выберите область" -#: f.widgets.cc:681 fotoxx.h:1166 +#: f.widgets.cc:686 fotoxx.h:1174 msgid "Trash" msgstr "Корзина" -#: f.widgets.cc:806 +#: f.widgets.cc:811 msgid "Image Locations" msgstr "Раположение Фото" -#: fotoxx-15.08.cc:376 +#: fotoxx-15.09.cc:361 msgid "Please install missing programs:" msgstr "Установите отсутствующие программы:" -#: fotoxx-15.08.cc:667 +#: fotoxx-15.09.cc:652 msgid "Kill active dialog?" msgstr "Отменить активный диалог?" -#: fotoxx-15.08.cc:742 +#: fotoxx-15.09.cc:723 msgid "(reduced)" msgstr "(сокращено)" -#: fotoxx-15.08.cc:743 +#: fotoxx-15.09.cc:724 msgid "area active" msgstr "область активна" -#: fotoxx-15.08.cc:744 +#: fotoxx-15.09.cc:725 msgid "dialog open" msgstr "диалог открыт" -#: fotoxx-15.08.cc:745 -msgid "BUSY" -msgstr "" - -#: fotoxx-15.08.cc:746 +#: fotoxx-15.09.cc:726 msgid "blocked" msgstr "" -#: fotoxx-15.08.cc:796 +#: fotoxx-15.09.cc:776 msgid "edits" msgstr "редактирование" -#: fotoxx-15.08.cc:2805 +#: fotoxx-15.09.cc:2756 msgid "Exceed 50 anchor points" msgstr "Превышать 50 точек привязки" -#: fotoxx-15.08.cc:3018 +#: fotoxx-15.09.cc:2969 msgid "load curve from a file" msgstr "Загрузить кривую из файла" -#: fotoxx-15.08.cc:3091 +#: fotoxx-15.09.cc:3042 msgid "save curve to a file" msgstr "Сохранить кривую в файл" -#: fotoxx-15.08.cc:3161 +#: fotoxx-15.09.cc:3112 msgid "Too many edits, please save image" msgstr "Слишком много изменений, пожалуйста сохраните изображение" -#: fotoxx-15.08.cc:3180 +#: fotoxx-15.09.cc:3131 msgid "" "Select area not active.\n" "Continue?" @@ -4434,373 +4537,373 @@ "Выбранная область не активна.\n" "Продолжить?" -#: fotoxx-15.08.cc:3435 +#: fotoxx-15.09.cc:3385 msgid "Load settings from file" msgstr "Загрузка установок из файлв" -#: fotoxx-15.08.cc:3532 +#: fotoxx-15.09.cc:3482 msgid "file data does not fit dialog" msgstr "данные не подходят к диалогу" -#: fotoxx-15.08.cc:3542 +#: fotoxx-15.09.cc:3492 msgid "Save settings to a file" msgstr "Сохранить установки в файл" -#: fotoxx-15.08.cc:3835 +#: fotoxx-15.09.cc:3781 msgid "This action will discard changes to current image" msgstr "Это действие отменит все изменения текущего изображения" -#: fotoxx-15.08.cc:3836 fotoxx-15.08.cc:3837 +#: fotoxx-15.09.cc:3782 fotoxx-15.09.cc:3783 msgid "prior function still active" msgstr "активна предыдущая функция" -#: fotoxx-15.08.cc:3838 fotoxx.h:1116 +#: fotoxx-15.09.cc:3784 fotoxx.h:1124 msgid "Keep" msgstr "Оставить" -#: fotoxx-15.08.cc:3839 +#: fotoxx-15.09.cc:3785 msgid "Discard" msgstr "Сбросить" -#: fotoxx.h:1068 +#: fotoxx.h:1076 msgid "Add" msgstr "Добавить" -#: fotoxx.h:1069 +#: fotoxx.h:1077 msgid "Add All" msgstr "Добавить все" -#: fotoxx.h:1071 +#: fotoxx.h:1079 msgid "Amount" msgstr "Размер" -#: fotoxx.h:1072 +#: fotoxx.h:1080 msgid "Angle" msgstr "Угол" -#: fotoxx.h:1073 +#: fotoxx.h:1081 msgid "Apply" msgstr "Применить" -#: fotoxx.h:1074 +#: fotoxx.h:1082 msgid "Auto" msgstr "" -#: fotoxx.h:1075 +#: fotoxx.h:1083 msgid "Black" msgstr "Черный" -#: fotoxx.h:1076 +#: fotoxx.h:1084 msgid "Blend Width" msgstr "Ширина области смешивания" -#: fotoxx.h:1078 zfuncs.cc:10061 +#: fotoxx.h:1086 zfuncs.cc:10054 msgid "bottom" msgstr "Низ" -#: fotoxx.h:1080 +#: fotoxx.h:1088 msgid "Browse" msgstr "Обзор" -#: fotoxx.h:1081 +#: fotoxx.h:1089 msgid "Cancel" msgstr "Отмена" -#: fotoxx.h:1082 +#: fotoxx.h:1090 msgid "center" msgstr "Центр" -#: fotoxx.h:1083 +#: fotoxx.h:1091 msgid "Choose" msgstr "Выбор" -#: fotoxx.h:1084 +#: fotoxx.h:1092 msgid "Clear" msgstr "Очистить" -#: fotoxx.h:1085 +#: fotoxx.h:1093 msgid "Color" msgstr "Цвет" -#: fotoxx.h:1086 +#: fotoxx.h:1094 msgid "continue" msgstr "" -#: fotoxx.h:1088 +#: fotoxx.h:1096 msgid "Copy" msgstr "Копировать" -#: fotoxx.h:1089 +#: fotoxx.h:1097 msgid "Create" msgstr "Создать" -#: fotoxx.h:1090 +#: fotoxx.h:1098 msgid "Curve File:" msgstr "Файл кривой:" -#: fotoxx.h:1091 +#: fotoxx.h:1099 msgid "Cut" msgstr "Вырезать" -#: fotoxx.h:1092 +#: fotoxx.h:1100 msgid "Deband" msgstr "Уменьшить постеризацию" -#: fotoxx.h:1093 +#: fotoxx.h:1101 msgid "Delete" msgstr "Удалить" -#: fotoxx.h:1095 +#: fotoxx.h:1103 msgid "Done" msgstr "Готово" -#: fotoxx.h:1096 +#: fotoxx.h:1104 msgid "edge" msgstr "Кромка" -#: fotoxx.h:1099 +#: fotoxx.h:1107 msgid "Erase" msgstr "Стереть" -#: fotoxx.h:1100 +#: fotoxx.h:1108 msgid "Fetch" msgstr "Получить" -#: fotoxx.h:1101 +#: fotoxx.h:1109 msgid "output file already exists" msgstr "такой файл уже существует" -#: fotoxx.h:1102 +#: fotoxx.h:1110 #, c-format msgid "%d files selected" msgstr "%d файлов выбрано" -#: fotoxx.h:1103 +#: fotoxx.h:1111 msgid "Find" msgstr "Поиск" -#: fotoxx.h:1104 +#: fotoxx.h:1112 msgid "Finish" msgstr "Финиш" -#: fotoxx.h:1105 +#: fotoxx.h:1113 msgid "Flatten" msgstr "Выровнять" -#: fotoxx.h:1106 +#: fotoxx.h:1114 msgid "Font" msgstr "Шрифт" -#: fotoxx.h:1107 +#: fotoxx.h:1115 msgid "Geotags" msgstr "Геотеги" -#: fotoxx.h:1109 +#: fotoxx.h:1117 msgid "Grid" msgstr "Сетка" -#: fotoxx.h:1110 +#: fotoxx.h:1118 msgid "Height" msgstr "Высота" -#: fotoxx.h:1113 +#: fotoxx.h:1121 msgid "Images" msgstr "Изображения" -#: fotoxx.h:1114 +#: fotoxx.h:1122 msgid "Insert" msgstr "Вставить" -#: fotoxx.h:1117 zfuncs.cc:10065 +#: fotoxx.h:1125 zfuncs.cc:10058 msgid "left" msgstr "влево" -#: fotoxx.h:1118 +#: fotoxx.h:1126 msgid "limit" msgstr "Лимит" -#: fotoxx.h:1119 +#: fotoxx.h:1127 msgid "Load" msgstr "Загрузить" -#: fotoxx.h:1120 +#: fotoxx.h:1128 msgid "Make" msgstr "Создать" -#: fotoxx.h:1122 +#: fotoxx.h:1130 msgid "Map" msgstr "Карта" -#: fotoxx.h:1123 +#: fotoxx.h:1131 msgid "Max" msgstr "Макс" -#: fotoxx.h:1124 +#: fotoxx.h:1132 msgid "Negative" msgstr "Негатив" -#: fotoxx.h:1125 +#: fotoxx.h:1133 msgid "New" msgstr "Новый" -#: fotoxx.h:1126 +#: fotoxx.h:1134 msgid "Next" msgstr "Следующий" -#: fotoxx.h:1127 zfuncs.cc:9147 +#: fotoxx.h:1135 zfuncs.cc:9148 msgid "No" msgstr "Нет" -#: fotoxx.h:1128 +#: fotoxx.h:1136 msgid "no images" msgstr "нет изображений" -#: fotoxx.h:1130 +#: fotoxx.h:1138 msgid "no selection" msgstr "ничего не выбрано" -#: fotoxx.h:1131 +#: fotoxx.h:1139 msgid "OK" msgstr "ОК" -#: fotoxx.h:1133 +#: fotoxx.h:1141 msgid "Paste" msgstr "Вставить" -#: fotoxx.h:1134 +#: fotoxx.h:1142 msgid "Pause" msgstr "Пауза" -#: fotoxx.h:1135 +#: fotoxx.h:1143 msgid "Percent" msgstr "Процент" -#: fotoxx.h:1137 +#: fotoxx.h:1145 msgid "Presets" msgstr "Предустановленные" -#: fotoxx.h:1138 +#: fotoxx.h:1146 msgid "Prev" msgstr "Предыдущий" -#: fotoxx.h:1139 +#: fotoxx.h:1147 msgid "Proceed" msgstr "Продолжить" -#: fotoxx.h:1141 +#: fotoxx.h:1149 msgid "range" msgstr "Диапазон" -#: fotoxx.h:1144 +#: fotoxx.h:1152 msgid "Reduce" msgstr "Уменьшить" -#: fotoxx.h:1145 +#: fotoxx.h:1153 msgid "Remove" msgstr "Удалить" -#: fotoxx.h:1147 +#: fotoxx.h:1155 msgid "Replace" msgstr "" -#: fotoxx.h:1148 +#: fotoxx.h:1156 msgid "Reserved" msgstr "" -#: fotoxx.h:1149 +#: fotoxx.h:1157 msgid "Reset" msgstr "Сбросить" -#: fotoxx.h:1150 zfuncs.cc:10069 +#: fotoxx.h:1158 zfuncs.cc:10062 msgid "right" msgstr "вправо" -#: fotoxx.h:1151 +#: fotoxx.h:1159 msgid "Rotate" msgstr "Повернуть" -#: fotoxx.h:1153 +#: fotoxx.h:1161 msgid "Unknown file type, save as tiff/jpeg/png to edit" msgstr "Неизвестный тип файла, сохраните как tiff/jpeg/png для редактирования" -#: fotoxx.h:1154 +#: fotoxx.h:1162 msgid "Search" msgstr "Поиск" -#: fotoxx.h:1155 +#: fotoxx.h:1163 msgid "Seconds" msgstr "Cекунд" -#: fotoxx.h:1159 +#: fotoxx.h:1167 msgid "Size" msgstr "Размер" -#: fotoxx.h:1160 +#: fotoxx.h:1168 msgid "Start" msgstr "Старт" -#: fotoxx.h:1161 +#: fotoxx.h:1169 msgid "Strength" msgstr "Сила" -#: fotoxx.h:1162 +#: fotoxx.h:1170 msgid "Threshold" msgstr "Порог" -#: fotoxx.h:1163 +#: fotoxx.h:1171 #, c-format msgid "exceed %d files" msgstr "Превышено %d файлов" -#: fotoxx.h:1164 zfuncs.cc:10057 +#: fotoxx.h:1172 zfuncs.cc:10050 msgid "top" msgstr "верх" -#: fotoxx.h:1165 +#: fotoxx.h:1173 msgid "Transparency" msgstr "Прозрачность" -#: fotoxx.h:1167 +#: fotoxx.h:1175 msgid "Trim" msgstr "Обрезка" -#: fotoxx.h:1168 +#: fotoxx.h:1176 msgid "Undo All" msgstr "Отменить все" -#: fotoxx.h:1169 +#: fotoxx.h:1177 msgid "Undo Last" msgstr "Отменить последнее" -#: fotoxx.h:1171 +#: fotoxx.h:1179 msgid "Unfinish" msgstr "Не финиш" -#: fotoxx.h:1173 +#: fotoxx.h:1181 msgid "View" msgstr "Вид" -#: fotoxx.h:1174 +#: fotoxx.h:1182 msgid "Web" msgstr "Веб" -#: fotoxx.h:1175 +#: fotoxx.h:1183 msgid "White" msgstr "Белый" -#: fotoxx.h:1176 +#: fotoxx.h:1184 msgid "Width" msgstr "Ширина" -#: fotoxx.h:1177 +#: fotoxx.h:1185 msgid "x-offset" msgstr "x-смещение" -#: fotoxx.h:1178 +#: fotoxx.h:1186 msgid "y-offset" msgstr "y-смещение" -#: fotoxx.h:1179 zfuncs.cc:9147 +#: fotoxx.h:1187 zfuncs.cc:9148 msgid "Yes" msgstr "Да" @@ -4817,335 +4920,71 @@ msgid "user guide not found" msgstr "Инструкция не найдена" -#: zfuncs.cc:5182 +#: zfuncs.cc:5183 #, c-format msgid "cannot open file %s" msgstr "Не удалось открыть файл %s" -#: zfuncs.cc:5218 +#: zfuncs.cc:5219 msgid "save screen to file" msgstr "Сохранить экран в файл" -#: zfuncs.cc:9223 zfuncs.cc:9724 zfuncs.cc:10044 +#: zfuncs.cc:9224 zfuncs.cc:9717 zfuncs.cc:10037 msgid "cancel" msgstr "Отмена" -#: zfuncs.cc:9685 +#: zfuncs.cc:9678 msgid "choose file" msgstr "выберите файл" -#: zfuncs.cc:9690 +#: zfuncs.cc:9683 msgid "choose files" msgstr "выберите файлы" -#: zfuncs.cc:9695 +#: zfuncs.cc:9688 msgid "save" msgstr "Сохранить" -#: zfuncs.cc:9701 +#: zfuncs.cc:9694 msgid "choose folder" msgstr "выберите каталог" -#: zfuncs.cc:9706 +#: zfuncs.cc:9699 msgid "choose folders" msgstr "выберите каталоги" -#: zfuncs.cc:9711 +#: zfuncs.cc:9704 msgid "create folder" msgstr "Создать каталог" -#: zfuncs.cc:9718 +#: zfuncs.cc:9711 msgid "hidden" msgstr "Скрытый" -#: zfuncs.cc:10044 +#: zfuncs.cc:10037 msgid "done" msgstr "Готово" -#: zfuncs.cc:10044 zfuncs.cc:10053 +#: zfuncs.cc:10037 zfuncs.cc:10046 msgid "margins" msgstr "Края" -#: zfuncs.cc:10074 +#: zfuncs.cc:10067 msgid "image scale" msgstr "Масштаб изображения" -#: zfuncs.cc:10076 +#: zfuncs.cc:10069 msgid "percent" msgstr "Процент" -#: zfuncs.cc:10083 +#: zfuncs.cc:10076 msgid "image" msgstr "изображение" -#: zfuncs.cc:10087 +#: zfuncs.cc:10080 msgid "width" msgstr "Ширина" -#: zfuncs.cc:10091 +#: zfuncs.cc:10084 msgid "height" msgstr "Высота" - -#~ msgid "Play tone" -#~ msgstr "Сигнал" - -#~ msgid "Show Caption" -#~ msgstr "Показать Подпись" - -#~ msgid "Show Comments" -#~ msgstr "Показать Комментарии" - -#~ msgid "Wait" -#~ msgstr "Ждите" - -#~ msgid "Zoom location" -#~ msgstr "Что увеличивать" - -#~ msgid "Transition" -#~ msgstr "Переход" - -#~ msgid "next" -#~ msgstr "cледующий" - -#~ msgid "load select area from a file" -#~ msgstr "Загрузить выбранную область из файла" - -#~ msgid "save select area to a file" -#~ msgstr "Сохранить выбранную область в файл" - -#~ msgid "save select area as a PNG file" -#~ msgstr "сохранить выделение как PNG файл" - -#, fuzzy -#~ msgid "Darken" -#~ msgstr "Темнее" - -#, fuzzy -#~ msgid "Brighten" -#~ msgstr "Светлее" - -#~ msgid "Metadata:" -#~ msgstr "Метаданные" - -#~ msgid "Comment" -#~ msgstr "Комментарий" - -#~ msgid "" -#~ "fix text in layout \n" -#~ " start new text" -#~ msgstr "" -#~ "фиксировать текст в размещении \n" -#~ " начать новый текст" - -#~ msgid "color" -#~ msgstr "Цвет" - -#~ msgid "" -#~ "area info file missing: \n" -#~ " %s" -#~ msgstr "" -#~ "нет инфофайла области: \n" -#~ " %s" - -#~ msgid "index busy" -#~ msgstr "файловый индекс занят" - -#~ msgid "Add geotags to multiple images" -#~ msgstr "Добавить геотеги к нескольким изображениям" - -#~ msgid "Copy an area for later pasting" -#~ msgstr "Копировать область для последующей вставки" - -#~ msgid "Paste an area into the current image" -#~ msgstr "Вставить область в текущие изображение" - -#~ msgid "Open a file with a saved area" -#~ msgstr "Открыть файл с сохраненной областью" - -#~ msgid "Save an area to a file" -#~ msgstr "Сохранить область в файл" - -#~ msgid "Save an area to a PNG file with transparency" -#~ msgstr "Сохранить область в файл PNG с прозрачностью" - -#~ msgid "Arrange multiple images on a background image" -#~ msgstr "Расположение нескольких изображений на фоновом" - -#~ msgid "Save PNG" -#~ msgstr "Сохранить PNG" - -#~ msgid "Size:" -#~ msgstr "Размер:" - -#~ msgid "Image Width:" -#~ msgstr "Ширина изображения:" - -#~ msgid "Height:" -#~ msgstr "Высота:" - -#~ msgid "Depth:" -#~ msgstr "Глубина:" - -#~ msgid "Enter text, click/drag on image." -#~ msgstr "Введите текст, размещение мышкой." - -#~ msgid "Enter line/arrow properties, click/drag on image." -#~ msgstr "Ввести свойства линий/стрелок, клик/перемещение по изображению." - -#~ msgid "Set Blur Radius" -#~ msgstr "Установить радиус размытия" - -#~ msgid "Chromatic Abberation" -#~ msgstr "Хроматическая аберрация" - -#~ msgid "Fix Stuck Pixels" -#~ msgstr "Устранить горячие пиксели" - -#~ msgid "Revise RGB" -#~ msgstr "Просмотреть RGB" - -#~ msgid "Top Image Directories" -#~ msgstr "Папки верхнего уровня" - -#~ msgid "%d images remaining in cache" -#~ msgstr "в кеше осталось %d изображений" - -#~ msgid "" -#~ "First time Fotoxx startup. \n" -#~ "Latest version is available at: www.kornelix.com/fotoxx \n" -#~ "An image file index will be created. Your image files will \n" -#~ "not be changed, moved, or copied. This process may need \n" -#~ "considerable time if you have thousands of image files." -#~ msgstr "" -#~ "Первый запуск Fotoxx. \n" -#~ "Последняя версия на: www.kornelix.com/fotoxx \n" -#~ "Будет создан индекс изображений. Файлы не будут \n" -#~ "изменены или перемещены. Это может занять много \n" -#~ "времени при большом количестве файлов." - -#~ msgid "Tools: Index, Settings, Albums, Batch Funcs ..." -#~ msgstr "Инструменты: Индекс, Установки, Альбомы, Пакетная обработка..." - -#~ msgid "Paint/Clone Pixels" -#~ msgstr "Перекрасить/Клонировать Пиксели" - -#~ msgid "Fix Color Fringes" -#~ msgstr "Удалить ореол" - -#~ msgid "Adjust color using CMYK or RGB values" -#~ msgstr "Настройка цвета используя CMYK или RGB значения" - -#~ msgid "printed image width: %.1f height: %.1f cm" -#~ msgstr "Печатать изображение шириной: %.1f высотой: %.1f cm" - -#~ msgid "menu locked" -#~ msgstr "меню заблокировано" - -#~ msgid "shrink" -#~ msgstr "сжать" - -#~ msgid "delete project file?" -#~ msgstr "удалить файл проекта?" - -#~ msgid "save output file" -#~ msgstr "сохранить файл" - -#~ msgid "function busy" -#~ msgstr "функция активна" - -#~ msgid "no newly added files found" -#~ msgstr "новых файлов не найдено" - -#~ msgid "no selection made" -#~ msgstr "ничего не выбрано" - -#~ msgid "Autocomplete" -#~ msgstr "Автозаполнение" - -#~ msgid "Batch functions, Combine functions" -#~ msgstr "Пакетное преобразования, Комбинирование" - -#~ msgid "next row" -#~ msgstr "Следующий ряд" - -#~ msgid "previous row" -#~ msgstr "Предыдущий ряд" - -#~ msgid "open another directory" -#~ msgstr "открыть другую папку" - -#~ msgid "Auto-Trim" -#~ msgstr "Авто-обрезка" - -#~ msgid "Images by Location/Date" -#~ msgstr "Изображения по местоположению/дате" - -#~ msgid "Menu and Launcher" -#~ msgstr "Меню и лаунчер" - -#~ msgid "User Settings" -#~ msgstr "Настройки пользователя" - -#~ msgid "Save to Disk" -#~ msgstr "Сохранить" - -#~ msgid "Sync Gallery" -#~ msgstr "Синхронизация галереи" - -#~ msgid "Remove margins from warp, panorama, etc." -#~ msgstr "Обрезка краев после деформаций, панорам и т.д." - -#~ msgid "Change color of area outlines" -#~ msgstr "Изменить цвет границы области" - -#~ msgid "Create a Gnome menu and launcher" -#~ msgstr "Создать элемент меню Gnome и лаунчер" - -#~ msgid "Tools: Index, Settings, Batch Funcs, Magnify ..." -#~ msgstr "Инструменты: Индекс, Установки, Пакетная обработка..." - -#~ msgid "File: Sync, Open, Save, Trash, Rename, Print" -#~ msgstr "Файл: Синхр., Открыть, Сохранить, Удалить, Переименовать, Печатать" - -#~ msgid "Make Launcher" -#~ msgstr "Создать элемент меню запуска" - -#~ msgid "Monitor scale" -#~ msgstr "Масштаб меню" - -#~ msgid "Magnified" -#~ msgstr "Увеличенный" - -#~ msgid "Drag" -#~ msgstr "Перетащить" - -#~ msgid "Image Pan" -#~ msgstr "Панорамирование" - -#~ msgid "Directory Gallery" -#~ msgstr " Галерея каталогов" - -#~ msgid "Settings" -#~ msgstr "Настройки" - -#~ msgid "thumbnails directory not .../thumbnails" -#~ msgstr "папка иконок не ./thumbnails" - -#~ msgid "" -#~ "invalid top image directory: \n" -#~ " %s" -#~ msgstr "" -#~ "неправильный каталог верхнего уровня: \n" -#~ " %s" - -#~ msgid "terminated by user" -#~ msgstr "прекращено пользователем" - -#~ msgid "Thumbnails" -#~ msgstr "миниатюр" - -#~ msgid "add directory" -#~ msgstr "Добавить каталог" - -#~ msgid "albums" -#~ msgstr "альбомы" diff -Nru fotoxx-15.08/Makefile fotoxx-15.09/Makefile --- fotoxx-15.08/Makefile 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/Makefile 2015-08-31 10:21:01.000000000 +0000 @@ -1,6 +1,6 @@ # fotoxx makefile -FOTOXX = fotoxx-15.08.cc +FOTOXX = fotoxx-15.09.cc # defaults for parameters that may be pre-defined CXXFLAGS += -Wall -ggdb @@ -25,7 +25,7 @@ ALLFILES = fotoxx.o f.widgets.o f.file.o f.gallery.o f.area.o f.meta.o \ f.edit.o f.repair.o f.bend.o f.effects.o f.combine.o f.mashup.o \ - f.albums.o f.tools.o f.batch.o zfuncs.o + f.albums.o f.tools.o f.batch.o f.image.o zfuncs.o fotoxx: $(ALLFILES) $(CXX) $(LDFLAGS) -o fotoxx $(ALLFILES) $(LIBS) @@ -75,6 +75,9 @@ f.batch.o: f.batch.cc fotoxx.h $(CXX) $(CFLAGS) f.batch.cc +f.image.o: f.image.cc fotoxx.h + $(CXX) $(CFLAGS) f.image.cc + zfuncs.o: zfuncs.cc zfuncs.h $(CXX) $(CFLAGS) zfuncs.cc -D PREFIX=\"$(PREFIX)\" -D DOCDIR=\"$(DOCDIR)\" diff -Nru fotoxx-15.08/zfuncs.cc fotoxx-15.09/zfuncs.cc --- fotoxx-15.08/zfuncs.cc 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/zfuncs.cc 2015-08-31 10:21:01.000000000 +0000 @@ -24,7 +24,7 @@ ***************************************************************************/ -// zfuncs.cpp version v.6.1 +// zfuncs.cpp version v.6.2 #include "zfuncs.h" @@ -169,6 +169,7 @@ zmakecursor make a cursor from an image file (.png .jpg) gdk_pixbuf_rotate rotate a pixbuf through any angle gdk_pixbuf_stripalpha remove an alpha channel from a pixbuf + text_pixbuf create pixbuf containing text C++ Classes ----------- @@ -188,6 +189,7 @@ GdkDeviceManager *manager; // knows screen / mouse associations GdkScreen *screen; // monitor GdkDevice *mouse; // pointer device + GtkSettings *settings; // screen settings 6.2 char zappname[20]; // app name/version char zprefix[200], zdatadir[200], zdocdir[200]; // app directories char zicondir[200], zlocalesdir[200], zuserdir[200]; @@ -198,12 +200,10 @@ int Nmalloc, Nstrdup, Nfree; // zmalloc() zstrdup() and zfree() calls int vmenuclickposn; // Vmenu menu icon click posn. 0-100 int vmenuclickbutton; // "" button: 1/2/3 = L/M/R mouse - #define zdialog_max 20 // max. parallel zdialogs v.6.0 - zdialog *zdialog_list[zdialog_max]; // active zdialog list v.6.0 + #define zdialog_max 20 // max. parallel zdialogs 6.0 + zdialog *zdialog_list[zdialog_max]; // active zdialog list 6.0 int zdialog_count = 0; // total zdialogs (new - free) int zdialog_busy = 0; // open zdialogs (run - destroy) - PangoFontDescription *monofont = 0; // zdialog widget fonts - PangoFontDescription *widgetfont = 0; } @@ -4929,6 +4929,7 @@ if (screen) manager = gdk_display_get_device_manager(display); if (manager) mouse = gdk_device_manager_get_client_pointer(manager); if (! mouse) printz("*** GTK cannot get hardware info \n"); + settings = gtk_settings_get_for_screen(screen); // 6.2 return; } @@ -4960,15 +4961,16 @@ // -N existing lines from bottom (replace) // 0 next line (add new line at bottom) // scroll logic assumes only one \n per message -// font may be missing or null -void wprintx(GtkWidget *mLog, int line, cchar *message, cchar *font) +void wprintx(GtkWidget *mLog, int line, cchar *message, int bold) { GtkTextMark *endMark; GtkTextBuffer *textBuff; GtkTextIter iter1, iter2; GtkTextTag *fontag = 0; int nlines, scroll = 0; + cchar *normfont = "monospace 9"; + cchar *boldfont = "monospace bold 9"; if (! mLog) { // if no GUI use STDOUT printz("%s",message); @@ -5008,13 +5010,12 @@ gtk_text_buffer_get_end_iter(textBuff,&iter2); gtk_text_buffer_delete(textBuff,&iter1,&iter2); // delete old line } - - if (font) { // insert new line with caller font - fontag = gtk_text_buffer_create_tag(textBuff,0,"font",font,0); // fontag is textBuff specific - gtk_text_buffer_insert_with_tags(textBuff,&iter1,message,-1,fontag,null); - } - else // insert new line with default font - gtk_text_buffer_insert(textBuff,&iter1,message,-1); + + if (bold) + fontag = gtk_text_buffer_create_tag(textBuff,0,"font",boldfont,0); + else + fontag = gtk_text_buffer_create_tag(textBuff,0,"font",normfont,0); + gtk_text_buffer_insert_with_tags(textBuff,&iter1,message,-1,fontag,null); if (scroll) // scroll line into view gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(mLog),endMark,0,0,1,1); @@ -5276,6 +5277,8 @@ int textwidget_mousefunc(GtkWidget *widget, GdkEventButton *event, clickfunc_t clickfunc) { + using namespace zfuncs; + static GdkCursor *arrowcursor = 0; GdkWindow *gdkwin; GtkTextIter iter1; @@ -5285,7 +5288,7 @@ #define VIEW GTK_TEXT_VIEW #define ARROW GDK_TOP_LEFT_ARROW - if (! arrowcursor) arrowcursor = gdk_cursor_new(ARROW); + if (! arrowcursor) arrowcursor = gdk_cursor_new_for_display(display,ARROW); 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 @@ -5554,13 +5557,10 @@ GtkWidget * create_stbar(GtkWidget *pbox) { GtkWidget *stbar; - static PangoFontDescription *fontdesc; zthreadcrash(); stbar = gtk_statusbar_new(); - fontdesc = pango_font_description_from_string("Monospace 9"); - gtk_widget_override_font(stbar,fontdesc); gtk_box_pack_start(GTK_BOX(pbox),stbar,0,0,0); gtk_widget_show(stbar); return stbar; @@ -6430,8 +6430,6 @@ #define margin 5 // margins for menu text #define BGCOLOR 59000,59000,59000 // = cairo 0.9,0.9,0.9 - GdkRGBA GDKgray; - PangoFontDescription *pfont1, *pfont2; PangoAttrList *pattrlist; PangoAttribute *pbackground; @@ -6459,9 +6457,6 @@ gtk_box_pack_start(GTK_BOX(vbox),vbm->layout,1,1,0); vbm->xmax = vbm->ymax = 10; // layout size v.5.8 - 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); @@ -6793,11 +6788,6 @@ zthreadcrash(); // thread usage not allowed - if (! monofont) { // v.5.7 - monofont = pango_font_description_from_string("Monospace 9"); - widgetfont = pango_font_description_from_string("Sans Bold 9"); - } - va_start(arglist,parent); for (nbu = 0; nbu < zdmaxbutts; nbu++) // get completion buttons { @@ -6821,7 +6811,7 @@ if (zdialog_count == zdialog_max) { // add to active list v.5.9 for (ii = 0; ii < zdialog_count; ii++) - printf("dialog: %s \n",zdialog_list[ii]->widget[0].data); // *** temp diagnostic *** + printz("dialog: %s \n",zdialog_list[ii]->widget[0].data); zappcrash("max. zdialogs exceeded"); } @@ -6840,7 +6830,6 @@ 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_widget_override_font(butt,widgetfont); // smaller font v.5.7 gtk_box_pack_end(GTK_BOX(hbox),butt,0,0,2); G_SIGNAL(butt,"clicked",zdialog_widget_event,zd); // connect to event function zd->compwidget[ii] = butt; // save button widgets @@ -7211,8 +7200,6 @@ // all widget types come here - gtk_widget_override_font(widget,widgetfont); // use smaller font v.6.0 - zd->widget[iiw].widget = widget; // set widget in zdialog if (strmatchV(type,"entry","edit","comboE",null) > 0) // for data entry widgets, stop @@ -8096,8 +8083,6 @@ if (! zdialog_valid(zd)) return 0; - ///zd->disabled = 1; // ignore future events v.6.1 - if (zd->zstat < 0) { // destroyed by [x] button or GTK if (zd->widget[0].widget) zdialog_busy--; // bugfix v.5.8 zd->widget[0].widget = 0; // assume GTK dialog is gone @@ -8191,7 +8176,6 @@ widget = zdialog_widget(zd, name); if (! widget) return 0; - ///gtk_editable_select_region(GTK_EDITABLE(widget),0,-1); // invalid v.6.1 gtk_widget_grab_focus(widget); return 1; @@ -8252,6 +8236,18 @@ return 1; } +int zdialog_labelfont(zdialog *zd, cchar *labl, cchar *font, cchar *txt) // set label text with font v.6.2 +{ + GtkWidget *widget; + cchar *format = "%s"; + char txt2[1000]; + + snprintf(txt2,1000,format,font,txt); + widget = zdialog_widget(zd,labl); + gtk_label_set_markup(GTK_LABEL(widget),txt2); + return 1; +} + // get data from a zdialog widget @@ -8954,6 +8950,7 @@ // caller closes it with "close" action. // action: open: create window with title = text and size = ww, hh // write: write text to next line in window +// writebold: write bold text to next line in window // top: scroll back to line 1 after writing last line // close: close window now // close N: close window after N seconds @@ -8967,16 +8964,13 @@ static GtkWidget *mWin = 0, *mVbox, *mScroll; static GtkWidget *mLog = 0; - static GtkAdjustment *vscroll; - static PangoFontDescription *monofont = 0; + static GtkAdjustment *vscroll; double upper; int secs; + char buff[200]; zthreadcrash(); // thread usage not allowed - if (! monofont) - monofont = pango_font_description_from_string("monospace 9"); - if (strmatch(action,"open")) { if (mWin) gtk_widget_destroy(mWin); // only one at a time @@ -9001,7 +8995,6 @@ gtk_box_pack_end(GTK_BOX(mVbox),mScroll,1,1,0); // add to main window mVbox mLog = gtk_text_view_new(); // text edit window gtk_container_add(GTK_CONTAINER(mScroll),mLog); // add to scrolled window - gtk_widget_override_font(mLog,monofont); // set small monospaced font G_SIGNAL(mWin,"destroy",write_popup_text,"destroypop"); // connect window destroy event gtk_widget_show_all(mWin); // show window if (! parent) gtk_window_set_keep_above(GTK_WINDOW(mWin),1); @@ -9012,7 +9005,15 @@ if (! mWin) return 0; if (strmatch(action,"write")) { // add text to window - wprintf(mLog," %s\n",text); + snprintf(buff,200,"%s\n",text); + wprintx(mLog,0,buff); + upper = gtk_adjustment_get_upper(vscroll); // scroll down v.6.1 + gtk_adjustment_set_value(vscroll,upper); // (GTK did not need this earlier) + } + + if (strmatch(action,"writebold")) { // add bold text to window + snprintf(buff,200,"%s\n",text); + wprintx(mLog,0,buff,1); upper = gtk_adjustment_get_upper(vscroll); // scroll down v.6.1 gtk_adjustment_set_value(vscroll,upper); // (GTK did not need this earlier) } @@ -9289,8 +9290,6 @@ char *ptext = 0; GtkWidget *pwidget = 0; char *pcurrent = 0; - GdkRGBA pblack = { 0.2, 0.2, 0.2, 1 }; // v.5.6 - GdkRGBA pwhite = { 0.9, 0.9, 0.9, 1 }; #define GSFNORMAL GTK_STATE_FLAG_NORMAL } @@ -9374,9 +9373,6 @@ label = gtk_label_new(ptext); gtk_container_add(GTK_CONTAINER(pwidget),label); - gtk_widget_override_background_color(pwidget,GSFNORMAL,&pblack); // window not label v.5.6 - gtk_widget_override_color(label,GSFNORMAL,&pwhite); - gdk_device_get_position(zfuncs::mouse,0,&mx,&my); // position popup window gtk_window_move(GTK_WINDOW(pwidget),mx+dx,my+dy); @@ -9427,9 +9423,6 @@ label = gtk_label_new(ptext); gtk_container_add(GTK_CONTAINER(pwidget),label); - gtk_widget_override_background_color(pwidget,GSFNORMAL,&pblack); // window not label v.5.6 - gtk_widget_override_color(label,GSFNORMAL,&pwhite); - if (pwin) { // position relative to pwin gtk_window_get_position(pwin,&pmx,&pmy); mx += pmx; @@ -9890,7 +9883,7 @@ double imagescale = 100; // image print scale, percent double pwidth, pheight; // printed image size - int paper_setup(); + int page_setup(); int margins_setup(); int margins_dialog_event(zdialog *zd, cchar *event); void get_printed_image_size(); @@ -9918,7 +9911,7 @@ return; } - err = paper_setup(); // select paper + err = page_setup(); // select size and orientation if (err) return; // v.5.5 err = margins_setup(); // set margins and scale @@ -9975,7 +9968,7 @@ // and orientation are available to the caller. Units are CM. // (paper width and height are reversed for landscape orientation) -int print_image::paper_setup() +int print_image::page_setup() { using namespace zfuncs; using namespace print_image; @@ -10206,7 +10199,7 @@ phh = 0.1 * gtk_page_setup_get_paper_height(pagesetup,MM); // (mm to cm units) pww = pww - margins[2] - margins[3]; // reduce for margins - phh = phh - margins[0] - margins[1]; // bugfix v.6.1 + phh = phh - margins[0] - margins[1]; // bugfix v.6.2 pww = pww / 2.54 * 300; // convert to dots @ 300 dpi phh = phh / 2.54 * 300; @@ -10534,7 +10527,7 @@ // strip the alpha channel from a pixbuf // returns 0 if no alpha channel or fatal error -PIXBUF * gdk_pixbuf_stripalpha(PIXBUF *pixbuf1) // v.6.1 +PIXBUF * gdk_pixbuf_stripalpha(PIXBUF *pixbuf1) // v.6.2 { PIXBUF *pixbuf2; GDKCOLOR color; @@ -10577,6 +10570,59 @@ } +/**************************************************************************/ + +// Create a pixbuf containing text with designated font and attributes. +// Text is white on black. Widget is ultimate display destination. v.6.2 + +PIXBUF * text_pixbuf(cchar *text, cchar *font, int fontsize, GtkWidget *widget) +{ + char font2[60]; + PangoFontDescription *pfont; + PangoLayout *playout; + cairo_surface_t *surface; + cairo_t *cr; + PIXBUF *pixbuf; + uint8 *pixels, *cairo_data, *cpix, *pix2; + int ww, hh, rs, px, py; + + snprintf(font2,60,"%s %d",font,fontsize); // combine font and size + + pfont = pango_font_description_from_string(font2); // make layout with text + playout = gtk_widget_create_pango_layout(widget,text); + pango_layout_set_font_description(playout,pfont); + + pango_layout_get_pixel_size(playout,&ww,&hh); + ww += 2 + 0.2 * fontsize; // compensate bad font metrics + hh += 2 + 0.1 * fontsize; + + 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 + + cairo_data = cairo_image_surface_get_data(surface); // get text image pixels + + pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB,0,8,ww,hh); + rs = gdk_pixbuf_get_rowstride(pixbuf); + pixels = gdk_pixbuf_get_pixels(pixbuf); + + for (py = 0; py < hh; py++) // copy text image to PXB + for (px = 0; px < ww; px++) + { + cpix = cairo_data + 4 * (ww * py + px); + pix2 = pixels + py * rs + px * 3; + pix2[0] = pix2[1] = pix2[2] = cpix[3]; + } + + pango_font_description_free(pfont); // free resources + g_object_unref(playout); + cairo_destroy(cr); + cairo_surface_destroy(surface); + + return pixbuf; +} + + /************************************************************************** xstring class (dynamic length string) diff -Nru fotoxx-15.08/zfuncs.h fotoxx-15.09/zfuncs.h --- fotoxx-15.08/zfuncs.h 2015-08-01 07:24:26.000000000 +0000 +++ fotoxx-15.09/zfuncs.h 2015-08-31 10:21:01.000000000 +0000 @@ -20,7 +20,7 @@ ***************************************************************************/ -// zfuncs.h version v.6.1 +// zfuncs.h version v.6.2 #include #include @@ -310,7 +310,7 @@ // text window print and read utilities -void wprintx(GtkWidget *Win, int line, cchar *mess, cchar *font = 0); // write text to line, optional font +void wprintx(GtkWidget *Win, int line, cchar *mess, int bold = 0); // write text to line, optional bold 6.2 void wprintf(GtkWidget *Win, int line, cchar *format, ...); // "printf" version void wprintf(GtkWidget *Win, cchar *format, ... ); // "printf" to next line, scroll up void wscroll(GtkWidget *mLog, int line); // scroll window to put line on screen @@ -477,6 +477,7 @@ int zdialog_stuff(zdialog *zd, cchar *name, int data); // stuff int data int zdialog_stuff(zdialog *zd, cchar *name, double data); // stuff double data int zdialog_stuff(zdialog *zd, cchar *name, double data, cchar *format); // stuff double data, formatted +int zdialog_labelfont(zdialog *zd, cchar *lab, cchar *font, cchar *txt); // stuff label text with font int zdialog_fetch(zdialog *zd, cchar *name, char *data, int maxcc); // get string data from widget int zdialog_fetch(zdialog *zd, cchar *name, int &data); // get int data @@ -536,6 +537,7 @@ GdkCursor * zmakecursor(cchar *iconfile); // make a cursor from an image file PIXBUF * gdk_pixbuf_rotate(PIXBUF *, float deg, int alfa = 0); // rotate pixbuf through any angle PIXBUF * gdk_pixbuf_stripalpha(PIXBUF *pixbuf); // strip alpha channel from pixbuf +PIXBUF * text_pixbuf(cchar *text, cchar *font, int fsize, GtkWidget *); // create pixbuf with text using font /************************************************************************** C++ classes