From af90c97fdc94c9564b6081700c1605ce50362411 Mon Sep 17 00:00:00 2001 From: ffsup2 Date: Sun, 15 May 2011 20:25:33 +0200 Subject: [PATCH] Merge n.4 from branch3.0 --- rtdata/languages/English (UK) | 1736 +++++++++++++++--------------- rtengine/amaze_interpolate_RT.cc | 1017 ----------------- rtengine/imageio.cc | 2 +- rtengine/rtthumbnail.cc | 2 +- rtexif/nikonattribs.cc | 6 +- rtgui/adjuster.cc | 4 +- rtgui/batchqueue.cc | 17 +- rtgui/batchqueue.h | 1 + rtgui/batchqueuepanel.cc | 41 +- rtgui/batchqueuepanel.h | 5 - rtgui/batchtoolpanelcoord.cc | 6 +- rtgui/colorboost.cc | 2 +- rtgui/crophandler.h | 1 + rtgui/curveeditor.cc | 8 +- rtgui/curveeditor.h | 2 +- rtgui/dirbrowser.cc | 6 +- rtgui/dirpyrequalizer.cc | 4 +- rtgui/equalizer.cc | 2 +- rtgui/filebrowser.cc | 83 +- rtgui/filebrowser.h | 3 +- rtgui/filecatalog.cc | 58 +- rtgui/filecatalog.h | 1 + rtgui/filepanel.cc | 28 +- rtgui/iptcpanel.cc | 134 +-- rtgui/labcurve.cc | 2 +- rtgui/lcurve.cc | 144 --- rtgui/lcurve.h | 52 - rtgui/navigator.cc | 2 +- rtgui/partialpastedlg.cc | 10 +- rtgui/preferences.cc | 210 ++-- rtgui/rtwindow.cc | 14 +- rtgui/saveasdlg.cc | 26 +- rtgui/thumbbrowserbase.cc | 1300 +++++++++++----------- rtgui/toolpanel.cc | 11 +- rtgui/toolpanelcoord.cc | 10 +- rtgui/toolpanelcoord.h | 10 +- 36 files changed, 1872 insertions(+), 3088 deletions(-) delete mode 100644 rtengine/amaze_interpolate_RT.cc delete mode 100644 rtgui/lcurve.cc delete mode 100644 rtgui/lcurve.h diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 86d34000f..a6f2a21fb 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -1,4 +1,4 @@ - + #00 English (UK) #01 08.12.2010: Richard Regal @@ -40,870 +40,870 @@ TP_COLORSHIFT_LABEL;Colour Shift TP_HLREC_COLOR;Colour Propagation TP_LABCURVE_AVOIDCOLORCLIP;Avoid colour clipping TP_RAW_FALSECOLOR;False colour suppression steps - - -!!!!!!!!!!!!!!!!!!!!!!!!! -! Untranslated keys follow; remove the ! prefix after an entry is translated. -!!!!!!!!!!!!!!!!!!!!!!!!! - - -!ABOUT_TAB_BUILD;Version -!ABOUT_TAB_CREDITS;Credits -!ABOUT_TAB_LICENSE;License -!ABOUT_TAB_SPLASH;Splash -!ADJUSTER_RESET_TO_DEFAULT;Reset to default -!BATCHQUEUE_AUTOSTART;Auto start -!BATCH_PROCESSING;Batch processing -!CURVEEDITOR_CURVE;Curve -!CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom -!CURVEEDITOR_DARKS;Darks -!CURVEEDITOR_FILEDLGFILTERANY;Any files -!CURVEEDITOR_FILEDLGFILTERCURVE;Curve files -!CURVEEDITOR_HIGHLIGHTS;Highlights -!CURVEEDITOR_LIGHTS;Lights -!CURVEEDITOR_LINEAR;Linear -!CURVEEDITOR_LOADDLGLABEL;Load Curve... -!CURVEEDITOR_MINMAXCPOINTS;Minima/Maxima control points -!CURVEEDITOR_NURBS;Control cage -!CURVEEDITOR_PARAMETRIC;Parametric -!CURVEEDITOR_SAVEDLGLABEL;Save Curve... -!CURVEEDITOR_SHADOWS;Shadows -!CURVEEDITOR_TOOLTIPCOPY;Copy current curve to clipboard -!CURVEEDITOR_TOOLTIPLINEAR;Reset curve to linear -!CURVEEDITOR_TOOLTIPLOAD;Load a curve from file -!CURVEEDITOR_TOOLTIPPASTE;Paste curve from clipboard -!CURVEEDITOR_TOOLTIPSAVE;Save current curve -!CURVEEDITOR_TYPE;Type: -!EDITWINDOW_TITLE;Image Edit -!EXIFFILTER_APERTURE;Aperture -!EXIFFILTER_CAMERA;Camera -!EXIFFILTER_DIALOGLABEL;Exif Filter -!EXIFFILTER_FILETYPE;File Type -!EXIFFILTER_FOCALLEN;Focal Length -!EXIFFILTER_ISO;ISO -!EXIFFILTER_LENS;Lens -!EXIFFILTER_METADATAFILTER;Enable Metadata Filters -!EXIFFILTER_SHUTTER;Shutter -!EXIFPANEL_ADDEDIT;Add/Edit -!EXIFPANEL_ADDEDITHINT;Add new tag or edit tag -!EXIFPANEL_ADDTAGDLG_ENTERVALUE;Enter value -!EXIFPANEL_ADDTAGDLG_SELECTTAG;Select tag -!EXIFPANEL_ADDTAGDLG_TITLE;Add/Edit Tag -!EXIFPANEL_KEEP;Keep -!EXIFPANEL_KEEPHINT;Keep the selected tags when writing output file -!EXIFPANEL_REMOVE;Remove -!EXIFPANEL_REMOVEHINT;Remove the selected tags when writing output file -!EXIFPANEL_RESET;Reset -!EXIFPANEL_RESETALL;Reset All -!EXIFPANEL_RESETALLHINT;Reset all tags to their original values -!EXIFPANEL_RESETHINT;Reset the selected tags to their original values -!EXIFPANEL_SUBDIRECTORY;Subdirectory -!FILEBROWSER_ADDDELTEMPLATE;Add/Del templates... -!FILEBROWSER_APPLYPROFILE;Apply profile -!FILEBROWSER_ARRANGEMENTHINT;Change between vertical/horizontal alignment of thumbnails -!FILEBROWSER_AUTODARKFRAME;Auto dark frame -!FILEBROWSER_AUTOFLATFIELD;Auto flat field -!FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path -!FILEBROWSER_BROWSEPATHHINT;Type path to browse (Ctrl-o set focus,Ctrl-Enter to browse in File Browser);nPath shortcuts: ~ - user's home directory, ! - user's pictures directory -!FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial -!FILEBROWSER_CLEARPROFILE;Clear profile -!FILEBROWSER_COPYPROFILE;Copy profile -!FILEBROWSER_CURRENT_NAME;Current name: -!FILEBROWSER_DARKFRAME;Dark frame -!FILEBROWSER_DELETEDLGLABEL;File delete confirmation -!FILEBROWSER_DELETEDLGMSG;Are you sure you want to delete the selected %1 files? -!FILEBROWSER_DELETEDLGMSGINCLPROC;Are you sure you want to delete the selected %1 files INCLUDING a batch processed version? -!FILEBROWSER_EMPTYTRASH;Empty Trash -!FILEBROWSER_EMPTYTRASHHINT;Permanently delete the files of the trash -!FILEBROWSER_EXIFFILTERAPPLY;Apply -!FILEBROWSER_EXIFFILTERAPPLYHINT;Switch on/off exif filter of the file browser -!FILEBROWSER_EXIFFILTERLABEL;Exif Filter -!FILEBROWSER_EXIFFILTERSETTINGS;Setup -!FILEBROWSER_EXIFFILTERSETTINGSHINT;Change settings of the exif filter -!FILEBROWSER_FLATFIELD;Flat field -!FILEBROWSER_MOVETODARKFDIR;Move to dark frames directory -!FILEBROWSER_MOVETOFLATFIELDDIR;Move to flat fields directory -!FILEBROWSER_NEW_NAME;New name: -!FILEBROWSER_PARTIALPASTEPROFILE;Partial paste -!FILEBROWSER_PASTEPROFILE;Paste profile -!FILEBROWSER_POPUPCANCELJOB;Cancel job -!FILEBROWSER_POPUPCOPYTO;Copy to... -!FILEBROWSER_POPUPMOVEEND;Move to end of queue -!FILEBROWSER_POPUPMOVEHEAD;Move to head of queue -!FILEBROWSER_POPUPMOVETO;Move to... -!FILEBROWSER_POPUPOPEN;Open -!FILEBROWSER_POPUPPROCESS;Put to processing queue -!FILEBROWSER_POPUPRANK1;Rank 1 -!FILEBROWSER_POPUPRANK2;Rank 2 -!FILEBROWSER_POPUPRANK3;Rank 3 -!FILEBROWSER_POPUPRANK4;Rank 4 -!FILEBROWSER_POPUPRANK5;Rank 5 -!FILEBROWSER_POPUPREMOVE;Remove from filesystem -!FILEBROWSER_POPUPREMOVEINCLPROC;Remove from filesystem & batch result -!FILEBROWSER_POPUPREMOVESUBMENU;Remove -!FILEBROWSER_POPUPRENAME;Rename -!FILEBROWSER_POPUPSELECTALL;Select all -!FILEBROWSER_POPUPTRASH;Move to trash -!FILEBROWSER_POPUPUNRANK;Unrank -!FILEBROWSER_POPUPUNTRASH;Remove from trash -!FILEBROWSER_PROCESSINGSETTINGS;Settings -!FILEBROWSER_PROCESSINGSETTINGSHINT;Set the file format and output directory -!FILEBROWSER_RENAMEDLGLABEL;Rename file -!FILEBROWSER_RENAMEDLGMSG;Rename file "%1" to: -!FILEBROWSER_SELECTDARKFRAME;Select dark frame... -!FILEBROWSER_SELECTFLATFIELD;Select flat field... -!FILEBROWSER_SHOWDIRHINT;Show all images of the directory D -!FILEBROWSER_SHOWEXIFINFO;Show EXIF info i -!FILEBROWSER_SHOWQUEUEHINT;Show content of the processing queue -!FILEBROWSER_SHOWRANK1HINT;Show images ranked as 1 star 1 -!FILEBROWSER_SHOWRANK2HINT;Show images ranked as 2 star 2 -!FILEBROWSER_SHOWRANK3HINT;Show images ranked as 3 star 3 -!FILEBROWSER_SHOWRANK4HINT;Show images ranked as 4 star 4 -!FILEBROWSER_SHOWRANK5HINT;Show images ranked as 5 star 5 -!FILEBROWSER_SHOWTRASHHINT;Show content of the trash T -!FILEBROWSER_SHOWUNRANKHINT;Show unranked images ` -!FILEBROWSER_STARTPROCESSING;Start processing -!FILEBROWSER_STARTPROCESSINGHINT;Start processing/saving of images in the queue -!FILEBROWSER_STOPPROCESSING;Stop processing -!FILEBROWSER_STOPPROCESSINGHINT;Stop processing of images -!FILEBROWSER_THUMBSIZE;Thumb. size -!FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives -!FILEBROWSER_USETEMPLATE;Use template: -!FILEBROWSER_ZOOMINHINT;Increase thumbnail size + -!FILEBROWSER_ZOOMOUTHINT;Decrease thumbnail size - -!GENERAL_ABOUT;About -!GENERAL_AFTER;After -!GENERAL_BEFORE;Before -!GENERAL_CANCEL;Cancel -!GENERAL_DISABLE;Disable -!GENERAL_DISABLED;Disabled -!GENERAL_ENABLE;Enable -!GENERAL_ENABLED;Enabled -!GENERAL_FILE;File -!GENERAL_HIGH_QUALITY;High Quality -!GENERAL_LANDSCAPE;Landscape -!GENERAL_LOAD;Load -!GENERAL_NA;n/a -!GENERAL_NO;No -!GENERAL_NONE;None -!GENERAL_OK;OK -!GENERAL_PORTRAIT;Portrait -!GENERAL_SAVE;Save -!GENERAL_UNCHANGED;(Unchanged) -!GENERAL_YES;Yes -!HISTOGRAM_BUTTON_B;B -!HISTOGRAM_BUTTON_G;G -!HISTOGRAM_BUTTON_L;L -!HISTOGRAM_BUTTON_R;R -!HISTOGRAM_BUTTON_RAW;Raw -!HISTOGRAM_LABEL;Histogram -!HISTOGRAM_TOOLTIP_B;Show/Hide BLUE histogram -!HISTOGRAM_TOOLTIP_G;Show/Hide GREEN histogram -!HISTOGRAM_TOOLTIP_L;Show/Hide CIELAB Luminance histogram -!HISTOGRAM_TOOLTIP_R;Show/Hide RED histogram -!HISTOGRAM_TOOLTIP_RAW;Show/Hide RAW histogram -!HISTORY_CHANGED;Changed -!HISTORY_CUSTOMCURVE;Custom Curve -!HISTORY_DELSNAPSHOT;Del -!HISTORY_FROMCLIPBOARD;From clipboard -!HISTORY_LABEL;History -!HISTORY_MSG_100;RGB saturation -!HISTORY_MSG_101;HSV EQ -- Hue -!HISTORY_MSG_102;HSV EQ -- Saturation -!HISTORY_MSG_103;HSV EQ -- Value -!HISTORY_MSG_104;HSV Equalizer -!HISTORY_MSG_105;Defringing -!HISTORY_MSG_106;Defringing Radius -!HISTORY_MSG_107;Defringing Threshold -!HISTORY_MSG_108;Highlight Compr. Threshold -!HISTORY_MSG_109;Resize bounding box -!HISTORY_MSG_10;Shadow Compression -!HISTORY_MSG_110;Resizing applies to -!HISTORY_MSG_112;Saturation Limiter -!HISTORY_MSG_113;Saturation Limit -!HISTORY_MSG_114;DCB Iterations -!HISTORY_MSG_116;Enhanced DCB -!HISTORY_MSG_117;Red CA correction -!HISTORY_MSG_118;Blue CA correction -!HISTORY_MSG_119;Line denoise -!HISTORY_MSG_120;Green equil. threshold -!HISTORY_MSG_121;Auto CA -!HISTORY_MSG_122;Auto Dark Frame -!HISTORY_MSG_123;Dark Frame File -!HISTORY_MSG_124;Linear exp. correction -!HISTORY_MSG_125;Expo. correction preserving HL -!HISTORY_MSG_126;Flat Field File -!HISTORY_MSG_127;Flat Field Auto Select -!HISTORY_MSG_128;Flat Field Blur Radius -!HISTORY_MSG_129;Flat Field Blur Type -!HISTORY_MSG_12;Auto Exposure -!HISTORY_MSG_13;Exposure Clipping -!HISTORY_MSG_14;Luminance Brightness -!HISTORY_MSG_15;Luminance Contrast -!HISTORY_MSG_16;Luminance Black -!HISTORY_MSG_17;Luminance Highlight Compr. -!HISTORY_MSG_18;Luminance Shadow Compr. -!HISTORY_MSG_19;'L' Curve -!HISTORY_MSG_20;Sharpening -!HISTORY_MSG_21;Sharpening Radius -!HISTORY_MSG_22;Sharpening Amount -!HISTORY_MSG_23;Sharpening Threshold -!HISTORY_MSG_24;Sharpen Only Edges -!HISTORY_MSG_25;Sharpening Edge Detection Radius -!HISTORY_MSG_26;Sharpening Edge Tolerance -!HISTORY_MSG_27;Sharpening Halo Control -!HISTORY_MSG_28;Halo Control Amount -!HISTORY_MSG_29;Sharpening Method -!HISTORY_MSG_2;Profile Loaded -!HISTORY_MSG_30;Deconvolution Radius -!HISTORY_MSG_31;Deconvolution Amount -!HISTORY_MSG_32;Deconvolution Damping -!HISTORY_MSG_33;Deconvolution Iterations -!HISTORY_MSG_35;Saturation Limiter -!HISTORY_MSG_36;Saturation Limit -!HISTORY_MSG_38;White Balance Method -!HISTORY_MSG_40;White Balance Tint -!HISTORY_MSG_43;Luminance Denoising -!HISTORY_MSG_44;Lum. Denoising Radius -!HISTORY_MSG_45;Lum. Denoising Edge Tolerance -!HISTORY_MSG_50;Shadow/Highlight tool -!HISTORY_MSG_51;Highlight boost -!HISTORY_MSG_52;Shadow Boost -!HISTORY_MSG_53;Highlight Tonal Width -!HISTORY_MSG_54;Shadow Tonal Width -!HISTORY_MSG_55;Local Contrast -!HISTORY_MSG_56;Shadow/Highlight Radius -!HISTORY_MSG_57;Coarse Rotation -!HISTORY_MSG_58;Horizontal Flipping -!HISTORY_MSG_59;Vertical Flipping -!HISTORY_MSG_5;Brightness -!HISTORY_MSG_60;Rotation -!HISTORY_MSG_61;Auto Fill -!HISTORY_MSG_62;Lens Distortion Correction -!HISTORY_MSG_63;Snapshot Selected -!HISTORY_MSG_64;Crop Photo -!HISTORY_MSG_65;C/A Correction -!HISTORY_MSG_66;Highlight Recovery -!HISTORY_MSG_67;Highlight Recovery Amount -!HISTORY_MSG_68;Highlight Recovery Method -!HISTORY_MSG_72;Vignetting Correction -!HISTORY_MSG_73;Channel Mixer -!HISTORY_MSG_74;Resize Scale -!HISTORY_MSG_75;Resize Method -!HISTORY_MSG_76;Exif Metadata -!HISTORY_MSG_77;IPTC Metadata -!HISTORY_MSG_78;Data specified for resize -!HISTORY_MSG_79;Resize width -!HISTORY_MSG_80;Resize height -!HISTORY_MSG_81;Resize enabled -!HISTORY_MSG_82;Profile Changed -!HISTORY_MSG_83;High quality shadows/highlights -!HISTORY_MSG_84;Perspective correction -!HISTORY_MSG_85;Wavelet coefficients -!HISTORY_MSG_86;Wavelet equalizer -!HISTORY_MSG_87;Impulse noise reduction -!HISTORY_MSG_88;Impulse NR threshold -!HISTORY_MSG_89;Noise reduction -!HISTORY_MSG_8;Exposure Compensation -!HISTORY_MSG_90;NR - luminance -!HISTORY_MSG_91;NR - chrominance -!HISTORY_MSG_92;NR - gamma -!HISTORY_MSG_93;Contrast by detail levels value -!HISTORY_MSG_94;Contrast by detail levels -!HISTORY_MSG_95;Saturation -!HISTORY_MSG_96;'a' curve -!HISTORY_MSG_97;'b' curve -!HISTORY_MSG_99;Hot/dead pixel filtering -!HISTORY_NEWSNAPSHOT;Add -!HISTORY_NEWSNAPSHOTAS;As... -!HISTORY_NEWSSDIALOGLABEL;Label of the snapshot: -!HISTORY_NEWSSDIALOGTITLE;Add new snapshot -!HISTORY_SETTO;Set to -!HISTORY_SNAPSHOT;Snapshot -!HISTORY_SNAPSHOTS;Snapshots -!ICMPANEL_FILEDLGFILTERANY;Any files -!ICMPANEL_FILEDLGFILTERICM;ICC Profile Files -!ICMPANEL_GAMMABEFOREINPUT;Profile applies Gamma -!ICMPANEL_INPUTCAMERA;Camera default -!ICMPANEL_INPUTCUSTOM;Custom -!ICMPANEL_INPUTDLGLABEL;Select Input ICC Profile... -!ICMPANEL_INPUTEMBEDDED;Use Embedded, if possible -!ICMPANEL_INPUTPROFILE;Input Profile -!ICMPANEL_NOICM;No ICM: sRGB output -!ICMPANEL_OUTPUTDLGLABEL;Select Output ICC Profile... -!ICMPANEL_OUTPUTPROFILE;Output Profile -!ICMPANEL_SAVEREFERENCE;Save reference image for profiling -!ICMPANEL_WORKINGPROFILE;Working Profile -!IMAGEAREA_DETAILVIEW;Detail view -!IPTCPANEL_AUTHOR;Author -!IPTCPANEL_AUTHORHINT;Name of the creator of the object, e.g. writer, photographer or graphic artist (By-line). -!IPTCPANEL_AUTHORSPOSITION;Author's position -!IPTCPANEL_AUTHORSPOSITIONHINT;Title of the creator or creators of the object (By-line Title). -!IPTCPANEL_CAPTION;Caption -!IPTCPANEL_CAPTIONHINT;A textual description of the data (Caption - Abstract). -!IPTCPANEL_CAPTIONWRITER;Caption Writer -!IPTCPANEL_CAPTIONWRITERHINT;The name of the person involved in the writing, editing or correcting the image or caption/abstract (Writer - Editor). -!IPTCPANEL_CATEGORY;Category -!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider (Category). -!IPTCPANEL_CITY;City -!IPTCPANEL_CITYHINT;City of image origin (City). -!IPTCPANEL_COPYHINT;Copy IPTC settings to clipboard -!IPTCPANEL_COPYRIGHT;Copyright -!IPTCPANEL_COPYRIGHTHINT;Any necessary copyright notice (Copyright Notice). -!IPTCPANEL_COUNTRY;Country -!IPTCPANEL_COUNTRYHINT;The name of the country/primary location where the image was created (Country - Primary Location Name). -!IPTCPANEL_CREDIT;Credit -!IPTCPANEL_CREDITHINT;Identifies the provider of the image, not necessarily the owner/creator (Credit). -!IPTCPANEL_EMBEDDED;Embedded -!IPTCPANEL_EMBEDDEDHINT;Reset to IPTC data embedded in the image file -!IPTCPANEL_HEADLINE;Headline -!IPTCPANEL_HEADLINEHINT;A publishable entry providing a synopsis of the contents of the image (Headline). -!IPTCPANEL_INSTRUCTIONS;Instructions -!IPTCPANEL_INSTRUCTIONSHINT;Other editorial instructions concerning the use of the image (Special Instructions). -!IPTCPANEL_KEYWORDS;Keywords -!IPTCPANEL_KEYWORDSHINT;Used to indicate specific information retrieval words (Keywords). -!IPTCPANEL_PASTEHINT;Paste IPTC settings from clipboard -!IPTCPANEL_RESET;Reset -!IPTCPANEL_RESETHINT;Reset to profile default -!IPTCPANEL_SOURCE;Source -!IPTCPANEL_SOURCEHINT;The original owner of the intellectual content of the image (Source). -!IPTCPANEL_SUPPCATEGORIES;Suppl. Categories -!IPTCPANEL_SUPPCATEGORIESHINT;Further refines the subject of the image (Supplemental Categories). -!IPTCPANEL_TITLE;Title -!IPTCPANEL_TITLEHINT;A shorthand reference for the image (Object Name). -!IPTCPANEL_TRANSREFERENCE;Trans. Reference -!IPTCPANEL_TRANSREFERENCEHINT;A code representing the location of original transmission (Original Transmission Reference). -!MAIN_BUTTON_EXIT;Exit -!MAIN_BUTTON_FULLSCREEN;Fullscreen -!MAIN_BUTTON_PREFERENCES;Preferences -!MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Add current image to processing queue Ctrl+Q -!MAIN_BUTTON_QUEUE;Put to queue -!MAIN_BUTTON_SAVE_TOOLTIP;Save current image Ctrl+S -!MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Edit current image in external editor Ctrl+E -!MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Show/hide all side panels m -!MAIN_BUTTON_UNFULLSCREEN;Exit fullscreen -!MAIN_FRAME_BATCHQUEUE;Batch Queue -!MAIN_FRAME_BATCHQUEUE_TOOLTIP; Batch Queue Ctrl-F3 -!MAIN_FRAME_EDITOR;Editor -!MAIN_FRAME_EDITOR_TOOLTIP; Editor Ctrl-F4 -!MAIN_FRAME_FILEBROWSER;File Browser -!MAIN_FRAME_FILEBROWSER_TOOLTIP; File Browser Ctrl-F2 -!MAIN_FRAME_PLACES;Places -!MAIN_FRAME_PLACES_ADD;Add -!MAIN_FRAME_PLACES_DEL;Del -!MAIN_FRAME_RECENT;Recent Folders -!MAIN_MSG_ALREADYEXISTS;File already exists. -!MAIN_MSG_CANNOTLOAD;Cannot load image -!MAIN_MSG_CANNOTSAVE;File saving error -!MAIN_MSG_CANNOTSTARTEDITOR;Can not start editor. -!MAIN_MSG_CANNOTSTARTEDITOR_SECONDARY;Please set the correct path in the "Preferences" dialog. -!MAIN_MSG_ERRORDURINGIMAGESAVING;Error during image saving -!MAIN_MSG_EXITJOBSINQUEUEINFO;Unprocessed images in the queue will be lost on exit. -!MAIN_MSG_EXITJOBSINQUEUEQUEST;Are you sure you want to exit? There are unprocessed images waiting in the queue. -!MAIN_MSG_JOBSINQUEUE;job(s) in the queue -!MAIN_MSG_NAVIGATOR;Navigator -!MAIN_MSG_PLACES;Places -!MAIN_MSG_QOVERWRITE;Do you want to overwrite it? -!MAIN_TAB_BASIC;Basic -!MAIN_TAB_COLOR_TOOLTIP;Alt-c -!MAIN_TAB_DETAIL;Detail -!MAIN_TAB_DETAIL_TOOLTIP;Alt-d -!MAIN_TAB_DEVELOP;Develop -!MAIN_TAB_EXIF;Exif -!MAIN_TAB_EXPOSURE;Exposure -!MAIN_TAB_EXPOSURE_TOOLTIP;Alt-e -!MAIN_TAB_FILTER;Filter -!MAIN_TAB_ICM;ICM -!MAIN_TAB_IPTC;IPTC -!MAIN_TAB_METADATA;Metadata -!MAIN_TAB_METADATA_TOOLTIP;Alt-m -!MAIN_TAB_RAW;RAW -!MAIN_TAB_RAW_TOOLTIP;Alt-r -!MAIN_TAB_TAGGING;Tagging -!MAIN_TAB_TRANSFORM;Transform -!MAIN_TAB_TRANSFORM_TOOLTIP;Alt-t -!MAIN_TOGGLE_BEFORE_AFTER;B|A -!MAIN_TOOLTIP_HIDEFP;Show/hide the bottom panel (directory and file browser) F -!MAIN_TOOLTIP_HIDEHP;Show/hide the left panel (including the history) l -!MAIN_TOOLTIP_INDCLIPPEDH;Clipped highlight indication (Key <) -!MAIN_TOOLTIP_INDCLIPPEDS;Clipped shadow indication (Key >) -!MAIN_TOOLTIP_PREFERENCES;Set preferences -!MAIN_TOOLTIP_QINFO;Quick info on the image I -!MAIN_TOOLTIP_SAVE;Save image to the default folder -!MAIN_TOOLTIP_SAVEAS;Save image to a selected folder -!MAIN_TOOLTIP_SHOWHIDELP1;Show/hide the left panel l -!MAIN_TOOLTIP_SHOWHIDERP1;Show/hide the right panel Alt-l -!MAIN_TOOLTIP_SHOWHIDETP1;Show/hide the top panel Shift-l -!MAIN_TOOLTIP_TOGGLE;Toggle before/after view B -!NAVIGATOR_B_NA;B = n/a -!NAVIGATOR_B_VALUE;B = %1 -!NAVIGATOR_G_NA;G = n/a -!NAVIGATOR_G_VALUE;G = %1 -!NAVIGATOR_H_NA;H = n/a -!NAVIGATOR_H_VALUE;H = %1 -!NAVIGATOR_LAB_A_NA;A = n/a -!NAVIGATOR_LAB_A_VALUE;A = %1 -!NAVIGATOR_LAB_B_NA;B = n/a -!NAVIGATOR_LAB_B_VALUE;B = %1 -!NAVIGATOR_LAB_L_NA;L = n/a -!NAVIGATOR_LAB_L_VALUE;L = %1 -!NAVIGATOR_R_NA;R = n/a -!NAVIGATOR_R_VALUE;R = %1 -!NAVIGATOR_S_NA;S = n/a -!NAVIGATOR_S_VALUE;S = %1 -!NAVIGATOR_V_NA;V = n/a -!NAVIGATOR_V_VALUE;V = %1 -!NAVIGATOR_XY_NA;x = n/a, y = n/a -!PARTIALPASTE_BASICGROUP;Basic settings -!PARTIALPASTE_CACORRECTION;C/A correction -!PARTIALPASTE_CHANNELMIXER;Channel mixer -!PARTIALPASTE_COARSETRANS;90 deg rotation / flipping -!PARTIALPASTE_COMMONTRANSFORMPARAMS;Auto fill -!PARTIALPASTE_COMPOSITIONGROUP;Composition settings -!PARTIALPASTE_CROP;Crop -!PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark Frame Auto Select -!PARTIALPASTE_DARKFRAMEFILE;Dark Frame File -!PARTIALPASTE_DEFRINGE;Defringe -!PARTIALPASTE_DETAILGROUP;Detail settings -!PARTIALPASTE_DIALOGLABEL;Partial paste processing profile -!PARTIALPASTE_DIRPYRDENOISE;Noise reduction -!PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels -!PARTIALPASTE_DISTORTION;Distortion correction -!PARTIALPASTE_EVERYTHING;Everything -!PARTIALPASTE_EXIFCHANGES;Changes to exif data -!PARTIALPASTE_EXPOSURE;Exposure -!PARTIALPASTE_FLATFIELDAUTOSELECT;FF Auto Select -!PARTIALPASTE_FLATFIELDBLURRADIUS;FF Blur Radius -!PARTIALPASTE_FLATFIELDBLURTYPE;FF Blur Type -!PARTIALPASTE_FLATFIELDFILE;Flat field (FF) File -!PARTIALPASTE_HLRECONSTRUCTION;Highlight reconstruction -!PARTIALPASTE_HLRECOVERY;Highlight recovery -!PARTIALPASTE_HLRECOVERYAMOUNT;Highlight recovery amount -!PARTIALPASTE_HLRECOVERYTHRESHOLD;Highlight recovery threshold -!PARTIALPASTE_HSVEQUALIZER;HSV Equalizer -!PARTIALPASTE_ICMSETTINGS;ICM settings -!PARTIALPASTE_IMPULSEDENOISE;Impulse noise reduction -!PARTIALPASTE_IPTCINFO;IPTC info -!PARTIALPASTE_LABCURVE;Lab adjustments -!PARTIALPASTE_LENSGROUP;Lens related settings -!PARTIALPASTE_LUMADENOISE;Luminance noise reduction -!PARTIALPASTE_LUMINANCEGROUP;Luminance related settings -!PARTIALPASTE_METAICMGROUP;Metadata/ICM settings -!PARTIALPASTE_PERSPECTIVE;Perspective -!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration -!PARTIALPASTE_PREPROCESS_HOTDEADPIXFILT;Apply hot/dead pixel filter -!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter -!PARTIALPASTE_RAWCACORR_AUTO;CA auto correction -!PARTIALPASTE_RAWCACORR_CABLUE;CA Blue -!PARTIALPASTE_RAWCACORR_CARED;CA Red -!PARTIALPASTE_RAWEXPOS_LINEAR;Raw white point linear corr. factor -!PARTIALPASTE_RAWEXPOS_PRESER;Raw white point HL preserving corr. (EV) -!PARTIALPASTE_RAWGROUP;Raw settings -!PARTIALPASTE_RAW_DCBENHANCE;Apply DCB enhancement step -!PARTIALPASTE_RAW_DCBITERATIONS;Number of DCB iterations -!PARTIALPASTE_RAW_DMETHOD;Demosaic Method -!PARTIALPASTE_RESIZE;Resize -!PARTIALPASTE_ROTATION;Rotation -!PARTIALPASTE_SHADOWSHIGHLIGHTS;Shadows/Highlights -!PARTIALPASTE_SHARPENING;Sharpening -!PARTIALPASTE_VIGNETTING;Vignetting correction -!PARTIALPASTE_WAVELETEQUALIZER;Wavelet equalizer -!PARTIALPASTE_WHITEBALANCE;White balance -!POPUPBUTTON_SELECTOPTIONHINT;RMB to change option -!PREFERENCES_ADD;ADD -!PREFERENCES_APPLNEXTSTARTUP;restart required -!PREFERENCES_AUTOMONPROFILE;Automatically use operating systems main monitors profile -!PREFERENCES_BATCH_PROCESSING;Batch Processing -!PREFERENCES_BLINKCLIPPED;Blink clipped areas -!PREFERENCES_CACHECLEARALL;Clear All -!PREFERENCES_CACHECLEARPROFILES;Clear Profiles -!PREFERENCES_CACHECLEARTHUMBS;Clear Thumbnails -!PREFERENCES_CACHEFORMAT1;Proprietary (faster and better quality) -!PREFERENCES_CACHEFORMAT2;JPEG (smaller disk footprint) -!PREFERENCES_CACHEOPTS;Cache Options -!PREFERENCES_CACHESTRAT1;Prefer Speed to Low Memory Consumption -!PREFERENCES_CACHESTRAT2;Prefer Low Memory Consumption to Speed -!PREFERENCES_CACHESTRAT;Cache Strategy -!PREFERENCES_CACHETHUMBFORM;Cache Thumbnail Format -!PREFERENCES_CLIPPINGIND;Clipping indication -!PREFERENCES_CMETRICINTENT;Colorimetric Intent -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency -!PREFERENCES_DARKFRAME;Dark frame -!PREFERENCES_DARKFRAMEFOUND;Found -!PREFERENCES_DARKFRAMESHOTS;shots -!PREFERENCES_DARKFRAMETEMPLATES;templates -!PREFERENCES_DATEFORMAT;Date Format -!PREFERENCES_DATEFORMATFRAME;Date Format -!PREFERENCES_DATEFORMATHINT;You can use the following formatting strings:n%y : yearn%m : monthn%d : daynnFor example, the hungarian date format is:n%y/%m/%d -!PREFERENCES_DEFAULTLANG;Default language -!PREFERENCES_DEFAULTTHEME;Default theme -!PREFERENCES_DEMOSAICINGALGO;Demosaicing Algorithm -!PREFERENCES_DIRDARKFRAMES;Dark frames directory -!PREFERENCES_DIRHOME;Home directory -!PREFERENCES_DIRLAST;Last visited directory -!PREFERENCES_DIROTHER;Other -!PREFERENCES_DIRSELECTDLG;Select Image Directory at Startup... -!PREFERENCES_DIRSOFTWARE;Installation directory -!PREFERENCES_EDITORCMDLINE;Other command line -!PREFERENCES_EDITORLAYOUT;Editor Layout -!PREFERENCES_EXTERNALEDITOR;External editor -!PREFERENCES_FBROWSEROPTS;File Browser Options -!PREFERENCES_FILEFORMAT;File format -!PREFERENCES_FLATFIELD;Flat Field -!PREFERENCES_FLATFIELDFOUND;Found -!PREFERENCES_FLATFIELDSDIR;Flat Fields directory -!PREFERENCES_FLATFIELDSHOTS;shots -!PREFERENCES_FLATFIELDTEMPLATES;templates -!PREFERENCES_FORIMAGE;For image files -!PREFERENCES_FORRAW;For RAW files -!PREFERENCES_GIMPPATH;GIMP installation directory -!PREFERENCES_GTKTHEME;GTK default -!PREFERENCES_HINT;Hint -!PREFERENCES_HLTHRESHOLD;Threshold for clipped highlights -!PREFERENCES_ICCDIR;Directory of ICC profiles -!PREFERENCES_IMPROCPARAMS;Default image processing parameters -!PREFERENCES_INTENT_ABSOLUTE;Absolute Colorimetric -!PREFERENCES_INTENT_PERCEPTUAL;Perceptual -!PREFERENCES_INTENT_RELATIVE;Relative Colorimetric -!PREFERENCES_INTENT_SATURATION;Saturation -!PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Show RAW internal thumbnail if unedited -!PREFERENCES_LIVETHUMBNAILS;Live Thumbnails (slower) -!PREFERENCES_METADATA;Metadata -!PREFERENCES_MONITORICC;Monitor Profile -!PREFERENCES_MULTITAB;Multiple tabs mode -!PREFERENCES_MULTITABDUALMON;Multiple tabs mode, if available on second monitor -!PREFERENCES_OUTDIR;Output Directory -!PREFERENCES_OUTDIRFOLDER;Save to folder -!PREFERENCES_OUTDIRFOLDERHINT;Put the saved images to the selected folder -!PREFERENCES_OUTDIRHINT;You can use the following formatting strings:n%f, %d1, %d2, ..., %p1, %p2, ...nnThese formatting strings refer to the different parts of the photo's pathname.nnFor example, if the photo being processed has the following pathname:n/home/tom/photos/2010-10-31/dsc0042.nefnthe meaning of the formatting strings are:n%d4 = homen%d3 = tomn%d2 = photosn%d1 = 2010-10-31n%f = dsc0042n%p1 = /home/tom/photos/2010-10-31/n%p2 = /home/tom/photos/n%p3 = /home/tom/n%p4 = /home/nnIf you want to save the output image where the original is, write:n%p1/%fnnIf you want to save the output image in a directory named "converted" located in the directory of the opened image, write:n%p1/converted/%fnnIf you want to save the output image in a directory named "/home/tom/photos/converted/2010-10-31", write:n%p2/converted/%d1/%f -!PREFERENCES_OUTDIRTEMPLATE;Use Template -!PREFERENCES_OUTDIRTEMPLATEHINT;You can use the following formatting strings:n%f, %d1, %d2, ..., %p1, %p2, ..., %rnnThese formatting strings refer to the different parts of the photo's pathname, or some attributes of the photo.nn%r will be replaced by the rank of the photo. If the photo is unranked, %r will be replaced by '0'. If the photo is in trash bin, %r will be replaced by 'x'.nnFor example, if the photo being processed has the following pathname:n/home/tom/photos/2010-10-31/dsc0042.nefnthe meaning of the formatting strings are:n%d4 = homen%d3 = tomn%d2 = photosn%d1 = 2010-10-31n%f = dsc0042n%p1 = /home/tom/photos/2010-10-31/n%p2 = /home/tom/photos/n%p3 = /home/tom/n%p4 = /home/nnIf you want to save the output image where the original is, write:n%p1/%fnnIf you want to save the output image in a directory named "converted" located in the directory of the opened image, write:n%p1/converted/%fnnIf you want to save the output image in a directory named "/home/tom/photos/converted/2010-10-31", write:n%p2/converted/%d1/%f -!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails -!PREFERENCES_OVERWRITEOUTPUTFILE;Overwrite existing output files -!PREFERENCES_PARSEDEXT;Parsed Extensions -!PREFERENCES_PARSEDEXTADD;Add Extension -!PREFERENCES_PARSEDEXTADDHINT;Type an extension and press this button to append list -!PREFERENCES_PARSEDEXTDELHINT;Delete selected extension from the list -!PREFERENCES_PROFILEHANDLING;Processing Profile Handling -!PREFERENCES_PROFILELOADPR;Profile Loading Priority -!PREFERENCES_PROFILEPRCACHE;Profile in cache -!PREFERENCES_PROFILEPRFILE;Profile next to the input file -!PREFERENCES_PROFILESAVECACHE;Save processing parameters to the cache -!PREFERENCES_PROFILESAVEINPUT;Save processing parameters next to the input file -!PREFERENCES_PROPERTY;Property -!PREFERENCES_PSPATH;Adobe Photoshop installation directory -!PREFERENCES_SELECTFONT;Select font -!PREFERENCES_SELECTICCDIRDLG;Select ICC Profile Directory... -!PREFERENCES_SELECTLANG;Select language -!PREFERENCES_SELECTMONITORPROFDLG;Select ICC Profile of the Display... -!PREFERENCES_SELECTTHEME;Select theme -!PREFERENCES_SET;SET -!PREFERENCES_SHOWBASICEXIF;Show basic Exif info -!PREFERENCES_SHOWDATETIME;Show date and time -!PREFERENCES_SHOWONLYRAW;Show only RAW files -!PREFERENCES_SHTHRESHOLD;Threshold for clipped shadows -!PREFERENCES_SINGLETAB;Single tab mode -!PREFERENCES_SINGLETABVERTAB;Single tab mode, vertical tabs -!PREFERENCES_SND_BATCHQUEUEDONE;Batch queue done -!PREFERENCES_SND_HELP;Either enter filepath or nothing (for no sound). On Windows use "SystemDefault", "SystemAsterisk" etc. for system sounds. -!PREFERENCES_SND_LNGEDITPROCDONE;Editor processing done -!PREFERENCES_SND_TRESHOLDSECS;after secs -!PREFERENCES_STARTUPIMDIR;Image directory at startup -!PREFERENCES_TAB_BROWSER;File Browser -!PREFERENCES_TAB_GENERAL;General -!PREFERENCES_TAB_IMPROC;Image Processing -!PREFERENCES_TAB_OUTPUT;Output Options -!PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THUMBSIZE;Thumbnail Size -!PREFERENCES_TUNNELMETADATA;Copy IPTC/XMP unchanged to output file (when tagging with other program) -!PREFERENCES_USESYSTEMTHEME; Use System Theme -!PREFERENCES_WORKFLOW;Workflow -!PROFILEPANEL_FILEDLGFILTERANY;Any files -!PROFILEPANEL_FILEDLGFILTERPP;Postprocessing profiles -!PROFILEPANEL_LABEL;Postprocessing Profiles -!PROFILEPANEL_LOADDLGLABEL;Load Postprocessing Parameters... -!PROFILEPANEL_PCUSTOM;Custom -!PROFILEPANEL_PFILE;From file -!PROFILEPANEL_PLASTPHOTO;Last Photo -!PROFILEPANEL_PLASTSAVED;Last Saved -!PROFILEPANEL_PROFILE;Profile -!PROFILEPANEL_SAVEDLGLABEL;Save Postprocessing Parameters... -!PROFILEPANEL_TOOLTIPCOPY;Copy current profile to clipboard -!PROFILEPANEL_TOOLTIPLOAD;Load a profile from file -!PROFILEPANEL_TOOLTIPPASTE; Paste profile from clipboard -!PROFILEPANEL_TOOLTIPSAVE;Save current profile -!PROGRESSBAR_BADPIXELS;Bad pixels... -!PROGRESSBAR_CACORRECTION;CA correction... -!PROGRESSBAR_DARKFRAME;Darkframe... -!PROGRESSBAR_DECODING;Decoding raw file... -!PROGRESSBAR_DEMOSAICING;Demosaicing... -!PROGRESSBAR_GREENEQUIL;Green equilibrate... -!PROGRESSBAR_LINEDENOISE;Line Denoise... -!PROGRESSBAR_LOADING;Loading Image... -!PROGRESSBAR_LOADINGTHUMBS;Loading thumbnails... -!PROGRESSBAR_LOADJPEG;Loading JPEG file... -!PROGRESSBAR_LOADPNG;Loading PNG file... -!PROGRESSBAR_LOADTIFF;Loading TIFF file... -!PROGRESSBAR_PROCESSING;Processing Image... -!PROGRESSBAR_READY;Ready. -!PROGRESSBAR_SAVEJPEG;Saving JPEG file... -!PROGRESSBAR_SAVEPNG;Saving PNG file... -!PROGRESSBAR_SAVETIFF;Saving TIFF file... -!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser -!QINFO_FOCALLENGTH;Focal length -!QINFO_ISO;ISO -!QINFO_LENS;Lens -!QINFO_NOEXIF;Exif data not available. -!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists -!SAVEDLG_FILEFORMAT;File format -!SAVEDLG_JPEGQUAL;JPEG Quality -!SAVEDLG_JPGFILTER;JPEG files -!SAVEDLG_PNGCOMPR;PNG Compression -!SAVEDLG_PNGFILTER;PNG files -!SAVEDLG_PUTTOQUEUE;Put into processing queue -!SAVEDLG_PUTTOQUEUEHEAD;Put to the head of the processing queue -!SAVEDLG_PUTTOQUEUETAIL;Put to the end of the processing queue -!SAVEDLG_SAVEIMMEDIATELY;Save immediately -!SAVEDLG_SAVESPP;Save processing parameters with image -!SAVEDLG_TIFFFILTER;TIFF files -!SAVEDLG_TIFFUNCOMPRESSED;Uncompressed TIFF -!TOOLBAR_TOOLTIP_CROP;Crop selection C -!TOOLBAR_TOOLTIP_HAND;Hand tool H -!TOOLBAR_TOOLTIP_STRAIGHTEN;Straight line selection S -!TOOLBAR_TOOLTIP_WB;Spot white balance W -!TP_CACORRECTION_BLUE;Blue -!TP_CACORRECTION_LABEL;C/A Correction -!TP_CACORRECTION_RED;Red -!TP_CHMIXER_BLUE;Blue -!TP_CHMIXER_GREEN;Green -!TP_CHMIXER_LABEL;Channel Mixer -!TP_CHMIXER_RED;Red -!TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COARSETRAF_DEGREE;degree: -!TP_COARSETRAF_TOOLTIP_HFLIP;Flip horizontally -!TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left [ -!TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right ] -!TP_COARSETRAF_TOOLTIP_VFLIP;Flip vertically -!TP_COLORBOOST_ACHANNEL;Channel "a" -!TP_COLORBOOST_AMOUNT;Amount -!TP_COLORBOOST_BCHANNEL;Channel "b" -!TP_COLORBOOST_CHAB;a & b -!TP_COLORBOOST_CHANNEL;Channel -!TP_COLORBOOST_CHSEPARATE;separate -!TP_COLORBOOST_ENABLESATLIMITER;Enable saturation limiter -!TP_COLORBOOST_SATLIMIT;Saturation limit -!TP_COLORDENOISE_EDGESENSITIVE;Edge Sensitive -!TP_COLORDENOISE_EDGETOLERANCE;Edge Tolerance -!TP_COLORDENOISE_RADIUS;Radius -!TP_COLORSHIFT_BLUEYELLOW;Blue-Yellow -!TP_COLORSHIFT_GREENMAGENTA;Green-Magenta -!TP_CROP_FIXRATIO;Fix Ratio: -!TP_CROP_GTDIAGONALS;Rule of diagonals -!TP_CROP_GTGRID;Grid -!TP_CROP_GTHARMMEANS1;Harmonic means 1 -!TP_CROP_GTHARMMEANS2;Harmonic means 2 -!TP_CROP_GTHARMMEANS3;Harmonic means 3 -!TP_CROP_GTHARMMEANS4;Harmonic means 4 -!TP_CROP_GTNONE;None -!TP_CROP_GTRULETHIRDS;Rule of thirds -!TP_CROP_GUIDETYPE;Guide Type: -!TP_CROP_H;H -!TP_CROP_LABEL;Crop -!TP_CROP_PPI;PPI= -!TP_CROP_SELECTCROP; Select Crop -!TP_CROP_W;W -!TP_CROP_X;x -!TP_CROP_Y;y -!TP_DARKFRAME_AUTOSELECT;Auto selection -!TP_DARKFRAME_LABEL;Dark Frame -!TP_DEFRINGE_LABEL;Defringe -!TP_DEFRINGE_RADIUS;Radius -!TP_DEFRINGE_THRESHOLD;Threshold -!TP_DETAIL_AMOUNT;Amount -!TP_DIRPYRDENOISE_CHROMA;Chrominance -!TP_DIRPYRDENOISE_GAMMA;Gamma -!TP_DIRPYRDENOISE_LABEL;Noise reduction -!TP_DIRPYRDENOISE_LUMA;Luminance -!TP_DIRPYREQUALIZER_LABEL;Contrast by detail levels -!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest -!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast- -!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+ -!TP_DIRPYREQUALIZER_LUMAFINEST;Finest -!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral -!TP_DIRPYREQUALIZER_THRESHOLD;Threshold -!TP_DISTORTION_AMOUNT;Amount -!TP_DISTORTION_AUTO;Auto distortion correction -!TP_DISTORTION_AUTO_TIP;(Exprimental) Correct lens distortion automatically for some cameras (M4/3, some compact DC, etc.) -!TP_DISTORTION_LABEL;Distortion -!TP_EQUALIZER_CONTRAST_MINUS;Contrast- -!TP_EQUALIZER_CONTRAST_PLUS;Contrast+ -!TP_EQUALIZER_FINEST;finest -!TP_EQUALIZER_LABEL;Wavelet equalizer -!TP_EQUALIZER_LARGEST;coarsest -!TP_EQUALIZER_NEUTRAL;Neutral -!TP_EXPOSCORR_LABEL;Raw white point -!TP_EXPOSURE_AUTOLEVELS;Auto Levels -!TP_EXPOSURE_BLACKLEVEL;Black -!TP_EXPOSURE_BRIGHTNESS;Brightness -!TP_EXPOSURE_CLIP;Clip -!TP_EXPOSURE_COMPRHIGHLIGHTS;Highlight recovery amount -!TP_EXPOSURE_COMPRHIGHLIGHTSTHRESHOLD;Highlight recovery threshold -!TP_EXPOSURE_COMPRSHADOWS;Shadow recovery -!TP_EXPOSURE_CONTRAST;Contrast -!TP_EXPOSURE_CURVEEDITOR;Tone Curve -!TP_EXPOSURE_EXPCOMP;Exp. Comp. -!TP_EXPOSURE_LABEL;Exposure -!TP_EXPOSURE_SATURATION;Saturation -!TP_FLATFIELD_AUTOSELECT;Auto selection -!TP_FLATFIELD_BLURRADIUS;Blur Radius -!TP_FLATFIELD_BLURTYPE;Blur Type -!TP_FLATFIELD_BT_AREA;Area -!TP_FLATFIELD_BT_HORIZONTAL;Horizontal -!TP_FLATFIELD_BT_VERTHORIZ;Vert. + Horiz. -!TP_FLATFIELD_BT_VERTICAL;Vertical -!TP_FLATFIELD_LABEL;Flat Field -!TP_GAMMA_COMMENT;(output profile disabled except "default") -!TP_GAMMA_OUTPUT;Output gamma -!TP_HLREC_CIELAB;CIELab Blending -!TP_HLREC_LABEL;Highlight Reconstruction -!TP_HLREC_LUMINANCE;Luminance Recovery -!TP_HLREC_METHOD;Method: -!TP_HSVEQUALIZER1;Red -!TP_HSVEQUALIZER2;Yellow -!TP_HSVEQUALIZER3;Lime -!TP_HSVEQUALIZER4;Green -!TP_HSVEQUALIZER5;Aqua -!TP_HSVEQUALIZER6;Blue -!TP_HSVEQUALIZER7;Purple -!TP_HSVEQUALIZER8;Magenta -!TP_HSVEQUALIZER_CHANNEL;HSV Channel -!TP_HSVEQUALIZER_HUE;H -!TP_HSVEQUALIZER_LABEL;HSV Equalizer -!TP_HSVEQUALIZER_NEUTRAL;Neutral -!TP_HSVEQUALIZER_SAT;S -!TP_HSVEQUALIZER_VAL;V -!TP_ICM_FILEDLGFILTERANY;Any files -!TP_ICM_FILEDLGFILTERICM;ICC Profile Files -!TP_ICM_GAMMABEFOREINPUT;Profile applies Gamma -!TP_ICM_INPUTCAMERA;Camera default -!TP_ICM_INPUTCUSTOM;Custom -!TP_ICM_INPUTDLGLABEL;Select Input ICC Profile... -!TP_ICM_INPUTEMBEDDED;Use Embedded, if possible -!TP_ICM_INPUTNONE;No profile -!TP_ICM_INPUTPROFILE;Input Profile -!TP_ICM_LABEL;ICM -!TP_ICM_NOICM;No ICM: sRGB output -!TP_ICM_OUTPUTDLGLABEL;Select Output ICC Profile... -!TP_ICM_OUTPUTPROFILE;Output Profile -!TP_ICM_SAVEREFERENCE;Save reference image for profiling -!TP_ICM_WORKINGPROFILE;Working Profile -!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction -!TP_IMPULSEDENOISE_THRESH;Impulse NR Threshold -!TP_LABCURVE_BRIGHTNESS;Brightness -!TP_LABCURVE_CONTRAST;Contrast -!TP_LABCURVE_CURVEEDITOR;Luminance Curve -!TP_LABCURVE_ENABLESATLIMITER;Enable saturation limiter -!TP_LABCURVE_LABEL;Lab Adjustments -!TP_LABCURVE_SATLIMIT;Saturation limit -!TP_LABCURVE_SATURATION;Saturation -!TP_LENSGEOM_AUTOCROP;Auto Crop -!TP_LENSGEOM_FILL;Auto Fill -!TP_LENSGEOM_LABEL;Lens / Geometry -!TP_LUMADENOISE_EDGETOLERANCE;Edge Tolerance -!TP_LUMADENOISE_LABEL;Luminance Noise Reduction -!TP_LUMADENOISE_RADIUS;Radius -!TP_PERSPECTIVE_HORIZONTAL;Horizontal -!TP_PERSPECTIVE_LABEL;Perspective -!TP_PERSPECTIVE_VERTICAL;Vertical -!TP_PREPROCESS_GREENEQUIL;Green equilibration -!TP_PREPROCESS_HOTDEADPIXFILT;Apply hot/dead pixel filter -!TP_PREPROCESS_LABEL;Preprocessing -!TP_PREPROCESS_LINEDENOISE;Line noise filter -!TP_PREPROCESS_NO_FOUND;None found -!TP_RAWCACORR_AUTO;Auto correction -!TP_RAWCACORR_CABLUE;Blue -!TP_RAWCACORR_CARED;Red -!TP_RAWEXPOS_LINEAR;Linear corr. factor -!TP_RAWEXPOS_PRESER;HL preserving corr. (EV) -!TP_RAW_DCBENHANCE;Apply DCB enhancement step -!TP_RAW_DCBITERATIONS;Number of DCB iterations -!TP_RAW_DMETHOD;Method -!TP_RAW_LABEL;Demosaicing -!TP_RESIZE_APPLIESTO;Applies to: -!TP_RESIZE_BICUBIC;Bicubic -!TP_RESIZE_BICUBICSF;Bicubic (Softer) -!TP_RESIZE_BICUBICSH;Bicubic (Sharper) -!TP_RESIZE_BILINEAR;Bilinear -!TP_RESIZE_CROPPEDAREA;Cropped area -!TP_RESIZE_DOWNSCALEB;Downscale (Better) -!TP_RESIZE_DOWNSCALEF;Downscale (Faster) -!TP_RESIZE_FITBOX;Bounding box -!TP_RESIZE_FULLIMAGE;Full image -!TP_RESIZE_FULLSIZE;Full Image Size: -!TP_RESIZE_H;H: -!TP_RESIZE_HEIGHT;Height -!TP_RESIZE_LABEL;Resize -!TP_RESIZE_LANCZOS;Lanczos -!TP_RESIZE_METHOD;Method: -!TP_RESIZE_NEAREST;Nearest -!TP_RESIZE_SCALE;Scale -!TP_RESIZE_SPECIFY;Specify: -!TP_RESIZE_W;W: -!TP_RESIZE_WIDTH;Width -!TP_ROTATE_DEGREE;Degree -!TP_ROTATE_LABEL;Rotate -!TP_ROTATE_SELECTLINE; Select Straight Line -!TP_SHADOWSHLIGHTS_HIGHLIGHTS;Highlights -!TP_SHADOWSHLIGHTS_HLTONALW;Tonal Width for Highlights -!TP_SHADOWSHLIGHTS_LABEL;Shadows/Highlights -!TP_SHADOWSHLIGHTS_LOCALCONTR;Local Contrast -!TP_SHADOWSHLIGHTS_RADIUS;Radius -!TP_SHADOWSHLIGHTS_SHADOWS;Shadows -!TP_SHADOWSHLIGHTS_SHTONALW;Tonal Width for Shadows -!TP_SHARPENING_AMOUNT;Amount -!TP_SHARPENING_EDRADIUS;Radius -!TP_SHARPENING_EDTOLERANCE;Edge tolerance -!TP_SHARPENING_HALOCONTROL;Halo control -!TP_SHARPENING_HCAMOUNT;Amount -!TP_SHARPENING_LABEL;Sharpening -!TP_SHARPENING_METHOD;Method -!TP_SHARPENING_ONLYEDGES;Sharpen only edges -!TP_SHARPENING_RADIUS;Radius -!TP_SHARPENING_RLD;RL Deconvolution -!TP_SHARPENING_RLD_AMOUNT;Amount -!TP_SHARPENING_RLD_DAMPING;Damping -!TP_SHARPENING_RLD_ITERATIONS;Iterations -!TP_SHARPENING_THRESHOLD;Threshold -!TP_SHARPENING_USM;Unsharp Mask -!TP_VIGNETTING_AMOUNT;Amount -!TP_VIGNETTING_CENTER;Center -!TP_VIGNETTING_CENTER_X;Center X -!TP_VIGNETTING_CENTER_Y;Center Y -!TP_VIGNETTING_LABEL;Vignetting Correction -!TP_VIGNETTING_RADIUS;Radius -!TP_VIGNETTING_STRENGTH;Strength -!TP_WBALANCE_AUTO;Auto -!TP_WBALANCE_CAMERA;Camera -!TP_WBALANCE_CUSTOM;Custom -!TP_WBALANCE_GREEN;Tint -!TP_WBALANCE_LABEL;White Balance -!TP_WBALANCE_METHOD;Method -!TP_WBALANCE_SIZE;Size: -!TP_WBALANCE_SPOTWB;Spot WB -!TP_WBALANCE_TEMPERATURE;Temperature -!ZOOMBAR_DETAIL;Detail -!ZOOMBAR_HUGE;Huge -!ZOOMBAR_LARGE;Large -!ZOOMBAR_NORMAL;Normal -!ZOOMBAR_PREVIEW;Preview -!ZOOMBAR_SCALE;Scale -!ZOOMBAR_SMALL;Small -!ZOOMPANEL_100;(100%) -!ZOOMPANEL_NEWCROPWINDOW;Open (new) detail window -!ZOOMPANEL_ZOOM100;Zoom to 100% 1 -!ZOOMPANEL_ZOOMFITSCREEN;Fit to screen F -!ZOOMPANEL_ZOOMIN;Zoom In + -!ZOOMPANEL_ZOOMOUT;Zoom Out - + + +!!!!!!!!!!!!!!!!!!!!!!!!! +! Untranslated keys follow; remove the ! prefix after an entry is translated. +!!!!!!!!!!!!!!!!!!!!!!!!! + + +!ABOUT_TAB_BUILD;Version +!ABOUT_TAB_CREDITS;Credits +!ABOUT_TAB_LICENSE;License +!ABOUT_TAB_SPLASH;Splash +!ADJUSTER_RESET_TO_DEFAULT;Reset to default +!BATCHQUEUE_AUTOSTART;Auto start +!BATCH_PROCESSING;Batch processing +!CURVEEDITOR_CURVE;Curve +!CURVEEDITOR_CURVES;Curves +!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_DARKS;Darks +!CURVEEDITOR_FILEDLGFILTERANY;Any files +!CURVEEDITOR_FILEDLGFILTERCURVE;Curve files +!CURVEEDITOR_HIGHLIGHTS;Highlights +!CURVEEDITOR_LIGHTS;Lights +!CURVEEDITOR_LINEAR;Linear +!CURVEEDITOR_LOADDLGLABEL;Load Curve... +!CURVEEDITOR_MINMAXCPOINTS;Minima/Maxima control points +!CURVEEDITOR_NURBS;Control cage +!CURVEEDITOR_PARAMETRIC;Parametric +!CURVEEDITOR_SAVEDLGLABEL;Save Curve... +!CURVEEDITOR_SHADOWS;Shadows +!CURVEEDITOR_TOOLTIPCOPY;Copy current curve to clipboard +!CURVEEDITOR_TOOLTIPLINEAR;Reset curve to linear +!CURVEEDITOR_TOOLTIPLOAD;Load a curve from file +!CURVEEDITOR_TOOLTIPPASTE;Paste curve from clipboard +!CURVEEDITOR_TOOLTIPSAVE;Save current curve +!CURVEEDITOR_TYPE;Type: +!EDITWINDOW_TITLE;Image Edit +!EXIFFILTER_APERTURE;Aperture +!EXIFFILTER_CAMERA;Camera +!EXIFFILTER_DIALOGLABEL;Exif Filter +!EXIFFILTER_FILETYPE;File Type +!EXIFFILTER_FOCALLEN;Focal Length +!EXIFFILTER_ISO;ISO +!EXIFFILTER_LENS;Lens +!EXIFFILTER_METADATAFILTER;Enable Metadata Filters +!EXIFFILTER_SHUTTER;Shutter +!EXIFPANEL_ADDEDIT;Add/Edit +!EXIFPANEL_ADDEDITHINT;Add new tag or edit tag +!EXIFPANEL_ADDTAGDLG_ENTERVALUE;Enter value +!EXIFPANEL_ADDTAGDLG_SELECTTAG;Select tag +!EXIFPANEL_ADDTAGDLG_TITLE;Add/Edit Tag +!EXIFPANEL_KEEP;Keep +!EXIFPANEL_KEEPHINT;Keep the selected tags when writing output file +!EXIFPANEL_REMOVE;Remove +!EXIFPANEL_REMOVEHINT;Remove the selected tags when writing output file +!EXIFPANEL_RESET;Reset +!EXIFPANEL_RESETALL;Reset All +!EXIFPANEL_RESETALLHINT;Reset all tags to their original values +!EXIFPANEL_RESETHINT;Reset the selected tags to their original values +!EXIFPANEL_SUBDIRECTORY;Subdirectory +!FILEBROWSER_ADDDELTEMPLATE;Add/Del templates... +!FILEBROWSER_APPLYPROFILE;Apply profile +!FILEBROWSER_ARRANGEMENTHINT;Change between vertical/horizontal alignment of thumbnails +!FILEBROWSER_AUTODARKFRAME;Auto dark frame +!FILEBROWSER_AUTOFLATFIELD;Auto flat field +!FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path +!FILEBROWSER_BROWSEPATHHINT;Type path to browse (Ctrl-o set focus,Ctrl-Enter to browse in File Browser);nPath shortcuts: ~ - user's home directory, ! - user's pictures directory +!FILEBROWSER_CACHE;Cache +!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial +!FILEBROWSER_CLEARPROFILE;Clear profile +!FILEBROWSER_COPYPROFILE;Copy profile +!FILEBROWSER_CURRENT_NAME;Current name: +!FILEBROWSER_DARKFRAME;Dark frame +!FILEBROWSER_DELETEDLGLABEL;File delete confirmation +!FILEBROWSER_DELETEDLGMSG;Are you sure you want to delete the selected %1 files? +!FILEBROWSER_DELETEDLGMSGINCLPROC;Are you sure you want to delete the selected %1 files INCLUDING a batch processed version? +!FILEBROWSER_EMPTYTRASH;Empty Trash +!FILEBROWSER_EMPTYTRASHHINT;Permanently delete the files of the trash +!FILEBROWSER_EXIFFILTERAPPLY;Apply +!FILEBROWSER_EXIFFILTERAPPLYHINT;Switch on/off exif filter of the file browser +!FILEBROWSER_EXIFFILTERLABEL;Exif Filter +!FILEBROWSER_EXIFFILTERSETTINGS;Setup +!FILEBROWSER_EXIFFILTERSETTINGSHINT;Change settings of the exif filter +!FILEBROWSER_FLATFIELD;Flat field +!FILEBROWSER_MOVETODARKFDIR;Move to dark frames directory +!FILEBROWSER_MOVETOFLATFIELDDIR;Move to flat fields directory +!FILEBROWSER_NEW_NAME;New name: +!FILEBROWSER_PARTIALPASTEPROFILE;Partial paste +!FILEBROWSER_PASTEPROFILE;Paste profile +!FILEBROWSER_POPUPCANCELJOB;Cancel job +!FILEBROWSER_POPUPCOPYTO;Copy to... +!FILEBROWSER_POPUPMOVEEND;Move to end of queue +!FILEBROWSER_POPUPMOVEHEAD;Move to head of queue +!FILEBROWSER_POPUPMOVETO;Move to... +!FILEBROWSER_POPUPOPEN;Open +!FILEBROWSER_POPUPPROCESS;Put to processing queue +!FILEBROWSER_POPUPRANK1;Rank 1 +!FILEBROWSER_POPUPRANK2;Rank 2 +!FILEBROWSER_POPUPRANK3;Rank 3 +!FILEBROWSER_POPUPRANK4;Rank 4 +!FILEBROWSER_POPUPRANK5;Rank 5 +!FILEBROWSER_POPUPREMOVE;Remove from filesystem +!FILEBROWSER_POPUPREMOVEINCLPROC;Remove from filesystem & batch result +!FILEBROWSER_POPUPREMOVESUBMENU;Remove +!FILEBROWSER_POPUPRENAME;Rename +!FILEBROWSER_POPUPSELECTALL;Select all +!FILEBROWSER_POPUPTRASH;Move to trash +!FILEBROWSER_POPUPUNRANK;Unrank +!FILEBROWSER_POPUPUNTRASH;Remove from trash +!FILEBROWSER_PROCESSINGSETTINGS;Settings +!FILEBROWSER_PROCESSINGSETTINGSHINT;Set the file format and output directory +!FILEBROWSER_RENAMEDLGLABEL;Rename file +!FILEBROWSER_RENAMEDLGMSG;Rename file "%1" to: +!FILEBROWSER_SELECTDARKFRAME;Select dark frame... +!FILEBROWSER_SELECTFLATFIELD;Select flat field... +!FILEBROWSER_SHOWDIRHINT;Show all images of the directory D +!FILEBROWSER_SHOWEXIFINFO;Show EXIF info i +!FILEBROWSER_SHOWQUEUEHINT;Show content of the processing queue +!FILEBROWSER_SHOWRANK1HINT;Show images ranked as 1 star 1 +!FILEBROWSER_SHOWRANK2HINT;Show images ranked as 2 star 2 +!FILEBROWSER_SHOWRANK3HINT;Show images ranked as 3 star 3 +!FILEBROWSER_SHOWRANK4HINT;Show images ranked as 4 star 4 +!FILEBROWSER_SHOWRANK5HINT;Show images ranked as 5 star 5 +!FILEBROWSER_SHOWTRASHHINT;Show content of the trash T +!FILEBROWSER_SHOWUNRANKHINT;Show unranked images ` +!FILEBROWSER_STARTPROCESSING;Start processing +!FILEBROWSER_STARTPROCESSINGHINT;Start processing/saving of images in the queue +!FILEBROWSER_STOPPROCESSING;Stop processing +!FILEBROWSER_STOPPROCESSINGHINT;Stop processing of images +!FILEBROWSER_THUMBSIZE;Thumb. size +!FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives +!FILEBROWSER_USETEMPLATE;Use template: +!FILEBROWSER_ZOOMINHINT;Increase thumbnail size + +!FILEBROWSER_ZOOMOUTHINT;Decrease thumbnail size - +!GENERAL_ABOUT;About +!GENERAL_AFTER;After +!GENERAL_BEFORE;Before +!GENERAL_CANCEL;Cancel +!GENERAL_DISABLE;Disable +!GENERAL_DISABLED;Disabled +!GENERAL_ENABLE;Enable +!GENERAL_ENABLED;Enabled +!GENERAL_FILE;File +!GENERAL_HIGH_QUALITY;High Quality +!GENERAL_LANDSCAPE;Landscape +!GENERAL_LOAD;Load +!GENERAL_NA;n/a +!GENERAL_NO;No +!GENERAL_NONE;None +!GENERAL_OK;OK +!GENERAL_PORTRAIT;Portrait +!GENERAL_SAVE;Save +!GENERAL_UNCHANGED;(Unchanged) +!GENERAL_YES;Yes +!HISTOGRAM_BUTTON_B;B +!HISTOGRAM_BUTTON_G;G +!HISTOGRAM_BUTTON_L;L +!HISTOGRAM_BUTTON_R;R +!HISTOGRAM_BUTTON_RAW;Raw +!HISTOGRAM_LABEL;Histogram +!HISTOGRAM_TOOLTIP_B;Show/Hide BLUE histogram +!HISTOGRAM_TOOLTIP_G;Show/Hide GREEN histogram +!HISTOGRAM_TOOLTIP_L;Show/Hide CIELAB Luminance histogram +!HISTOGRAM_TOOLTIP_R;Show/Hide RED histogram +!HISTOGRAM_TOOLTIP_RAW;Show/Hide RAW histogram +!HISTORY_CHANGED;Changed +!HISTORY_CUSTOMCURVE;Custom Curve +!HISTORY_DELSNAPSHOT;Del +!HISTORY_FROMCLIPBOARD;From clipboard +!HISTORY_LABEL;History +!HISTORY_MSG_100;RGB saturation +!HISTORY_MSG_101;HSV EQ -- Hue +!HISTORY_MSG_102;HSV EQ -- Saturation +!HISTORY_MSG_103;HSV EQ -- Value +!HISTORY_MSG_104;HSV Equalizer +!HISTORY_MSG_105;Defringing +!HISTORY_MSG_106;Defringing Radius +!HISTORY_MSG_107;Defringing Threshold +!HISTORY_MSG_108;Highlight Compr. Threshold +!HISTORY_MSG_109;Resize bounding box +!HISTORY_MSG_10;Shadow Compression +!HISTORY_MSG_110;Resizing applies to +!HISTORY_MSG_112;Saturation Limiter +!HISTORY_MSG_113;Saturation Limit +!HISTORY_MSG_114;DCB Iterations +!HISTORY_MSG_116;Enhanced DCB +!HISTORY_MSG_117;Red CA correction +!HISTORY_MSG_118;Blue CA correction +!HISTORY_MSG_119;Line denoise +!HISTORY_MSG_120;Green equil. threshold +!HISTORY_MSG_121;Auto CA +!HISTORY_MSG_122;Auto Dark Frame +!HISTORY_MSG_123;Dark Frame File +!HISTORY_MSG_124;Linear exp. correction +!HISTORY_MSG_125;Expo. correction preserving HL +!HISTORY_MSG_126;Flat Field File +!HISTORY_MSG_127;Flat Field Auto Select +!HISTORY_MSG_128;Flat Field Blur Radius +!HISTORY_MSG_129;Flat Field Blur Type +!HISTORY_MSG_12;Auto Exposure +!HISTORY_MSG_13;Exposure Clipping +!HISTORY_MSG_14;Luminance Brightness +!HISTORY_MSG_15;Luminance Contrast +!HISTORY_MSG_16;Luminance Black +!HISTORY_MSG_17;Luminance Highlight Compr. +!HISTORY_MSG_18;Luminance Shadow Compr. +!HISTORY_MSG_19;'L' Curve +!HISTORY_MSG_20;Sharpening +!HISTORY_MSG_21;Sharpening Radius +!HISTORY_MSG_22;Sharpening Amount +!HISTORY_MSG_23;Sharpening Threshold +!HISTORY_MSG_24;Sharpen Only Edges +!HISTORY_MSG_25;Sharpening Edge Detection Radius +!HISTORY_MSG_26;Sharpening Edge Tolerance +!HISTORY_MSG_27;Sharpening Halo Control +!HISTORY_MSG_28;Halo Control Amount +!HISTORY_MSG_29;Sharpening Method +!HISTORY_MSG_2;Profile Loaded +!HISTORY_MSG_30;Deconvolution Radius +!HISTORY_MSG_31;Deconvolution Amount +!HISTORY_MSG_32;Deconvolution Damping +!HISTORY_MSG_33;Deconvolution Iterations +!HISTORY_MSG_35;Saturation Limiter +!HISTORY_MSG_36;Saturation Limit +!HISTORY_MSG_38;White Balance Method +!HISTORY_MSG_40;White Balance Tint +!HISTORY_MSG_43;Luminance Denoising +!HISTORY_MSG_44;Lum. Denoising Radius +!HISTORY_MSG_45;Lum. Denoising Edge Tolerance +!HISTORY_MSG_50;Shadow/Highlight tool +!HISTORY_MSG_51;Highlight boost +!HISTORY_MSG_52;Shadow Boost +!HISTORY_MSG_53;Highlight Tonal Width +!HISTORY_MSG_54;Shadow Tonal Width +!HISTORY_MSG_55;Local Contrast +!HISTORY_MSG_56;Shadow/Highlight Radius +!HISTORY_MSG_57;Coarse Rotation +!HISTORY_MSG_58;Horizontal Flipping +!HISTORY_MSG_59;Vertical Flipping +!HISTORY_MSG_5;Brightness +!HISTORY_MSG_60;Rotation +!HISTORY_MSG_61;Auto Fill +!HISTORY_MSG_62;Lens Distortion Correction +!HISTORY_MSG_63;Snapshot Selected +!HISTORY_MSG_64;Crop Photo +!HISTORY_MSG_65;C/A Correction +!HISTORY_MSG_66;Highlight Recovery +!HISTORY_MSG_67;Highlight Recovery Amount +!HISTORY_MSG_68;Highlight Recovery Method +!HISTORY_MSG_72;Vignetting Correction +!HISTORY_MSG_73;Channel Mixer +!HISTORY_MSG_74;Resize Scale +!HISTORY_MSG_75;Resize Method +!HISTORY_MSG_76;Exif Metadata +!HISTORY_MSG_77;IPTC Metadata +!HISTORY_MSG_78;Data specified for resize +!HISTORY_MSG_79;Resize width +!HISTORY_MSG_80;Resize height +!HISTORY_MSG_81;Resize enabled +!HISTORY_MSG_82;Profile Changed +!HISTORY_MSG_83;High quality shadows/highlights +!HISTORY_MSG_84;Perspective correction +!HISTORY_MSG_85;Wavelet coefficients +!HISTORY_MSG_86;Wavelet equalizer +!HISTORY_MSG_87;Impulse noise reduction +!HISTORY_MSG_88;Impulse NR threshold +!HISTORY_MSG_89;Noise reduction +!HISTORY_MSG_8;Exposure Compensation +!HISTORY_MSG_90;NR - luminance +!HISTORY_MSG_91;NR - chrominance +!HISTORY_MSG_92;NR - gamma +!HISTORY_MSG_93;Contrast by detail levels value +!HISTORY_MSG_94;Contrast by detail levels +!HISTORY_MSG_95;Saturation +!HISTORY_MSG_96;'a' curve +!HISTORY_MSG_97;'b' curve +!HISTORY_MSG_99;Hot/dead pixel filtering +!HISTORY_NEWSNAPSHOT;Add +!HISTORY_NEWSNAPSHOTAS;As... +!HISTORY_NEWSSDIALOGLABEL;Label of the snapshot: +!HISTORY_NEWSSDIALOGTITLE;Add new snapshot +!HISTORY_SETTO;Set to +!HISTORY_SNAPSHOT;Snapshot +!HISTORY_SNAPSHOTS;Snapshots +!ICMPANEL_FILEDLGFILTERANY;Any files +!ICMPANEL_FILEDLGFILTERICM;ICC Profile Files +!ICMPANEL_GAMMABEFOREINPUT;Profile applies Gamma +!ICMPANEL_INPUTCAMERA;Camera default +!ICMPANEL_INPUTCUSTOM;Custom +!ICMPANEL_INPUTDLGLABEL;Select Input ICC Profile... +!ICMPANEL_INPUTEMBEDDED;Use Embedded, if possible +!ICMPANEL_INPUTPROFILE;Input Profile +!ICMPANEL_NOICM;No ICM: sRGB output +!ICMPANEL_OUTPUTDLGLABEL;Select Output ICC Profile... +!ICMPANEL_OUTPUTPROFILE;Output Profile +!ICMPANEL_SAVEREFERENCE;Save reference image for profiling +!ICMPANEL_WORKINGPROFILE;Working Profile +!IMAGEAREA_DETAILVIEW;Detail view +!IPTCPANEL_AUTHOR;Author +!IPTCPANEL_AUTHORHINT;Name of the creator of the object, e.g. writer, photographer or graphic artist (By-line). +!IPTCPANEL_AUTHORSPOSITION;Author's position +!IPTCPANEL_AUTHORSPOSITIONHINT;Title of the creator or creators of the object (By-line Title). +!IPTCPANEL_CAPTION;Caption +!IPTCPANEL_CAPTIONHINT;A textual description of the data (Caption - Abstract). +!IPTCPANEL_CAPTIONWRITER;Caption Writer +!IPTCPANEL_CAPTIONWRITERHINT;The name of the person involved in the writing, editing or correcting the image or caption/abstract (Writer - Editor). +!IPTCPANEL_CATEGORY;Category +!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider (Category). +!IPTCPANEL_CITY;City +!IPTCPANEL_CITYHINT;City of image origin (City). +!IPTCPANEL_COPYHINT;Copy IPTC settings to clipboard +!IPTCPANEL_COPYRIGHT;Copyright +!IPTCPANEL_COPYRIGHTHINT;Any necessary copyright notice (Copyright Notice). +!IPTCPANEL_COUNTRY;Country +!IPTCPANEL_COUNTRYHINT;The name of the country/primary location where the image was created (Country - Primary Location Name). +!IPTCPANEL_CREDIT;Credit +!IPTCPANEL_CREDITHINT;Identifies the provider of the image, not necessarily the owner/creator (Credit). +!IPTCPANEL_EMBEDDED;Embedded +!IPTCPANEL_EMBEDDEDHINT;Reset to IPTC data embedded in the image file +!IPTCPANEL_HEADLINE;Headline +!IPTCPANEL_HEADLINEHINT;A publishable entry providing a synopsis of the contents of the image (Headline). +!IPTCPANEL_INSTRUCTIONS;Instructions +!IPTCPANEL_INSTRUCTIONSHINT;Other editorial instructions concerning the use of the image (Special Instructions). +!IPTCPANEL_KEYWORDS;Keywords +!IPTCPANEL_KEYWORDSHINT;Used to indicate specific information retrieval words (Keywords). +!IPTCPANEL_PASTEHINT;Paste IPTC settings from clipboard +!IPTCPANEL_RESET;Reset +!IPTCPANEL_RESETHINT;Reset to profile default +!IPTCPANEL_SOURCE;Source +!IPTCPANEL_SOURCEHINT;The original owner of the intellectual content of the image (Source). +!IPTCPANEL_SUPPCATEGORIES;Suppl. Categories +!IPTCPANEL_SUPPCATEGORIESHINT;Further refines the subject of the image (Supplemental Categories). +!IPTCPANEL_TITLE;Title +!IPTCPANEL_TITLEHINT;A shorthand reference for the image (Object Name). +!IPTCPANEL_TRANSREFERENCE;Trans. Reference +!IPTCPANEL_TRANSREFERENCEHINT;A code representing the location of original transmission (Original Transmission Reference). +!MAIN_BUTTON_EXIT;Exit +!MAIN_BUTTON_FULLSCREEN;Fullscreen +!MAIN_BUTTON_PREFERENCES;Preferences +!MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Add current image to processing queue Ctrl+Q +!MAIN_BUTTON_QUEUE;Put to queue +!MAIN_BUTTON_SAVE_TOOLTIP;Save current image Ctrl+S +!MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Edit current image in external editor Ctrl+E +!MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Show/hide all side panels m +!MAIN_BUTTON_UNFULLSCREEN;Exit fullscreen +!MAIN_FRAME_BATCHQUEUE;Batch Queue +!MAIN_FRAME_BATCHQUEUE_TOOLTIP; Batch Queue Ctrl-F3 +!MAIN_FRAME_EDITOR;Editor +!MAIN_FRAME_EDITOR_TOOLTIP; Editor Ctrl-F4 +!MAIN_FRAME_FILEBROWSER;File Browser +!MAIN_FRAME_FILEBROWSER_TOOLTIP; File Browser Ctrl-F2 +!MAIN_FRAME_PLACES;Places +!MAIN_FRAME_PLACES_ADD;Add +!MAIN_FRAME_PLACES_DEL;Del +!MAIN_FRAME_RECENT;Recent Folders +!MAIN_MSG_ALREADYEXISTS;File already exists. +!MAIN_MSG_CANNOTLOAD;Cannot load image +!MAIN_MSG_CANNOTSAVE;File saving error +!MAIN_MSG_CANNOTSTARTEDITOR;Can not start editor. +!MAIN_MSG_CANNOTSTARTEDITOR_SECONDARY;Please set the correct path in the "Preferences" dialog. +!MAIN_MSG_ERRORDURINGIMAGESAVING;Error during image saving +!MAIN_MSG_EXITJOBSINQUEUEINFO;Unprocessed images in the queue will be lost on exit. +!MAIN_MSG_EXITJOBSINQUEUEQUEST;Are you sure you want to exit? There are unprocessed images waiting in the queue. +!MAIN_MSG_JOBSINQUEUE;job(s) in the queue +!MAIN_MSG_NAVIGATOR;Navigator +!MAIN_MSG_PLACES;Places +!MAIN_MSG_QOVERWRITE;Do you want to overwrite it? +!MAIN_TAB_BASIC;Basic +!MAIN_TAB_COLOR_TOOLTIP;Alt-c +!MAIN_TAB_DETAIL;Detail +!MAIN_TAB_DETAIL_TOOLTIP;Alt-d +!MAIN_TAB_DEVELOP;Develop +!MAIN_TAB_EXIF;Exif +!MAIN_TAB_EXPOSURE;Exposure +!MAIN_TAB_EXPOSURE_TOOLTIP;Alt-e +!MAIN_TAB_FILTER;Filter +!MAIN_TAB_ICM;ICM +!MAIN_TAB_IPTC;IPTC +!MAIN_TAB_METADATA;Metadata +!MAIN_TAB_METADATA_TOOLTIP;Alt-m +!MAIN_TAB_RAW;RAW +!MAIN_TAB_RAW_TOOLTIP;Alt-r +!MAIN_TAB_TAGGING;Tagging +!MAIN_TAB_TRANSFORM;Transform +!MAIN_TAB_TRANSFORM_TOOLTIP;Alt-t +!MAIN_TOGGLE_BEFORE_AFTER;B|A +!MAIN_TOOLTIP_HIDEFP;Show/hide the bottom panel (directory and file browser) F +!MAIN_TOOLTIP_HIDEHP;Show/hide the left panel (including the history) l +!MAIN_TOOLTIP_INDCLIPPEDH;Clipped highlight indication (Key <) +!MAIN_TOOLTIP_INDCLIPPEDS;Clipped shadow indication (Key >) +!MAIN_TOOLTIP_PREFERENCES;Set preferences +!MAIN_TOOLTIP_QINFO;Quick info on the image I +!MAIN_TOOLTIP_SAVE;Save image to the default folder +!MAIN_TOOLTIP_SAVEAS;Save image to a selected folder +!MAIN_TOOLTIP_SHOWHIDELP1;Show/hide the left panel l +!MAIN_TOOLTIP_SHOWHIDERP1;Show/hide the right panel Alt-l +!MAIN_TOOLTIP_SHOWHIDETP1;Show/hide the top panel Shift-l +!MAIN_TOOLTIP_TOGGLE;Toggle before/after view B +!NAVIGATOR_B_NA;B = n/a +!NAVIGATOR_B_VALUE;B = %1 +!NAVIGATOR_G_NA;G = n/a +!NAVIGATOR_G_VALUE;G = %1 +!NAVIGATOR_H_NA;H = n/a +!NAVIGATOR_H_VALUE;H = %1 +!NAVIGATOR_LAB_A_NA;A = n/a +!NAVIGATOR_LAB_A_VALUE;A = %1 +!NAVIGATOR_LAB_B_NA;B = n/a +!NAVIGATOR_LAB_B_VALUE;B = %1 +!NAVIGATOR_LAB_L_NA;L = n/a +!NAVIGATOR_LAB_L_VALUE;L = %1 +!NAVIGATOR_R_NA;R = n/a +!NAVIGATOR_R_VALUE;R = %1 +!NAVIGATOR_S_NA;S = n/a +!NAVIGATOR_S_VALUE;S = %1 +!NAVIGATOR_V_NA;V = n/a +!NAVIGATOR_V_VALUE;V = %1 +!NAVIGATOR_XY_NA;x = n/a, y = n/a +!PARTIALPASTE_BASICGROUP;Basic settings +!PARTIALPASTE_CACORRECTION;C/A correction +!PARTIALPASTE_CHANNELMIXER;Channel mixer +!PARTIALPASTE_COARSETRANS;90 deg rotation / flipping +!PARTIALPASTE_COMMONTRANSFORMPARAMS;Auto fill +!PARTIALPASTE_COMPOSITIONGROUP;Composition settings +!PARTIALPASTE_CROP;Crop +!PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark Frame Auto Select +!PARTIALPASTE_DARKFRAMEFILE;Dark Frame File +!PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DETAILGROUP;Detail settings +!PARTIALPASTE_DIALOGLABEL;Partial paste processing profile +!PARTIALPASTE_DIRPYRDENOISE;Noise reduction +!PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels +!PARTIALPASTE_DISTORTION;Distortion correction +!PARTIALPASTE_EVERYTHING;Everything +!PARTIALPASTE_EXIFCHANGES;Changes to exif data +!PARTIALPASTE_EXPOSURE;Exposure +!PARTIALPASTE_FLATFIELDAUTOSELECT;FF Auto Select +!PARTIALPASTE_FLATFIELDBLURRADIUS;FF Blur Radius +!PARTIALPASTE_FLATFIELDBLURTYPE;FF Blur Type +!PARTIALPASTE_FLATFIELDFILE;Flat field (FF) File +!PARTIALPASTE_HLRECONSTRUCTION;Highlight reconstruction +!PARTIALPASTE_HLRECOVERY;Highlight recovery +!PARTIALPASTE_HLRECOVERYAMOUNT;Highlight recovery amount +!PARTIALPASTE_HLRECOVERYTHRESHOLD;Highlight recovery threshold +!PARTIALPASTE_HSVEQUALIZER;HSV Equalizer +!PARTIALPASTE_ICMSETTINGS;ICM settings +!PARTIALPASTE_IMPULSEDENOISE;Impulse noise reduction +!PARTIALPASTE_IPTCINFO;IPTC info +!PARTIALPASTE_LABCURVE;Lab adjustments +!PARTIALPASTE_LENSGROUP;Lens related settings +!PARTIALPASTE_LUMADENOISE;Luminance noise reduction +!PARTIALPASTE_LUMINANCEGROUP;Luminance related settings +!PARTIALPASTE_METAICMGROUP;Metadata/ICM settings +!PARTIALPASTE_PERSPECTIVE;Perspective +!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration +!PARTIALPASTE_PREPROCESS_HOTDEADPIXFILT;Apply hot/dead pixel filter +!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter +!PARTIALPASTE_RAWCACORR_AUTO;CA auto correction +!PARTIALPASTE_RAWCACORR_CABLUE;CA Blue +!PARTIALPASTE_RAWCACORR_CARED;CA Red +!PARTIALPASTE_RAWEXPOS_LINEAR;Raw white point linear corr. factor +!PARTIALPASTE_RAWEXPOS_PRESER;Raw white point HL preserving corr. (EV) +!PARTIALPASTE_RAWGROUP;Raw settings +!PARTIALPASTE_RAW_DCBENHANCE;Apply DCB enhancement step +!PARTIALPASTE_RAW_DCBITERATIONS;Number of DCB iterations +!PARTIALPASTE_RAW_DMETHOD;Demosaic Method +!PARTIALPASTE_RESIZE;Resize +!PARTIALPASTE_ROTATION;Rotation +!PARTIALPASTE_SHADOWSHIGHLIGHTS;Shadows/Highlights +!PARTIALPASTE_SHARPENING;Sharpening +!PARTIALPASTE_VIGNETTING;Vignetting correction +!PARTIALPASTE_WAVELETEQUALIZER;Wavelet equalizer +!PARTIALPASTE_WHITEBALANCE;White balance +!POPUPBUTTON_SELECTOPTIONHINT;RMB to change option +!PREFERENCES_ADD;ADD +!PREFERENCES_APPLNEXTSTARTUP;restart required +!PREFERENCES_AUTOMONPROFILE;Automatically use operating systems main monitors profile +!PREFERENCES_BATCH_PROCESSING;Batch Processing +!PREFERENCES_BLINKCLIPPED;Blink clipped areas +!PREFERENCES_CACHECLEARALL;Clear All +!PREFERENCES_CACHECLEARPROFILES;Clear Profiles +!PREFERENCES_CACHECLEARTHUMBS;Clear Thumbnails +!PREFERENCES_CACHEFORMAT1;Proprietary (faster and better quality) +!PREFERENCES_CACHEFORMAT2;JPEG (smaller disk footprint) +!PREFERENCES_CACHEOPTS;Cache Options +!PREFERENCES_CACHESTRAT1;Prefer Speed to Low Memory Consumption +!PREFERENCES_CACHESTRAT2;Prefer Low Memory Consumption to Speed +!PREFERENCES_CACHESTRAT;Cache Strategy +!PREFERENCES_CACHETHUMBFORM;Cache Thumbnail Format +!PREFERENCES_CLIPPINGIND;Clipping indication +!PREFERENCES_CMETRICINTENT;Colorimetric Intent +!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency +!PREFERENCES_DARKFRAME;Dark frame +!PREFERENCES_DARKFRAMEFOUND;Found +!PREFERENCES_DARKFRAMESHOTS;shots +!PREFERENCES_DARKFRAMETEMPLATES;templates +!PREFERENCES_DATEFORMAT;Date Format +!PREFERENCES_DATEFORMATFRAME;Date Format +!PREFERENCES_DATEFORMATHINT;You can use the following formatting strings:n%y : yearn%m : monthn%d : daynnFor example, the hungarian date format is:n%y/%m/%d +!PREFERENCES_DEFAULTLANG;Default language +!PREFERENCES_DEFAULTTHEME;Default theme +!PREFERENCES_DEMOSAICINGALGO;Demosaicing Algorithm +!PREFERENCES_DIRDARKFRAMES;Dark frames directory +!PREFERENCES_DIRHOME;Home directory +!PREFERENCES_DIRLAST;Last visited directory +!PREFERENCES_DIROTHER;Other +!PREFERENCES_DIRSELECTDLG;Select Image Directory at Startup... +!PREFERENCES_DIRSOFTWARE;Installation directory +!PREFERENCES_EDITORCMDLINE;Other command line +!PREFERENCES_EDITORLAYOUT;Editor Layout +!PREFERENCES_EXTERNALEDITOR;External editor +!PREFERENCES_FBROWSEROPTS;File Browser Options +!PREFERENCES_FILEFORMAT;File format +!PREFERENCES_FLATFIELD;Flat Field +!PREFERENCES_FLATFIELDFOUND;Found +!PREFERENCES_FLATFIELDSDIR;Flat Fields directory +!PREFERENCES_FLATFIELDSHOTS;shots +!PREFERENCES_FLATFIELDTEMPLATES;templates +!PREFERENCES_FORIMAGE;For image files +!PREFERENCES_FORRAW;For RAW files +!PREFERENCES_GIMPPATH;GIMP installation directory +!PREFERENCES_GTKTHEME;GTK default +!PREFERENCES_HINT;Hint +!PREFERENCES_HLTHRESHOLD;Threshold for clipped highlights +!PREFERENCES_ICCDIR;Directory of ICC profiles +!PREFERENCES_IMPROCPARAMS;Default image processing parameters +!PREFERENCES_INTENT_ABSOLUTE;Absolute Colorimetric +!PREFERENCES_INTENT_PERCEPTUAL;Perceptual +!PREFERENCES_INTENT_RELATIVE;Relative Colorimetric +!PREFERENCES_INTENT_SATURATION;Saturation +!PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Show RAW internal thumbnail if unedited +!PREFERENCES_LIVETHUMBNAILS;Live Thumbnails (slower) +!PREFERENCES_METADATA;Metadata +!PREFERENCES_MONITORICC;Monitor Profile +!PREFERENCES_MULTITAB;Multiple tabs mode +!PREFERENCES_MULTITABDUALMON;Multiple tabs mode, if available on second monitor +!PREFERENCES_OUTDIR;Output Directory +!PREFERENCES_OUTDIRFOLDER;Save to folder +!PREFERENCES_OUTDIRFOLDERHINT;Put the saved images to the selected folder +!PREFERENCES_OUTDIRHINT;You can use the following formatting strings:n%f, %d1, %d2, ..., %p1, %p2, ...nnThese formatting strings refer to the different parts of the photo's pathname.nnFor example, if the photo being processed has the following pathname:n/home/tom/photos/2010-10-31/dsc0042.nefnthe meaning of the formatting strings are:n%d4 = homen%d3 = tomn%d2 = photosn%d1 = 2010-10-31n%f = dsc0042n%p1 = /home/tom/photos/2010-10-31/n%p2 = /home/tom/photos/n%p3 = /home/tom/n%p4 = /home/nnIf you want to save the output image where the original is, write:n%p1/%fnnIf you want to save the output image in a directory named "converted" located in the directory of the opened image, write:n%p1/converted/%fnnIf you want to save the output image in a directory named "/home/tom/photos/converted/2010-10-31", write:n%p2/converted/%d1/%f +!PREFERENCES_OUTDIRTEMPLATE;Use Template +!PREFERENCES_OUTDIRTEMPLATEHINT;You can use the following formatting strings:n%f, %d1, %d2, ..., %p1, %p2, ..., %rnnThese formatting strings refer to the different parts of the photo's pathname, or some attributes of the photo.nn%r will be replaced by the rank of the photo. If the photo is unranked, %r will be replaced by '0'. If the photo is in trash bin, %r will be replaced by 'x'.nnFor example, if the photo being processed has the following pathname:n/home/tom/photos/2010-10-31/dsc0042.nefnthe meaning of the formatting strings are:n%d4 = homen%d3 = tomn%d2 = photosn%d1 = 2010-10-31n%f = dsc0042n%p1 = /home/tom/photos/2010-10-31/n%p2 = /home/tom/photos/n%p3 = /home/tom/n%p4 = /home/nnIf you want to save the output image where the original is, write:n%p1/%fnnIf you want to save the output image in a directory named "converted" located in the directory of the opened image, write:n%p1/converted/%fnnIf you want to save the output image in a directory named "/home/tom/photos/converted/2010-10-31", write:n%p2/converted/%d1/%f +!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails +!PREFERENCES_OVERWRITEOUTPUTFILE;Overwrite existing output files +!PREFERENCES_PARSEDEXT;Parsed Extensions +!PREFERENCES_PARSEDEXTADD;Add Extension +!PREFERENCES_PARSEDEXTADDHINT;Type an extension and press this button to append list +!PREFERENCES_PARSEDEXTDELHINT;Delete selected extension from the list +!PREFERENCES_PROFILEHANDLING;Processing Profile Handling +!PREFERENCES_PROFILELOADPR;Profile Loading Priority +!PREFERENCES_PROFILEPRCACHE;Profile in cache +!PREFERENCES_PROFILEPRFILE;Profile next to the input file +!PREFERENCES_PROFILESAVECACHE;Save processing parameters to the cache +!PREFERENCES_PROFILESAVEINPUT;Save processing parameters next to the input file +!PREFERENCES_PROPERTY;Property +!PREFERENCES_PSPATH;Adobe Photoshop installation directory +!PREFERENCES_SELECTFONT;Select font +!PREFERENCES_SELECTICCDIRDLG;Select ICC Profile Directory... +!PREFERENCES_SELECTLANG;Select language +!PREFERENCES_SELECTMONITORPROFDLG;Select ICC Profile of the Display... +!PREFERENCES_SELECTTHEME;Select theme +!PREFERENCES_SET;SET +!PREFERENCES_SHOWBASICEXIF;Show basic Exif info +!PREFERENCES_SHOWDATETIME;Show date and time +!PREFERENCES_SHOWONLYRAW;Show only RAW files +!PREFERENCES_SHTHRESHOLD;Threshold for clipped shadows +!PREFERENCES_SINGLETAB;Single tab mode +!PREFERENCES_SINGLETABVERTAB;Single tab mode, vertical tabs +!PREFERENCES_SND_BATCHQUEUEDONE;Batch queue done +!PREFERENCES_SND_HELP;Either enter filepath or nothing (for no sound). On Windows use "SystemDefault", "SystemAsterisk" etc. for system sounds. +!PREFERENCES_SND_LNGEDITPROCDONE;Editor processing done +!PREFERENCES_SND_TRESHOLDSECS;after secs +!PREFERENCES_STARTUPIMDIR;Image directory at startup +!PREFERENCES_TAB_BROWSER;File Browser +!PREFERENCES_TAB_GENERAL;General +!PREFERENCES_TAB_IMPROC;Image Processing +!PREFERENCES_TAB_OUTPUT;Output Options +!PREFERENCES_TAB_SOUND;Sounds +!PREFERENCES_THUMBSIZE;Thumbnail Size +!PREFERENCES_TUNNELMETADATA;Copy IPTC/XMP unchanged to output file (when tagging with other program) +!PREFERENCES_USESYSTEMTHEME; Use System Theme +!PREFERENCES_WORKFLOW;Workflow +!PROFILEPANEL_FILEDLGFILTERANY;Any files +!PROFILEPANEL_FILEDLGFILTERPP;Postprocessing profiles +!PROFILEPANEL_LABEL;Postprocessing Profiles +!PROFILEPANEL_LOADDLGLABEL;Load Postprocessing Parameters... +!PROFILEPANEL_PCUSTOM;Custom +!PROFILEPANEL_PFILE;From file +!PROFILEPANEL_PLASTPHOTO;Last Photo +!PROFILEPANEL_PLASTSAVED;Last Saved +!PROFILEPANEL_PROFILE;Profile +!PROFILEPANEL_SAVEDLGLABEL;Save Postprocessing Parameters... +!PROFILEPANEL_TOOLTIPCOPY;Copy current profile to clipboard +!PROFILEPANEL_TOOLTIPLOAD;Load a profile from file +!PROFILEPANEL_TOOLTIPPASTE; Paste profile from clipboard +!PROFILEPANEL_TOOLTIPSAVE;Save current profile +!PROGRESSBAR_BADPIXELS;Bad pixels... +!PROGRESSBAR_CACORRECTION;CA correction... +!PROGRESSBAR_DARKFRAME;Darkframe... +!PROGRESSBAR_DECODING;Decoding raw file... +!PROGRESSBAR_DEMOSAICING;Demosaicing... +!PROGRESSBAR_GREENEQUIL;Green equilibrate... +!PROGRESSBAR_LINEDENOISE;Line Denoise... +!PROGRESSBAR_LOADING;Loading Image... +!PROGRESSBAR_LOADINGTHUMBS;Loading thumbnails... +!PROGRESSBAR_LOADJPEG;Loading JPEG file... +!PROGRESSBAR_LOADPNG;Loading PNG file... +!PROGRESSBAR_LOADTIFF;Loading TIFF file... +!PROGRESSBAR_PROCESSING;Processing Image... +!PROGRESSBAR_READY;Ready. +!PROGRESSBAR_SAVEJPEG;Saving JPEG file... +!PROGRESSBAR_SAVEPNG;Saving PNG file... +!PROGRESSBAR_SAVETIFF;Saving TIFF file... +!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser +!QINFO_FOCALLENGTH;Focal length +!QINFO_ISO;ISO +!QINFO_LENS;Lens +!QINFO_NOEXIF;Exif data not available. +!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists +!SAVEDLG_FILEFORMAT;File format +!SAVEDLG_JPEGQUAL;JPEG Quality +!SAVEDLG_JPGFILTER;JPEG files +!SAVEDLG_PNGCOMPR;PNG Compression +!SAVEDLG_PNGFILTER;PNG files +!SAVEDLG_PUTTOQUEUE;Put into processing queue +!SAVEDLG_PUTTOQUEUEHEAD;Put to the head of the processing queue +!SAVEDLG_PUTTOQUEUETAIL;Put to the end of the processing queue +!SAVEDLG_SAVEIMMEDIATELY;Save immediately +!SAVEDLG_SAVESPP;Save processing parameters with image +!SAVEDLG_TIFFFILTER;TIFF files +!SAVEDLG_TIFFUNCOMPRESSED;Uncompressed TIFF +!TOOLBAR_TOOLTIP_CROP;Crop selection C +!TOOLBAR_TOOLTIP_HAND;Hand tool H +!TOOLBAR_TOOLTIP_STRAIGHTEN;Straight line selection S +!TOOLBAR_TOOLTIP_WB;Spot white balance W +!TP_CACORRECTION_BLUE;Blue +!TP_CACORRECTION_LABEL;C/A Correction +!TP_CACORRECTION_RED;Red +!TP_CHMIXER_BLUE;Blue +!TP_CHMIXER_GREEN;Green +!TP_CHMIXER_LABEL;Channel Mixer +!TP_CHMIXER_RED;Red +!TP_CHROMATABERR_LABEL;Chromatic Aberration +!TP_COARSETRAF_DEGREE;degree: +!TP_COARSETRAF_TOOLTIP_HFLIP;Flip horizontally +!TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left [ +!TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right ] +!TP_COARSETRAF_TOOLTIP_VFLIP;Flip vertically +!TP_COLORBOOST_ACHANNEL;Channel "a" +!TP_COLORBOOST_AMOUNT;Amount +!TP_COLORBOOST_BCHANNEL;Channel "b" +!TP_COLORBOOST_CHAB;a & b +!TP_COLORBOOST_CHANNEL;Channel +!TP_COLORBOOST_CHSEPARATE;separate +!TP_COLORBOOST_ENABLESATLIMITER;Enable saturation limiter +!TP_COLORBOOST_SATLIMIT;Saturation limit +!TP_COLORDENOISE_EDGESENSITIVE;Edge Sensitive +!TP_COLORDENOISE_EDGETOLERANCE;Edge Tolerance +!TP_COLORDENOISE_RADIUS;Radius +!TP_COLORSHIFT_BLUEYELLOW;Blue-Yellow +!TP_COLORSHIFT_GREENMAGENTA;Green-Magenta +!TP_CROP_FIXRATIO;Fix Ratio: +!TP_CROP_GTDIAGONALS;Rule of diagonals +!TP_CROP_GTGRID;Grid +!TP_CROP_GTHARMMEANS1;Harmonic means 1 +!TP_CROP_GTHARMMEANS2;Harmonic means 2 +!TP_CROP_GTHARMMEANS3;Harmonic means 3 +!TP_CROP_GTHARMMEANS4;Harmonic means 4 +!TP_CROP_GTNONE;None +!TP_CROP_GTRULETHIRDS;Rule of thirds +!TP_CROP_GUIDETYPE;Guide Type: +!TP_CROP_H;H +!TP_CROP_LABEL;Crop +!TP_CROP_PPI;PPI= +!TP_CROP_SELECTCROP; Select Crop +!TP_CROP_W;W +!TP_CROP_X;x +!TP_CROP_Y;y +!TP_DARKFRAME_AUTOSELECT;Auto selection +!TP_DARKFRAME_LABEL;Dark Frame +!TP_DEFRINGE_LABEL;Defringe +!TP_DEFRINGE_RADIUS;Radius +!TP_DEFRINGE_THRESHOLD;Threshold +!TP_DETAIL_AMOUNT;Amount +!TP_DIRPYRDENOISE_CHROMA;Chrominance +!TP_DIRPYRDENOISE_GAMMA;Gamma +!TP_DIRPYRDENOISE_LABEL;Noise reduction +!TP_DIRPYRDENOISE_LUMA;Luminance +!TP_DIRPYREQUALIZER_LABEL;Contrast by detail levels +!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest +!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast- +!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+ +!TP_DIRPYREQUALIZER_LUMAFINEST;Finest +!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral +!TP_DIRPYREQUALIZER_THRESHOLD;Threshold +!TP_DISTORTION_AMOUNT;Amount +!TP_DISTORTION_AUTO;Auto distortion correction +!TP_DISTORTION_AUTO_TIP;(Exprimental) Correct lens distortion automatically for some cameras (M4/3, some compact DC, etc.) +!TP_DISTORTION_LABEL;Distortion +!TP_EQUALIZER_CONTRAST_MINUS;Contrast- +!TP_EQUALIZER_CONTRAST_PLUS;Contrast+ +!TP_EQUALIZER_FINEST;finest +!TP_EQUALIZER_LABEL;Wavelet equalizer +!TP_EQUALIZER_LARGEST;coarsest +!TP_EQUALIZER_NEUTRAL;Neutral +!TP_EXPOSCORR_LABEL;Raw white point +!TP_EXPOSURE_AUTOLEVELS;Auto Levels +!TP_EXPOSURE_BLACKLEVEL;Black +!TP_EXPOSURE_BRIGHTNESS;Brightness +!TP_EXPOSURE_CLIP;Clip +!TP_EXPOSURE_COMPRHIGHLIGHTS;Highlight recovery amount +!TP_EXPOSURE_COMPRHIGHLIGHTSTHRESHOLD;Highlight recovery threshold +!TP_EXPOSURE_COMPRSHADOWS;Shadow recovery +!TP_EXPOSURE_CONTRAST;Contrast +!TP_EXPOSURE_CURVEEDITOR;Tone Curve +!TP_EXPOSURE_EXPCOMP;Exp. Comp. +!TP_EXPOSURE_LABEL;Exposure +!TP_EXPOSURE_SATURATION;Saturation +!TP_FLATFIELD_AUTOSELECT;Auto selection +!TP_FLATFIELD_BLURRADIUS;Blur Radius +!TP_FLATFIELD_BLURTYPE;Blur Type +!TP_FLATFIELD_BT_AREA;Area +!TP_FLATFIELD_BT_HORIZONTAL;Horizontal +!TP_FLATFIELD_BT_VERTHORIZ;Vert. + Horiz. +!TP_FLATFIELD_BT_VERTICAL;Vertical +!TP_FLATFIELD_LABEL;Flat Field +!TP_GAMMA_COMMENT;(output profile disabled except "default") +!TP_GAMMA_OUTPUT;Output gamma +!TP_HLREC_CIELAB;CIELab Blending +!TP_HLREC_LABEL;Highlight Reconstruction +!TP_HLREC_LUMINANCE;Luminance Recovery +!TP_HLREC_METHOD;Method: +!TP_HSVEQUALIZER1;Red +!TP_HSVEQUALIZER2;Yellow +!TP_HSVEQUALIZER3;Lime +!TP_HSVEQUALIZER4;Green +!TP_HSVEQUALIZER5;Aqua +!TP_HSVEQUALIZER6;Blue +!TP_HSVEQUALIZER7;Purple +!TP_HSVEQUALIZER8;Magenta +!TP_HSVEQUALIZER_CHANNEL;HSV Channel +!TP_HSVEQUALIZER_HUE;H +!TP_HSVEQUALIZER_LABEL;HSV Equalizer +!TP_HSVEQUALIZER_NEUTRAL;Neutral +!TP_HSVEQUALIZER_SAT;S +!TP_HSVEQUALIZER_VAL;V +!TP_ICM_FILEDLGFILTERANY;Any files +!TP_ICM_FILEDLGFILTERICM;ICC Profile Files +!TP_ICM_GAMMABEFOREINPUT;Profile applies Gamma +!TP_ICM_INPUTCAMERA;Camera default +!TP_ICM_INPUTCUSTOM;Custom +!TP_ICM_INPUTDLGLABEL;Select Input ICC Profile... +!TP_ICM_INPUTEMBEDDED;Use Embedded, if possible +!TP_ICM_INPUTNONE;No profile +!TP_ICM_INPUTPROFILE;Input Profile +!TP_ICM_LABEL;ICM +!TP_ICM_NOICM;No ICM: sRGB output +!TP_ICM_OUTPUTDLGLABEL;Select Output ICC Profile... +!TP_ICM_OUTPUTPROFILE;Output Profile +!TP_ICM_SAVEREFERENCE;Save reference image for profiling +!TP_ICM_WORKINGPROFILE;Working Profile +!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction +!TP_IMPULSEDENOISE_THRESH;Impulse NR Threshold +!TP_LABCURVE_BRIGHTNESS;Brightness +!TP_LABCURVE_CONTRAST;Contrast +!TP_LABCURVE_CURVEEDITOR;Luminance Curve +!TP_LABCURVE_ENABLESATLIMITER;Enable saturation limiter +!TP_LABCURVE_LABEL;Lab Adjustments +!TP_LABCURVE_SATLIMIT;Saturation limit +!TP_LABCURVE_SATURATION;Saturation +!TP_LENSGEOM_AUTOCROP;Auto Crop +!TP_LENSGEOM_FILL;Auto Fill +!TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LUMADENOISE_EDGETOLERANCE;Edge Tolerance +!TP_LUMADENOISE_LABEL;Luminance Noise Reduction +!TP_LUMADENOISE_RADIUS;Radius +!TP_PERSPECTIVE_HORIZONTAL;Horizontal +!TP_PERSPECTIVE_LABEL;Perspective +!TP_PERSPECTIVE_VERTICAL;Vertical +!TP_PREPROCESS_GREENEQUIL;Green equilibration +!TP_PREPROCESS_HOTDEADPIXFILT;Apply hot/dead pixel filter +!TP_PREPROCESS_LABEL;Preprocessing +!TP_PREPROCESS_LINEDENOISE;Line noise filter +!TP_PREPROCESS_NO_FOUND;None found +!TP_RAWCACORR_AUTO;Auto correction +!TP_RAWCACORR_CABLUE;Blue +!TP_RAWCACORR_CARED;Red +!TP_RAWEXPOS_LINEAR;Linear corr. factor +!TP_RAWEXPOS_PRESER;HL preserving corr. (EV) +!TP_RAW_DCBENHANCE;Apply DCB enhancement step +!TP_RAW_DCBITERATIONS;Number of DCB iterations +!TP_RAW_DMETHOD;Method +!TP_RAW_LABEL;Demosaicing +!TP_RESIZE_APPLIESTO;Applies to: +!TP_RESIZE_BICUBIC;Bicubic +!TP_RESIZE_BICUBICSF;Bicubic (Softer) +!TP_RESIZE_BICUBICSH;Bicubic (Sharper) +!TP_RESIZE_BILINEAR;Bilinear +!TP_RESIZE_CROPPEDAREA;Cropped area +!TP_RESIZE_DOWNSCALEB;Downscale (Better) +!TP_RESIZE_DOWNSCALEF;Downscale (Faster) +!TP_RESIZE_FITBOX;Bounding box +!TP_RESIZE_FULLIMAGE;Full image +!TP_RESIZE_FULLSIZE;Full Image Size: +!TP_RESIZE_H;H: +!TP_RESIZE_HEIGHT;Height +!TP_RESIZE_LABEL;Resize +!TP_RESIZE_LANCZOS;Lanczos +!TP_RESIZE_METHOD;Method: +!TP_RESIZE_NEAREST;Nearest +!TP_RESIZE_SCALE;Scale +!TP_RESIZE_SPECIFY;Specify: +!TP_RESIZE_W;W: +!TP_RESIZE_WIDTH;Width +!TP_ROTATE_DEGREE;Degree +!TP_ROTATE_LABEL;Rotate +!TP_ROTATE_SELECTLINE; Select Straight Line +!TP_SHADOWSHLIGHTS_HIGHLIGHTS;Highlights +!TP_SHADOWSHLIGHTS_HLTONALW;Tonal Width for Highlights +!TP_SHADOWSHLIGHTS_LABEL;Shadows/Highlights +!TP_SHADOWSHLIGHTS_LOCALCONTR;Local Contrast +!TP_SHADOWSHLIGHTS_RADIUS;Radius +!TP_SHADOWSHLIGHTS_SHADOWS;Shadows +!TP_SHADOWSHLIGHTS_SHTONALW;Tonal Width for Shadows +!TP_SHARPENING_AMOUNT;Amount +!TP_SHARPENING_EDRADIUS;Radius +!TP_SHARPENING_EDTOLERANCE;Edge tolerance +!TP_SHARPENING_HALOCONTROL;Halo control +!TP_SHARPENING_HCAMOUNT;Amount +!TP_SHARPENING_LABEL;Sharpening +!TP_SHARPENING_METHOD;Method +!TP_SHARPENING_ONLYEDGES;Sharpen only edges +!TP_SHARPENING_RADIUS;Radius +!TP_SHARPENING_RLD;RL Deconvolution +!TP_SHARPENING_RLD_AMOUNT;Amount +!TP_SHARPENING_RLD_DAMPING;Damping +!TP_SHARPENING_RLD_ITERATIONS;Iterations +!TP_SHARPENING_THRESHOLD;Threshold +!TP_SHARPENING_USM;Unsharp Mask +!TP_VIGNETTING_AMOUNT;Amount +!TP_VIGNETTING_CENTER;Center +!TP_VIGNETTING_CENTER_X;Center X +!TP_VIGNETTING_CENTER_Y;Center Y +!TP_VIGNETTING_LABEL;Vignetting Correction +!TP_VIGNETTING_RADIUS;Radius +!TP_VIGNETTING_STRENGTH;Strength +!TP_WBALANCE_AUTO;Auto +!TP_WBALANCE_CAMERA;Camera +!TP_WBALANCE_CUSTOM;Custom +!TP_WBALANCE_GREEN;Tint +!TP_WBALANCE_LABEL;White Balance +!TP_WBALANCE_METHOD;Method +!TP_WBALANCE_SIZE;Size: +!TP_WBALANCE_SPOTWB;Spot WB +!TP_WBALANCE_TEMPERATURE;Temperature +!ZOOMBAR_DETAIL;Detail +!ZOOMBAR_HUGE;Huge +!ZOOMBAR_LARGE;Large +!ZOOMBAR_NORMAL;Normal +!ZOOMBAR_PREVIEW;Preview +!ZOOMBAR_SCALE;Scale +!ZOOMBAR_SMALL;Small +!ZOOMPANEL_100;(100%) +!ZOOMPANEL_NEWCROPWINDOW;Open (new) detail window +!ZOOMPANEL_ZOOM100;Zoom to 100% 1 +!ZOOMPANEL_ZOOMFITSCREEN;Fit to screen F +!ZOOMPANEL_ZOOMIN;Zoom In + +!ZOOMPANEL_ZOOMOUT;Zoom Out - diff --git a/rtengine/amaze_interpolate_RT.cc b/rtengine/amaze_interpolate_RT.cc deleted file mode 100644 index bd34adcb3..000000000 --- a/rtengine/amaze_interpolate_RT.cc +++ /dev/null @@ -1,1017 +0,0 @@ -//////////////////////////////////////////////////////////////// -// -// AMaZE demosaic algorithm -// (Aliasing Minimization and Zipper Elimination) -// -// copyright (c) 2008-2010 Emil Martinec -// -// incorporating ideas of Luis Sanz Rodrigues and Paul Lee -// -// code dated: May 27, 2010 -// -// amaze_interpolate_RT.cc 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 . -// -//////////////////////////////////////////////////////////////// - -using namespace rtengine; - -void RawImageSource::amaze_demosaic_RT() { - -#define SQR(x) ((x)*(x)) - //#define MIN(a,b) ((a) < (b) ? (a) : (b)) - //#define MAX(a,b) ((a) > (b) ? (a) : (b)) -#define LIM(x,min,max) MAX(min,MIN(x,max)) -#define ULIM(x,y,z) ((y) < (z) ? LIM(x,y,z) : LIM(x,z,y)) - //#define CLIP(x) LIM(x,0,65535) - - int width=W, height=H; - - - const float clip_pt = 1/ri->defgain; - -#define TS 512 // Tile size; the image is processed in square tiles to lower memory requirements and facilitate multi-threading - - // local variables - - - //offset of R pixel within a Bayer quartet - int ex, ey; - - //shifts of pointer value to access pixels in vertical and diagonal directions - static const int v1=TS, v2=2*TS, v3=3*TS, p1=-TS+1, p2=-2*TS+2, p3=-3*TS+3, m1=TS+1, m2=2*TS+2, m3=3*TS+3; - - //neighborhood of a pixel - static const int nbr[5] = {-v2,-2,2,v2,0}; - - //tolerance to avoid dividing by zero - static const float eps=1e-5, epssq=1e-10; //tolerance to avoid dividing by zero - - //adaptive ratios threshold - static const float arthresh=0.75; - //nyquist texture test threshold - static const float nyqthresh=0.5; - //diagonal interpolation test threshold - static const float pmthresh=0.25; - //factors for bounding interpolation in saturated regions - static const float lbd=1.0, ubd=1.0; //lbd=0.66, ubd=1.5 alternative values; - - //gaussian on 5x5 quincunx, sigma=1.2 - static const float gaussodd[4] = {0.14659727707323927f, 0.103592713382435f, 0.0732036125103057f, 0.0365543548389495f}; - //gaussian on 5x5, sigma=1.2 - static const float gaussgrad[6] = {0.07384411893421103f, 0.06207511968171489f, 0.0521818194747806f, \ - 0.03687419286733595f, 0.03099732204057846f, 0.018413194161458882f}; - //gaussian on 3x3, sigma =0.7 - static const float gauss1[3] = {0.3376688223162362f, 0.12171198028231786f, 0.04387081413862306f}; - //gaussian on 5x5 alt quincunx, sigma=1.5 - static const float gausseven[2] = {0.13719494435797422f, 0.05640252782101291f}; - //guassian on quincunx grid - static const float gquinc[4] = {0.169917f, 0.108947f, 0.069855f, 0.0287182f}; - - volatile double progress = 0.0; - // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -#pragma omp parallel -{ - //position of top/left corner of the tile - int top, left; - // beginning of storage block for tile - char *buffer; - // rgb values - float (*rgb)[3]; - // horizontal gradient - float (*delh); - // vertical gradient - float (*delv); - // square of delh - float (*delhsq); - // square of delv - float (*delvsq); - // gradient based directional weights for interpolation - float (*dirwts)[2]; - // vertically interpolated color differences G-R, G-B - float (*vcd); - // horizontally interpolated color differences - float (*hcd); - // alternative vertical interpolation - float (*vcdalt); - // alternative horizontal interpolation - float (*hcdalt); - // square of vcd - float (*vcdsq); - // square of hcd - float (*hcdsq); - // square of average color difference - float (*cddiffsq); - // weight to give horizontal vs vertical interpolation - float (*hvwt); - // final interpolated color difference - float (*Dgrb)[2]; - // gradient in plus (NE/SW) direction - float (*delp); - // gradient in minus (NW/SE) direction - float (*delm); - // diagonal interpolation of R+B - float (*rbint); - // horizontal curvature of interpolated G (used to refine interpolation in Nyquist texture regions) - float (*Dgrbh2); - // vertical curvature of interpolated G - float (*Dgrbv2); - // difference between up/down interpolations of G - float (*dgintv); - // difference between left/right interpolations of G - float (*dginth); - // diagonal (plus) color difference R-B or G1-G2 - float (*Dgrbp1); - // diagonal (minus) color difference R-B or G1-G2 - float (*Dgrbm1); - // square of diagonal color difference - float (*Dgrbpsq1); - // square of diagonal color difference - float (*Dgrbmsq1); - // tile raw data - float (*cfa); - // relative weight for combining plus and minus diagonal interpolations - float (*pmwt); - // interpolated color difference R-B in plus direction - float (*rbp); - // interpolated color difference R-B in minus direction - float (*rbm); - - // nyquist texture flag 1=nyquist, 0=not nyquist - int (*nyquist); - - - // assign working space - buffer = (char *) malloc((34*sizeof(float)+sizeof(int))*TS*TS); - //merror(buffer,"amaze_interpolate()"); - //memset(buffer,0,(34*sizeof(float)+sizeof(int))*TS*TS); - // rgb array - rgb = (float (*)[3]) buffer; //pointers to array - delh = (float (*)) (buffer + 3*sizeof(float)*TS*TS); - delv = (float (*)) (buffer + 4*sizeof(float)*TS*TS); - delhsq = (float (*)) (buffer + 5*sizeof(float)*TS*TS); - delvsq = (float (*)) (buffer + 6*sizeof(float)*TS*TS); - dirwts = (float (*)[2]) (buffer + 7*sizeof(float)*TS*TS); - vcd = (float (*)) (buffer + 9*sizeof(float)*TS*TS); - hcd = (float (*)) (buffer + 10*sizeof(float)*TS*TS); - vcdalt = (float (*)) (buffer + 11*sizeof(float)*TS*TS); - hcdalt = (float (*)) (buffer + 12*sizeof(float)*TS*TS); - vcdsq = (float (*)) (buffer + 13*sizeof(float)*TS*TS); - hcdsq = (float (*)) (buffer + 14*sizeof(float)*TS*TS); - cddiffsq = (float (*)) (buffer + 15*sizeof(float)*TS*TS); - hvwt = (float (*)) (buffer + 16*sizeof(float)*TS*TS); - Dgrb = (float (*)[2]) (buffer + 17*sizeof(float)*TS*TS); - delp = (float (*)) (buffer + 19*sizeof(float)*TS*TS); - delm = (float (*)) (buffer + 20*sizeof(float)*TS*TS); - rbint = (float (*)) (buffer + 21*sizeof(float)*TS*TS); - Dgrbh2 = (float (*)) (buffer + 22*sizeof(float)*TS*TS); - Dgrbv2 = (float (*)) (buffer + 23*sizeof(float)*TS*TS); - dgintv = (float (*)) (buffer + 24*sizeof(float)*TS*TS); - dginth = (float (*)) (buffer + 25*sizeof(float)*TS*TS); - Dgrbp1 = (float (*)) (buffer + 26*sizeof(float)*TS*TS); - Dgrbm1 = (float (*)) (buffer + 27*sizeof(float)*TS*TS); - Dgrbpsq1 = (float (*)) (buffer + 28*sizeof(float)*TS*TS); - Dgrbmsq1 = (float (*)) (buffer + 29*sizeof(float)*TS*TS); - cfa = (float (*)) (buffer + 30*sizeof(float)*TS*TS); - pmwt = (float (*)) (buffer + 31*sizeof(float)*TS*TS); - rbp = (float (*)) (buffer + 32*sizeof(float)*TS*TS); - rbm = (float (*)) (buffer + 33*sizeof(float)*TS*TS); - - nyquist = (int (*)) (buffer + 34*sizeof(int)*TS*TS); - - // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - /*double dt; - clock_t t1, t2; - - clock_t t1_init, t2_init = 0; - clock_t t1_vcdhcd, t2_vcdhcd = 0; - clock_t t1_cdvar, t2_cdvar = 0; - clock_t t1_nyqtest, t2_nyqtest = 0; - clock_t t1_areainterp, t2_areainterp = 0; - clock_t t1_compare, t2_compare = 0; - clock_t t1_diag, t2_diag = 0; - clock_t t1_chroma, t2_chroma = 0;*/ - - - // start - //if (verbose) fprintf (stderr,_("AMaZE interpolation ...\n")); - //t1 = clock(); - - // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - if (plistener) { - plistener->setProgressStr ("AMaZE Demosaicing..."); - plistener->setProgress (0.0); - } - - // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - - //determine GRBG coset; (ey,ex) is the offset of the R subarray - if (FC(0,0)==1) {//first pixel is G - if (FC(0,1)==0) {ey=0; ex=1;} else {ey=1; ex=0;} - } else {//first pixel is R or B - if (FC(0,0)==0) {ey=0; ex=0;} else {ey=1; ex=1;} - } - - // Main algorithm: Tile loop - //#pragma omp parallel for shared(rawData,height,width,red,green,blue) private(top,left) schedule(dynamic) - //code is openmp ready; just have to pull local tile variable declarations inside the tile loop -#pragma omp for schedule(dynamic) nowait - for (top=-16; top < height; top += TS-32) - for (left=-16; left < width; left += TS-32) { - //location of tile bottom edge - int bottom = MIN( top+TS,height+16); - //location of tile right edge - int right = MIN(left+TS, width+16); - //tile width (=TS except for right edge of image) - int rr1 = bottom - top; - //tile height (=TS except for bottom edge of image) - int cc1 = right - left; - - //tile vars - //counters for pixel location in the image - int row, col; - //min and max row/column in the tile - int rrmin, rrmax, ccmin, ccmax; - //counters for pixel location within the tile - int rr, cc; - //color index 0=R, 1=G, 2=B - int c; - //pointer counters within the tile - int indx, indx1; - //direction counter for nbrs[] - int dir; - //dummy indices - int i, j; - // +1 or -1 - int sgn; - - //color ratios in up/down/left/right directions - float cru, crd, crl, crr; - //adaptive weights for vertical/horizontal/plus/minus directions - float vwt, hwt, pwt, mwt; - //vertical and horizontal G interpolations - float Gintv, Ginth; - //G interpolated in vert/hor directions using adaptive ratios - float guar, gdar, glar, grar; - //G interpolated in vert/hor directions using Hamilton-Adams method - float guha, gdha, glha, grha; - //interpolated G from fusing left/right or up/down - float Ginthar, Ginthha, Gintvar, Gintvha; - //color difference (G-R or G-B) variance in up/down/left/right directions - float Dgrbvvaru, Dgrbvvard, Dgrbhvarl, Dgrbhvarr; - //gradients in various directions - float gradp, gradm, gradv, gradh, gradpm, gradhv; - //color difference variances in vertical and horizontal directions - float vcdvar, hcdvar, vcdvar1, hcdvar1, hcdaltvar, vcdaltvar; - //adaptive interpolation weight using variance of color differences - float varwt; - //adaptive interpolation weight using difference of left-right and up-down G interpolations - float diffwt; - //alternative adaptive weight for combining horizontal/vertical interpolations - float hvwtalt; - //temporary variables for combining interpolation weights at R and B sites - float vo, ve; - //interpolation of G in four directions - float gu, gd, gl, gr; - //variance of G in vertical/horizontal directions - float gvarh, gvarv; - - //Nyquist texture test - float nyqtest; - //accumulators for Nyquist texture interpolation - float sumh, sumv, sumsqh, sumsqv, areawt; - - //color ratios in diagonal directions - float crse, crnw, crne, crsw; - //color differences in diagonal directions - float rbse, rbnw, rbne, rbsw; - //adaptive weights for combining diagonal interpolations - float wtse, wtnw, wtsw, wtne; - //alternate weight for combining diagonal interpolations - float pmwtalt; - //variance of R-B in plus/minus directions - float rbvarp, rbvarm; - - - - // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - - // rgb from input CFA data - // rgb values should be floating point number between 0 and 1 - // after white balance multipliers are applied - // a 16 pixel border is added to each side of the image - - // bookkeeping for borders - if (top<0) {rrmin=16;} else {rrmin=0;} - if (left<0) {ccmin=16;} else {ccmin=0;} - if (bottom>height) {rrmax=height-top;} else {rrmax=rr1;} - if (right>width) {ccmax=width-left;} else {ccmax=cc1;} - - for (rr=rrmin; rr < rrmax; rr++) - for (row=rr+top, cc=ccmin; cc < ccmax; cc++) { - col = cc+left; - c = FC(rr,cc); - indx=row*width+col; - indx1=rr*TS+cc; - rgb[indx1][c] = (rawData[row][col])/65535.0f; - //rgb[indx1][c] = image[indx][c]/65535.0f;//for dcraw implementation - - cfa[indx1] = rgb[indx1][c]; - } - // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - //fill borders - if (rrmin>0) { - for (rr=0; rr<16; rr++) - for (cc=ccmin; cc0) { - for (rr=rrmin; rr0 && ccmin>0) { - for (rr=0; rr<16; rr++) - for (cc=0; cc<16; cc++) { - c=FC(rr,cc); - rgb[(rr)*TS+cc][c] = (rawData[32-rr][32-cc])/65535.0f; - //rgb[(rr)*TS+cc][c] = (rgb[(32-rr)*TS+(32-cc)][c]);//for dcraw implementation - cfa[(rr)*TS+cc] = rgb[(rr)*TS+cc][c]; - } - } - if (rrmax0 && ccmax0) { - for (rr=0; rr<16; rr++) - for (cc=0; cc<16; cc++) { - c=FC(rr,cc); - rgb[(rrmax+rr)*TS+cc][c] = (rawData[(height-rr-2)][(32-cc)])/65535.0f; - //rgb[(rrmax+rr)*TS+cc][c] = (image[(height-rr-2)*width+(32-cc)][c])/65535.0f;//for dcraw implementation - cfa[(rrmax+rr)*TS+cc] = rgb[(rrmax+rr)*TS+cc][c]; - } - } - - //end of border fill - // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - for (rr=1; rr < rr1-1; rr++) - for (cc=1, indx=(rr)*TS+cc; cc < cc1-1; cc++, indx++) { - - delh[indx] = fabs(cfa[indx+1]-cfa[indx-1]); - delv[indx] = fabs(cfa[indx+v1]-cfa[indx-v1]); - delhsq[indx] = SQR(delh[indx]); - delvsq[indx] = SQR(delv[indx]); - delp[indx] = fabs(cfa[indx+p1]-cfa[indx-p1]); - delm[indx] = fabs(cfa[indx+m1]-cfa[indx-m1]); - - } - - for (rr=2; rr < rr1-2; rr++) - for (cc=2,indx=(rr)*TS+cc; cc < cc1-2; cc++, indx++) { - - dirwts[indx][0] = eps+delv[indx+v1]+delv[indx-v1]+delv[indx];//+fabs(cfa[indx+v2]-cfa[indx-v2]); - //vert directional averaging weights - dirwts[indx][1] = eps+delh[indx+1]+delh[indx-1]+delh[indx];//+fabs(cfa[indx+2]-cfa[indx-2]); - //horizontal weights - - if (FC(rr,cc)&1) { - //for later use in diagonal interpolation - //Dgrbp1[indx]=2*cfa[indx]-(cfa[indx-p1]+cfa[indx+p1]); - //Dgrbm1[indx]=2*cfa[indx]-(cfa[indx-m1]+cfa[indx+m1]); - Dgrbpsq1[indx]=(SQR(cfa[indx]-cfa[indx-p1])+SQR(cfa[indx]-cfa[indx+p1])); - Dgrbmsq1[indx]=(SQR(cfa[indx]-cfa[indx-m1])+SQR(cfa[indx]-cfa[indx+m1])); - } - } - - //t2_init += clock()-t1_init; - // end of tile initialization - // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - //interpolate vertical and horizontal color differences - //t1_vcdhcd = clock(); - - for (rr=4; rr 0.8*clip_pt || Gintvha > 0.8*clip_pt || Ginthha > 0.8*clip_pt) { - //use HA if highlights are (nearly) clipped - guar=guha; gdar=gdha; glar=glha; grar=grha; - vcd[indx]=vcdalt[indx]; hcd[indx]=hcdalt[indx]; - } - - //differences of interpolations in opposite directions - dgintv[indx]=MIN(SQR(guha-gdha),SQR(guar-gdar)); - dginth[indx]=MIN(SQR(glha-grha),SQR(glar-grar)); - - //dgintv[indx]=SQR(guar-gdar); - //dginth[indx]=SQR(glar-grar); - - //vcdsq[indx] = SQR(vcd[indx]); - //hcdsq[indx] = SQR(hcd[indx]); - //cddiffsq[indx] = SQR(vcd[indx]-hcd[indx]); - } - //t2_vcdhcd += clock() - t1_vcdhcd; - - //t1_cdvar = clock(); - for (rr=4; rr0) { - if (3*hcd[indx] > (Ginth+cfa[indx])) { - hcd[indx]=-ULIM(Ginth,cfa[indx-1],cfa[indx+1])+cfa[indx]; - } else { - hwt = 1-3*hcd[indx]/(eps+Ginth+cfa[indx]); - hcd[indx]=hwt*hcd[indx] + (1-hwt)*(-ULIM(Ginth,cfa[indx-1],cfa[indx+1])+cfa[indx]); - } - } - if (vcd[indx]>0) { - if (3*vcd[indx] > (Gintv+cfa[indx])) { - vcd[indx]=-ULIM(Gintv,cfa[indx-v1],cfa[indx+v1])+cfa[indx]; - } else { - vwt = 1-3*vcd[indx]/(eps+Gintv+cfa[indx]); - vcd[indx]=vwt*vcd[indx] + (1-vwt)*(-ULIM(Gintv,cfa[indx-v1],cfa[indx+v1])+cfa[indx]); - } - } - - if (Ginth > clip_pt) hcd[indx]=-ULIM(Ginth,cfa[indx-1],cfa[indx+1])+cfa[indx];//for RT implementation - if (Gintv > clip_pt) vcd[indx]=-ULIM(Gintv,cfa[indx-v1],cfa[indx+v1])+cfa[indx]; - //if (Ginth > pre_mul[c]) hcd[indx]=-ULIM(Ginth,cfa[indx-1],cfa[indx+1])+cfa[indx];//for dcraw implementation - //if (Gintv > pre_mul[c]) vcd[indx]=-ULIM(Gintv,cfa[indx-v1],cfa[indx+v1])+cfa[indx]; - - } else { - - Ginth = hcd[indx]+cfa[indx];//interpolated G - Gintv = vcd[indx]+cfa[indx]; - - if (hcd[indx]<0) { - if (3*hcd[indx] < -(Ginth+cfa[indx])) { - hcd[indx]=ULIM(Ginth,cfa[indx-1],cfa[indx+1])-cfa[indx]; - } else { - hwt = 1+3*hcd[indx]/(eps+Ginth+cfa[indx]); - hcd[indx]=hwt*hcd[indx] + (1-hwt)*(ULIM(Ginth,cfa[indx-1],cfa[indx+1])-cfa[indx]); - } - } - if (vcd[indx]<0) { - if (3*vcd[indx] < -(Gintv+cfa[indx])) { - vcd[indx]=ULIM(Gintv,cfa[indx-v1],cfa[indx+v1])-cfa[indx]; - } else { - vwt = 1+3*vcd[indx]/(eps+Gintv+cfa[indx]); - vcd[indx]=vwt*vcd[indx] + (1-vwt)*(ULIM(Gintv,cfa[indx-v1],cfa[indx+v1])-cfa[indx]); - } - } - - if (Ginth > clip_pt) hcd[indx]=ULIM(Ginth,cfa[indx-1],cfa[indx+1])-cfa[indx];//for RT implementation - if (Gintv > clip_pt) vcd[indx]=ULIM(Gintv,cfa[indx-v1],cfa[indx+v1])-cfa[indx]; - //if (Ginth > pre_mul[c]) hcd[indx]=ULIM(Ginth,cfa[indx-1],cfa[indx+1])-cfa[indx];//for dcraw implementation - //if (Gintv > pre_mul[c]) vcd[indx]=ULIM(Gintv,cfa[indx-v1],cfa[indx+v1])-cfa[indx]; - } - - vcdsq[indx] = SQR(vcd[indx]); - hcdsq[indx] = SQR(hcd[indx]); - cddiffsq[indx] = SQR(vcd[indx]-hcd[indx]); - } - - for (rr=6; rr0 && fabs(0.5-diffwt)0) {nyquist[indx]=1;}//nyquist=1 for nyquist region - } - - for (rr=8; rr4) nyquist[indx]=1; - //or not - if (areawt<4) nyquist[indx]=0; - } - - //t2_nyqtest += clock() - t1_nyqtest; - // end of Nyquist test - // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - - - - // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - // in areas of Nyquist texture, do area interpolation - //t1_areainterp = clock(); - for (rr=8; rr0.5) Dgrb[indx][0]=vcd[indx]; - rgb[indx][1] = cfa[indx] + Dgrb[indx][0];//evaluate G (finally!) - - //local curvature in G (preparation for nyquist refinement step) - if (nyquist[indx]) { - Dgrbh2[indx] = SQR(rgb[indx][1] - 0.5*(rgb[indx-1][1]+rgb[indx+1][1])); - Dgrbv2[indx] = SQR(rgb[indx][1] - 0.5*(rgb[indx-v1][1]+rgb[indx+v1][1])); - } else { - Dgrbh2[indx] = Dgrbv2[indx] = 0; - } - } - - //end of standard interpolation - // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - - // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - // refine Nyquist areas using G curvatures - - for (rr=8; rr clip_pt) rbp[indx]=ULIM(rbp[indx],cfa[indx-p1],cfa[indx+p1]);//for RT implementation - if (rbm[indx] > clip_pt) rbm[indx]=ULIM(rbm[indx],cfa[indx-m1],cfa[indx+m1]); - //c=2-FC(rr,cc);//for dcraw implementation - //if (rbp[indx] > pre_mul[c]) rbp[indx]=ULIM(rbp[indx],cfa[indx-p1],cfa[indx+p1]); - //if (rbm[indx] > pre_mul[c]) rbm[indx]=ULIM(rbm[indx],cfa[indx-m1],cfa[indx+m1]); - // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - //rbint[indx] = 0.5*(cfa[indx] + (rbp*rbvarm+rbm*rbvarp)/(rbvarp+rbvarm));//this is R+B, interpolated - } - - - - for (rr=10; rr clip_pt) Ginth=ULIM(Ginth,cfa[indx-1],cfa[indx+1]);//for RT implementation - if (Gintv > clip_pt) Gintv=ULIM(Gintv,cfa[indx-v1],cfa[indx+v1]); - //c=FC(rr,cc);//for dcraw implementation - //if (Ginth > pre_mul[c]) Ginth=ULIM(Ginth,cfa[indx-1],cfa[indx+1]); - //if (Gintv > pre_mul[c]) Gintv=ULIM(Gintv,cfa[indx-v1],cfa[indx+v1]); - // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - rgb[indx][1] = Ginth*(1-hvwt[indx]) + Gintv*hvwt[indx]; - //rgb[indx][1] = 0.5*(rgb[indx][1]+0.25*(rgb[indx-v1][1]+rgb[indx+v1][1]+rgb[indx-1][1]+rgb[indx+1][1])); - Dgrb[indx][0] = rgb[indx][1]-cfa[indx]; - - //rgb[indx][2-FC(rr,cc)]=2*rbint[indx]-cfa[indx]; - } - //end of diagonal interpolation correction - //t2_diag += clock() - t1_diag; - // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - //t1_chroma = clock(); - //fancy chrominance interpolation - //(ey,ex) is location of R site - for (rr=13-ey; rr1.0) - { - progress=1.0; - } - if(plistener) plistener->setProgress(progress); - } - - // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - - - // clean up - free(buffer); -} - // done - -#undef TS - -} diff --git a/rtengine/imageio.cc b/rtengine/imageio.cc index 89e182769..09c8cfa80 100644 --- a/rtengine/imageio.cc +++ b/rtengine/imageio.cc @@ -787,7 +787,7 @@ int ImageIO::saveTIFF (Glib::ustring fname, int bps, bool uncompressed) { exif->write (8, buffer); write (TIFFFileno (out), buffer+8, exif_size); - delete[] buffer; + delete [] buffer; // let libtiff know that scanlines or any other following stuff should go // at a different offset: TIFFSetWriteOffset (out, exif_size+8); diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 75d0b6502..640ed2209 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -1361,7 +1361,7 @@ bool Thumbnail::writeData (const Glib::ustring& fname) { bool Thumbnail::readEmbProfile (const Glib::ustring& fname) { - FILE* f = fopen (fname.c_str(), "rb"); + FILE* f = safe_g_fopen (fname, "rb"); if (!f) { embProfileData = NULL; embProfile = NULL; diff --git a/rtexif/nikonattribs.cc b/rtexif/nikonattribs.cc index 02abbb21c..8f909ba9c 100644 --- a/rtexif/nikonattribs.cc +++ b/rtexif/nikonattribs.cc @@ -642,11 +642,11 @@ class NALensDataInterpreter : public Interpreter { d100 = false; } - unsigned char buffer[15]; + unsigned char buffer[16]; if (d100) memcpy (buffer, t->getValue()+6, 7); else - memcpy (buffer, t->getValue()+4, 15); + memcpy (buffer, t->getValue()+4, 16); if (ver>=201) { const unsigned char* serval = t->getParent()->getTag(0x001d)->getValue (); @@ -661,7 +661,7 @@ class NALensDataInterpreter : public Interpreter { unsigned char ci = xlat[0][serial & 0xff]; unsigned char cj = xlat[1][key]; unsigned char ck = 0x60; - for (int i=0; i < 15; i++) + for (int i=0; i < 16; i++) buffer[i] ^= (cj += ci * ck++); } diff --git a/rtgui/adjuster.cc b/rtgui/adjuster.cc index f7dc26d65..53ff9c22b 100644 --- a/rtgui/adjuster.cc +++ b/rtgui/adjuster.cc @@ -41,7 +41,7 @@ Adjuster::Adjuster (Glib::ustring vlabel, double vmin, double vmax, double vstep label = Gtk::manage (new Gtk::Label (vlabel, Gtk::ALIGN_LEFT)); if (editedcb) { - editedCheckBox = new Gtk::CheckButton (); + editedCheckBox = Gtk::manage (new Gtk::CheckButton ()); editedChange = editedCheckBox->signal_toggled().connect( sigc::mem_fun(*this, &Adjuster::editedToggled) ); hbox->pack_start (*editedCheckBox); } @@ -262,7 +262,7 @@ EditedState Adjuster::getEditedState () { void Adjuster::showEditedCB () { if (!editedCheckBox) { - editedCheckBox = new Gtk::CheckButton (); + editedCheckBox = Gtk::manage(new Gtk::CheckButton ()); hbox->pack_start (*editedCheckBox, Gtk::PACK_SHRINK, 2); hbox->reorder_child (*editedCheckBox, 0); editedChange = editedCheckBox->signal_toggled().connect( sigc::mem_fun(*this, &Adjuster::editedToggled) ); diff --git a/rtgui/batchqueue.cc b/rtgui/batchqueue.cc index e9c7942b8..640eacb9b 100644 --- a/rtgui/batchqueue.cc +++ b/rtgui/batchqueue.cc @@ -33,12 +33,12 @@ BatchQueue::BatchQueue () : processing(NULL), listener(NULL) { int p = 0; pmenu = new Gtk::Menu (); - pmenu->attach (*(cancel = new Gtk::MenuItem (M("FILEBROWSER_POPUPCANCELJOB"))), 0, 1, p, p+1); p++; - pmenu->attach (*(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; - pmenu->attach (*(head = new Gtk::MenuItem (M("FILEBROWSER_POPUPMOVEHEAD"))), 0, 1, p, p+1); p++; - pmenu->attach (*(tail = new Gtk::MenuItem (M("FILEBROWSER_POPUPMOVEEND"))), 0, 1, p, p+1); p++; - pmenu->attach (*(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; - pmenu->attach (*(selall = new Gtk::MenuItem (M("FILEBROWSER_POPUPSELECTALL"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(cancel = new Gtk::MenuItem (M("FILEBROWSER_POPUPCANCELJOB"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(head = new Gtk::MenuItem (M("FILEBROWSER_POPUPMOVEHEAD"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(tail = new Gtk::MenuItem (M("FILEBROWSER_POPUPMOVEEND"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(selall = new Gtk::MenuItem (M("FILEBROWSER_POPUPSELECTALL"))), 0, 1, p, p+1); p++; pmenu->show_all (); cancel->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &BatchQueue::cancelItems), &selected)); @@ -47,6 +47,11 @@ BatchQueue::BatchQueue () : processing(NULL), listener(NULL) { selall->signal_activate().connect (sigc::mem_fun(*this, &BatchQueue::selectAll)); } +BatchQueue::~BatchQueue () +{ + delete pmenu; +} + void BatchQueue::rightClicked (ThumbBrowserEntryBase* entry) { pmenu->popup (3, 0); diff --git a/rtgui/batchqueue.h b/rtgui/batchqueue.h index 3661880bd..fbc2e0fc5 100644 --- a/rtgui/batchqueue.h +++ b/rtgui/batchqueue.h @@ -59,6 +59,7 @@ class BatchQueue : public ThumbBrowserBase, public: BatchQueue (); + ~BatchQueue (); void addEntries (std::vector &entries, bool head=false); void cancelItems (std::vector* items); diff --git a/rtgui/batchqueuepanel.cc b/rtgui/batchqueuepanel.cc index 9d668a1c8..a71de9bb3 100644 --- a/rtgui/batchqueuepanel.cc +++ b/rtgui/batchqueuepanel.cc @@ -22,11 +22,12 @@ #include #include #include +#include BatchQueuePanel::BatchQueuePanel () { - batchQueue = new BatchQueue(); + batchQueue = Gtk::manage( new BatchQueue() ); // construct batch queue panel with the extra "start" and "stop" button Gtk::VBox* batchQueueButtonBox = Gtk::manage (new Gtk::VBox); @@ -107,25 +108,6 @@ BatchQueuePanel::BatchQueuePanel () { bottomBox = Gtk::manage (new Gtk::HBox ()); pack_start (*bottomBox, Gtk::PACK_SHRINK); - // change thumbnail arrangement button - hAlignIcon = new Gtk::Image (argv0+"/images/horizontals.png"); - vAlignIcon = new Gtk::Image (argv0+"/images/verticals.png"); - hAlignIcon->show (); - vAlignIcon->show (); - chAlign = Gtk::manage (new Gtk::Button ()); - chAlign->show (); - bottomBox->pack_end (*chAlign, Gtk::PACK_SHRINK); - chAlign->set_image (*hAlignIcon); - chAlign->set_relief (Gtk::RELIEF_NONE); - chAlign->signal_pressed().connect (sigc::mem_fun(*this, &BatchQueuePanel::arrangementButtonPressed)); - chAlign->set_tooltip_text (M("FILEBROWSER_ARRANGEMENTHINT")); - bottomBox->pack_end (*Gtk::manage (new Gtk::VSeparator), Gtk::PACK_SHRINK, 4); - if (options.fbArrangement==1) - chAlign->set_image (*vAlignIcon); - else - chAlign->set_image (*hAlignIcon); - arrangementButtonPressed (); - // thumbnail zoom Gtk::HBox* zoomBox = Gtk::manage (new Gtk::HBox ()); zoomBox->pack_start (*Gtk::manage (new Gtk::VSeparator), Gtk::PACK_SHRINK, 4); @@ -154,17 +136,6 @@ BatchQueuePanel::BatchQueuePanel () { batchQueue->notifyListener (); } -void BatchQueuePanel::arrangementButtonPressed () { - - if (chAlign->get_image()==hAlignIcon) { - chAlign->set_image (*vAlignIcon); - batchQueue->setArrangement (BatchQueue::TB_Vertical); - } - else { - chAlign->set_image (*hAlignIcon); - batchQueue->setArrangement (BatchQueue::TB_Horizontal); - } -} void BatchQueuePanel::updateTab (int qsize) { @@ -176,13 +147,13 @@ void BatchQueuePanel::updateTab (int qsize) if(!qsize ){ vbb->pack_start (*Gtk::manage (new Gtk::Image (argv0+"/images/processing.png"))); - l=new Gtk::Label (Glib::ustring(" ") + M("MAIN_FRAME_BATCHQUEUE")); + l=Gtk::manage (new Gtk::Label (Glib::ustring(" ") + M("MAIN_FRAME_BATCHQUEUE")) ); } else if( start->get_active () ){ vbb->pack_start (*Gtk::manage (new Gtk::Image (argv0+"/images/processing-play.png"))); - l=new Gtk::Label (Glib::ustring(" ") + M("MAIN_FRAME_BATCHQUEUE")+" [" +Glib::ustring::format( qsize )+"]"); + l=Gtk::manage (new Gtk::Label (Glib::ustring(" ") + M("MAIN_FRAME_BATCHQUEUE")+" [" +Glib::ustring::format( qsize )+"]")); } else { vbb->pack_start (*Gtk::manage (new Gtk::Image (argv0+"/images/processing-pause.png"))); - l=new Gtk::Label (Glib::ustring(" ") + M("MAIN_FRAME_BATCHQUEUE")+" [" +Glib::ustring::format( qsize )+"]" ); + l=Gtk::manage (new Gtk::Label (Glib::ustring(" ") + M("MAIN_FRAME_BATCHQUEUE")+" [" +Glib::ustring::format( qsize )+"]" )); } l->set_angle (90); vbb->pack_start (*l); @@ -285,7 +256,7 @@ void BatchQueuePanel::saveOptions () { options.procQueueEnabled = autoStart->get_active (); } -// We only want to save the following when it changes, \ +// We only want to save the following when it changes, // since these settings are shared with editorpanel : void BatchQueuePanel::pathFolderChanged () { diff --git a/rtgui/batchqueuepanel.h b/rtgui/batchqueuepanel.h index 9a9c6f373..605834d28 100644 --- a/rtgui/batchqueuepanel.h +++ b/rtgui/batchqueuepanel.h @@ -43,10 +43,6 @@ class BatchQueuePanel : public Gtk::VBox, SaveFormatPanel* saveFormatPanel; Gtk::Frame *fdir, *fformat; - Gtk::Image* hAlignIcon; - Gtk::Image* vAlignIcon; - Gtk::Button* chAlign; - RTWindow* parent; BatchQueue* batchQueue; Gtk::HBox* bottomBox; @@ -57,7 +53,6 @@ class BatchQueuePanel : public Gtk::VBox, BatchQueuePanel (); void setParent (RTWindow* p) { parent = p; } - void arrangementButtonPressed (); void addBatchQueueJobs (std::vector &entries , bool head=false); diff --git a/rtgui/batchtoolpanelcoord.cc b/rtgui/batchtoolpanelcoord.cc index 48054e0a0..2cf3cf29c 100644 --- a/rtgui/batchtoolpanelcoord.cc +++ b/rtgui/batchtoolpanelcoord.cc @@ -128,9 +128,9 @@ void BatchToolPanelCoordinator::initSession () { distortion->setAdjusterBehavior (options.baBehav[ADDSET_DIST_AMOUNT]); perspective->setAdjusterBehavior (options.baBehav[ADDSET_PERSPECTIVE]); cacorrection->setAdjusterBehavior (options.baBehav[ADDSET_CA]); - colorshift->setAdjusterBehavior (options.baBehav[ADDSET_CS_BLUEYELLOW], options.baBehav[ADDSET_CS_GREENMAGENTA]); - colorboost->setAdjusterBehavior (options.baBehav[ADDSET_CBOOST_AMOUNT]); - lumadenoise->setAdjusterBehavior (options.baBehav[ADDSET_LD_EDGETOLERANCE]); + //colorshift->setAdjusterBehavior (options.baBehav[ADDSET_CS_BLUEYELLOW], options.baBehav[ADDSET_CS_GREENMAGENTA]); + //colorboost->setAdjusterBehavior (options.baBehav[ADDSET_CBOOST_AMOUNT]); + //lumadenoise->setAdjusterBehavior (options.baBehav[ADDSET_LD_EDGETOLERANCE]); sharpening->setAdjusterBehavior (options.baBehav[ADDSET_SHARP_AMOUNT]); shadowshighlights->setAdjusterBehavior (options.baBehav[ADDSET_SH_HIGHLIGHTS], options.baBehav[ADDSET_SH_SHADOWS], options.baBehav[ADDSET_SH_LOCALCONTRAST]); diff --git a/rtgui/colorboost.cc b/rtgui/colorboost.cc index 3d998b98a..c9d6a55b2 100644 --- a/rtgui/colorboost.cc +++ b/rtgui/colorboost.cc @@ -25,7 +25,7 @@ using namespace rtengine::procparams; ColorBoost::ColorBoost () : Gtk::VBox(), FoldableToolPanel(this), cbAdd(false) { - colorboost = new Adjuster (M("TP_COLORBOOST_AMOUNT"), -100, 300, 1, 0); + colorboost = Gtk::manage (new Adjuster (M("TP_COLORBOOST_AMOUNT"), -100, 300, 1, 0)); pack_start (*colorboost); pack_start (*Gtk::manage (new Gtk::HSeparator())); diff --git a/rtgui/crophandler.h b/rtgui/crophandler.h index bd97dc14f..4336c70a2 100644 --- a/rtgui/crophandler.h +++ b/rtgui/crophandler.h @@ -65,6 +65,7 @@ class CropHandler : public rtengine::DetailedCropListener, public rtengine::Size void update (); + rtengine::procparams::CropParams cropParams; rtengine::procparams::ColorManagementParams colorParams; Glib::RefPtr cropPixbuf; diff --git a/rtgui/curveeditor.cc b/rtgui/curveeditor.cc index 7f7fc92e9..65668ee55 100644 --- a/rtgui/curveeditor.cc +++ b/rtgui/curveeditor.cc @@ -100,9 +100,9 @@ CurveEditor::CurveEditor (Glib::ustring text, CurveEditorGroup* ceGroup, CurveEd subGroup = ceSubGroup; if (group && text.size()) - curveType = Gtk::manage (new PopUpToggleButton(text + ":")); + curveType = new PopUpToggleButton(text + ":"); else - curveType = Gtk::manage (new PopUpToggleButton()); + curveType = new PopUpToggleButton(); curveType->set_tooltip_text(M("CURVEEDITOR_TYPE")); // TODO: Does this signal have to be blocked when on curve type change ? @@ -115,6 +115,10 @@ void CurveEditor::setCurve (const std::vector& p) { group->setCurveExternal(this, p); } +CurveEditor::~CurveEditor () { + delete curveType; +} + void CurveEditor::typeSelectionChanged (int n) { group->typeSelectionChanged(this, n); } diff --git a/rtgui/curveeditor.h b/rtgui/curveeditor.h index 01f38b609..94632283f 100644 --- a/rtgui/curveeditor.h +++ b/rtgui/curveeditor.h @@ -66,7 +66,7 @@ class CurveEditor { public: CurveEditor (Glib::ustring text, CurveEditorGroup* ceGroup, CurveEditorSubGroup* ceSubGroup); - + virtual ~CurveEditor (); void typeSelectionChanged (int n); void curveTypeToggled(); bool isUnChanged (); diff --git a/rtgui/dirbrowser.cc b/rtgui/dirbrowser.cc index 464c358de..cd1bf9190 100644 --- a/rtgui/dirbrowser.cc +++ b/rtgui/dirbrowser.cc @@ -31,8 +31,8 @@ extern Glib::ustring argv0; DirBrowser::DirBrowser () { - dirtree = new Gtk::TreeView(); - scrolledwindow4 = new Gtk::ScrolledWindow(); + dirtree = Gtk::manage ( new Gtk::TreeView() ); + scrolledwindow4 = Gtk::manage ( new Gtk::ScrolledWindow() ); // dirtree->set_flags(Gtk::CAN_FOCUS); dirtree->set_headers_visible(false); @@ -67,7 +67,7 @@ void DirBrowser::fillDirTree () { fillRoot (); - Gtk::CellRendererPixbuf* render_pb = new Gtk::CellRendererPixbuf (); + Gtk::CellRendererPixbuf* render_pb = Gtk::manage ( new Gtk::CellRendererPixbuf () ); tvc.pack_start (*render_pb, false); tvc.add_attribute(*render_pb, "pixbuf-expander-closed", 1); tvc.add_attribute(*render_pb, "pixbuf", 1); diff --git a/rtgui/dirpyrequalizer.cc b/rtgui/dirpyrequalizer.cc index 432a6e580..27e7c5dfa 100644 --- a/rtgui/dirpyrequalizer.cc +++ b/rtgui/dirpyrequalizer.cc @@ -60,7 +60,7 @@ DirPyrEqualizer::DirPyrEqualizer () : Gtk::VBox(), FoldableToolPanel(this) { ss += Glib::ustring::compose(" (%1)", M("TP_DIRPYREQUALIZER_LUMAFINEST")); if(i == 3) ss += Glib::ustring::compose(" (%1)", M("TP_DIRPYREQUALIZER_LUMACOARSEST")); - multiplier[i] = new Adjuster (ss, 0, 4, 0.01, 1.0); + multiplier[i] = Gtk::manage ( new Adjuster (ss, 0, 4, 0.01, 1.0) ); multiplier[i]->setAdjusterListener(this); pack_start(*multiplier[i]); } @@ -68,7 +68,7 @@ DirPyrEqualizer::DirPyrEqualizer () : Gtk::VBox(), FoldableToolPanel(this) { Gtk::HSeparator *separator3 = Gtk::manage (new Gtk::HSeparator()); pack_start(*separator3, Gtk::PACK_SHRINK, 2); - multiplier[4] = new Adjuster (M("TP_DIRPYREQUALIZER_THRESHOLD"), 0, 1, 0.01, 0.0); + multiplier[4] = Gtk::manage ( new Adjuster (M("TP_DIRPYREQUALIZER_THRESHOLD"), 0, 1, 0.01, 0.0) ); multiplier[4]->setAdjusterListener(this); pack_start(*multiplier[4]); diff --git a/rtgui/equalizer.cc b/rtgui/equalizer.cc index d2cd60d9d..072520062 100644 --- a/rtgui/equalizer.cc +++ b/rtgui/equalizer.cc @@ -61,7 +61,7 @@ Equalizer::Equalizer () : Gtk::VBox(), FoldableToolPanel(this) { if(i == 7) ss += Glib::ustring::compose(" (%1)", M("TP_EQUALIZER_LARGEST")); - correction[i] = new Adjuster (ss, -100, 100, 1, 0); + correction[i] = Gtk::manage ( new Adjuster (ss, -100, 100, 1, 0) ); correction[i]->setAdjusterListener(this); pack_start(*correction[i]); } diff --git a/rtgui/filebrowser.cc b/rtgui/filebrowser.cc index b73755018..1171bf5b0 100644 --- a/rtgui/filebrowser.cc +++ b/rtgui/filebrowser.cc @@ -44,36 +44,36 @@ FileBrowser::FileBrowser () int p = 0; pmenu = new Gtk::Menu (); - pmenu->attach (*(open = new Gtk::MenuItem (M("FILEBROWSER_POPUPOPEN"))), 0, 1, p, p+1); p++; - pmenu->attach (*(develop = new Gtk::MenuItem (M("FILEBROWSER_POPUPPROCESS"))), 0, 1, p, p+1); p++; - pmenu->attach (*(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; - pmenu->attach (*(rank[0] = new Gtk::MenuItem (M("FILEBROWSER_POPUPUNRANK"))), 0, 1, p, p+1); p++; - pmenu->attach (*(rank[1] = new Gtk::MenuItem (M("FILEBROWSER_POPUPRANK1"))), 0, 1, p, p+1); p++; - pmenu->attach (*(rank[2] = new Gtk::MenuItem (M("FILEBROWSER_POPUPRANK2"))), 0, 1, p, p+1); p++; - pmenu->attach (*(rank[3] = new Gtk::MenuItem (M("FILEBROWSER_POPUPRANK3"))), 0, 1, p, p+1); p++; - pmenu->attach (*(rank[4] = new Gtk::MenuItem (M("FILEBROWSER_POPUPRANK4"))), 0, 1, p, p+1); p++; - pmenu->attach (*(rank[5] = new Gtk::MenuItem (M("FILEBROWSER_POPUPRANK5"))), 0, 1, p, p+1); p++; - pmenu->attach (*(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; - pmenu->attach (*(trash = new Gtk::MenuItem (M("FILEBROWSER_POPUPTRASH"))), 0, 1, p, p+1); p++; - pmenu->attach (*(untrash = new Gtk::MenuItem (M("FILEBROWSER_POPUPUNTRASH"))), 0, 1, p, p+1); p++; - pmenu->attach (*(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; - pmenu->attach (*(rename = new Gtk::MenuItem (M("FILEBROWSER_POPUPRENAME"))), 0, 1, p, p+1); p++; - pmenu->attach (*(remove = new Gtk::MenuItem (M("FILEBROWSER_POPUPREMOVE"))), 0, 1, p, p+1); p++; - pmenu->attach (*(removeInclProc = new Gtk::MenuItem (M("FILEBROWSER_POPUPREMOVEINCLPROC"))), 0, 1, p, p+1); p++; - pmenu->attach (*(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; - pmenu->attach (*(selall = new Gtk::MenuItem (M("FILEBROWSER_POPUPSELECTALL"))), 0, 1, p, p+1); p++; - pmenu->attach (*(copyTo = new Gtk::MenuItem (M("FILEBROWSER_POPUPCOPYTO"))), 0, 1, p, p+1); p++; - pmenu->attach (*(moveTo = new Gtk::MenuItem (M("FILEBROWSER_POPUPMOVETO"))), 0, 1, p, p+1); p++; - pmenu->attach (*(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; - pmenu->attach (*(menuDF = new Gtk::MenuItem (M("FILEBROWSER_DARKFRAME"))), 0, 1, p, p+1); p++; - pmenu->attach (*(menuFF = new Gtk::MenuItem (M("FILEBROWSER_FLATFIELD"))), 0, 1, p, p+1); p++; - pmenu->attach (*(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; - pmenu->attach (*(copyprof = new Gtk::MenuItem (M("FILEBROWSER_COPYPROFILE"))), 0, 1, p, p+1); p++; - pmenu->attach (*(pasteprof = new Gtk::MenuItem (M("FILEBROWSER_PASTEPROFILE"))), 0, 1, p, p+1); p++; - pmenu->attach (*(partpasteprof = new Gtk::MenuItem (M("FILEBROWSER_PARTIALPASTEPROFILE"))), 0, 1, p, p+1); p++; - pmenu->attach (*(applyprof = new Gtk::MenuItem (M("FILEBROWSER_APPLYPROFILE"))), 0, 1, p, p+1); p++; - pmenu->attach (*(clearprof = new Gtk::MenuItem (M("FILEBROWSER_CLEARPROFILE"))), 0, 1, p, p+1); p++; - pmenu->attach (*(cachemenu = new Gtk::MenuItem (M("FILEBROWSER_CACHE"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(open = new Gtk::MenuItem (M("FILEBROWSER_POPUPOPEN"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(develop = new Gtk::MenuItem (M("FILEBROWSER_POPUPPROCESS"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(rank[0] = new Gtk::MenuItem (M("FILEBROWSER_POPUPUNRANK"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(rank[1] = new Gtk::MenuItem (M("FILEBROWSER_POPUPRANK1"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(rank[2] = new Gtk::MenuItem (M("FILEBROWSER_POPUPRANK2"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(rank[3] = new Gtk::MenuItem (M("FILEBROWSER_POPUPRANK3"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(rank[4] = new Gtk::MenuItem (M("FILEBROWSER_POPUPRANK4"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(rank[5] = new Gtk::MenuItem (M("FILEBROWSER_POPUPRANK5"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(trash = new Gtk::MenuItem (M("FILEBROWSER_POPUPTRASH"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(untrash = new Gtk::MenuItem (M("FILEBROWSER_POPUPUNTRASH"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(rename = new Gtk::MenuItem (M("FILEBROWSER_POPUPRENAME"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(remove = new Gtk::MenuItem (M("FILEBROWSER_POPUPREMOVE"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(removeInclProc = new Gtk::MenuItem (M("FILEBROWSER_POPUPREMOVEINCLPROC"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(selall = new Gtk::MenuItem (M("FILEBROWSER_POPUPSELECTALL"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(copyTo = new Gtk::MenuItem (M("FILEBROWSER_POPUPCOPYTO"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(moveTo = new Gtk::MenuItem (M("FILEBROWSER_POPUPMOVETO"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(menuDF = new Gtk::MenuItem (M("FILEBROWSER_DARKFRAME"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(menuFF = new Gtk::MenuItem (M("FILEBROWSER_FLATFIELD"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(copyprof = new Gtk::MenuItem (M("FILEBROWSER_COPYPROFILE"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(pasteprof = new Gtk::MenuItem (M("FILEBROWSER_PASTEPROFILE"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(partpasteprof = new Gtk::MenuItem (M("FILEBROWSER_PARTIALPASTEPROFILE"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(applyprof = new Gtk::MenuItem (M("FILEBROWSER_APPLYPROFILE"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(clearprof = new Gtk::MenuItem (M("FILEBROWSER_CLEARPROFILE"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(cachemenu = new Gtk::MenuItem (M("FILEBROWSER_CACHE"))), 0, 1, p, p+1); p++; pmenu->show_all (); @@ -87,8 +87,6 @@ FileBrowser::FileBrowser () pasteprof->add_accelerator ("activate", pmenu->get_accel_group(), GDK_V, Gdk::CONTROL_MASK, Gtk::ACCEL_VISIBLE); partpasteprof->add_accelerator ("activate", pmenu->get_accel_group(), GDK_V, Gdk::CONTROL_MASK | Gdk::SHIFT_MASK, Gtk::ACCEL_VISIBLE); - profmenu = new Gtk::Menu (); - open->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), open)); for (int i=0; i<6; i++) rank[i]->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), rank[i])); @@ -109,6 +107,11 @@ FileBrowser::FileBrowser () cachemenu->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), cachemenu)); } +FileBrowser::~FileBrowser () +{ + delete pmenu; +} + void FileBrowser::rightClicked (ThumbBrowserEntryBase* entry) { trash->set_sensitive (false); @@ -143,9 +146,9 @@ void FileBrowser::rightClicked (ThumbBrowserEntryBase* entry) { // submenuDF Gtk::Menu* submenuDF = Gtk::manage (new Gtk::Menu ()); - submenuDF->attach (*(selectDF = new Gtk::MenuItem (M("FILEBROWSER_SELECTDARKFRAME"))), 0, 1, p, p+1); p++; - submenuDF->attach (*(autoDF = new Gtk::MenuItem (M("FILEBROWSER_AUTODARKFRAME"))), 0, 1, p, p+1); p++; - submenuDF->attach (*(thisIsDF = new Gtk::MenuItem (M("FILEBROWSER_MOVETODARKFDIR"))), 0, 1, p, p+1); p++; + submenuDF->attach (*Gtk::manage(selectDF = new Gtk::MenuItem (M("FILEBROWSER_SELECTDARKFRAME"))), 0, 1, p, p+1); p++; + submenuDF->attach (*Gtk::manage(autoDF = new Gtk::MenuItem (M("FILEBROWSER_AUTODARKFRAME"))), 0, 1, p, p+1); p++; + submenuDF->attach (*Gtk::manage(thisIsDF = new Gtk::MenuItem (M("FILEBROWSER_MOVETODARKFDIR"))), 0, 1, p, p+1); p++; selectDF->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), selectDF)); autoDF->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), autoDF)); thisIsDF->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated),thisIsDF )); @@ -154,9 +157,9 @@ void FileBrowser::rightClicked (ThumbBrowserEntryBase* entry) { // submenuFF Gtk::Menu* submenuFF = Gtk::manage (new Gtk::Menu ()); - submenuFF->attach (*(selectFF = new Gtk::MenuItem (M("FILEBROWSER_SELECTFLATFIELD"))), 0, 1, p, p+1); p++; - submenuFF->attach (*(autoFF = new Gtk::MenuItem (M("FILEBROWSER_AUTOFLATFIELD"))), 0, 1, p, p+1); p++; - submenuFF->attach (*(thisIsFF = new Gtk::MenuItem (M("FILEBROWSER_MOVETOFLATFIELDDIR"))), 0, 1, p, p+1); p++; + submenuFF->attach (*Gtk::manage(selectFF = new Gtk::MenuItem (M("FILEBROWSER_SELECTFLATFIELD"))), 0, 1, p, p+1); p++; + submenuFF->attach (*Gtk::manage(autoFF = new Gtk::MenuItem (M("FILEBROWSER_AUTOFLATFIELD"))), 0, 1, p, p+1); p++; + submenuFF->attach (*Gtk::manage(thisIsFF = new Gtk::MenuItem (M("FILEBROWSER_MOVETOFLATFIELDDIR"))), 0, 1, p, p+1); p++; selectFF->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), selectFF)); autoFF->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), autoFF)); thisIsFF->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated),thisIsFF )); @@ -166,8 +169,8 @@ void FileBrowser::rightClicked (ThumbBrowserEntryBase* entry) { // build cache sub menu p = 0; Gtk::Menu* cachesubmenu = Gtk::manage (new Gtk::Menu ()); - cachesubmenu->attach (*(clearFromCache = new Gtk::MenuItem (M("FILEBROWSER_CACHECLEARFROMPARTIAL"))), 0, 1, p, p+1); p++; - cachesubmenu->attach (*(clearFromCacheFull = new Gtk::MenuItem (M("FILEBROWSER_CACHECLEARFROMFULL"))), 0, 1, p, p+1); p++; + cachesubmenu->attach (*Gtk::manage(clearFromCache = new Gtk::MenuItem (M("FILEBROWSER_CACHECLEARFROMPARTIAL"))), 0, 1, p, p+1); p++; + cachesubmenu->attach (*Gtk::manage(clearFromCacheFull = new Gtk::MenuItem (M("FILEBROWSER_CACHECLEARFROMFULL"))), 0, 1, p, p+1); p++; clearFromCache->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), clearFromCache)); clearFromCacheFull->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), clearFromCacheFull)); cachesubmenu->show_all (); diff --git a/rtgui/filebrowser.h b/rtgui/filebrowser.h index bf557f71d..ae683be10 100644 --- a/rtgui/filebrowser.h +++ b/rtgui/filebrowser.h @@ -83,7 +83,7 @@ class FileBrowser : public ThumbBrowserBase, public LWButtonListener { Gtk::MenuItem* clearFromCache; Gtk::MenuItem* clearFromCacheFull; Gtk::Menu* pmenu; - Gtk::Menu* profmenu; + Glib::RefPtr pmaccelgroup; FileBrowserListener* tbl; @@ -102,6 +102,7 @@ class FileBrowser : public ThumbBrowserBase, public LWButtonListener { public: FileBrowser (); + ~FileBrowser (); void addEntry (FileBrowserEntry* entry); // can be called from any thread void addEntry_ (FileBrowserEntry* entry); // this must be executed inside the gtk thread diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc index 2b303a909..8443dc821 100644 --- a/rtgui/filecatalog.cc +++ b/rtgui/filecatalog.cc @@ -60,20 +60,20 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : set_size_request(0,250); // construct trash panel with the extra "empty trash" button - trashButtonBox = new Gtk::VBox; - Gtk::Button* emptyT = new Gtk::Button (M("FILEBROWSER_EMPTYTRASH")); + trashButtonBox = Gtk::manage( new Gtk::VBox ); + Gtk::Button* emptyT = Gtk::manage( new Gtk::Button (M("FILEBROWSER_EMPTYTRASH"))); emptyT->set_tooltip_markup (M("FILEBROWSER_EMPTYTRASHHINT")); - emptyT->set_image (*(new Gtk::Image (Gtk::StockID("gtk-delete"), Gtk::ICON_SIZE_BUTTON))); + emptyT->set_image (*Gtk::manage(new Gtk::Image (Gtk::StockID("gtk-delete"), Gtk::ICON_SIZE_BUTTON))); emptyT->signal_pressed().connect (sigc::mem_fun(*this, &FileCatalog::emptyTrash)); trashButtonBox->pack_start (*emptyT, Gtk::PACK_SHRINK, 4); emptyT->show (); trashButtonBox->show (); // setup button bar - buttonBar = new Gtk::HBox (); + buttonBar = Gtk::manage( new Gtk::HBox () ); pack_start (*buttonBar, Gtk::PACK_SHRINK); - buttonBar->pack_start (*(new Gtk::VSeparator), Gtk::PACK_SHRINK); + buttonBar->pack_start (*Gtk::manage(new Gtk::VSeparator), Gtk::PACK_SHRINK); tbLeftPanel_1 = new Gtk::ToggleButton (); iLeftPanel_1_Show = new Gtk::Image(argv0+"/images/panel_to_right.png"); @@ -87,19 +87,19 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : buttonBar->pack_start (*tbLeftPanel_1, Gtk::PACK_SHRINK); buttonBar->pack_start (*(new Gtk::VSeparator), Gtk::PACK_SHRINK); - bDir = new Gtk::ToggleButton (); + bDir = Gtk::manage( new Gtk::ToggleButton () ); bDir->set_active (true); - bDir->set_image (*(new Gtk::Image (argv0+"/images/folder_bw.png"))); + bDir->set_image (*Gtk::manage(new Gtk::Image (argv0+"/images/folder_bw.png"))); bDir->set_relief (Gtk::RELIEF_NONE); bDir->set_tooltip_markup (M("FILEBROWSER_SHOWDIRHINT")); bDir->signal_button_press_event().connect (sigc::mem_fun(*this, &FileCatalog::capture_event),false); bCateg[0] = bDir->signal_toggled().connect (sigc::bind(sigc::mem_fun(*this, &FileCatalog::categoryButtonToggled), bDir)); buttonBar->pack_start (*bDir, Gtk::PACK_SHRINK); - buttonBar->pack_start (*(new Gtk::VSeparator), Gtk::PACK_SHRINK); + buttonBar->pack_start (*Gtk::manage(new Gtk::VSeparator), Gtk::PACK_SHRINK); - bUnRanked = new Gtk::ToggleButton (); + bUnRanked = Gtk::manage( new Gtk::ToggleButton () ); bUnRanked->set_active (false); - bUnRanked->set_image (*(new Gtk::Image (argv0+"/images/unrated.png"))); + bUnRanked->set_image (*Gtk::manage(new Gtk::Image (argv0+"/images/unrated.png"))); bUnRanked->set_relief (Gtk::RELIEF_NONE); bUnRanked->set_tooltip_markup (M("FILEBROWSER_SHOWUNRANKHINT")); bCateg[1] = bUnRanked->signal_toggled().connect (sigc::bind(sigc::mem_fun(*this, &FileCatalog::categoryButtonToggled), bUnRanked)); @@ -107,11 +107,11 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : bUnRanked->signal_button_press_event().connect (sigc::mem_fun(*this, &FileCatalog::capture_event),false); for (int i=0; i<5; i++) { - iranked[i] = new Gtk::Image (argv0+"/images/rated.png"); - igranked[i] = new Gtk::Image (argv0+"/images/grayrated.png"); + iranked[i] = Gtk::manage( new Gtk::Image (argv0+"/images/rated.png") ); + igranked[i] = Gtk::manage( new Gtk::Image (argv0+"/images/grayrated.png") ); iranked[i]->show (); igranked[i]->show (); - bRank[i] = new Gtk::ToggleButton (); + bRank[i] = Gtk::manage( new Gtk::ToggleButton () ); bRank[i]->set_image (*igranked[i]); bRank[i]->set_relief (Gtk::RELIEF_NONE); buttonBar->pack_start (*bRank[i], Gtk::PACK_SHRINK); @@ -123,19 +123,19 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : bRank[2]->set_tooltip_markup (M("FILEBROWSER_SHOWRANK3HINT")); bRank[3]->set_tooltip_markup (M("FILEBROWSER_SHOWRANK4HINT")); bRank[4]->set_tooltip_markup (M("FILEBROWSER_SHOWRANK5HINT")); - buttonBar->pack_start (*(new Gtk::VSeparator), Gtk::PACK_SHRINK); + buttonBar->pack_start (*Gtk::manage(new Gtk::VSeparator), Gtk::PACK_SHRINK); - iTrashEmpty = new Gtk::Image(argv0+"/images/trash-show-empty.png"); - iTrashFull = new Gtk::Image(argv0+"/images/trash-show-full.png"); + iTrashEmpty = new Gtk::Image(argv0+"/images/trash-show-empty.png") ; + iTrashFull = new Gtk::Image(argv0+"/images/trash-show-full.png") ; - bTrash = new Gtk::ToggleButton (); + bTrash = Gtk::manage( new Gtk::ToggleButton () ); bTrash->set_image (*iTrashEmpty); bTrash->set_relief (Gtk::RELIEF_NONE); bTrash->set_tooltip_markup (M("FILEBROWSER_SHOWTRASHHINT")); bCateg[7] = bTrash->signal_toggled().connect (sigc::bind(sigc::mem_fun(*this, &FileCatalog::categoryButtonToggled), bTrash)); bTrash->signal_button_press_event().connect (sigc::mem_fun(*this, &FileCatalog::capture_event),false); buttonBar->pack_start (*bTrash, Gtk::PACK_SHRINK); - buttonBar->pack_start (*(new Gtk::VSeparator), Gtk::PACK_SHRINK); + buttonBar->pack_start (*Gtk::manage(new Gtk::VSeparator), Gtk::PACK_SHRINK); fileBrowser->trash_changed().connect( sigc::mem_fun(*this, &FileCatalog::trashChanged) ); categoryButtons[0] = bDir; @@ -145,7 +145,7 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : categoryButtons[7] = bTrash; exifInfo = Gtk::manage(new Gtk::ToggleButton ()); - exifInfo->set_image (*(new Gtk::Image (argv0+"/images/info.png"))); + exifInfo->set_image (*Gtk::manage(new Gtk::Image (argv0+"/images/info.png"))); exifInfo->set_relief (Gtk::RELIEF_NONE); exifInfo->set_tooltip_markup (M("FILEBROWSER_SHOWEXIFINFO")); exifInfo->set_active( options.showFileNames ); @@ -153,22 +153,22 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : buttonBar->pack_start (*exifInfo, Gtk::PACK_SHRINK); // thumbnail zoom - Gtk::HBox* zoomBox = new Gtk::HBox (); - zoomInButton = new Gtk::Button (); - zoomInButton->set_image (*(new Gtk::Image (Gtk::StockID("gtk-zoom-in"), Gtk::ICON_SIZE_SMALL_TOOLBAR))); + Gtk::HBox* zoomBox = Gtk::manage( new Gtk::HBox () ); + zoomInButton = Gtk::manage( new Gtk::Button () ); + zoomInButton->set_image (*Gtk::manage(new Gtk::Image (Gtk::StockID("gtk-zoom-in"), Gtk::ICON_SIZE_SMALL_TOOLBAR))); zoomInButton->signal_pressed().connect (sigc::mem_fun(*this, &FileCatalog::zoomIn)); zoomInButton->set_relief (Gtk::RELIEF_NONE); zoomInButton->set_tooltip_markup (M("FILEBROWSER_ZOOMINHINT")); zoomBox->pack_end (*zoomInButton, Gtk::PACK_SHRINK); - zoomOutButton = new Gtk::Button (); - zoomOutButton->set_image (*(new Gtk::Image (Gtk::StockID("gtk-zoom-out"), Gtk::ICON_SIZE_SMALL_TOOLBAR))); + zoomOutButton = Gtk::manage( new Gtk::Button () ); + zoomOutButton->set_image (*Gtk::manage(new Gtk::Image (Gtk::StockID("gtk-zoom-out"), Gtk::ICON_SIZE_SMALL_TOOLBAR))); zoomOutButton->signal_pressed().connect (sigc::mem_fun(*this, &FileCatalog::zoomOut)); zoomOutButton->set_relief (Gtk::RELIEF_NONE); zoomOutButton->set_tooltip_markup (M("FILEBROWSER_ZOOMOUTHINT")); zoomBox->pack_end (*zoomOutButton, Gtk::PACK_SHRINK); // add default panel - hBox = new Gtk::HBox (); + hBox = Gtk::manage( new Gtk::HBox () ); hBox->show (); hBox->pack_end (*fileBrowser); fileBrowser->applyFilter (getFilter()); @@ -177,7 +177,7 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : buttonBar->pack_start (*zoomBox, Gtk::PACK_SHRINK); // add browserPath - buttonBar->pack_start (*(new Gtk::VSeparator), Gtk::PACK_SHRINK); + buttonBar->pack_start (*Gtk::manage(new Gtk::VSeparator), Gtk::PACK_SHRINK); iRightArrow = new Gtk::Image(argv0+"/images/right.png"); iRightArrow_red = new Gtk::Image(argv0+"/images/right_red.png"); @@ -225,6 +225,12 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : #endif } +FileCatalog::~FileCatalog() +{ + delete iTrashEmpty; + delete iTrashFull; +} + bool FileCatalog::capture_event(GdkEventButton* event){ // need to record modifiers on the button press, because signal_toggled does not pass the event. modifierKey = event->state; diff --git a/rtgui/filecatalog.h b/rtgui/filecatalog.h index f8a9f0edb..11d2f3dde 100644 --- a/rtgui/filecatalog.h +++ b/rtgui/filecatalog.h @@ -135,6 +135,7 @@ class FileCatalog : public Gtk::VBox, ToolBar* toolBar; FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel); + ~FileCatalog(); void dirSelected (const Glib::ustring& dirname, const Glib::ustring& openfile=""); void closeDir (); void refreshEditedState (const std::set& efiles); diff --git a/rtgui/filepanel.cc b/rtgui/filepanel.cc index c0d0828f2..7363f353d 100644 --- a/rtgui/filepanel.cc +++ b/rtgui/filepanel.cc @@ -33,14 +33,14 @@ int fbinit (void* data) { FilePanel::FilePanel () : parent(NULL) { isloading = false; - dirpaned = new Gtk::HPaned (); + dirpaned = Gtk::manage ( new Gtk::HPaned () ); dirpaned->set_position (options.dirBrowserWidth); dirBrowser = new DirBrowser (); placesBrowser = new PlacesBrowser (); recentBrowser = new RecentBrowser (); - placespaned = new Gtk::VPaned (); + placespaned = Gtk::manage ( new Gtk::VPaned () ); placespaned->set_size_request(50,100); placespaned->set_position (options.dirBrowserHeight); @@ -55,7 +55,7 @@ FilePanel::FilePanel () : parent(NULL) { tpc = new BatchToolPanelCoordinator (this); fileCatalog = new FileCatalog (tpc->coarse, tpc->getToolBar(), this); - ribbonPane = new Gtk::Paned(); + ribbonPane = Gtk::manage ( new Gtk::Paned() ); ribbonPane->add(*fileCatalog); ribbonPane->set_size_request(50,150); dirpaned->pack2 (*ribbonPane, true, true); @@ -68,18 +68,18 @@ FilePanel::FilePanel () : parent(NULL) { fileCatalog->setFileSelectionListener (this); fileCatalog->setDirBrowserRemoteInterface (dirBrowser); - rightBox = new Gtk::HBox (); + rightBox = Gtk::manage ( new Gtk::HBox () ); rightBox->set_size_request(50,100); - rightNotebook = new Gtk::Notebook (); - Gtk::VBox* taggingBox = new Gtk::VBox (); + rightNotebook = Gtk::manage ( new Gtk::Notebook () ); + //Gtk::VBox* taggingBox = Gtk::manage ( new Gtk::VBox () ); history = new History (false); tpc->addPParamsChangeListener (history); history->setProfileChangeListener (tpc); - Gtk::ScrolledWindow* sFilterPanel = new Gtk::ScrolledWindow(); - filterPanel = new FilterPanel (); + Gtk::ScrolledWindow* sFilterPanel = Gtk::manage ( new Gtk::ScrolledWindow() ); + filterPanel = Gtk::manage ( new FilterPanel () ); sFilterPanel->add (*filterPanel); sFilterPanel->set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC); @@ -90,20 +90,20 @@ FilePanel::FilePanel () : parent(NULL) { rightNotebook->set_tab_pos (Gtk::POS_LEFT); - Gtk::Label* devLab = new Gtk::Label (M("MAIN_TAB_DEVELOP")); + Gtk::Label* devLab = Gtk::manage ( new Gtk::Label (M("MAIN_TAB_DEVELOP")) ); devLab->set_angle (90); - Gtk::Label* filtLab = new Gtk::Label (M("MAIN_TAB_FILTER")); + Gtk::Label* filtLab = Gtk::manage ( new Gtk::Label (M("MAIN_TAB_FILTER")) ); filtLab->set_angle (90); - Gtk::Label* tagLab = new Gtk::Label (M("MAIN_TAB_TAGGING")); - tagLab->set_angle (90); + //Gtk::Label* tagLab = Gtk::manage ( new Gtk::Label (M("MAIN_TAB_TAGGING")) ); + //tagLab->set_angle (90); - tpcPaned = new Gtk::VPaned (); + tpcPaned = Gtk::manage ( new Gtk::VPaned () ); tpcPaned->pack1 (*tpc->toolPanelNotebook, false, true); tpcPaned->pack2 (*history, true, true); rightNotebook->append_page (*tpcPaned, *devLab); rightNotebook->append_page (*sFilterPanel, *filtLab); - rightNotebook->append_page (*taggingBox, *tagLab); + //rightNotebook->append_page (*taggingBox, *tagLab); commented out: currently the tab is empty ... rightBox->pack_start (*rightNotebook); diff --git a/rtgui/iptcpanel.cc b/rtgui/iptcpanel.cc index 6af6a6c24..f812ec364 100644 --- a/rtgui/iptcpanel.cc +++ b/rtgui/iptcpanel.cc @@ -28,14 +28,14 @@ IPTCPanel::IPTCPanel () { set_border_width (2); - Gtk::Table* iptc = new Gtk::Table (27, 2); + Gtk::Table* iptc = Gtk::manage( new Gtk::Table (27, 2) ); int row = 0; - Gtk::Label* capl = new Gtk::Label (M("IPTCPANEL_CAPTION")+":"); + Gtk::Label* capl = Gtk::manage( new Gtk::Label (M("IPTCPANEL_CAPTION")+":") ); captionText = Gtk::TextBuffer::create (); - captionView = new Gtk::TextView (captionText); - Gtk::ScrolledWindow* scrolledWindowc = new Gtk::ScrolledWindow(); + captionView = Gtk::manage( new Gtk::TextView (captionText) ); + Gtk::ScrolledWindow* scrolledWindowc = Gtk::manage( new Gtk::ScrolledWindow() ); scrolledWindowc->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_ALWAYS); scrolledWindowc->add(*captionView); capl->set_tooltip_text (M("IPTCPANEL_CAPTIONHINT")); @@ -45,8 +45,8 @@ IPTCPanel::IPTCPanel () { row++; - Gtk::Label* capwl = new Gtk::Label (M("IPTCPANEL_CAPTIONWRITER")+":"); - captionWriter = new Gtk::Entry (); + Gtk::Label* capwl = Gtk::manage( new Gtk::Label (M("IPTCPANEL_CAPTIONWRITER")+":") ); + captionWriter = Gtk::manage( new Gtk::Entry () ); capwl->set_tooltip_text (M("IPTCPANEL_CAPTIONWRITERHINT")); captionWriter->set_tooltip_text (M("IPTCPANEL_CAPTIONWRITERHINT")); iptc->attach (*capwl, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK, 2, 2); @@ -54,8 +54,8 @@ IPTCPanel::IPTCPanel () { row++; - Gtk::Label* headl = new Gtk::Label (M("IPTCPANEL_HEADLINE")+":"); - headline = new Gtk::Entry (); + Gtk::Label* headl = Gtk::manage( new Gtk::Label (M("IPTCPANEL_HEADLINE")+":") ); + headline = Gtk::manage( new Gtk::Entry () ); headl->set_tooltip_text (M("IPTCPANEL_HEADLINEHINT")); headline->set_tooltip_text (M("IPTCPANEL_HEADLINEHINT")); iptc->attach (*headl, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK, 2, 2); @@ -63,8 +63,8 @@ IPTCPanel::IPTCPanel () { row++; - Gtk::Label* instl = new Gtk::Label (M("IPTCPANEL_INSTRUCTIONS")+":"); - instructions = new Gtk::Entry (); + Gtk::Label* instl = Gtk::manage( new Gtk::Label (M("IPTCPANEL_INSTRUCTIONS")+":") ); + instructions = Gtk::manage( new Gtk::Entry () ); instl->set_tooltip_text (M("IPTCPANEL_INSTRUCTIONSHINT")); instructions->set_tooltip_text (M("IPTCPANEL_INSTRUCTIONSHINT")); iptc->attach (*instl, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK, 2, 2); @@ -72,29 +72,29 @@ IPTCPanel::IPTCPanel () { row++; - Gtk::HSeparator* hsep1 = new Gtk::HSeparator (); + Gtk::HSeparator* hsep1 = Gtk::manage( new Gtk::HSeparator () ); iptc->attach (*hsep1, 0, 2, row, row+1, Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK, 2, 2); row++; - Gtk::Label* keyl = new Gtk::Label (M("IPTCPANEL_KEYWORDS")+":"); - keywords = new Gtk::ListViewText (1, false, Gtk::SELECTION_MULTIPLE); + Gtk::Label* keyl = Gtk::manage( new Gtk::Label (M("IPTCPANEL_KEYWORDS")+":")); + keywords = Gtk::manage( new Gtk::ListViewText (1, false, Gtk::SELECTION_MULTIPLE) ); keywords->set_headers_visible (false); - Gtk::ScrolledWindow* scrolledWindowkw = new Gtk::ScrolledWindow(); + Gtk::ScrolledWindow* scrolledWindowkw = Gtk::manage( new Gtk::ScrolledWindow() ); scrolledWindowkw->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_ALWAYS); scrolledWindowkw->add(*keywords); - keyword = new Gtk::ComboBoxEntryText (); + keyword = Gtk::manage( new Gtk::ComboBoxEntryText () ); keyword->set_size_request (32, -1); keyl->set_tooltip_text (M("IPTCPANEL_KEYWORDSHINT")); keywords->set_tooltip_text (M("IPTCPANEL_KEYWORDSHINT")); keyword->set_tooltip_text (M("IPTCPANEL_KEYWORDSHINT")); - addKW = new Gtk::Button (); - delKW = new Gtk::Button (); - Gtk::Image* addKWImg = new Gtk::Image (argv0+"/images/list-add12.png"); - Gtk::Image* delKWImg = new Gtk::Image (argv0+"/images/list-remove12r.png"); + addKW = Gtk::manage( new Gtk::Button () ); + delKW = Gtk::manage( new Gtk::Button () ); + Gtk::Image* addKWImg = Gtk::manage( new Gtk::Image (argv0+"/images/list-add12.png") ); + Gtk::Image* delKWImg = Gtk::manage( new Gtk::Image (argv0+"/images/list-remove12r.png") ); addKW->add (*addKWImg); delKW->add (*delKWImg); - Gtk::HBox* kwhb = new Gtk::HBox (); + Gtk::HBox* kwhb = Gtk::manage( new Gtk::HBox () ); kwhb->pack_start (*keyword); kwhb->pack_start (*addKW, Gtk::PACK_SHRINK, 2); kwhb->pack_start (*delKW, Gtk::PACK_SHRINK, 2); @@ -104,33 +104,33 @@ IPTCPanel::IPTCPanel () { iptc->attach (*scrolledWindowkw, 0, 2, row, row+1, Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK, 2, 2); row++; - Gtk::HSeparator* hsep2 = new Gtk::HSeparator (); + Gtk::HSeparator* hsep2 = Gtk::manage( new Gtk::HSeparator () ); iptc->attach (*hsep2, 0, 2, row, row+1, Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK, 2, 2); row++; - Gtk::Label* catl = new Gtk::Label (M("IPTCPANEL_CATEGORY")+":"); - category = new Gtk::ComboBoxEntryText (); + Gtk::Label* catl = Gtk::manage( new Gtk::Label (M("IPTCPANEL_CATEGORY")+":") ); + category = Gtk::manage( new Gtk::ComboBoxEntryText () ); category->set_size_request (32, -1); catl->set_tooltip_text (M("IPTCPANEL_CATEGORYHINT")); category->set_tooltip_text (M("IPTCPANEL_CATEGORYHINT")); - Gtk::Label* scl = new Gtk::Label (M("IPTCPANEL_SUPPCATEGORIES")+":"); - suppCategories = new Gtk::ListViewText (1, false, Gtk::SELECTION_MULTIPLE); + Gtk::Label* scl = Gtk::manage( new Gtk::Label (M("IPTCPANEL_SUPPCATEGORIES")+":") ); + suppCategories = Gtk::manage( new Gtk::ListViewText (1, false, Gtk::SELECTION_MULTIPLE) ); suppCategories->set_headers_visible (false); - Gtk::ScrolledWindow* scrolledWindowsc = new Gtk::ScrolledWindow(); + Gtk::ScrolledWindow* scrolledWindowsc = Gtk::manage( new Gtk::ScrolledWindow() ); scrolledWindowsc->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_ALWAYS); scrolledWindowsc->add(*suppCategories); - suppCategory = new Gtk::ComboBoxEntryText (); + suppCategory = Gtk::manage( new Gtk::ComboBoxEntryText () ); suppCategory->set_size_request (32, -1); scl->set_tooltip_text (M("IPTCPANEL_SUPPCATEGORIESHINT")); suppCategories->set_tooltip_text (M("IPTCPANEL_SUPPCATEGORIESHINT")); suppCategory->set_tooltip_text (M("IPTCPANEL_SUPPCATEGORIESHINT")); - addSC = new Gtk::Button (); - delSC = new Gtk::Button (); - Gtk::Image* addSCImg = new Gtk::Image (argv0+"/images/list-add12.png"); - Gtk::Image* delSCImg = new Gtk::Image (argv0+"/images/list-remove12r.png"); + addSC = Gtk::manage( new Gtk::Button () ); + delSC = Gtk::manage( new Gtk::Button () ); + Gtk::Image* addSCImg = Gtk::manage( new Gtk::Image (argv0+"/images/list-add12.png") ); + Gtk::Image* delSCImg = Gtk::manage( new Gtk::Image (argv0+"/images/list-remove12r.png") ); addSC->add (*addSCImg); delSC->add (*delSCImg); - Gtk::HBox* schb = new Gtk::HBox (); + Gtk::HBox* schb = Gtk::manage( new Gtk::HBox () ); schb->pack_start (*suppCategory); schb->pack_start (*addSC, Gtk::PACK_SHRINK, 2); schb->pack_start (*delSC, Gtk::PACK_SHRINK, 2); @@ -143,12 +143,12 @@ IPTCPanel::IPTCPanel () { iptc->attach (*scrolledWindowsc, 0, 2, row, row+1, Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK, 2, 2); row++; - Gtk::HSeparator* hsep3 = new Gtk::HSeparator (); + Gtk::HSeparator* hsep3 = Gtk::manage( new Gtk::HSeparator () ); iptc->attach (*hsep3, 0, 2, row, row+1, Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK, 2, 2); row++; - Gtk::Label* authl = new Gtk::Label (M("IPTCPANEL_AUTHOR")+":"); - author = new Gtk::Entry (); + Gtk::Label* authl = Gtk::manage( new Gtk::Label (M("IPTCPANEL_AUTHOR")+":") ); + author = Gtk::manage( new Gtk::Entry () ); authl->set_tooltip_text (M("IPTCPANEL_CREDITHINT")); author->set_tooltip_text (M("IPTCPANEL_CREDITHINT")); iptc->attach (*authl, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK, 2, 2); @@ -156,8 +156,8 @@ IPTCPanel::IPTCPanel () { row++; - Gtk::Label* aupl = new Gtk::Label (M("IPTCPANEL_AUTHORSPOSITION")+":"); - authorPos = new Gtk::Entry (); + Gtk::Label* aupl = Gtk::manage( new Gtk::Label (M("IPTCPANEL_AUTHORSPOSITION")+":") ); + authorPos = Gtk::manage( new Gtk::Entry () ); aupl->set_tooltip_text (M("IPTCPANEL_AUTHORSPOSITIONHINT")); authorPos->set_tooltip_text (M("IPTCPANEL_AUTHORSPOSITIONHINT")); iptc->attach (*aupl, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK, 2, 2); @@ -165,8 +165,8 @@ IPTCPanel::IPTCPanel () { row++; - Gtk::Label* credl = new Gtk::Label (M("IPTCPANEL_CREDIT")+":"); - credit = new Gtk::Entry (); + Gtk::Label* credl = Gtk::manage( new Gtk::Label (M("IPTCPANEL_CREDIT")+":") ); + credit = Gtk::manage( new Gtk::Entry () ); credl->set_tooltip_text (M("IPTCPANEL_CREDITHINT")); credit->set_tooltip_text (M("IPTCPANEL_CREDITHINT")); iptc->attach (*credl, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK, 2, 2); @@ -174,8 +174,8 @@ IPTCPanel::IPTCPanel () { row++; - Gtk::Label* sourl = new Gtk::Label (M("IPTCPANEL_SOURCE")+":"); - source = new Gtk::Entry (); + Gtk::Label* sourl = Gtk::manage( new Gtk::Label (M("IPTCPANEL_SOURCE")+":") ); + source = Gtk::manage( new Gtk::Entry () ); sourl->set_tooltip_text (M("IPTCPANEL_SOURCEHINT")); source->set_tooltip_text (M("IPTCPANEL_SOURCEHINT")); iptc->attach (*sourl, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK, 2, 2); @@ -183,8 +183,8 @@ IPTCPanel::IPTCPanel () { row++; - Gtk::Label* cprl = new Gtk::Label (M("IPTCPANEL_COPYRIGHT")+":"); - copyright = new Gtk::Entry (); + Gtk::Label* cprl = Gtk::manage( new Gtk::Label (M("IPTCPANEL_COPYRIGHT")+":") ); + copyright = Gtk::manage( new Gtk::Entry () ); cprl->set_tooltip_text (M("IPTCPANEL_COPYRIGHTHINT")); copyright->set_tooltip_text (M("IPTCPANEL_COPYRIGHTHINT")); iptc->attach (*cprl, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK, 2, 2); @@ -192,13 +192,13 @@ IPTCPanel::IPTCPanel () { row++; - Gtk::HSeparator* hsep4 = new Gtk::HSeparator (); + Gtk::HSeparator* hsep4 = Gtk::manage( new Gtk::HSeparator () ); iptc->attach (*hsep4, 0, 2, row, row+1, Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK, 2, 2); row++; - Gtk::Label* cityl = new Gtk::Label (M("IPTCPANEL_CITY")+":"); - city = new Gtk::Entry (); + Gtk::Label* cityl = Gtk::manage( new Gtk::Label (M("IPTCPANEL_CITY")+":") ); + city = Gtk::manage( new Gtk::Entry () ); cityl->set_tooltip_text (M("IPTCPANEL_CITYHINT")); city->set_tooltip_text (M("IPTCPANEL_CITYHINT")); iptc->attach (*cityl, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK, 2, 2); @@ -206,8 +206,8 @@ IPTCPanel::IPTCPanel () { row++; - Gtk::Label* provl = new Gtk::Label (M("IPTCPANEL_PROVINCE")+":"); - province = new Gtk::Entry (); + Gtk::Label* provl = Gtk::manage( new Gtk::Label (M("IPTCPANEL_PROVINCE")+":") ); + province = Gtk::manage( new Gtk::Entry () ); provl->set_tooltip_text (M("IPTCPANEL_PROVINCEHINT")); province->set_tooltip_text (M("IPTCPANEL_PROVINCEHINT")); iptc->attach (*provl, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK, 2, 2); @@ -215,8 +215,8 @@ IPTCPanel::IPTCPanel () { row++; - Gtk::Label* ctrl = new Gtk::Label (M("IPTCPANEL_COUNTRY")+":"); - country = new Gtk::Entry (); + Gtk::Label* ctrl = Gtk::manage( new Gtk::Label (M("IPTCPANEL_COUNTRY")+":") ); + country = Gtk::manage( new Gtk::Entry () ); ctrl->set_tooltip_text (M("IPTCPANEL_COUNTRYHINT")); country->set_tooltip_text (M("IPTCPANEL_COUNTRYHINT")); iptc->attach (*ctrl, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK, 2, 2); @@ -224,8 +224,8 @@ IPTCPanel::IPTCPanel () { row++; - Gtk::Label* titll = new Gtk::Label (M("IPTCPANEL_TITLE")+":"); - title = new Gtk::Entry (); + Gtk::Label* titll = Gtk::manage( new Gtk::Label (M("IPTCPANEL_TITLE")+":") ); + title = Gtk::manage( new Gtk::Entry () ); titll->set_tooltip_text (M("IPTCPANEL_TITLEHINT")); title->set_tooltip_text (M("IPTCPANEL_TITLEHINT")); iptc->attach (*titll, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK, 2, 2); @@ -233,8 +233,8 @@ IPTCPanel::IPTCPanel () { row++; - Gtk::Label* dcl = new Gtk::Label (M("IPTCPANEL_DATECREATED")+":"); - dateCreated = new Gtk::Entry (); + Gtk::Label* dcl = Gtk::manage( new Gtk::Label (M("IPTCPANEL_DATECREATED")+":") ); + dateCreated = Gtk::manage( new Gtk::Entry () ); dcl->set_tooltip_text (M("IPTCPANEL_DATECREATEDHINT")); dateCreated->set_tooltip_text (M("IPTCPANEL_DATECREATEDHINT")); iptc->attach (*dcl, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK, 2, 2); @@ -242,8 +242,8 @@ IPTCPanel::IPTCPanel () { row++; - Gtk::Label* trl = new Gtk::Label (M("IPTCPANEL_TRANSREFERENCE")+":"); - transReference = new Gtk::Entry (); + Gtk::Label* trl = Gtk::manage( new Gtk::Label (M("IPTCPANEL_TRANSREFERENCE")+":") ); + transReference = Gtk::manage( new Gtk::Entry () ); trl->set_tooltip_text (M("IPTCPANEL_TRANSREFERENCEHINT")); transReference->set_tooltip_text (M("IPTCPANEL_TRANSREFERENCEHINT")); iptc->attach (*trl, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK, 2, 2); @@ -251,7 +251,7 @@ IPTCPanel::IPTCPanel () { row++; - Gtk::ScrolledWindow* scrolledWindow = new Gtk::ScrolledWindow(); + Gtk::ScrolledWindow* scrolledWindow = Gtk::manage( new Gtk::ScrolledWindow() ); scrolledWindow->set_border_width(2); scrolledWindow->set_shadow_type(Gtk::SHADOW_NONE); scrolledWindow->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_ALWAYS); @@ -260,27 +260,27 @@ IPTCPanel::IPTCPanel () { pack_start (*scrolledWindow); - Gtk::HBox* bbox = new Gtk::HBox (); + Gtk::HBox* bbox = Gtk::manage( new Gtk::HBox () ); - reset = new Gtk::Button (M("IPTCPANEL_RESET")); - reset->set_image (*(new Gtk::Image (Gtk::StockID ("gtk-undo"), Gtk::IconSize (2)))); + reset = Gtk::manage( new Gtk::Button (M("IPTCPANEL_RESET")) ); + reset->set_image (*Gtk::manage(new Gtk::Image (Gtk::StockID ("gtk-undo"), Gtk::IconSize (2)))); bbox->pack_start (*reset); - file = new Gtk::Button (M("IPTCPANEL_EMBEDDED")); - file->set_image (*(new Gtk::Image (Gtk::StockID ("gtk-open"), Gtk::IconSize (2)))); + file = Gtk::manage( new Gtk::Button (M("IPTCPANEL_EMBEDDED")) ); + file->set_image (*Gtk::manage(new Gtk::Image (Gtk::StockID ("gtk-open"), Gtk::IconSize (2)))); bbox->pack_start (*file); - copy = new Gtk::Button (); - copy->set_image (*(new Gtk::Image (Gtk::StockID ("gtk-copy"), Gtk::IconSize (2)))); + copy = Gtk::manage( new Gtk::Button () ); + copy->set_image (*Gtk::manage(new Gtk::Image (Gtk::StockID ("gtk-copy"), Gtk::IconSize (2)))); bbox->pack_start (*copy, Gtk::PACK_SHRINK, 0); - paste = new Gtk::Button (); - paste->set_image (*(new Gtk::Image (Gtk::StockID ("gtk-paste"), Gtk::IconSize (2)))); + paste = Gtk::manage( new Gtk::Button () ); + paste->set_image (*Gtk::manage(new Gtk::Image (Gtk::StockID ("gtk-paste"), Gtk::IconSize (2)))); bbox->pack_start (*paste, Gtk::PACK_SHRINK, 0); pack_end (*bbox, Gtk::PACK_SHRINK, 2); - Gtk::Tooltips* toolTip = new Gtk::Tooltips (); + Gtk::Tooltips* toolTip = Gtk::manage( new Gtk::Tooltips () ); toolTip->set_tip (*reset, M("IPTCPANEL_RESETHINT")); toolTip->set_tip (*file, M("IPTCPANEL_EMBEDDEDHINT")); toolTip->set_tip (*copy, M("IPTCPANEL_COPYHINT")); diff --git a/rtgui/labcurve.cc b/rtgui/labcurve.cc index 8c01999c3..8fddcefda 100644 --- a/rtgui/labcurve.cc +++ b/rtgui/labcurve.cc @@ -52,7 +52,7 @@ LCurve::LCurve () : Gtk::VBox(), FoldableToolPanel(this), brAdd(false), contrAdd enablelimiter = Gtk::manage (new Gtk::CheckButton (M("TP_LABCURVE_ENABLESATLIMITER"))); pack_start (*enablelimiter); - saturationlimiter = new Adjuster (M("TP_LABCURVE_SATLIMIT"), 0, 100, 1.0, 40); + saturationlimiter = Gtk::manage ( new Adjuster (M("TP_LABCURVE_SATLIMIT"), 0, 100, 1.0, 40) ); pack_start (*saturationlimiter); saturationlimiter->show (); saturationlimiter->reference (); diff --git a/rtgui/lcurve.cc b/rtgui/lcurve.cc deleted file mode 100644 index b4246d0b3..000000000 --- a/rtgui/lcurve.cc +++ /dev/null @@ -1,144 +0,0 @@ -/* - * This file is part of RawTherapee. - * - * Copyright (c) 2004-2010 Gabor Horvath - * - * RawTherapee 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. - * - * RawTherapee 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 RawTherapee. If not, see . - */ -#include -#include - -using namespace rtengine; -using namespace rtengine::procparams; - -LCurve::LCurve () : Gtk::VBox(), FoldableToolPanel(this), brAdd(false), contrAdd(false) { - - Gtk::HBox* abox = Gtk::manage (new Gtk::HBox ()); - abox->set_border_width (2); - - brightness = Gtk::manage (new Adjuster (M("TP_LUMACURVE_BRIGHTNESS"), -100, 100, 0.01, 0)); - contrast = Gtk::manage (new Adjuster (M("TP_LUMACURVE_CONTRAST"), -100, 100, 1, 0)); - - pack_start (*brightness); - brightness->show (); - - pack_start (*contrast); - contrast->show (); - - Gtk::HSeparator *hsep3 = Gtk::manage (new Gtk::HSeparator()); - hsep3->show (); - pack_start (*hsep3); - - shape = Gtk::manage (new DiagonalCurveEditor ()); - shape->show (); - shape->setCurveListener (this); - - pack_start (*shape, Gtk::PACK_SHRINK, 4); - - brightness->setAdjusterListener (this); - contrast->setAdjusterListener (this); -} - -void LCurve::read (const ProcParams* pp, const ParamsEdited* pedited) { - - disableListener (); - - if (pedited) { - brightness->setEditedState (pedited->lumaCurve.brightness ? Edited : UnEdited); - contrast->setEditedState (pedited->lumaCurve.contrast ? Edited : UnEdited); - shape->setUnChanged (!pedited->lumaCurve.curve); - } - - brightness->setValue (pp->lumaCurve.brightness); - contrast->setValue (pp->lumaCurve.contrast); - shape->setCurve (pp->lumaCurve.curve); - - enableListener (); -} - -void LCurve::write (ProcParams* pp, ParamsEdited* pedited) { - - pp->lumaCurve.brightness = brightness->getValue (); - pp->lumaCurve.contrast = (int)contrast->getValue (); - pp->lumaCurve.curve = shape->getCurve (); - - if (pedited) { - pedited->lumaCurve.brightness = brightness->getEditedState (); - pedited->lumaCurve.contrast = contrast->getEditedState (); - pedited->lumaCurve.curve = !shape->isUnChanged (); - } -} - -void LCurve::setDefaults (const ProcParams* defParams, const ParamsEdited* pedited) { - - brightness->setDefault (defParams->lumaCurve.brightness); - contrast->setDefault (defParams->lumaCurve.contrast); - - if (pedited) { - brightness->setDefaultEditedState (pedited->lumaCurve.brightness ? Edited : UnEdited); - contrast->setDefaultEditedState (pedited->lumaCurve.contrast ? Edited : UnEdited); - } - else { - brightness->setDefaultEditedState (Irrelevant); - contrast->setDefaultEditedState (Irrelevant); - } -} - -void LCurve::curveChanged () { - - if (listener) - listener->panelChanged (EvLCurve, M("HISTORY_CUSTOMCURVE")); -} - -void LCurve::adjusterChanged (Adjuster* a, double newval) { - - if (!listener) - return; - - Glib::ustring costr; - if (a==brightness) - costr = Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), a->getValue()); - else - costr = Glib::ustring::format ((int)a->getValue()); - - if (a==brightness) - listener->panelChanged (EvLBrightness, costr); - else if (a==contrast) - listener->panelChanged (EvLContrast, costr); -} - -void LCurve::setBatchMode (bool batchMode) { - - ToolPanel::setBatchMode (batchMode); - brightness->showEditedCB (); - contrast->showEditedCB (); - - shape->setBatchMode (batchMode); -} - -void LCurve::setAdjusterBehavior (bool bradd, bool contradd) { - - if ((!brAdd && bradd) || (brAdd && !bradd)) - brightness->setLimits (-100, 100, 1, 0); - if ((!contrAdd && contradd) || (contrAdd && !contradd)) - contrast->setLimits (-100, 100, 1, 0); - - brAdd = bradd; - contrAdd = contradd; -} - -void LCurve::updateCurveBackgroundHistogram (unsigned* hist) { - - shape->updateBackgroundHistogram (hist); -} diff --git a/rtgui/lcurve.h b/rtgui/lcurve.h deleted file mode 100644 index 1cf353eb6..000000000 --- a/rtgui/lcurve.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * This file is part of RawTherapee. - * - * Copyright (c) 2004-2010 Gabor Horvath - * - * RawTherapee 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. - * - * RawTherapee 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 RawTherapee. If not, see . - */ -#ifndef _LCURVE_H_ -#define _LCURVE_H_ - -#include -#include -#include -#include -#include -#include - -class LCurve : public Gtk::VBox, public AdjusterListener, public FoldableToolPanel, public CurveListener { - - protected: - Adjuster* brightness; - Adjuster* contrast; - DiagonalCurveEditor* shape; - bool brAdd, contrAdd; - - public: - - LCurve (); - - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited=NULL); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited=NULL); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL); - void setBatchMode (bool batchMode); - void setAdjusterBehavior (bool bradd, bool contradd); - - void curveChanged (); - void adjusterChanged (Adjuster* a, double newval); - void updateCurveBackgroundHistogram (unsigned* hist); -}; - -#endif diff --git a/rtgui/navigator.cc b/rtgui/navigator.cc index bf86eb2df..d5e619dea 100644 --- a/rtgui/navigator.cc +++ b/rtgui/navigator.cc @@ -43,7 +43,7 @@ Navigator::Navigator () { LAB_B = Gtk::manage (new Gtk::Label ()); LAB_L = Gtk::manage (new Gtk::Label ()); - Gtk::Table* table = new Gtk::Table (3, 3); + Gtk::Table* table = Gtk::manage (new Gtk::Table (3, 3)); table->attach (*R, 0, 1, 0, 1, Gtk::EXPAND, Gtk::SHRINK, 0, 0); table->attach (*G, 0, 1, 1, 2, Gtk::EXPAND, Gtk::SHRINK, 0, 0); table->attach (*B, 0, 1, 2, 3, Gtk::EXPAND, Gtk::SHRINK, 0, 0); diff --git a/rtgui/partialpastedlg.cc b/rtgui/partialpastedlg.cc index 3e35083a7..d382fdf8c 100644 --- a/rtgui/partialpastedlg.cc +++ b/rtgui/partialpastedlg.cc @@ -44,16 +44,16 @@ PartialPasteDlg::PartialPasteDlg () { // options in detail: sharpen = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_SHARPENING"))); impden = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_IMPULSEDENOISE"))); - lumaden = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_LUMADENOISE"))); + //lumaden = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_LUMADENOISE"))); dirpyreq = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DIRPYREQUALIZER"))); - waveq = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_WAVELETEQUALIZER"))); + //waveq = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_WAVELETEQUALIZER"))); defringe = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DEFRINGE"))); // options in color: chmixer = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_CHANNELMIXER"))); - colorshift = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_COLORSHIFT"))); - colorboost = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_COLORBOOST"))); - colorden = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_COLORDENOISE"))); + //colorshift = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_COLORSHIFT"))); + //colorboost = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_COLORBOOST"))); + //colorden = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_COLORDENOISE"))); dirpyrden = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DIRPYRDENOISE"))); hsveq = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_HSVEQUALIZER"))); diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index 54cdff09e..8f313e355 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -201,7 +201,7 @@ Gtk::Widget* Preferences::getBatchProcPanel () { behTreeView->expand_all (); - chOverwriteOutputFile = new Gtk::CheckButton (M("PREFERENCES_OVERWRITEOUTPUTFILE")); + chOverwriteOutputFile = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_OVERWRITEOUTPUTFILE")) ); mvbpp->pack_start(*chOverwriteOutputFile, Gtk::PACK_SHRINK, 4); return mvbpp; @@ -366,13 +366,13 @@ Gtk::Widget* Preferences::getColorManagementPanel () { Gtk::Widget* Preferences::getGeneralPanel () { - Gtk::VBox* mvbsd = new Gtk::VBox (); + Gtk::VBox* mvbsd = Gtk::manage( new Gtk::VBox () ); - Gtk::Frame* fworklflow = new Gtk::Frame (M("PREFERENCES_WORKFLOW")); - Gtk::HBox* hbworkflow = new Gtk::HBox (); + Gtk::Frame* fworklflow = Gtk::manage( new Gtk::Frame (M("PREFERENCES_WORKFLOW")) ); + Gtk::HBox* hbworkflow = Gtk::manage( new Gtk::HBox () ); hbworkflow->set_border_width (4); - Gtk::Label* flayoutlab = new Gtk::Label (M("PREFERENCES_EDITORLAYOUT")+":"); - editorLayout = new Gtk::ComboBoxText (); + Gtk::Label* flayoutlab = Gtk::manage( new Gtk::Label (M("PREFERENCES_EDITORLAYOUT")+":") ); + editorLayout = Gtk::manage( new Gtk::ComboBoxText () ); editorLayout->set_size_request(45, -1); editorLayout->append_text (M("PREFERENCES_SINGLETAB")); @@ -385,17 +385,17 @@ Gtk::Widget* Preferences::getGeneralPanel () { hbworkflow->pack_start (*flayoutlab, Gtk::PACK_SHRINK, 4); hbworkflow->pack_start (*editorLayout); - Gtk::Label* lNextStart = new Gtk::Label (Glib::ustring(" (") + M("PREFERENCES_APPLNEXTSTARTUP") + ")"); + Gtk::Label* lNextStart = Gtk::manage( new Gtk::Label (Glib::ustring(" (") + M("PREFERENCES_APPLNEXTSTARTUP") + ")") ); hbworkflow->pack_end (*lNextStart, Gtk::PACK_SHRINK, 4); fworklflow->add (*hbworkflow); mvbsd->pack_start (*fworklflow, Gtk::PACK_SHRINK, 4); - Gtk::Frame* flang = new Gtk::Frame (M("PREFERENCES_DEFAULTLANG")); - Gtk::HBox* hblang = new Gtk::HBox (); + Gtk::Frame* flang = Gtk::manage( new Gtk::Frame (M("PREFERENCES_DEFAULTLANG")) ); + Gtk::HBox* hblang = Gtk::manage( new Gtk::HBox () ); hblang->set_border_width (4); - Gtk::Label* langlab = new Gtk::Label (M("PREFERENCES_SELECTLANG")+":"); - languages = new Gtk::ComboBoxText (); + Gtk::Label* langlab = Gtk::manage( new Gtk::Label (M("PREFERENCES_SELECTLANG")+":") ); + languages = Gtk::manage( new Gtk::ComboBoxText () ); std::vector langs; parseDir (argv0 + "/languages", langs, ""); @@ -405,24 +405,24 @@ Gtk::Widget* Preferences::getGeneralPanel () { } } - Gtk::Label* langw = new Gtk::Label (Glib::ustring(" (") + M("PREFERENCES_APPLNEXTSTARTUP") + ")"); + Gtk::Label* langw = Gtk::manage( new Gtk::Label (Glib::ustring(" (") + M("PREFERENCES_APPLNEXTSTARTUP") + ")") ); hblang->pack_start (*langlab, Gtk::PACK_SHRINK, 4); hblang->pack_start (*languages); hblang->pack_end (*langw, Gtk::PACK_SHRINK, 4); flang->add (*hblang); mvbsd->pack_start (*flang, Gtk::PACK_SHRINK, 4); - Gtk::Frame* ftheme = new Gtk::Frame (M("PREFERENCES_DEFAULTTHEME")); - Gtk::VBox* vbftheme = new Gtk::VBox (); + Gtk::Frame* ftheme = Gtk::manage( new Gtk::Frame (M("PREFERENCES_DEFAULTTHEME")) ); + Gtk::VBox* vbftheme = Gtk::manage( new Gtk::VBox () ); vbftheme->set_border_width(4); vbftheme->set_spacing(4); - Gtk::HBox* hbUseSystemTheme = new Gtk::HBox (); + Gtk::HBox* hbUseSystemTheme = Gtk::manage( new Gtk::HBox () ); hbUseSystemTheme->set_spacing(4); - chUseSystemTheme = new Gtk::CheckButton (M("PREFERENCES_USESYSTEMTHEME")); - Gtk::Label* useNextStart = new Gtk::Label (Glib::ustring("(") + M("PREFERENCES_APPLNEXTSTARTUP") + ")"); + chUseSystemTheme = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_USESYSTEMTHEME")) ); + Gtk::Label* useNextStart = Gtk::manage( new Gtk::Label (Glib::ustring("(") + M("PREFERENCES_APPLNEXTSTARTUP") + ")") ); - Gtk::Label* cutOverlayLabel = new Gtk::Label (M("PREFERENCES_CUTOVERLAYBRUSH") + ":"); - butCropCol=new Gtk::ColorButton(); + Gtk::Label* cutOverlayLabel = Gtk::manage( new Gtk::Label (M("PREFERENCES_CUTOVERLAYBRUSH") + ":") ); + butCropCol= Gtk::manage( new Gtk::ColorButton() ); butCropCol->set_use_alpha(true); hbUseSystemTheme->pack_start(*chUseSystemTheme, Gtk::PACK_SHRINK); @@ -431,10 +431,10 @@ Gtk::Widget* Preferences::getGeneralPanel () { hbUseSystemTheme->pack_end (*cutOverlayLabel, Gtk::PACK_SHRINK, 0); vbftheme->pack_start(*hbUseSystemTheme, Gtk::PACK_SHRINK, 0); - hbtheme = new Gtk::HBox (); + hbtheme = Gtk::manage( new Gtk::HBox () ); hbtheme->set_spacing (4); - Gtk::Label* themelab = new Gtk::Label (M("PREFERENCES_SELECTTHEME")+":"); - theme = new Gtk::ComboBoxText (); + Gtk::Label* themelab = Gtk::manage( new Gtk::Label (M("PREFERENCES_SELECTTHEME")+":") ); + theme = Gtk::manage( new Gtk::ComboBoxText () ); theme->append_text (Glib::ustring("(")+M("PREFERENCES_GTKTHEME")+")"); theme->set_active (0); @@ -443,8 +443,8 @@ Gtk::Widget* Preferences::getGeneralPanel () { for (int i=0; iappend_text (themes[i]); - Gtk::Label* fontlab = new Gtk::Label (M("PREFERENCES_SELECTFONT")+":"); - fontbutton = new Gtk::FontButton (); + Gtk::Label* fontlab = Gtk::manage( new Gtk::Label (M("PREFERENCES_SELECTFONT")+":") ); + fontbutton = Gtk::manage( new Gtk::FontButton ()); fontbutton->set_use_size(true); fontbutton->set_font_name(options.font); @@ -458,20 +458,20 @@ Gtk::Widget* Preferences::getGeneralPanel () { //----- - Gtk::HBox* hbcd = new Gtk::HBox (); + Gtk::HBox* hbcd = Gtk::manage( new Gtk::HBox () ); hbcd->set_spacing(4); - Gtk::Frame* frl = new Gtk::Frame (M("PREFERENCES_CLIPPINGIND")); - blinkClipped = new Gtk::CheckButton (M("PREFERENCES_BLINKCLIPPED")); - Gtk::VBox* vbrl = new Gtk::VBox (); + Gtk::Frame* frl = Gtk::manage( new Gtk::Frame (M("PREFERENCES_CLIPPINGIND"))); + blinkClipped = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_BLINKCLIPPED")) ); + Gtk::VBox* vbrl = Gtk::manage( new Gtk::VBox () ); vbrl->set_border_width(4); vbrl->set_spacing (4); vbrl->pack_start (*blinkClipped, Gtk::PACK_SHRINK, 0); - Gtk::HBox* vbhl = new Gtk::HBox (); + Gtk::HBox* vbhl = Gtk::manage( new Gtk::HBox () ); vbhl->set_spacing(4); - Gtk::Label* hll = new Gtk::Label (M("PREFERENCES_HLTHRESHOLD")+": "); - hlThresh = new Gtk::SpinButton (); + Gtk::Label* hll = Gtk::manage( new Gtk::Label (M("PREFERENCES_HLTHRESHOLD")+": ")); + hlThresh = Gtk::manage( new Gtk::SpinButton () ); hlThresh->set_digits (0); hlThresh->set_increments (1, 10); hlThresh->set_range (0, 255); @@ -480,10 +480,10 @@ Gtk::Widget* Preferences::getGeneralPanel () { vbrl->pack_start (*vbhl, Gtk::PACK_SHRINK, 0); - Gtk::HBox* vbsh = new Gtk::HBox (); + Gtk::HBox* vbsh = Gtk::manage( new Gtk::HBox () ); vbsh->set_spacing (4); - Gtk::Label* shl = new Gtk::Label (M("PREFERENCES_SHTHRESHOLD")+": "); - shThresh = new Gtk::SpinButton (); + Gtk::Label* shl = Gtk::manage( new Gtk::Label (M("PREFERENCES_SHTHRESHOLD")+": ") ); + shThresh = Gtk::manage( new Gtk::SpinButton () ); shThresh->show (); shThresh->set_digits (0); shThresh->set_increments (1, 10); @@ -496,15 +496,15 @@ Gtk::Widget* Preferences::getGeneralPanel () { hbcd->pack_start (*frl, true, true, 0); //----- - Gtk::Frame* fdf = new Gtk::Frame (M("PREFERENCES_DATEFORMATFRAME")); + Gtk::Frame* fdf = Gtk::manage( new Gtk::Frame (M("PREFERENCES_DATEFORMATFRAME")) ); - Gtk::HBox* hb6 = new Gtk::HBox (); + Gtk::HBox* hb6 = Gtk::manage( new Gtk::HBox () ); hb6->set_border_width (4); hb6->set_spacing (4); - Gtk::VBox* dfvb = new Gtk::VBox (); - Gtk::Label* dflab = new Gtk::Label (M("PREFERENCES_DATEFORMAT")+":"); + Gtk::VBox* dfvb = Gtk::manage( new Gtk::VBox () ); + Gtk::Label* dflab = Gtk::manage( new Gtk::Label (M("PREFERENCES_DATEFORMAT")+":") ); hb6->pack_start (*dflab, Gtk::PACK_SHRINK,4); - dateformat = new Gtk::Entry (); + dateformat = Gtk::manage( new Gtk::Entry () ); dateformat->set_tooltip_markup (M("PREFERENCES_DATEFORMATHINT")); dflab->set_tooltip_markup (M("PREFERENCES_DATEFORMATHINT")); hb6->pack_start (*dateformat); @@ -515,49 +515,49 @@ Gtk::Widget* Preferences::getGeneralPanel () { mvbsd->pack_start (*hbcd, Gtk::PACK_SHRINK, 4); //----- - Gtk::Frame* fdg = new Gtk::Frame (M("PREFERENCES_EXTERNALEDITOR")); - Gtk::VBox* dgvb = new Gtk::VBox (); + Gtk::Frame* fdg = Gtk::manage( new Gtk::Frame (M("PREFERENCES_EXTERNALEDITOR")) ); + Gtk::VBox* dgvb = Gtk::manage( new Gtk::VBox () ); - Gtk::HBox* hb7c = new Gtk::HBox (); - edOther = new Gtk::RadioButton (M("PREFERENCES_EDITORCMDLINE")+":"); + Gtk::HBox* hb7c = Gtk::manage( new Gtk::HBox () ); + edOther = Gtk::manage( new Gtk::RadioButton (M("PREFERENCES_EDITORCMDLINE")+":")); hb7c->pack_start (*edOther, Gtk::PACK_SHRINK,4); - editorToSendTo = new Gtk::Entry (); + editorToSendTo = Gtk::manage( new Gtk::Entry () ); hb7c->pack_start (*editorToSendTo); Gtk::RadioButton::Group ge = edOther->get_group(); #ifdef __APPLE__ - Gtk::HBox* hb7 = new Gtk::HBox (); - edGimp = new Gtk::RadioButton ("GIMP"); + Gtk::HBox* hb7 = Gtk::manage( new Gtk::HBox () ); + edGimp = Gtk::manage( new Gtk::RadioButton ("GIMP") ); hb7->pack_start (*edGimp, Gtk::PACK_SHRINK,4); dgvb->pack_start (*hb7, Gtk::PACK_SHRINK, 4); edGimp->set_group (ge); - Gtk::HBox* hb7b = new Gtk::HBox (); - edPS = new Gtk::RadioButton (M("PREFERENCES_PSPATH")+":"); + Gtk::HBox* hb7b = Gtk::manage( new Gtk::HBox () ); + edPS = Gtk::manage( new Gtk::RadioButton (M("PREFERENCES_PSPATH")+":")); hb7b->pack_start (*edPS, Gtk::PACK_SHRINK,4); - psDir = new Gtk::FileChooserButton (M("PREFERENCES_PSPATH"), Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER); + psDir = Gtk::manage( new Gtk::FileChooserButton (M("PREFERENCES_PSPATH"), Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER) ); hb7b->pack_start (*psDir); dgvb->pack_start (*hb7b, Gtk::PACK_SHRINK, 4); edPS->set_group (ge); #elif defined _WIN32 - Gtk::HBox* hb7 = new Gtk::HBox (); - edGimp = new Gtk::RadioButton (M("PREFERENCES_GIMPPATH")+":"); + Gtk::HBox* hb7 = Gtk::manage( new Gtk::HBox () ); + edGimp = Gtk::manage( new Gtk::RadioButton (M("PREFERENCES_GIMPPATH")+":") ); hb7->pack_start (*edGimp, Gtk::PACK_SHRINK,4); - gimpDir = new Gtk::FileChooserButton (M("PREFERENCES_GIMPPATH"), Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER); + gimpDir = Gtk::manage( new Gtk::FileChooserButton (M("PREFERENCES_GIMPPATH"), Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER) ); hb7->pack_start (*gimpDir); dgvb->pack_start (*hb7, Gtk::PACK_SHRINK, 4); edGimp->set_group (ge); - Gtk::HBox* hb7b = new Gtk::HBox (); - edPS = new Gtk::RadioButton (M("PREFERENCES_PSPATH")+":"); + Gtk::HBox* hb7b = Gtk::manage( new Gtk::HBox ()); + edPS = Gtk::manage( new Gtk::RadioButton (M("PREFERENCES_PSPATH")+":") ); hb7b->pack_start (*edPS, Gtk::PACK_SHRINK,4); - psDir = new Gtk::FileChooserButton (M("PREFERENCES_PSPATH"), Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER); + psDir = Gtk::manage( new Gtk::FileChooserButton (M("PREFERENCES_PSPATH"), Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER) ); hb7b->pack_start (*psDir); dgvb->pack_start (*hb7b, Gtk::PACK_SHRINK, 4); edPS->set_group (ge); #else - Gtk::HBox* hb7 = new Gtk::HBox (); - edGimp = new Gtk::RadioButton ("GIMP"); + Gtk::HBox* hb7 = Gtk::manage( new Gtk::HBox () ); + edGimp = Gtk::manage( new Gtk::RadioButton ("GIMP") ); hb7->pack_start (*edGimp, Gtk::PACK_SHRINK,4); dgvb->pack_start (*hb7, Gtk::PACK_SHRINK, 4); edGimp->set_group (ge); @@ -579,30 +579,30 @@ Gtk::Widget* Preferences::getGeneralPanel () { Gtk::Widget* Preferences::getFileBrowserPanel () { - Gtk::VBox* mvbfb = new Gtk::VBox (); + Gtk::VBox* mvbfb = Gtk::manage( new Gtk::VBox () ); mvbfb->set_border_width (4); - Gtk::Frame* fsd = new Gtk::Frame (M("PREFERENCES_STARTUPIMDIR")); + Gtk::Frame* fsd = Gtk::manage( new Gtk::Frame (M("PREFERENCES_STARTUPIMDIR")) ); - sdcurrent = new Gtk::RadioButton (M("PREFERENCES_DIRSOFTWARE")); - sdlast = new Gtk::RadioButton (M("PREFERENCES_DIRLAST")); - sdhome = new Gtk::RadioButton (M("PREFERENCES_DIRHOME")); - sdother = new Gtk::RadioButton (M("PREFERENCES_DIROTHER")+": "); - startupdir = new Gtk::Entry (); + sdcurrent = Gtk::manage( new Gtk::RadioButton (M("PREFERENCES_DIRSOFTWARE")) ); + sdlast = Gtk::manage( new Gtk::RadioButton (M("PREFERENCES_DIRLAST")) ); + sdhome = Gtk::manage( new Gtk::RadioButton (M("PREFERENCES_DIRHOME")) ); + sdother = Gtk::manage( new Gtk::RadioButton (M("PREFERENCES_DIROTHER")+": ") ); + startupdir = Gtk::manage( new Gtk::Entry () ); - Gtk::Button* sdselect = new Gtk::Button (""); - sdselect->set_image (*(new Gtk::Image (Gtk::StockID("gtk-open"), Gtk::ICON_SIZE_BUTTON))); + Gtk::Button* sdselect = Gtk::manage( new Gtk::Button ("") ); + sdselect->set_image (*Gtk::manage(new Gtk::Image (Gtk::StockID("gtk-open"), Gtk::ICON_SIZE_BUTTON))); Gtk::RadioButton::Group opts = sdcurrent->get_group(); sdlast->set_group (opts); sdhome->set_group (opts); sdother->set_group (opts); - Gtk::VBox* vbsd = new Gtk::VBox (); + Gtk::VBox* vbsd = Gtk::manage( new Gtk::VBox () ); vbsd->pack_start (*sdcurrent, Gtk::PACK_SHRINK,0); vbsd->pack_start (*sdlast, Gtk::PACK_SHRINK,0); vbsd->pack_start (*sdhome, Gtk::PACK_SHRINK,0); - Gtk::HBox* otherbox = new Gtk::HBox (); + Gtk::HBox* otherbox = Gtk::manage( new Gtk::HBox () ); otherbox->pack_start (*sdother, Gtk::PACK_SHRINK); otherbox->pack_start (*startupdir); otherbox->pack_end (*sdselect, Gtk::PACK_SHRINK, 4); @@ -617,13 +617,13 @@ Gtk::Widget* Preferences::getFileBrowserPanel () { //--- - Gtk::Frame* fro = new Gtk::Frame (M("PREFERENCES_FBROWSEROPTS")); - showDateTime = new Gtk::CheckButton (M("PREFERENCES_SHOWDATETIME")); - showBasicExif = new Gtk::CheckButton (M("PREFERENCES_SHOWBASICEXIF")); - overlayedFileNames = new Gtk::CheckButton (M("PREFERENCES_OVERLAY_FILENAMES")); - ckbInternalThumbIfUntouched = new Gtk::CheckButton (M("PREFERENCES_INTERNALTHUMBIFUNTOUCHED")); + Gtk::Frame* fro = Gtk::manage( new Gtk::Frame (M("PREFERENCES_FBROWSEROPTS")) ); + showDateTime = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_SHOWDATETIME")) ); + showBasicExif = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_SHOWBASICEXIF")) ); + Gtk::VBox* vbro = Gtk::manage( new Gtk::VBox () ); + overlayedFileNames = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_OVERLAY_FILENAMES")) ); + ckbInternalThumbIfUntouched = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_INTERNALTHUMBIFUNTOUCHED"))); - Gtk::VBox* vbro = new Gtk::VBox (); vbro->set_border_width (4); vbro->pack_start (*showDateTime, Gtk::PACK_SHRINK, 0); vbro->pack_start (*showBasicExif, Gtk::PACK_SHRINK, 0); @@ -632,27 +632,27 @@ Gtk::Widget* Preferences::getFileBrowserPanel () { fro->add (*vbro); - Gtk::Frame* fre = new Gtk::Frame (M("PREFERENCES_PARSEDEXT")); - Gtk::VBox* vbre = new Gtk::VBox (); + Gtk::Frame* fre = Gtk::manage( new Gtk::Frame (M("PREFERENCES_PARSEDEXT")) ); + Gtk::VBox* vbre = Gtk::manage( new Gtk::VBox () ); vbre->set_border_width (4); - Gtk::HBox* hb0 = new Gtk::HBox (); - Gtk::Label* elab = new Gtk::Label (M("PREFERENCES_PARSEDEXTADD")+":"); + Gtk::HBox* hb0 = Gtk::manage( new Gtk::HBox () ); + Gtk::Label* elab = Gtk::manage( new Gtk::Label (M("PREFERENCES_PARSEDEXTADD")+":") ); hb0->pack_start (*elab, Gtk::PACK_SHRINK, 4); - extension = new Gtk::Entry (); + extension = Gtk::manage( new Gtk::Entry () ); extension->set_width_chars(5); hb0->pack_start (*extension); - addExt = new Gtk::Button (); - delExt = new Gtk::Button (); + addExt = Gtk::manage( new Gtk::Button () ); + delExt = Gtk::manage( new Gtk::Button () ); addExt->set_tooltip_text (M("PREFERENCES_PARSEDEXTADDHINT")); delExt->set_tooltip_text (M("PREFERENCES_PARSEDEXTDELHINT")); - Gtk::Image* addExtImg = new Gtk::Image (argv0+"/images/list-add12.png"); - Gtk::Image* delExtImg = new Gtk::Image (argv0+"/images/list-remove12r.png"); + Gtk::Image* addExtImg = Gtk::manage( new Gtk::Image (argv0+"/images/list-add12.png") ); + Gtk::Image* delExtImg = Gtk::manage( new Gtk::Image (argv0+"/images/list-remove12r.png") ); addExt->add (*addExtImg); delExt->add (*delExtImg); hb0->pack_end (*delExt, Gtk::PACK_SHRINK, 4); hb0->pack_end (*addExt, Gtk::PACK_SHRINK, 4); - extensions = new Gtk::TreeView (); - Gtk::ScrolledWindow* hscrollw = new Gtk::ScrolledWindow (); + extensions = Gtk::manage( new Gtk::TreeView () ); + Gtk::ScrolledWindow* hscrollw = Gtk::manage( new Gtk::ScrolledWindow () ); hscrollw->set_policy (Gtk::POLICY_AUTOMATIC, Gtk::POLICY_ALWAYS); hscrollw->add (*extensions); extensionModel = Gtk::ListStore::create (extensionColumns); @@ -665,27 +665,27 @@ Gtk::Widget* Preferences::getFileBrowserPanel () { fre->add (*vbre); - Gtk::Frame* frc = new Gtk::Frame (M("PREFERENCES_CACHEOPTS")); - Gtk::VBox* vbc = new Gtk::VBox (); + Gtk::Frame* frc = Gtk::manage( new Gtk::Frame (M("PREFERENCES_CACHEOPTS")) ); + Gtk::VBox* vbc = Gtk::manage( new Gtk::VBox () ); frc->add (*vbc); vbc->set_border_width (4); - Gtk::Label* cflab = new Gtk::Label (M("PREFERENCES_CACHETHUMBFORM")+":"); - cformat = new Gtk::ComboBoxText (); + Gtk::Label* cflab = Gtk::manage( new Gtk::Label (M("PREFERENCES_CACHETHUMBFORM")+":") ); + cformat = Gtk::manage( new Gtk::ComboBoxText () ); cformat->set_size_request(50, -1); cformat->append_text (M("PREFERENCES_CACHEFORMAT1")); cformat->append_text (M("PREFERENCES_CACHEFORMAT2")); cformat->append_text (M("PREFERENCES_CACHEFORMAT1")+", 16 bit"); cformat->signal_changed().connect( sigc::mem_fun(*this, &Preferences::cacheFormatComboChanged) ); cacheFormatComboChanged(); // update the tooltip - Gtk::HBox* hb2 = new Gtk::HBox (); + Gtk::HBox* hb2 = Gtk::manage( new Gtk::HBox () ); hb2->pack_start (*cflab, Gtk::PACK_SHRINK, 4); hb2->pack_start (*cformat); vbc->pack_start (*hb2, Gtk::PACK_SHRINK, 4); - Gtk::HBox* hb3 = new Gtk::HBox (); - Gtk::Label* chlab = new Gtk::Label (M("PREFERENCES_CACHETHUMBHEIGHT")+":"); - maxThumbSize = new Gtk::SpinButton (); + Gtk::HBox* hb3 = Gtk::manage( new Gtk::HBox () ); + Gtk::Label* chlab = Gtk::manage( new Gtk::Label (M("PREFERENCES_CACHETHUMBHEIGHT")+":") ); + maxThumbSize = Gtk::manage( new Gtk::SpinButton () ); hb3->pack_start (*chlab, Gtk::PACK_SHRINK, 4); hb3->pack_start (*maxThumbSize, Gtk::PACK_SHRINK, 4); @@ -694,9 +694,9 @@ Gtk::Widget* Preferences::getFileBrowserPanel () { maxThumbSize->set_range (40, 800); vbc->pack_start (*hb3, Gtk::PACK_SHRINK, 4); - Gtk::HBox* hb4 = new Gtk::HBox (); - Gtk::Label* celab = new Gtk::Label (M("PREFERENCES_CACHEMAXENTRIES")+":"); - maxCacheEntries = new Gtk::SpinButton (); + Gtk::HBox* hb4 = Gtk::manage( new Gtk::HBox () ); + Gtk::Label* celab = Gtk::manage( new Gtk::Label (M("PREFERENCES_CACHEMAXENTRIES")+":") ); + maxCacheEntries = Gtk::manage( new Gtk::SpinButton () ); hb4->pack_start (*celab, Gtk::PACK_SHRINK, 4); hb4->pack_start (*maxCacheEntries, Gtk::PACK_SHRINK, 4); @@ -705,17 +705,17 @@ Gtk::Widget* Preferences::getFileBrowserPanel () { maxCacheEntries->set_range (10, 100000); vbc->pack_start (*hb4, Gtk::PACK_SHRINK, 4); - Gtk::HBox* hb5 = new Gtk::HBox (); - clearThumbnails = new Gtk::Button (M("PREFERENCES_CACHECLEARTHUMBS")); - clearProfiles = new Gtk::Button (M("PREFERENCES_CACHECLEARPROFILES")); - clearAll = new Gtk::Button (M("PREFERENCES_CACHECLEARALL")); + Gtk::HBox* hb5 = Gtk::manage( new Gtk::HBox () ); + clearThumbnails = Gtk::manage( new Gtk::Button (M("PREFERENCES_CACHECLEARTHUMBS")) ); + clearProfiles = Gtk::manage( new Gtk::Button (M("PREFERENCES_CACHECLEARPROFILES")) ); + clearAll = Gtk::manage( new Gtk::Button (M("PREFERENCES_CACHECLEARALL")) ); hb5->pack_start (*clearThumbnails, Gtk::PACK_SHRINK, 4); hb5->pack_start (*clearProfiles, Gtk::PACK_SHRINK, 4); hb5->pack_start (*clearAll, Gtk::PACK_SHRINK, 4); vbc->pack_start (*hb5, Gtk::PACK_SHRINK, 4); - Gtk::HBox* hb6 = new Gtk::HBox (); - Gtk::VBox* vb6 = new Gtk::VBox (); + Gtk::HBox* hb6 = Gtk::manage( new Gtk::HBox () ); + Gtk::VBox* vb6 = Gtk::manage( new Gtk::VBox () ); vb6->pack_start (*fro); vb6->pack_end (*frc); @@ -746,7 +746,7 @@ Gtk::Widget* Preferences::getSoundPanel () { pSnd->pack_start (*lSndHelp, Gtk::PACK_SHRINK, 4); // BatchQueueDone - Gtk::HBox* pBatchQueueDone = new Gtk::HBox(); + Gtk::HBox* pBatchQueueDone = Gtk::manage( new Gtk::HBox() ); Gtk::Label* lSndBatchQueueDone = Gtk::manage (new Gtk::Label (M("PREFERENCES_SND_BATCHQUEUEDONE") + Glib::ustring(":"))); pBatchQueueDone->pack_start (*lSndBatchQueueDone, Gtk::PACK_SHRINK, 12); @@ -757,7 +757,7 @@ Gtk::Widget* Preferences::getSoundPanel () { pSnd->pack_start (*pBatchQueueDone, Gtk::PACK_SHRINK, 4); // LngEditProcDone - Gtk::HBox* pSndLngEditProcDone = new Gtk::HBox(); + Gtk::HBox* pSndLngEditProcDone = Gtk::manage( new Gtk::HBox() ); Gtk::Label* lSndLngEditProcDone = Gtk::manage (new Gtk::Label (M("PREFERENCES_SND_LNGEDITPROCDONE") + Glib::ustring(":"))); pSndLngEditProcDone->pack_start (*lSndLngEditProcDone, Gtk::PACK_SHRINK, 12); @@ -768,7 +768,7 @@ Gtk::Widget* Preferences::getSoundPanel () { Gtk::Label* lSndLngEditProcDoneSecs = Gtk::manage (new Gtk::Label (M("PREFERENCES_SND_TRESHOLDSECS") + Glib::ustring(":"))); pSndLngEditProcDone->pack_start (*lSndLngEditProcDoneSecs, Gtk::PACK_SHRINK, 12); - spbSndLngEditProcDoneSecs = new Gtk::SpinButton (); + spbSndLngEditProcDoneSecs = Gtk::manage( new Gtk::SpinButton () ); spbSndLngEditProcDoneSecs->set_digits (1); spbSndLngEditProcDoneSecs->set_increments (0.5, 1); spbSndLngEditProcDoneSecs->set_range (0, 10); diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc index 5200fc2e0..4ddd52586 100644 --- a/rtgui/rtwindow.cc +++ b/rtgui/rtwindow.cc @@ -54,7 +54,7 @@ RTWindow::RTWindow () if(simpleEditor) { - epanel = new EditorPanel (NULL); + epanel = Gtk::manage( new EditorPanel (NULL) ); epanel->setParent (this); add (*epanel); show_all (); @@ -71,7 +71,7 @@ RTWindow::RTWindow () mainNB->set_scrollable (true); mainNB->signal_switch_page().connect_notify( sigc::mem_fun(*this, &RTWindow::on_mainNB_switch_page) ); - fpanel = new FilePanel (); + fpanel = Gtk::manage ( new FilePanel () ); fpanel->setParent (this); // decorate tab @@ -80,7 +80,7 @@ RTWindow::RTWindow () Gtk::VBox* vbf = Gtk::manage (new Gtk::VBox ()); vbf->pack_start (*Gtk::manage (new Gtk::Image (Gtk::Stock::DIRECTORY, Gtk::ICON_SIZE_MENU))); - Gtk::Label* l=new Gtk::Label (Glib::ustring(" ") + M("MAIN_FRAME_FILEBROWSER")); + Gtk::Label* l= Gtk::manage(new Gtk::Label (Glib::ustring(" ") + M("MAIN_FRAME_FILEBROWSER"))); l->set_angle (90); vbf->pack_start (*l); vbf->set_spacing (2); @@ -97,22 +97,22 @@ RTWindow::RTWindow () mainNB->append_page (*fpanel, *hbf); } - bpanel = new BatchQueuePanel (); + bpanel = Gtk::manage ( new BatchQueuePanel () ); bpanel->setParent (this); // decorate tab, the label is unimportant since its updated in batchqueuepanel anyway - Gtk::Label* lbq = new Gtk::Label (M("MAIN_FRAME_BATCHQUEUE")); + Gtk::Label* lbq = Gtk::manage ( new Gtk::Label (M("MAIN_FRAME_BATCHQUEUE")) ); mainNB->append_page (*bpanel, *lbq); // epanel is only for single tab mode - epanel = new EditorPanel (fpanel); + epanel = Gtk::manage ( new EditorPanel (fpanel) ); epanel->setParent (this); // decorate tab if (options.mainNBVertical) { Gtk::VBox* vbe = Gtk::manage (new Gtk::VBox ()); vbe->pack_start (*Gtk::manage (new Gtk::Image (argv0+"/images/logoicon16.png"))); - Gtk::Label* l=new Gtk::Label( Glib::ustring(" ") + M("MAIN_FRAME_EDITOR") ); + Gtk::Label* l=Gtk::manage (new Gtk::Label( Glib::ustring(" ") + M("MAIN_FRAME_EDITOR") )); //l->set_markup(Glib::ustring("Editor")); Bold difficult to read l->set_angle (90); vbe->pack_start (*l); diff --git a/rtgui/saveasdlg.cc b/rtgui/saveasdlg.cc index d985100cf..fb6b38767 100644 --- a/rtgui/saveasdlg.cc +++ b/rtgui/saveasdlg.cc @@ -26,7 +26,7 @@ SaveAsDialog::SaveAsDialog (Glib::ustring initialDir) { Gtk::VBox* vbox = get_vbox (); - fchooser = new Gtk::FileChooserWidget (Gtk::FILE_CHOOSER_ACTION_SAVE); + fchooser = Gtk::manage( new Gtk::FileChooserWidget (Gtk::FILE_CHOOSER_ACTION_SAVE) ); fchooser->set_current_folder (initialDir); filter_jpg.set_name(M("SAVEDLG_JPGFILTER")); @@ -40,35 +40,35 @@ SaveAsDialog::SaveAsDialog (Glib::ustring initialDir) { vbox->pack_start (*fchooser); - Gtk::HSeparator* hsep1 = new Gtk::HSeparator (); + Gtk::HSeparator* hsep1 = Gtk::manage( new Gtk::HSeparator () ); vbox->pack_start (*hsep1, Gtk::PACK_SHRINK, 2); // Unique filename option // ~~~~~~~~~~~~~~~~~~~~~~ - autoSuffix = new Gtk::CheckButton (M("SAVEDLG_AUTOSUFFIX")); + autoSuffix = Gtk::manage( new Gtk::CheckButton (M("SAVEDLG_AUTOSUFFIX")) ); autoSuffix->set_active(options.autoSuffix); vbox->pack_start (*autoSuffix, Gtk::PACK_SHRINK, 4); - Gtk::HSeparator* hsep2 = new Gtk::HSeparator (); + Gtk::HSeparator* hsep2 = Gtk::manage( new Gtk::HSeparator () ); vbox->pack_start (*hsep2, Gtk::PACK_SHRINK, 2); // Output Options // ~~~~~~~~~~~~~~ - formatOpts = new SaveFormatPanel (); + formatOpts = Gtk::manage( new SaveFormatPanel () ); formatOpts->init (options.saveFormat); formatOpts->setListener (this); vbox->pack_start (*formatOpts, Gtk::PACK_SHRINK, 4); - Gtk::HSeparator* hsep3 = new Gtk::HSeparator (); + Gtk::HSeparator* hsep3 = Gtk::manage( new Gtk::HSeparator () ); vbox->pack_start (*hsep3, Gtk::PACK_SHRINK, 2); // queue/immediate // ~~~~~~~~~~~~~ - immediately = new Gtk::RadioButton (M("SAVEDLG_SAVEIMMEDIATELY")); - putToQueueHead = new Gtk::RadioButton (M("SAVEDLG_PUTTOQUEUEHEAD")); - putToQueueTail = new Gtk::RadioButton (M("SAVEDLG_PUTTOQUEUETAIL")); + immediately = Gtk::manage( new Gtk::RadioButton (M("SAVEDLG_SAVEIMMEDIATELY")) ); + putToQueueHead = Gtk::manage( new Gtk::RadioButton (M("SAVEDLG_PUTTOQUEUEHEAD")) ); + putToQueueTail = Gtk::manage( new Gtk::RadioButton (M("SAVEDLG_PUTTOQUEUETAIL")) ); vbox->pack_start (*immediately, Gtk::PACK_SHRINK, 4); vbox->pack_start (*putToQueueHead, Gtk::PACK_SHRINK, 4); vbox->pack_start (*putToQueueTail, Gtk::PACK_SHRINK, 4); @@ -79,11 +79,11 @@ SaveAsDialog::SaveAsDialog (Glib::ustring initialDir) { // buttons // ~~~~~~ - Gtk::Button* ok = new Gtk::Button (M("GENERAL_OK")); - Gtk::Button* cancel = new Gtk::Button (M("GENERAL_CANCEL")); + Gtk::Button* ok = Gtk::manage( new Gtk::Button (M("GENERAL_OK")) ); + Gtk::Button* cancel = Gtk::manage( new Gtk::Button (M("GENERAL_CANCEL")) ); - ok->set_image (*(new Gtk::Image (Gtk::StockID("gtk-ok"), Gtk::ICON_SIZE_BUTTON))); - cancel->set_image (*(new Gtk::Image (Gtk::StockID("gtk-cancel"), Gtk::ICON_SIZE_BUTTON))); + ok->set_image (*Gtk::manage(new Gtk::Image (Gtk::StockID("gtk-ok"), Gtk::ICON_SIZE_BUTTON))); + cancel->set_image (*Gtk::manage(new Gtk::Image (Gtk::StockID("gtk-cancel"), Gtk::ICON_SIZE_BUTTON))); ok->signal_clicked().connect( sigc::mem_fun(*this, &SaveAsDialog::okPressed) ); cancel->signal_clicked().connect( sigc::mem_fun(*this, &SaveAsDialog::cancelPressed) ); diff --git a/rtgui/thumbbrowserbase.cc b/rtgui/thumbbrowserbase.cc index cbfc8c0f5..5cfad1d00 100644 --- a/rtgui/thumbbrowserbase.cc +++ b/rtgui/thumbbrowserbase.cc @@ -1,657 +1,657 @@ -/* - * This file is part of RawTherapee. - * - * RawTherapee 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. - * - * RawTherapee 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 RawTherapee. If not, see . - */ -#include -#include -#include -#include -#include - -ThumbBrowserBase::ThumbBrowserBase () - : lastClicked(NULL), previewHeight(options.thumbSize) { - inTabMode=false; // corresponding to take thumbSize - inW = -1; inH = -1; - - Gtk::HBox* hb1 = new Gtk::HBox (); - Gtk::HBox* hb2 = new Gtk::HBox (); - Gtk::Frame* frame = new Gtk::Frame (); - frame->add (internal); - frame->set_shadow_type (Gtk::SHADOW_IN ); - hb1->pack_start (*frame); - hb1->pack_end (vscroll, Gtk::PACK_SHRINK, 0); - - pack_start (*hb1); - - hb2->pack_start (hscroll); - - pack_start (*hb2,Gtk::PACK_SHRINK, 0); - - internal.setParent (this); - - show_all (); - - hscroll.set_update_policy (Gtk::UPDATE_CONTINUOUS); - vscroll.set_update_policy (Gtk::UPDATE_CONTINUOUS); - - vscroll.signal_value_changed().connect( sigc::mem_fun(*this, &ThumbBrowserBase::scrollChanged) ); - hscroll.signal_value_changed().connect( sigc::mem_fun(*this, &ThumbBrowserBase::scrollChanged) ); - - internal.signal_size_allocate().connect( sigc::mem_fun(*this, &ThumbBrowserBase::internalAreaResized) ); - signal_style_changed().connect( sigc::mem_fun(*this, &ThumbBrowserBase::styleChanged) ); -} - -void ThumbBrowserBase::scrollChanged () { - // TODO: Check for Linux - #ifdef WIN32 - Glib::Mutex::Lock lock(entryMutex); - #endif - - for (int i=0; isetOffset ((int)(hscroll.get_value()), (int)(vscroll.get_value())); - - internal.setPosition ((int)(hscroll.get_value()), (int)(vscroll.get_value())); - - if (!internal.isDirty()) { - internal.setDirty (); - internal.queue_draw (); -// gdk_window_process_updates (get_window()->gobj(), true); - } -} - -void ThumbBrowserBase::scroll (int direction) { - if (arrangement==TB_Vertical) - vscroll.set_value (vscroll.get_value() + (direction==GDK_SCROLL_DOWN ? +1 : -1) * vscroll.get_adjustment()->get_step_increment()); - else - hscroll.set_value (hscroll.get_value() + (direction==GDK_SCROLL_DOWN ? +1 : -1) * hscroll.get_adjustment()->get_step_increment()); -} - -void ThumbBrowserBase::scrollPage (int direction) { - if (arrangement==TB_Vertical) - vscroll.set_value (vscroll.get_value() + (direction==GDK_SCROLL_DOWN ? +1 : -1) * vscroll.get_adjustment()->get_page_increment()); - else - hscroll.set_value (hscroll.get_value() + (direction==GDK_SCROLL_DOWN ? +1 : -1) * hscroll.get_adjustment()->get_page_increment()); -} - -void ThumbBrowserBase::resizeThumbnailArea (int w, int h) { - - inW = w; - inH = h; - - if (hscroll.get_value() + internal.get_width() > inW) - hscroll.set_value (inW - internal.get_width()); - if (vscroll.get_value() + internal.get_height() > inH) - vscroll.set_value (inH - internal.get_height()); - - configScrollBars (); -} - -void ThumbBrowserBase::internalAreaResized (Gtk::Allocation& req) { - - if (inW>0 && inH>0) { - configScrollBars (); - redraw (); - } -} - -void ThumbBrowserBase::configScrollBars () { - - if (inW>0 && inH>0) { - - int iw = internal.get_width (); - int ih = internal.get_height (); - - hscroll.get_adjustment()->set_upper (inW); - vscroll.get_adjustment()->set_upper (inH); - hscroll.get_adjustment()->set_lower (0); - vscroll.get_adjustment()->set_lower (0); - hscroll.get_adjustment()->set_step_increment (32); - vscroll.get_adjustment()->set_step_increment (32); - hscroll.get_adjustment()->set_page_increment (iw); - vscroll.get_adjustment()->set_page_increment (ih); - hscroll.get_adjustment()->set_page_size (iw); - vscroll.get_adjustment()->set_page_size (ih); - - if(iw>=inW) - hscroll.hide(); - else - hscroll.show(); - - if(ih>=inH) - vscroll.hide(); - else - vscroll.show(); - } -} - -void ThumbBrowserBase::arrangeFiles () { - // TODO: Check for Linux - #ifdef WIN32 - Glib::Mutex::Lock lock(entryMutex); - #endif - - int N = fd.size (); - // apply filter - for (int i=0; ifiltered = !checkFilter (fd[i]); - - int rowHeight = 0; - // compute size of the items - for (int i=0; ifiltered && fd[i]->getMinimalHeight() > rowHeight) - rowHeight = fd[i]->getMinimalHeight (); - - if (arrangement==TB_Horizontal) { - - int numOfRows = 1; -// if (rowHeight>0) { -// numOfRows = (internal.get_height()+rowHeight/2)/rowHeight; -// if (numOfRows<1) -// numOfRows = 1; -// } - - int ct = 0; - int currx = 0; int curry = 0; - while (ctgetMinimalWidth() > maxw) - maxw = fd[ct+i]->getMinimalWidth (); - - // arrange items in the column - curry = 0; - for (int i=0; ctfiltered) - fd[ct++]->drawable = false; - if (ctsetPosition (currx, curry, maxw, rowHeight); - fd[ct]->drawable = true; - curry += rowHeight; - } - } - currx += maxw; - } - resizeThumbnailArea (currx, numOfRows*rowHeight); - } - else { - int availWidth = internal.get_width(); - // initial number of columns - int numOfCols = 0; - int currColNum = 0; - int colsWidth = 0; - for (int i=0; ifiltered && colsWidth + fd[i]->getMinimalWidth() <= availWidth) { - colsWidth += fd[numOfCols]->getMinimalWidth (); - numOfCols++; - } - if (numOfCols<1) - numOfCols = 1; - std::vector colWidths; - for (; numOfCols>0; numOfCols--) { - // compute column widths - colWidths.resize (numOfCols); - for (int i=0; ifiltered && fd[i]->getMinimalWidth() > colWidths[j%numOfCols]) - colWidths[j%numOfCols] = fd[i]->getMinimalWidth (); - if (!fd[i]->filtered) - j++; - } - // if not wider than the space available, arrange it and we are ready - colsWidth = 0; - for (int i=0; ifiltered) - fd[ct++]->drawable = false; - if (ctsetPosition (currx, curry, colWidths[i%numOfCols], rowHeight); - fd[ct]->drawable = true; - currx += colWidths[i%numOfCols]; - } - } - if (currx>0) // there were thumbnails placed in the row - curry += rowHeight; - } - resizeThumbnailArea (colsWidth, curry); - } -} - - -void ThumbBrowserBase::Internal::on_realize() -{ - Cairo::FontOptions cfo; - cfo.set_antialias (Cairo::ANTIALIAS_SUBPIXEL); - get_pango_context()->set_cairo_font_options (cfo); - - Gtk::DrawingArea::on_realize(); - Glib::RefPtr window = get_window(); - set_flags (Gtk::CAN_FOCUS); - add_events(Gdk::EXPOSURE_MASK | Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::POINTER_MOTION_MASK | Gdk::SCROLL_MASK | Gdk::KEY_PRESS_MASK); - gc_ = Gdk::GC::create(window); - set_has_tooltip (true); - signal_query_tooltip().connect( sigc::mem_fun(*this, &ThumbBrowserBase::Internal::on_query_tooltip) ); -} - -bool ThumbBrowserBase::Internal::on_query_tooltip (int x, int y, bool keyboard_tooltip, const Glib::RefPtr& tooltip) { - // TODO: Check for Linux - #ifdef WIN32 - Glib::Mutex::Lock lock(parent->entryMutex); - #endif - - Glib::ustring ttip = ""; - for (int i=0; ifd.size(); i++) - if (parent->fd[i]->drawable && parent->fd[i]->inside (x, y)) { - ttip = parent->fd[i]->getToolTip (x, y); - break; - } - if (ttip!="") { - tooltip->set_text (ttip); - return true; - } - else - return false; -} - -void ThumbBrowserBase::styleChanged (const Glib::RefPtr& style) { - - refreshThumbImages (); -} - -ThumbBrowserBase::Internal::Internal () : ofsX(0), ofsY(0), parent(NULL), dirty(true) { -} - -void ThumbBrowserBase::Internal::setParent (ThumbBrowserBase* p) { - parent = p; -} - -void ThumbBrowserBase::Internal::setPosition (int x, int y) { - ofsX = x; - ofsY = y; -} - -bool ThumbBrowserBase::Internal::on_key_press_event (GdkEventKey* event) { - return parent->keyPressed (event); -} - -bool ThumbBrowserBase::Internal::on_button_press_event (GdkEventButton* event) { - grab_focus (); - - parent->eventTime = event->time; - - parent->buttonPressed ((int)event->x, (int)event->y, event->button, event->type, event->state, 0, 0, get_width(), get_height()); - Glib::RefPtr window = get_window(); - - GdkRectangle rect; - rect.x = 0; - rect.y = 0; - window->get_size (rect.width, rect.height); - - gdk_window_invalidate_rect (window->gobj(), &rect, true); - gdk_window_process_updates (window->gobj(), true); - - return true; -} - -void ThumbBrowserBase::buttonPressed (int x, int y, int button, GdkEventType type, int state, int clx, int cly, int clw, int clh) { - ThumbBrowserEntryBase* fileDescr = NULL; - bool handled = false; - - // TODO: Check for Linux - #ifdef WIN32 - Glib::Mutex::Lock lock(entryMutex); - #endif - - for (int i=0; idrawable) { - if (fd[i]->inside (x, y) && fd[i]->insideWindow (clx, cly, clw, clh)) - fileDescr = fd[i]; - bool b = fd[i]->pressNotify (button, type, state, x, y); - handled = handled || b; - } - - if (handled || (fileDescr && fileDescr->processing)) - return; - - if (selected.size()==1 && type==GDK_2BUTTON_PRESS && button==1) - doubleClicked (selected[0]); - else if (button==1 && type==GDK_BUTTON_PRESS) { - if (fileDescr && state & GDK_SHIFT_MASK) { - if (selected.size()==0) { - selected.push_back (fileDescr); - fileDescr->selected = true; - lastClicked = fileDescr; - selectionChanged (); - } - else { - // find the start and the end of the selection interval - int startx = fd.size()-1; - if (lastClicked) { - for (; startx>=0; startx--) - if (fd[startx]==lastClicked) - break; - } - else { - for (; startx>=0; startx--) - if (fd[startx]==selected[0]) - break; - } - int endx = 0; - for (; endxselected = false; - selected.clear (); - // select thumbnails in the interval - for (int i=startx; i<=endx; i++) { - if (!fd[i]->filtered) { - fd[i]->selected = true; - selected.push_back (fd[i]); - } - } - selectionChanged (); - } - } - else if (fileDescr && state & GDK_CONTROL_MASK) { - std::vector::iterator i = std::find (selected.begin(), selected.end(), fileDescr); - if (i!=selected.end()) { - (*i)->selected = false; - selected.erase (i); - } - else { - selected.push_back (fileDescr); - fileDescr->selected = true; - } - lastClicked = fileDescr; - selectionChanged (); - } - else { - for (int i=0; iselected = false; - selected.clear (); - if (fileDescr) { - selected.push_back (fileDescr); - fileDescr->selected = true; - } - lastClicked = fileDescr; - selectionChanged (); - } - } - else if (fileDescr && button==3 && type==GDK_BUTTON_PRESS) { - if (!fileDescr->selected) { - for (int i=0; iselected = false; - selected.clear (); - fileDescr->selected = true; - selected.push_back (fileDescr); - lastClicked = fileDescr; - selectionChanged (); - } - rightClicked (fileDescr); - } -} - -bool ThumbBrowserBase::Internal::on_expose_event(GdkEventExpose* event) { - - dirty = false; - - Glib::RefPtr window = get_window(); - - // TODO: Check for Linux - #ifdef WIN32 - Glib::Mutex::Lock lock(parent->entryMutex); - #endif - - int w = get_width(); - int h = get_height(); - - window->clear(); - // draw thumbnails - Glib::RefPtr context = get_pango_context (); - context->set_font_description (get_style()->get_font()); - for (int i=0; ifd.size(); i++) { - if (!parent->fd[i]->drawable || !parent->fd[i]->insideWindow (0, 0, w, h)) - parent->fd[i]->updatepriority = false; - else { - parent->fd[i]->updatepriority = true; - parent->fd[i]->draw (); - } - } - - return true; -} - -bool ThumbBrowserBase::Internal::on_button_release_event (GdkEventButton* event) { - - // TODO: Check for Linux - #ifdef WIN32 - Glib::Mutex::Lock lock(parent->entryMutex); - #endif - - int w = get_width(); - int h = get_height(); - - for (int i=0; ifd.size(); i++) - if (parent->fd[i]->drawable && parent->fd[i]->insideWindow (0, 0, w, h)) - parent->fd[i]->releaseNotify (event->button, event->type, event->state, (int)event->x, (int)event->y); - return true; -} - -bool ThumbBrowserBase::Internal::on_motion_notify_event (GdkEventMotion* event) { - // TODO: Check for Linux - #ifdef WIN32 - Glib::Mutex::Lock lock(parent->entryMutex); - #endif - - int w = get_width(); - int h = get_height(); - - for (int i=0; ifd.size(); i++) - if (parent->fd[i]->drawable && parent->fd[i]->insideWindow (0, 0, w, h)) - parent->fd[i]->motionNotify ((int)event->x, (int)event->y); - return true; -} - -bool ThumbBrowserBase::Internal::on_scroll_event (GdkEventScroll* event) { - - parent->scroll (event->direction); - return true; -} - - -void ThumbBrowserBase::redraw () { - - arrangeFiles (); - queue_draw (); -} - -void ThumbBrowserBase::zoomChanged (bool zoomIn) { - - int newHeight; - int i=0; - int optThumbSize=getCurrentThumbSize(); - if (zoomIn) - for (i=0; i optThumbSize) - break; - } - else - for (i=options.thumbnailZoomRatios.size()-1; i>=0; i--) { - newHeight = (int)(options.thumbnailZoomRatios[i] * options.maxThumbnailHeight); - if (newHeight < optThumbSize) - break; - } - previewHeight = newHeight; - if (inTabMode) options.thumbSizeTab = newHeight; else options.thumbSize = newHeight; - - { - // TODO: Check for Linux - #ifdef WIN32 - Glib::Mutex::Lock lock(entryMutex); - #endif - - for (int i=0; iresize (previewHeight); - } - - redraw (); -#ifdef _WIN32 - gdk_window_process_updates (get_window()->gobj(), true); -#endif -} - -int ThumbBrowserBase::getCurrentThumbSize() { return inTabMode ? options.thumbSizeTab : options.thumbSize; } - -void ThumbBrowserBase::refreshThumbImages () { - { - // TODO: Check for Linux - #ifdef WIN32 - Glib::Mutex::Lock lock(entryMutex); - #endif - - for (int i=0; iresize (previewHeight);// TODO!!! Might be performance bottleneck - /* called if necessary by resize() - fd[i]->refreshThumbnailImage (); TODO: This might cause crashes on some installations */ - } - } - - redraw (); -} - -void ThumbBrowserBase::refreshQuickThumbImages () { - // TODO: Check for Linux - #ifdef WIN32 - Glib::Mutex::Lock lock(entryMutex); - #endif - - for (int i=0; irefreshQuickThumbnailImage (); - } -} - -void ThumbBrowserBase::refreshEditedState (const std::set& efiles) { - - editedFiles = efiles; - { - // TODO: Check for Linux - #ifdef WIN32 - Glib::Mutex::Lock lock(entryMutex); - #endif - - for (int i=0; iframed = editedFiles.find (fd[i]->filename)!=editedFiles.end(); - } - - queue_draw (); -} - -void ThumbBrowserBase::redrawNeeded (ThumbBrowserEntryBase* entry) { +/* + * This file is part of RawTherapee. + * + * RawTherapee 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. + * + * RawTherapee 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 RawTherapee. If not, see . + */ +#include +#include +#include +#include +#include + +ThumbBrowserBase::ThumbBrowserBase () + : lastClicked(NULL), previewHeight(options.thumbSize) { + inTabMode=false; // corresponding to take thumbSize + inW = -1; inH = -1; + + Gtk::HBox* hb1 = Gtk::manage( new Gtk::HBox () ); + Gtk::HBox* hb2 = Gtk::manage( new Gtk::HBox () ); + Gtk::Frame* frame = Gtk::manage( new Gtk::Frame () ); + frame->add (internal); + frame->set_shadow_type (Gtk::SHADOW_IN ); + hb1->pack_start (*frame); + hb1->pack_end (vscroll, Gtk::PACK_SHRINK, 0); + + pack_start (*hb1); + + hb2->pack_start (hscroll); + + pack_start (*hb2,Gtk::PACK_SHRINK, 0); + + internal.setParent (this); + + show_all (); + + hscroll.set_update_policy (Gtk::UPDATE_CONTINUOUS); + vscroll.set_update_policy (Gtk::UPDATE_CONTINUOUS); + + vscroll.signal_value_changed().connect( sigc::mem_fun(*this, &ThumbBrowserBase::scrollChanged) ); + hscroll.signal_value_changed().connect( sigc::mem_fun(*this, &ThumbBrowserBase::scrollChanged) ); + + internal.signal_size_allocate().connect( sigc::mem_fun(*this, &ThumbBrowserBase::internalAreaResized) ); + signal_style_changed().connect( sigc::mem_fun(*this, &ThumbBrowserBase::styleChanged) ); +} + +void ThumbBrowserBase::scrollChanged () { + // TODO: Check for Linux + #ifdef WIN32 + Glib::Mutex::Lock lock(entryMutex); + #endif + + for (int i=0; isetOffset ((int)(hscroll.get_value()), (int)(vscroll.get_value())); + + internal.setPosition ((int)(hscroll.get_value()), (int)(vscroll.get_value())); + + if (!internal.isDirty()) { + internal.setDirty (); + internal.queue_draw (); +// gdk_window_process_updates (get_window()->gobj(), true); + } +} + +void ThumbBrowserBase::scroll (int direction) { + if (arrangement==TB_Vertical) + vscroll.set_value (vscroll.get_value() + (direction==GDK_SCROLL_DOWN ? +1 : -1) * vscroll.get_adjustment()->get_step_increment()); + else + hscroll.set_value (hscroll.get_value() + (direction==GDK_SCROLL_DOWN ? +1 : -1) * hscroll.get_adjustment()->get_step_increment()); +} + +void ThumbBrowserBase::scrollPage (int direction) { + if (arrangement==TB_Vertical) + vscroll.set_value (vscroll.get_value() + (direction==GDK_SCROLL_DOWN ? +1 : -1) * vscroll.get_adjustment()->get_page_increment()); + else + hscroll.set_value (hscroll.get_value() + (direction==GDK_SCROLL_DOWN ? +1 : -1) * hscroll.get_adjustment()->get_page_increment()); +} + +void ThumbBrowserBase::resizeThumbnailArea (int w, int h) { + + inW = w; + inH = h; + + if (hscroll.get_value() + internal.get_width() > inW) + hscroll.set_value (inW - internal.get_width()); + if (vscroll.get_value() + internal.get_height() > inH) + vscroll.set_value (inH - internal.get_height()); + + configScrollBars (); +} + +void ThumbBrowserBase::internalAreaResized (Gtk::Allocation& req) { + + if (inW>0 && inH>0) { + configScrollBars (); + redraw (); + } +} + +void ThumbBrowserBase::configScrollBars () { + + if (inW>0 && inH>0) { + + int iw = internal.get_width (); + int ih = internal.get_height (); + + hscroll.get_adjustment()->set_upper (inW); + vscroll.get_adjustment()->set_upper (inH); + hscroll.get_adjustment()->set_lower (0); + vscroll.get_adjustment()->set_lower (0); + hscroll.get_adjustment()->set_step_increment (32); + vscroll.get_adjustment()->set_step_increment (32); + hscroll.get_adjustment()->set_page_increment (iw); + vscroll.get_adjustment()->set_page_increment (ih); + hscroll.get_adjustment()->set_page_size (iw); + vscroll.get_adjustment()->set_page_size (ih); + + if(iw>=inW) + hscroll.hide(); + else + hscroll.show(); + + if(ih>=inH) + vscroll.hide(); + else + vscroll.show(); + } +} + +void ThumbBrowserBase::arrangeFiles () { + // TODO: Check for Linux + #ifdef WIN32 + Glib::Mutex::Lock lock(entryMutex); + #endif + + int N = fd.size (); + // apply filter + for (int i=0; ifiltered = !checkFilter (fd[i]); + + int rowHeight = 0; + // compute size of the items + for (int i=0; ifiltered && fd[i]->getMinimalHeight() > rowHeight) + rowHeight = fd[i]->getMinimalHeight (); + + if (arrangement==TB_Horizontal) { + + int numOfRows = 1; +// if (rowHeight>0) { +// numOfRows = (internal.get_height()+rowHeight/2)/rowHeight; +// if (numOfRows<1) +// numOfRows = 1; +// } + + int ct = 0; + int currx = 0; int curry = 0; + while (ctgetMinimalWidth() > maxw) + maxw = fd[ct+i]->getMinimalWidth (); + + // arrange items in the column + curry = 0; + for (int i=0; ctfiltered) + fd[ct++]->drawable = false; + if (ctsetPosition (currx, curry, maxw, rowHeight); + fd[ct]->drawable = true; + curry += rowHeight; + } + } + currx += maxw; + } + resizeThumbnailArea (currx, numOfRows*rowHeight); + } + else { + int availWidth = internal.get_width(); + // initial number of columns + int numOfCols = 0; + int currColNum = 0; + int colsWidth = 0; + for (int i=0; ifiltered && colsWidth + fd[i]->getMinimalWidth() <= availWidth) { + colsWidth += fd[numOfCols]->getMinimalWidth (); + numOfCols++; + } + if (numOfCols<1) + numOfCols = 1; + std::vector colWidths; + for (; numOfCols>0; numOfCols--) { + // compute column widths + colWidths.resize (numOfCols); + for (int i=0; ifiltered && fd[i]->getMinimalWidth() > colWidths[j%numOfCols]) + colWidths[j%numOfCols] = fd[i]->getMinimalWidth (); + if (!fd[i]->filtered) + j++; + } + // if not wider than the space available, arrange it and we are ready + colsWidth = 0; + for (int i=0; ifiltered) + fd[ct++]->drawable = false; + if (ctsetPosition (currx, curry, colWidths[i%numOfCols], rowHeight); + fd[ct]->drawable = true; + currx += colWidths[i%numOfCols]; + } + } + if (currx>0) // there were thumbnails placed in the row + curry += rowHeight; + } + resizeThumbnailArea (colsWidth, curry); + } +} + + +void ThumbBrowserBase::Internal::on_realize() +{ + Cairo::FontOptions cfo; + cfo.set_antialias (Cairo::ANTIALIAS_SUBPIXEL); + get_pango_context()->set_cairo_font_options (cfo); + + Gtk::DrawingArea::on_realize(); + Glib::RefPtr window = get_window(); + set_flags (Gtk::CAN_FOCUS); + add_events(Gdk::EXPOSURE_MASK | Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::POINTER_MOTION_MASK | Gdk::SCROLL_MASK | Gdk::KEY_PRESS_MASK); + gc_ = Gdk::GC::create(window); + set_has_tooltip (true); + signal_query_tooltip().connect( sigc::mem_fun(*this, &ThumbBrowserBase::Internal::on_query_tooltip) ); +} + +bool ThumbBrowserBase::Internal::on_query_tooltip (int x, int y, bool keyboard_tooltip, const Glib::RefPtr& tooltip) { + // TODO: Check for Linux + #ifdef WIN32 + Glib::Mutex::Lock lock(parent->entryMutex); + #endif + + Glib::ustring ttip = ""; + for (int i=0; ifd.size(); i++) + if (parent->fd[i]->drawable && parent->fd[i]->inside (x, y)) { + ttip = parent->fd[i]->getToolTip (x, y); + break; + } + if (ttip!="") { + tooltip->set_text (ttip); + return true; + } + else + return false; +} + +void ThumbBrowserBase::styleChanged (const Glib::RefPtr& style) { + + refreshThumbImages (); +} + +ThumbBrowserBase::Internal::Internal () : ofsX(0), ofsY(0), parent(NULL), dirty(true) { +} + +void ThumbBrowserBase::Internal::setParent (ThumbBrowserBase* p) { + parent = p; +} + +void ThumbBrowserBase::Internal::setPosition (int x, int y) { + ofsX = x; + ofsY = y; +} + +bool ThumbBrowserBase::Internal::on_key_press_event (GdkEventKey* event) { + return parent->keyPressed (event); +} + +bool ThumbBrowserBase::Internal::on_button_press_event (GdkEventButton* event) { + grab_focus (); + + parent->eventTime = event->time; + + parent->buttonPressed ((int)event->x, (int)event->y, event->button, event->type, event->state, 0, 0, get_width(), get_height()); + Glib::RefPtr window = get_window(); + + GdkRectangle rect; + rect.x = 0; + rect.y = 0; + window->get_size (rect.width, rect.height); + + gdk_window_invalidate_rect (window->gobj(), &rect, true); + gdk_window_process_updates (window->gobj(), true); + + return true; +} + +void ThumbBrowserBase::buttonPressed (int x, int y, int button, GdkEventType type, int state, int clx, int cly, int clw, int clh) { + ThumbBrowserEntryBase* fileDescr = NULL; + bool handled = false; + + // TODO: Check for Linux + #ifdef WIN32 + Glib::Mutex::Lock lock(entryMutex); + #endif + + for (int i=0; idrawable) { + if (fd[i]->inside (x, y) && fd[i]->insideWindow (clx, cly, clw, clh)) + fileDescr = fd[i]; + bool b = fd[i]->pressNotify (button, type, state, x, y); + handled = handled || b; + } + + if (handled || (fileDescr && fileDescr->processing)) + return; + + if (selected.size()==1 && type==GDK_2BUTTON_PRESS && button==1) + doubleClicked (selected[0]); + else if (button==1 && type==GDK_BUTTON_PRESS) { + if (fileDescr && state & GDK_SHIFT_MASK) { + if (selected.size()==0) { + selected.push_back (fileDescr); + fileDescr->selected = true; + lastClicked = fileDescr; + selectionChanged (); + } + else { + // find the start and the end of the selection interval + int startx = fd.size()-1; + if (lastClicked) { + for (; startx>=0; startx--) + if (fd[startx]==lastClicked) + break; + } + else { + for (; startx>=0; startx--) + if (fd[startx]==selected[0]) + break; + } + int endx = 0; + for (; endxselected = false; + selected.clear (); + // select thumbnails in the interval + for (int i=startx; i<=endx; i++) { + if (!fd[i]->filtered) { + fd[i]->selected = true; + selected.push_back (fd[i]); + } + } + selectionChanged (); + } + } + else if (fileDescr && state & GDK_CONTROL_MASK) { + std::vector::iterator i = std::find (selected.begin(), selected.end(), fileDescr); + if (i!=selected.end()) { + (*i)->selected = false; + selected.erase (i); + } + else { + selected.push_back (fileDescr); + fileDescr->selected = true; + } + lastClicked = fileDescr; + selectionChanged (); + } + else { + for (int i=0; iselected = false; + selected.clear (); + if (fileDescr) { + selected.push_back (fileDescr); + fileDescr->selected = true; + } + lastClicked = fileDescr; + selectionChanged (); + } + } + else if (fileDescr && button==3 && type==GDK_BUTTON_PRESS) { + if (!fileDescr->selected) { + for (int i=0; iselected = false; + selected.clear (); + fileDescr->selected = true; + selected.push_back (fileDescr); + lastClicked = fileDescr; + selectionChanged (); + } + rightClicked (fileDescr); + } +} + +bool ThumbBrowserBase::Internal::on_expose_event(GdkEventExpose* event) { + + dirty = false; + + Glib::RefPtr window = get_window(); + + // TODO: Check for Linux + #ifdef WIN32 + Glib::Mutex::Lock lock(parent->entryMutex); + #endif + + int w = get_width(); + int h = get_height(); + + window->clear(); + // draw thumbnails + Glib::RefPtr context = get_pango_context (); + context->set_font_description (get_style()->get_font()); + for (int i=0; ifd.size(); i++) { + if (!parent->fd[i]->drawable || !parent->fd[i]->insideWindow (0, 0, w, h)) + parent->fd[i]->updatepriority = false; + else { + parent->fd[i]->updatepriority = true; + parent->fd[i]->draw (); + } + } + + return true; +} + +bool ThumbBrowserBase::Internal::on_button_release_event (GdkEventButton* event) { + + // TODO: Check for Linux + #ifdef WIN32 + Glib::Mutex::Lock lock(parent->entryMutex); + #endif + + int w = get_width(); + int h = get_height(); + + for (int i=0; ifd.size(); i++) + if (parent->fd[i]->drawable && parent->fd[i]->insideWindow (0, 0, w, h)) + parent->fd[i]->releaseNotify (event->button, event->type, event->state, (int)event->x, (int)event->y); + return true; +} + +bool ThumbBrowserBase::Internal::on_motion_notify_event (GdkEventMotion* event) { + // TODO: Check for Linux + #ifdef WIN32 + Glib::Mutex::Lock lock(parent->entryMutex); + #endif + + int w = get_width(); + int h = get_height(); + + for (int i=0; ifd.size(); i++) + if (parent->fd[i]->drawable && parent->fd[i]->insideWindow (0, 0, w, h)) + parent->fd[i]->motionNotify ((int)event->x, (int)event->y); + return true; +} + +bool ThumbBrowserBase::Internal::on_scroll_event (GdkEventScroll* event) { + + parent->scroll (event->direction); + return true; +} + + +void ThumbBrowserBase::redraw () { + + arrangeFiles (); + queue_draw (); +} + +void ThumbBrowserBase::zoomChanged (bool zoomIn) { + + int newHeight; + int i=0; + int optThumbSize=getCurrentThumbSize(); + if (zoomIn) + for (i=0; i optThumbSize) + break; + } + else + for (i=options.thumbnailZoomRatios.size()-1; i>=0; i--) { + newHeight = (int)(options.thumbnailZoomRatios[i] * options.maxThumbnailHeight); + if (newHeight < optThumbSize) + break; + } + previewHeight = newHeight; + if (inTabMode) options.thumbSizeTab = newHeight; else options.thumbSize = newHeight; + + { + // TODO: Check for Linux + #ifdef WIN32 + Glib::Mutex::Lock lock(entryMutex); + #endif + + for (int i=0; iresize (previewHeight); + } + + redraw (); +#ifdef _WIN32 + gdk_window_process_updates (get_window()->gobj(), true); +#endif +} + +int ThumbBrowserBase::getCurrentThumbSize() { return inTabMode ? options.thumbSizeTab : options.thumbSize; } + +void ThumbBrowserBase::refreshThumbImages () { + { + // TODO: Check for Linux + #ifdef WIN32 + Glib::Mutex::Lock lock(entryMutex); + #endif + + for (int i=0; iresize (previewHeight);// TODO!!! Might be performance bottleneck + /* called if necessary by resize() + fd[i]->refreshThumbnailImage (); TODO: This might cause crashes on some installations */ + } + } + + redraw (); +} + +void ThumbBrowserBase::refreshQuickThumbImages () { + // TODO: Check for Linux + #ifdef WIN32 + Glib::Mutex::Lock lock(entryMutex); + #endif + + for (int i=0; irefreshQuickThumbnailImage (); + } +} + +void ThumbBrowserBase::refreshEditedState (const std::set& efiles) { + + editedFiles = efiles; + { + // TODO: Check for Linux + #ifdef WIN32 + Glib::Mutex::Lock lock(entryMutex); + #endif + + for (int i=0; iframed = editedFiles.find (fd[i]->filename)!=editedFiles.end(); + } + + queue_draw (); +} + + +void ThumbBrowserBase::setArrangement (Arrangement a) { + + arrangement = a; + redraw (); +} + +void ThumbBrowserBase::enableTabMode(bool enable) { + inTabMode = enable; + arrangement = inTabMode ? ThumbBrowserBase::TB_Horizontal : ThumbBrowserBase::TB_Vertical; + + if (options.thumbSizeTab!=options.thumbSize) { + // TODO: Check for Linux + #ifdef WIN32 + Glib::Mutex::Lock lock(entryMutex); + #endif + + for (int i=0; iresize (getCurrentThumbSize()); + } + + redraw (); + + // Scroll to selected position if going into ribbon mode or back + // Tab mode is horizontal, file browser is vertical + if (!selected.empty()) { + if (inTabMode) { + int h=selected[0]->getStartX(); + hscroll.set_value (MIN(h, hscroll.get_adjustment()->get_upper())); + } else { + int v=selected[0]->getStartY(); + vscroll.set_value (MIN(v, vscroll.get_adjustment()->get_upper())); + } + } + +} + +void ThumbBrowserBase::initEntry (ThumbBrowserEntryBase* entry) { + entry->setOffset ((int)(hscroll.get_value()), (int)(vscroll.get_value())); +} + +void ThumbBrowserBase::getScrollPosition (double& h, double& v) { + h = hscroll.get_value (); + v = vscroll.get_value (); +} + +void ThumbBrowserBase::setScrollPosition (double h, double v) { + hscroll.set_value (h>hscroll.get_adjustment()->get_upper() ? hscroll.get_adjustment()->get_upper() : h); + vscroll.set_value (v>vscroll.get_adjustment()->get_upper() ? vscroll.get_adjustment()->get_upper() : v); +} + +// needed for auto-height in single tab +int ThumbBrowserBase::getEffectiveHeight() { + int h=0; + { + // TODO: Check for Linux + #ifdef WIN32 + Glib::Mutex::Lock lock(entryMutex); + #endif + + if (fd.size()>0) h=fd[0]->getEffectiveHeight(); + } + + return h; +} + +void ThumbBrowserBase::redrawNeeded (ThumbBrowserEntryBase* entry) { + if (entry->insideWindow (0, 0, internal.get_width(), internal.get_height())) { if (!internal.isDirty ()) { internal.setDirty (); internal.queue_draw (); } } -} - -void ThumbBrowserBase::setArrangement (Arrangement a) { - - arrangement = a; - redraw (); -} - -void ThumbBrowserBase::enableTabMode(bool enable) { - inTabMode = enable; - arrangement = inTabMode ? ThumbBrowserBase::TB_Horizontal : ThumbBrowserBase::TB_Vertical; - - if (options.thumbSizeTab!=options.thumbSize) { - // TODO: Check for Linux - #ifdef WIN32 - Glib::Mutex::Lock lock(entryMutex); - #endif - - for (int i=0; iresize (getCurrentThumbSize()); - } - - redraw (); - - // Scroll to selected position if going into ribbon mode or back - // Tab mode is horizontal, file browser is vertical - if (!selected.empty()) { - if (inTabMode) { - int h=selected[0]->getStartX(); - hscroll.set_value (MIN(h, hscroll.get_adjustment()->get_upper())); - } else { - int v=selected[0]->getStartY(); - vscroll.set_value (MIN(v, vscroll.get_adjustment()->get_upper())); - } - } - - -} - -void ThumbBrowserBase::initEntry (ThumbBrowserEntryBase* entry) { - entry->setOffset ((int)(hscroll.get_value()), (int)(vscroll.get_value())); -} - -void ThumbBrowserBase::getScrollPosition (double& h, double& v) { - h = hscroll.get_value (); - v = vscroll.get_value (); -} - -void ThumbBrowserBase::setScrollPosition (double h, double v) { - hscroll.set_value (h>hscroll.get_adjustment()->get_upper() ? hscroll.get_adjustment()->get_upper() : h); - vscroll.set_value (v>vscroll.get_adjustment()->get_upper() ? vscroll.get_adjustment()->get_upper() : v); -} - -// needed for auto-height in single tab -int ThumbBrowserBase::getEffectiveHeight() { - int h=0; - { - // TODO: Check for Linux - #ifdef WIN32 - Glib::Mutex::Lock lock(entryMutex); - #endif - - if (fd.size()>0) h=fd[0]->getEffectiveHeight(); - } - - return h; -} - - - +} + + diff --git a/rtgui/toolpanel.cc b/rtgui/toolpanel.cc index b2f738674..fa2e75ad9 100644 --- a/rtgui/toolpanel.cc +++ b/rtgui/toolpanel.cc @@ -21,6 +21,15 @@ using namespace rtengine::procparams; + +class Frame2: public Gtk::Frame +{ + Gtk::Container *pC; +public: + Frame2( Gtk::Container *p):pC(p){} + ~Frame2( ){ delete pC;} +}; + FoldableToolPanel::FoldableToolPanel(Gtk::Box* content) : ToolPanel(), parentContainer(NULL), exp(NULL) { exp = Gtk::manage (new Gtk::Expander ()); @@ -28,7 +37,7 @@ FoldableToolPanel::FoldableToolPanel(Gtk::Box* content) : ToolPanel(), parentCon exp->set_use_markup (true); exp->signal_button_release_event().connect_notify( sigc::mem_fun(this, &FoldableToolPanel::foldThemAll) ); - Gtk::Frame* pframe = Gtk::manage (new Gtk::Frame ()); + Frame2* pframe = Gtk::manage (new Frame2 (content)); pframe->set_name ("ToolPanel"); diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index eb425083b..8ba366a2f 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -38,15 +38,15 @@ ToolPanelCoordinator::ToolPanelCoordinator () : ipc(NULL) { coarse = Gtk::manage (new CoarsePanel ()); toneCurve = Gtk::manage (new ToneCurve ()); shadowshighlights = Gtk::manage (new ShadowsHighlights ()); - lumadenoise = Gtk::manage (new LumaDenoise ()); - colordenoise = Gtk::manage (new ColorDenoise ()); + //lumadenoise = Gtk::manage (new LumaDenoise ()); + //colordenoise = Gtk::manage (new ColorDenoise ()); impulsedenoise = Gtk::manage (new ImpulseDenoise ()); defringe = Gtk::manage (new Defringe ()); dirpyrdenoise = Gtk::manage (new DirPyrDenoise ()); sharpening = Gtk::manage (new Sharpening ()); lcurve = Gtk::manage (new LCurve ()); - colorboost = Gtk::manage (new ColorBoost ()); - colorshift = Gtk::manage (new ColorShift ()); + //colorboost = Gtk::manage (new ColorBoost ()); + //colorshift = Gtk::manage (new ColorShift ()); lensgeom = Gtk::manage (new LensGeometry ()); distortion = Gtk::manage (new Distortion ()); rotate = Gtk::manage (new Rotate ()); @@ -61,7 +61,7 @@ ToolPanelCoordinator::ToolPanelCoordinator () : ipc(NULL) { icm = Gtk::manage (new ICMPanel ()); exifpanel = Gtk::manage (new ExifPanel ()); iptcpanel = Gtk::manage (new IPTCPanel ()); - equalizer = Gtk::manage (new Equalizer ()); + //equalizer = Gtk::manage (new Equalizer ()); dirpyrequalizer = Gtk::manage (new DirPyrEqualizer ()); hsvequalizer = Gtk::manage (new HSVEqualizer ()); rawprocess = Gtk::manage (new RawProcess ()); diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h index 2dadd358b..713ca52ef 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -86,23 +86,23 @@ class ToolPanelCoordinator : public ToolPanelListener, Distortion* distortion; PerspCorrection* perspective; CACorrection* cacorrection; - ColorShift* colorshift; + //ColorShift* colorshift; HLRecovery* hlrecovery; ChMixer* chmixer; - ColorBoost* colorboost; + //ColorBoost* colorboost; Resize* resize; ICMPanel* icm; Crop* crop; ToneCurve* toneCurve; ShadowsHighlights* shadowshighlights; - LumaDenoise* lumadenoise; - ColorDenoise* colordenoise; + //LumaDenoise* lumadenoise; + //ColorDenoise* colordenoise; Defringe* defringe; ImpulseDenoise* impulsedenoise; DirPyrDenoise* dirpyrdenoise; Sharpening* sharpening; LCurve* lcurve; - Equalizer * equalizer; + //Equalizer * equalizer; DirPyrEqualizer * dirpyrequalizer; HSVEqualizer * hsvequalizer; RawProcess* rawprocess;