diff --git a/README.md b/README.md index 443a7930..a89616d5 100644 --- a/README.md +++ b/README.md @@ -18,21 +18,42 @@ Features JPEGView has a slideshow mode which can be activated in various ways: * **hotkey**: - * **ALT-R**: 'resume'/start slideshow @ default of 1fps. + * **ALT+R**: 'resume'/start slideshow @ default of 1fps. + * **ALT+SHF+R** (added in mod): start slideshow @ custom interval configured via `SlideShowCustomInterval` setting in `JPEGView.ini`. * **one of number 1 to 9**: start slideshow with corresponding delay in seconds, i.e. 1s to 9s. - * **CTRL-(one of number 1 to 9)**: start slideshow with corresponding delay in tenth of a second (number x 0.1), i.e. 0.1s to 0.9s. - * **CTRL-SHF-(one of number 1 to 9)**: start slideshow with corresponding delay in hundredth of a second (number x 0.01), i.e. 0.01s to 0.09s. + * May get rid of these excessive selections and repurpose these hotkeys for something else more useful in future. + * **CTRL+(one of number 1 to 9)**: start slideshow with corresponding delay in tenth of a second (number x 0.1), i.e. 0.1s to 0.9s. + * **CTRL+SHF+(one of number 1 to 9)**: start slideshow with corresponding delay in hundredth of a second (number x 0.01), i.e. 0.01s to 0.09s. * **ESC**: exit slideshow. - * **SHIFT-Space** (_**added in mod**_): start slideshow @ 1fps. + * **SHIFT+Space** (_**added in mod**_): start slideshow @ 1fps. This is added via `KeyMap.txt` file. * **Plus** (added in mod; when in slideshow mode): increase slideshow frame interval, i.e. slow it down, in steps. Steps are the available fps speeds listed below. * **Minus** (_**added in mod**_; when in slideshow mode): decrease slideshow frame interval, i.e. speed it down, in steps. Steps are the available fps speeds listed below. - * **Space** (_**added in mod**_; when in slideshow mode): pause/resume slideshow. + * **Space** (_**modified in mod**_; when in slideshow mode): pause/resume slideshow. + When not in slideshow, it toggles fit to window. * **context menu**: right click image, select "Play folder as slideshow/movie" any of the options available - which are different slideshow speeds. - * available speeds in fps: 100, 50, 30, 25, 10, 5, 1, 0.5, 0.33, 0.25, 0.2, 0.143, 0.1, 0.05 + * available speeds in fps: 100, 50, 30, 25, 10, 5, 1, 0.5, 0.33, 0.25, 0.2, 0.143, 0.1, 0.05, and _custom_ (interval) + * _custom_ (_**added in mod**_): as per `SlideShowCustomInterval` setting. +* **commandline**: `JPEGView.exe [optional image/path] /slideshow ` + Interval must be integer >= 1, or defaults to 5s; no upper limit. + * E.g.: `JPEGView.exe c:\image.png /slideshow 1` + starts JPEGView in slideshow with image switching at 1s intervals, beginning with given image or folder. + * E.g.: `JPEGView.exe /slideshow 2` + (**modified in mod**) starts JPEGView in image selection mode, and then starts slideshow with image switching at 2s intervals. (Previously when an image/path is not specified, `/slideshow` is ignored) This mod makes it easier to manipulate the slideshow, specifically to pause/resume it, and (shift) up/down its speed. +### Slideshow Custom Interval + +Configure slideshow to run at custom interval via `SlideShowCustomInterval` setting in `JPEGView.ini`. +* Default: 5mins +* Specify in secs, mins or hrs; default unit: seconds. + * E.g.: `0.1` = 0.1s = 10fps, `1s` = 1sec = 1fps, `5m` = 5 mins, `1.5h` = 1.5hrs + +Can be activated by **ALT+SHF+R** hotkey. + +Alternatively, you may use the `/slideshow` commandline option to specify arbitrary intervals too; so this feature may not really be needed? + ### Customizations JPEGView hotkeys can be customized via the `KeyMap.txt` file. @@ -42,6 +63,11 @@ WARNING: errors will render all hotkeys disabled. Other useful customizations, refer to this [guide](https://yunharla.wixsite.com/softwaremmm/post/alternate-photo-viewer-for-windows-10-xnview) +### Wishlist + +* A little Android-like `toast` to inform of new slideshow fps or interval. Or other notifications. +* Support for AVIF image format. + # Installation ## Official Releases @@ -53,7 +79,10 @@ Official releases will be made to [sylikc's GitHub Releases](https://github.com/ ### Mod Releases -Only a zip file of the executable and DLLs will be in the release. +2 zip files: +* `JPEGView-less-config.zip` - (one purely of the executable and DLLs) for updating your copy, without overriding your existing configuration files. + * You will have to merge new config settings yourselves. E.g.: `SlideShowCustomInterval`. +* `JPEGView.zip` - full package for unzip and run. Includes above Plus all config/translation/etc files. ## Portable diff --git a/src/JPEGView/Config/JPEGView-fullscreen.ini b/src/JPEGView/Config/JPEGView-fullscreen.ini new file mode 100644 index 00000000..3f6682cf --- /dev/null +++ b/src/JPEGView/Config/JPEGView-fullscreen.ini @@ -0,0 +1,471 @@ +[JPEGView] + +; IMPORTANT NOTICE +; ================ +; This global INI file is normally located in the same directory as the JPEGView executable. +; Its settings can be overridden on a per user basis by placing a JPEGView.ini file in the +; %APPDATA%\JPEGView\ folder. Settings not present in the user's INI file are read from this global INI file. +; The "Save parameters to INI" and "Edit user settings" menu commands will write the settings to the user +; INI file and not to the global! +; For installations on a USB memory stick, JPEGView can be forced to store its settings and the +; parameter DB in the EXE path by setting the StoreToEXEPath key to true. + + +; Only set this to true if writing to the EXE directory makes sense, e.g. on an installation on +; an USB memory stick. Never set it to true when the EXE is located in the 'Program Files' folder, +; with Windows versions newer than Windows XP this would not work! +StoreToEXEPath=true + +; Language used in the user interface. Set to 'auto' to use the language of the operating system. +; Other languages must use the ISO 639-1 language code (two letters) +; Currently supported: +; 'en' English (default) +; 'es' Spanish (Spain) +; 'es-ar' Spanish (latinoamerica) +; 'pt-br' Portuguese (Brasil) +; 'pt' Portuguese +; 'de' German +; 'it' Italian +; 'fr' French +; 'zh' Chinese +; 'zh-tw' Chinese (Taiwan) +; 'ja' Japanese +; 'kr' Korean +; 'ro' Romanian +; 'ru' Russian +; 'sv' Swedish +; 'cs' Czech +; 'el' Greek +; 'eu' Basque +; 'bel' Belorussian +; 'uk' Ukrainian +; 'pl' Polish +Language=auto + +; File endings of files to be decoded by WIC (Windows Image Converter) +; If the Microsoft Camera Codec pack is installed, full size camera RAW files can be read with WIC +; Add the file endings of the raw files to view here, e.g. +; FilesProcessedByWIC=*.wdp;*.hdp;*.jxr;*.nef +FilesProcessedByWIC=*.wdp;*.hdp;*.jxr + +; File endings of camera RAW files to be searched for embedded JPEG thumb images to display +; Reading just these embedded JPEGs is much faster than decoding the RAW using WIC +FileEndingsRAW=*.pef;*.dng;*.crw;*.nef;*.cr2;*.mrw;*.rw2;*.orf;*.x3f;*.arw;*.kdc;*.nrw;*.dcr;*.sr2;*.raf + +; If true, reloads the currently displayed image automatically when it is changed by an external program on disk. +; Also reloads the image list when a file in the current directory is added or deleted. +; Set to false to turn off this behavior. +ReloadWhenDisplayedImageChanged=true + +; Background color, R G B, each component must be in [0..255], e.g. "128 128 128" for a middle gray +BackgroundColor=0 0 0 + +; Color used for transparent parts of images, R G B format as used by BackgroundColor +TransparencyColor=0 0 0 + +; GUI colors, R G B format as used by BackgroundColor +GUIColor=243 242 231 +HighlightColor=255 205 0 +SelectionColor=255 205 0 +SliderColor=255 0 80 +FileNameColor=255 255 255 + +; GUI font, format: "font name" fontSizeInPoints [bold] +; 'Default' for the default GUI font of Windows +; Example: DefaultGUIFont="Arial" 9.0 bold +DefaultGUIFont=Default + +; Contrast correction to apply to all images. Must be in -0.5 .. 0.5 +; Values > 0 increase contrast, values < 0 decrease contrast +Contrast=0.0 + +; Gamma correction to apply to all images. Must be between 0.5 and 2 +; Use gamma<1 to increase brightness and gamma>1 to decrease brightness +Gamma=1.0 + +; Color saturation to apply to all images. Must be in 0.0 .. 2.0 +; 0.0 means gray scale image, 1.0 no additional color saturation, 2.0 maximal saturation +Saturation=1.0 + +; Sharpening to apply for downsampled images. Must be in 0 .. 0.5 +; Note that for 100 % zoom, the BestQuality filter will not apply any sharpening, only the other filters do +Sharpen=0.3 + +; Default parameters for unsharp masking: Radius Amount Threshold +; Note that no unsharp masking can be applied automatically to every image - this setting only provides the default parameters +; when entering the unsharp mask mode +UnsharpMaskParameters=1.0 1.0 4.0 + +; Default parameters for controlling rotation and perspective correction +RTShowGridLines=true +RTAutoCrop=true +RTPreserveAspectRatio=true + +; Default color balance. Negative values for C,M,Y correction, positive for R,G,B. +; Values must be in -1.0 .. +1.0 +CyanRed=0.0 +MagentaGreen=0.0 +YellowBlue=0.0 + +; Set to true to use high quality sampling as default. +HighQualityResampling=true + +; Start in full screen or windowed mode +; 'true' or 'false' to always start in full screen, respectively windowed mode +; 'auto' to choose best mode depending on image size of first image - windowed when it is small, full screen when it is large +ShowFullScreen=true + +; Sets the default position and size of the window in window mode. Possible values: +; 'auto' for 2/3 of screen size +; 'max' to start with maximized window +; 'image' to adjust the window size automatically to the image size +; 'sticky' to automatically restore the last used window size (when ShowFullScreen=auto only the upper,left position is restored) +; 'left top right bottom', space separated e.g: 100 100 900 700 +DefaultWindowRect=image + +; Contains the stored window rectangle in case of DefaultWindowRect=sticky +StickyWindowRect= + +; Minimal window size in windowed mode (in pixels) +MinimalWindowSize=320 240 + +; The initial crop window size when using 'Fixed Size' crop mode +DefaultFixedCropSize=320 200 + +; User defined crop aspect ratio (x y), meaning (x : y) +UserCropAspectRatio=1 1 + +; Set to true to initially display the file name of each image in the upper, left corner of the screen +ShowFileName=false + +; The elements to show when showing the file name. +; Possible elements: +; %filename% : File name +; %filepath% : File name and path +; %index% : Index of image in folder, e.g. [1/12] +; %zoom% : Current zoom factor +; %size% : Size of image in pixels (w x h) +; %filesize% : Size of image on disk +FileNameFormat=%index% %filepath% + +; Font for the file name display, see DefaultGUIFont key for the format +FileNameFont=Default + +; Set to true to initially display the file info box (EXIF info if available) +ShowFileInfo=false + +; Show the acquisition date from EXIF data in the window title +ShowEXIFDateInTitle=true + +; Set to true to show the histogram on the file info panel by default +ShowHistogram=false + +; Set to true to show JPEG comments (EXIF user comment, EXIF image description or JPEG comment) in the file info box +ShowJPEGComments=true + +; Set to true to show the bottom panel when moving the mouse to the bottom of the screen/window. +; The bottom panel provides basic image processing functionality +ShowBottomPanel=true + +; Set to false if the navigation panel shall not be blended to the image +ShowNavPanel=true + +; Set to false to disable the thumbnail image blended in during zoom and pan +ShowZoomNavigator=true + +; Blending factor of the navigation panel when the mouse is not on that panel. Set to 0.0 to only +; show the panel when the mouse is over the panel +BlendFactorNavPanel=0.5 + +; Scaling factor for the navigation panel. Increase if the buttons on the panel are too small, e.g. on a touchscreen. +ScaleFactorNavPanel=1.0 + +; Set to true to keep the zoom, pan, contrast, gamma, sharpen and rotation setting between the images +KeepParameters=false + +; CPUType can be AutoDetect, Generic, MMX, SSE or AVX2 +; Generic should work on all CPUs, MMX needs at least MMX II (starting from PIII) +; Use AutoDetect to detect the best possible algorithm to use +CPUType=AutoDetect + +; Number of CPU cores used. Set to 0 for auto detection. +; Must be 1 to 4, or 0 for auto detect. +CPUCoresUsed=0 + +; Default print margin (all sides) in centimeters +PrintMargin=1.0 + +; Default print width in centimeters. Use negative numbers to set the 'Fit to paper' printing mode. +PrintWidth=-15.0 + +; Units (centimeters, inches) used, one of 'auto', 'metric' or 'english'. +; 'auto' uses the system setting +; 'metric' uses the metric system, e.g. centimeters for length +; 'english' uses the English/US system, e.g. inches for length +Units=auto + +; DownSamplingFilter can be BestQuality, NoAliasing or Narrow +; The BestQuality filter produces a very small amount of aliasing. +; The NoAliasing filter is a Lanczos filter that has almost no aliasing when sharpen is set to zero +; The Narrow filter produces quite a lot of aliasing but will sharpen much and also sharpens 100% images +DownSamplingFilter=BestQuality + +; Sorting order of the files when displaying the image files in a folder +; Can be LastModDate, CreationDate, FileName, FileSize or Random +FileDisplayOrder=FileName + +; Sort files upcounting or downcounting +IsSortedUpcounting=true + +; Navigation within or between folders +; LoopFolder : Loop within the source folder and never leave this folder +; LoopSameFolderLevel: Loop to next folder on the same hierarchy level (sibling folders) +; LoopSubFolders: Loop into subfolders of the source folder +FolderNavigation=LoopFolder + +; If true, the mouse wheel can be used to navigate forward and backward and zoom must be done with Ctrl-MouseWheel +; If false, zoom is done with the mousewheel (no Ctrl required) +NavigateWithMouseWheel=false + +; Zoom speed with mouse wheel, 1.0 means default speed, smaller values slower zoom, larger faster zoom +MouseWheelZoomSpeed=1.0 + +; Minimal display time of an image when using the PgDn/PgUp keys (in milliseconds [0..1000 ms]) +MinimalDisplayTime = 0.0 + +; If true, the extended mouse buttons (Forward and backward) are exchanged compared to Internet explorer +; This is useful to put the 'go to next image' functionality to the button that is better reachable +ExchangeXButtons=true + +; If true the files in a folder are shown with wrap around, thus going from last to first image and vice versa +; If false navigation stops on the last and first image +WrapAroundFolder=true + +; If true, JPEG images are auto rotated according to EXIF image orientation tag if present. +AutoRotateEXIF=true + +; If true, embedded ICC color profiles are used for JPEG and TIFF. This forces using GDI+ for JPEGs and therefore +; results in much slower loading of JPEGs! Only set to true if you really need this. +UseEmbeddedColorProfiles=false + +; Auto zoom mode (for window mode only if AutoZoomModeFullscreen is present) +; FitNoZoom : Fit images to screen, never enlarge image +; FillNoZoom : Fill screen with no black borders, crop if necessary but not too much, never enlarge image +; Fit : Fit images to screen +; Fill : Fill screen with no black borders, crop if necessary +AutoZoomMode=Fit + +; Auto zoom mode for fullscreen mode. If empty, same value as 'AutoZoomMode' is used. +AutoZoomModeFullscreen= + +; Maximum size of slide show text files in KB +MaxSlideShowFileListSizeKB=200 + +; Transition effect for slide shows in full screen mode - ignored when used in window mode +; Possible transition effects: None, Blend, SlideRL, SlideLR, SlideTB, SlideBT, RollRL, RollLR, RollTB, RollBT, ScrollRL, ScrollLR, ScrollTB, ScrollBT +SlideShowTransitionEffect=Blend + +; Time of the slide show transition effect in milliseconds, only used in full screen mode +SlideShowEffectTime=250 + +; Interval (between images) of the slide show. Default:5 mins; default unit: seconds. +; Specify in secs, mins or hrs like so: 1s = 1sec, 5m = 5 mins, 1.5h = 1.5hrs +SlideShowCustomInterval=5m + +; If set to true, only one single instance of JPEGView runs at any time, if false multiple instances are allowed +; Set to true to open all images in the same JPEGView window. +SingleInstance=false + +; If set to true, only one single instance of JPEGView runs in full screen mode, if false multiple instances are allowed +; The value is ignored if SingleInstance=true +SingleFullScreenInstance=true + +; Set to true to skip the 'File Open' dialog when starting JPEGView without providing a file name as parameter +SkipFileOpenDialogOnStartup=false + +; Force using GDI+ for reading JPEGS. Only use when you have problems reading your JPEGs with the default Turbo JPEG library. +; Note that using GDI+ is slower than the Turbo JPEG library! +ForceGDIPlus=false + +; Quality when saving JPEG files (in 0..100 where 100 is the highest quality) +JPEGSaveQuality=85 + +; Quality when saving WEBP files with lossy compression (in 0..100 where 100 is the highest quality) +WEBPSaveQuality=85 + +; Default format for saving files. Supported formats: jpg, bmp, png, tif, webp +DefaultSaveFormat=jpg + +; Set to true to create a parameter DB entry when saving an image with JPEGView to avoid processing it again +CreateParamDBEntryOnSave=true + +; If set to true, Ctrl-S overrides the original file on disk, applying the current processings without +; showing a dialog or prompting the user to confirm. +; CAUTION: Use at your own risk! Be aware that the original image file is overridden and cannot be restored anymore! +OverrideOriginalFileWithoutSaveDialog=false + +; If set to true, lossless JPEG transformations will trim the image as needed without prompting the user. +; This will remove 15 pixel rows/columns at the image borders in worst case. +; CAUTION: Use at your own risk! Be aware that the original image file is overridden and the trimmed borders cannot be restored anymore! +TrimWithoutPromptLosslessJPEG=false + +; Type of confirmation required when deleting a file with the 'x' button on the navigation panel +; Possible values: Never, OnlyWhenNoRecycleBin, Always +; OnlyWhenNoRecycleBin means to only require a confirmation when there is no recycle bin available (e.g. on memory sticks) +; Notice: Does not apply to deleting files with the Del key. To change this edit the KeyMap.txt and assign another command to the Del key. +DeleteConfirmation=OnlyWhenNoRecycleBin + +; Set to false to disallow deletion of images in JPEGView. This hides the 'x' button on the navigation panel +; and disables the commands for deletion (IDM_MOVE_TO_RECYCLE_BIN etc.) +AllowFileDeletion=true + +; Set to true to show the menu item that allows editing the global INI file +AllowEditGlobalSettings=false + +; Only for multi-monitor systems! +; Monitor to start the application on +; -1: Use monitor with largest resolution, primary monitor if several monitors have the same resolution +; 0: Use primary monitor +; 1...n: Use the non-primary monitor with index n +DisplayMonitor=0 + +; Automatic contrast correction by histogram equalization +; F5 enables/disables the correction on the current image. +AutoContrastCorrection=false + +; Using the following two keys, it is possible to explicitly exclude/include folders from the contrast correction. +; More specific patterns have precedence over less specific patterns and inclusion has precedence over exclusion if +; a folder matches both. Example: '*\pics\orig\* has precedence over *\pics\* because it is more specific +; Use the ; character to separate two expressions. +; Example: ACCExclude=%mypictures%\Digicam\edited\*;*.bmp +; This will exclude all files in the ..\My Pictures\Digicam\edited\ folder and all its subfolders and all bmp files +; from automatic contrast correction. +; The following two placeholders are recognized: +; %mypictures% : "My documents\My Pictures" folder +; %mydocuments% : "My documents" folder +ACCExclude= +ACCInclude= + +; Amount of automatic contrast correction +; 0 means no contrast correction, 1 means full (to black and white point) contrast correction. Must be in (0 .. 1) +AutoContrastCorrectionAmount=0.5 + +; Amount of color correction in the color channels reg, green, blue, cyan, magenta and yellow +; The numbers must be between 0.0 (no correction) and 1.0 (total correction towards the gray world model) +; Set all values to 0 to disable color correction +ColorCorrection = R: 0.2 G: 0.1 B: 0.35 C: 0.1 M: 0.3 Y: 0.15 + +; Amount of automatic brightness correction +; 0 means no brightness correction, 1 means full correction to middle gray. Must be in (0 .. 1) +AutoBrightnessCorrectionAmount=0.2 + +; Automatic correction of local density (local brightness of images) +; Can be enabled/disabled on the image with F6 +LocalDensityCorrection=false + +; See remark about exclusion/inclusion at the ACCExclude setting. +; The same applies to these settings. +LDCExclude= +LDCInclude= + +; Amount of local density correction of shadows +; Can be in [0, 1] +LDCBrightenShadows=0.5 + +; Deep shadow steepness of enhancement +; Can be in [0, 1], values bigger than 0.9 are not recommended +LDCBrightenShadowsSteepness=0.5 + +; Amount of local density correction of highlights +; Can be in [0, 1] +LDCDarkenHighlights=0.25 + +; Parameter set used in landscape enhancement mode +; Space separated, use -1 to leave parameter untouched +; Contrast Gamma Sharpen ColorCorrection ContrastCorrection LightenShadows DarkenHighlights DeepShadows CyanRed MagentaGreen YellowBlue Saturation +LandscapeModeParams=-1 -1 -1 -1 0.5 1.0 0.75 0.4 -1 -1 -1 -1 + +; Set to true to turn on landscape enhancement mode automatically +LandscapeMode=false + +; When setting a processed image as desktop wallpaper, the processed image must be saved somewhere. +; This INI setting sets the path to save the file. Default is %temp%, the system TEMP directory. You must have write access to the specified directory! +WallpaperPath=%temp% + +; Editor for INI files +; notepad : Use notepad.exe +; system : Use application registered for INI files +; other : Full path to application for editing INI files, %exepath% placeholder can be used +IniEditor=notepad + +; URL for the map provider to display GPS coordinates on a map +; OpenStreetmap: www.openstreetmap.org/?mlat={lat}&mlon={lng}&zoom=15 +; Google maps: https://www.google.com/maps/search/?api=1&query={lat},{lng} +GPSMapProvider=https://opentopomap.org/#marker=15/{lat}/{lng} + +; User commands +; User command must be named UserCmd# where # stands for a number. The first user command has the number zero (UserCmd0) +; and the numbering of the commands must be continuous. +; User command must have the following form: +; UserCmd#="KeyCode: %Key% Cmd: '%Cmd%' [Menuitem: '%menu%'] [Confirm: '%confirm%'] [HelpText: '%help%'] [Flags: '%flags%']" +; %Key% : Key that invokes the command. Do not define keys already used by JPEGView. +; The following keys are known: Alt, Ctrl, Shift, Esc, Return, Space, End, Home, Back, Tab, PgDn, PgUp, +; Left, Right, Up, Down, Insert, Del, Plus, Minus, Mul, Div, Comma, Period, A .. Z F1 .. F12 +; Combine modifier keys with +, e.g. 'Alt+Ctrl+P' +; %Cmd% : Application to start, including command arguments. Enclose the application name with double quotes ("") if the path contains +; spaces. To execute command line commands or batch files, use 'cmd /c command' respectively 'cmd /c MyBatchFile.bat'. +; The following placeholders can be used in the %cmd% argument: +; %filename% : Filename of current image, including path +; %filetitle% : Filename of current image, excluding path +; %directory% : Directory or current image, without trailing backslash +; %mydocuments%: The 'My Documents' folder without trailing backslash +; %mypictures% : The 'My Pictures' folder without trailing backslash +; %exepath% : Path to EXE folder where JPEGView is running +; %exedrive% : Drive letter of the EXE path, e.g. "c:" +; The resulting names are enclosed with double quotes automatically by JPEGView when no backslash is before or after the placeholder. +; %menu% : The menu item text in the 'User Commands' sub-menu shown in the JPEGView context menu. If missing the command is not contained in the menu. +; %confirm% : Message text that is shown and must be confirmed before the command is executed. +; This is an optional argument, if not used, no confirmation is needed for the command. +; %help% : Help string that is displayed in JPEG view when F1 is pressed. +; This is an optional argument, if not used, no help text will be available. +; %flags% : The following flags are supported: +; NoWindow : For console applications - if set do not display a console window. +; If the started application is the command interpreter (cmd.exe) this flag is implicitly set. +; ShortFilename : If set, the short (8.3) file name (and path) is passed to the executing application. +; Set this flag if the executing application cannot handle long file names or files and path +; names containing spaces. +; WaitForTerminate : If set, JPEGView is blocked until the command has finished execution. If not set, the command is +; started and JPEGView continues. +; MoveToNext : If set, JPEGView moves to the next image in the folder after the command has been executed. +; Cannot be combined with the ReloadCurrent flag. +; ReloadFileList : If set, the file-list of the current folder is reloaded after execution of the command. Set this +; flag when the command modifies the content of the folder (e.g. moves, renames or deletes files). +; ReloadCurrent : If set, the currently shown file is re-loaded from disk after execution of the command. +; Set this flag if the command changes the pixel data of the current image. +; ReloadAll: If set, the file-list of the current folder is reloaded and the current image and all cached images +; are reloaded. Set this flag only if the command changes pixel data of images other than the current. +; KeepModDate: Keeps the modification date/time of the current image. Can be used to preserve this time stamp +; when modifications on the image are done to keep sort ordering. +; Caution: When using this flag, always combine with the WaitForTerminate flag! +; ShellExecute: Uses the ShellExecute() system call to start the external process instead of CreateProcess(). +; Some applications do not start properly with CreateProcess(). If this flag is set, the WaitForTerminate +; must not be used. All flags requiring WaitForTerminate to be set must not be set either. +; Typically ShellExecute is set to start large external applications, e.g. an image editor. + +UserCmd0="KeyCode: Shift+Del Cmd: 'cmd /c del %filename%' Confirm: 'Do you really want to permanently delete the file %filename%?' HelpText: 'Shift+Del\tDelete current file on disk permanently' Flags: 'WaitForTerminate ReloadFileList MoveToNext'" + +; Here are some examples for user commands +;UserCmd1="KeyCode: P Cmd: 'C:\WINDOWS\system32\mspaint.exe /p %filename%' Menuitem: 'Print Image' Confirm: 'Do you really want to print the file %filename%?' HelpText: 'P\tPrint current image'" +;UserCmd2="KeyCode: Q Cmd: 'cmd /c move %filename% "%mypictures%\trash\"' Confirm: 'Really move file to %mypictures%\trash\%filetitle%' HelpText: 'Q\tMove file to trash directory' Flags: 'WaitForTerminate ReloadFileList MoveToNext'" +;UserCmd3="KeyCode: W Cmd: 'cmd /c copy %filename% "%mypictures%\trash\%filetitle%"' Confirm: 'Really copy file to %mypictures%\trash\%filetitle%' HelpText: 'W\tCopy file to trash directory' Flags: 'WaitForTerminate'" +;UserCmd4="KeyCode: A Cmd: 'cmd /u /c echo %filename% >> "%mydocuments%\test.txt"' HelpText: 'A\tAppend to file list'" + +; Open with menu commands, shown in the 'Open with..' submenu of the JPEGView context menu. +; These commands must be named OpenWith# where # stands for a number. The first open with command has the number zero (OpenWith0) +; and the numbering of the commands must be continuous. +; Open with commands must have the following form: +; OpenWith#="Cmd: '%Cmd%' Menuitem: '%menu%' [KeyCode: %Key%] [Confirm: '%confirm%'] [Flags: '%flags%']" +; For an explanation of the different options, refer to the user command documentation above. +; Notice: Open with commands should be added to the user INI file, not to this global INI file +; Example for a menu entry that opens the current image in MS Paint: +;OpenWith0="Cmd: 'C:\WINDOWS\system32\mspaint.exe %filename%' Menuitem: 'Microsoft Paint' Flags: 'ShellExecute'" diff --git a/src/JPEGView/Config/JPEGView-windowed.ini b/src/JPEGView/Config/JPEGView-windowed.ini new file mode 100644 index 00000000..8cde0826 --- /dev/null +++ b/src/JPEGView/Config/JPEGView-windowed.ini @@ -0,0 +1,471 @@ +[JPEGView] + +; IMPORTANT NOTICE +; ================ +; This global INI file is normally located in the same directory as the JPEGView executable. +; Its settings can be overridden on a per user basis by placing a JPEGView.ini file in the +; %APPDATA%\JPEGView\ folder. Settings not present in the user's INI file are read from this global INI file. +; The "Save parameters to INI" and "Edit user settings" menu commands will write the settings to the user +; INI file and not to the global! +; For installations on a USB memory stick, JPEGView can be forced to store its settings and the +; parameter DB in the EXE path by setting the StoreToEXEPath key to true. + + +; Only set this to true if writing to the EXE directory makes sense, e.g. on an installation on +; an USB memory stick. Never set it to true when the EXE is located in the 'Program Files' folder, +; with Windows versions newer than Windows XP this would not work! +StoreToEXEPath=false + +; Language used in the user interface. Set to 'auto' to use the language of the operating system. +; Other languages must use the ISO 639-1 language code (two letters) +; Currently supported: +; 'en' English (default) +; 'es' Spanish (Spain) +; 'es-ar' Spanish (latinoamerica) +; 'pt-br' Portuguese (Brasil) +; 'pt' Portuguese +; 'de' German +; 'it' Italian +; 'fr' French +; 'zh' Chinese +; 'zh-tw' Chinese (Taiwan) +; 'ja' Japanese +; 'kr' Korean +; 'ro' Romanian +; 'ru' Russian +; 'sv' Swedish +; 'cs' Czech +; 'el' Greek +; 'eu' Basque +; 'bel' Belorussian +; 'uk' Ukrainian +; 'pl' Polish +Language=auto + +; File endings of files to be decoded by WIC (Windows Image Converter) +; If the Microsoft Camera Codec pack is installed, full size camera RAW files can be read with WIC +; Add the file endings of the raw files to view here, e.g. +; FilesProcessedByWIC=*.wdp;*.hdp;*.jxr;*.nef +FilesProcessedByWIC=*.wdp;*.hdp;*.jxr + +; File endings of camera RAW files to be searched for embedded JPEG thumb images to display +; Reading just these embedded JPEGs is much faster than decoding the RAW using WIC +FileEndingsRAW=*.pef;*.dng;*.crw;*.nef;*.cr2;*.mrw;*.rw2;*.orf;*.x3f;*.arw;*.kdc;*.nrw;*.dcr;*.sr2;*.raf + +; If true, reloads the currently displayed image automatically when it is changed by an external program on disk. +; Also reloads the image list when a file in the current directory is added or deleted. +; Set to false to turn off this behavior. +ReloadWhenDisplayedImageChanged=true + +; Background color, R G B, each component must be in [0..255], e.g. "128 128 128" for a middle gray +BackgroundColor=0 0 0 + +; Color used for transparent parts of images, R G B format as used by BackgroundColor +TransparencyColor=0 0 0 + +; GUI colors, R G B format as used by BackgroundColor +GUIColor=243 242 231 +HighlightColor=255 205 0 +SelectionColor=255 205 0 +SliderColor=255 0 80 +FileNameColor=255 255 255 + +; GUI font, format: "font name" fontSizeInPoints [bold] +; 'Default' for the default GUI font of Windows +; Example: DefaultGUIFont="Arial" 9.0 bold +DefaultGUIFont=Default + +; Contrast correction to apply to all images. Must be in -0.5 .. 0.5 +; Values > 0 increase contrast, values < 0 decrease contrast +Contrast=0.0 + +; Gamma correction to apply to all images. Must be between 0.5 and 2 +; Use gamma<1 to increase brightness and gamma>1 to decrease brightness +Gamma=1.0 + +; Color saturation to apply to all images. Must be in 0.0 .. 2.0 +; 0.0 means gray scale image, 1.0 no additional color saturation, 2.0 maximal saturation +Saturation=1.0 + +; Sharpening to apply for downsampled images. Must be in 0 .. 0.5 +; Note that for 100 % zoom, the BestQuality filter will not apply any sharpening, only the other filters do +Sharpen=0.3 + +; Default parameters for unsharp masking: Radius Amount Threshold +; Note that no unsharp masking can be applied automatically to every image - this setting only provides the default parameters +; when entering the unsharp mask mode +UnsharpMaskParameters=1.0 1.0 4.0 + +; Default parameters for controlling rotation and perspective correction +RTShowGridLines=true +RTAutoCrop=true +RTPreserveAspectRatio=true + +; Default color balance. Negative values for C,M,Y correction, positive for R,G,B. +; Values must be in -1.0 .. +1.0 +CyanRed=0.0 +MagentaGreen=0.0 +YellowBlue=0.0 + +; Set to true to use high quality sampling as default. +HighQualityResampling=true + +; Start in full screen or windowed mode +; 'true' or 'false' to always start in full screen, respectively windowed mode +; 'auto' to choose best mode depending on image size of first image - windowed when it is small, full screen when it is large +ShowFullScreen=auto + +; Sets the default position and size of the window in window mode. Possible values: +; 'auto' for 2/3 of screen size +; 'max' to start with maximized window +; 'image' to adjust the window size automatically to the image size +; 'sticky' to automatically restore the last used window size (when ShowFullScreen=auto only the upper,left position is restored) +; 'left top right bottom', space separated e.g: 100 100 900 700 +DefaultWindowRect=image + +; Contains the stored window rectangle in case of DefaultWindowRect=sticky +StickyWindowRect= + +; Minimal window size in windowed mode (in pixels) +MinimalWindowSize=320 240 + +; The initial crop window size when using 'Fixed Size' crop mode +DefaultFixedCropSize=320 200 + +; User defined crop aspect ratio (x y), meaning (x : y) +UserCropAspectRatio=1 1 + +; Set to true to initially display the file name of each image in the upper, left corner of the screen +ShowFileName=false + +; The elements to show when showing the file name. +; Possible elements: +; %filename% : File name +; %filepath% : File name and path +; %index% : Index of image in folder, e.g. [1/12] +; %zoom% : Current zoom factor +; %size% : Size of image in pixels (w x h) +; %filesize% : Size of image on disk +FileNameFormat=%index% %filepath% + +; Font for the file name display, see DefaultGUIFont key for the format +FileNameFont=Default + +; Set to true to initially display the file info box (EXIF info if available) +ShowFileInfo=false + +; Show the acquisition date from EXIF data in the window title +ShowEXIFDateInTitle=true + +; Set to true to show the histogram on the file info panel by default +ShowHistogram=false + +; Set to true to show JPEG comments (EXIF user comment, EXIF image description or JPEG comment) in the file info box +ShowJPEGComments=true + +; Set to true to show the bottom panel when moving the mouse to the bottom of the screen/window. +; The bottom panel provides basic image processing functionality +ShowBottomPanel=true + +; Set to false if the navigation panel shall not be blended to the image +ShowNavPanel=true + +; Set to false to disable the thumbnail image blended in during zoom and pan +ShowZoomNavigator=true + +; Blending factor of the navigation panel when the mouse is not on that panel. Set to 0.0 to only +; show the panel when the mouse is over the panel +BlendFactorNavPanel=0.5 + +; Scaling factor for the navigation panel. Increase if the buttons on the panel are too small, e.g. on a touchscreen. +ScaleFactorNavPanel=1.0 + +; Set to true to keep the zoom, pan, contrast, gamma, sharpen and rotation setting between the images +KeepParameters=false + +; CPUType can be AutoDetect, Generic, MMX, SSE or AVX2 +; Generic should work on all CPUs, MMX needs at least MMX II (starting from PIII) +; Use AutoDetect to detect the best possible algorithm to use +CPUType=AutoDetect + +; Number of CPU cores used. Set to 0 for auto detection. +; Must be 1 to 4, or 0 for auto detect. +CPUCoresUsed=0 + +; Default print margin (all sides) in centimeters +PrintMargin=1.0 + +; Default print width in centimeters. Use negative numbers to set the 'Fit to paper' printing mode. +PrintWidth=-15.0 + +; Units (centimeters, inches) used, one of 'auto', 'metric' or 'english'. +; 'auto' uses the system setting +; 'metric' uses the metric system, e.g. centimeters for length +; 'english' uses the English/US system, e.g. inches for length +Units=auto + +; DownSamplingFilter can be BestQuality, NoAliasing or Narrow +; The BestQuality filter produces a very small amount of aliasing. +; The NoAliasing filter is a Lanczos filter that has almost no aliasing when sharpen is set to zero +; The Narrow filter produces quite a lot of aliasing but will sharpen much and also sharpens 100% images +DownSamplingFilter=BestQuality + +; Sorting order of the files when displaying the image files in a folder +; Can be LastModDate, CreationDate, FileName, FileSize or Random +FileDisplayOrder=LastModDate + +; Sort files upcounting or downcounting +IsSortedUpcounting=true + +; Navigation within or between folders +; LoopFolder : Loop within the source folder and never leave this folder +; LoopSameFolderLevel: Loop to next folder on the same hierarchy level (sibling folders) +; LoopSubFolders: Loop into subfolders of the source folder +FolderNavigation=LoopFolder + +; If true, the mouse wheel can be used to navigate forward and backward and zoom must be done with Ctrl-MouseWheel +; If false, zoom is done with the mousewheel (no Ctrl required) +NavigateWithMouseWheel=false + +; Zoom speed with mouse wheel, 1.0 means default speed, smaller values slower zoom, larger faster zoom +MouseWheelZoomSpeed=1.0 + +; Minimal display time of an image when using the PgDn/PgUp keys (in milliseconds [0..1000 ms]) +MinimalDisplayTime = 0.0 + +; If true, the extended mouse buttons (Forward and backward) are exchanged compared to Internet explorer +; This is useful to put the 'go to next image' functionality to the button that is better reachable +ExchangeXButtons=true + +; If true the files in a folder are shown with wrap around, thus going from last to first image and vice versa +; If false navigation stops on the last and first image +WrapAroundFolder=true + +; If true, JPEG images are auto rotated according to EXIF image orientation tag if present. +AutoRotateEXIF=true + +; If true, embedded ICC color profiles are used for JPEG and TIFF. This forces using GDI+ for JPEGs and therefore +; results in much slower loading of JPEGs! Only set to true if you really need this. +UseEmbeddedColorProfiles=false + +; Auto zoom mode (for window mode only if AutoZoomModeFullscreen is present) +; FitNoZoom : Fit images to screen, never enlarge image +; FillNoZoom : Fill screen with no black borders, crop if necessary but not too much, never enlarge image +; Fit : Fit images to screen +; Fill : Fill screen with no black borders, crop if necessary +AutoZoomMode=FitNoZoom + +; Auto zoom mode for fullscreen mode. If empty, same value as 'AutoZoomMode' is used. +AutoZoomModeFullscreen= + +; Maximum size of slide show text files in KB +MaxSlideShowFileListSizeKB=200 + +; Transition effect for slide shows in full screen mode - ignored when used in window mode +; Possible transition effects: None, Blend, SlideRL, SlideLR, SlideTB, SlideBT, RollRL, RollLR, RollTB, RollBT, ScrollRL, ScrollLR, ScrollTB, ScrollBT +SlideShowTransitionEffect=Blend + +; Time of the slide show transition effect in milliseconds, only used in full screen mode +SlideShowEffectTime=250 + +; Interval (between images) of the slide show. Default:5 mins; default unit: seconds. +; Specify in secs, mins or hrs like so: 1s = 1sec, 5m = 5 mins, 1.5h = 1.5hrs +SlideShowCustomInterval=5m + +; If set to true, only one single instance of JPEGView runs at any time, if false multiple instances are allowed +; Set to true to open all images in the same JPEGView window. +SingleInstance=false + +; If set to true, only one single instance of JPEGView runs in full screen mode, if false multiple instances are allowed +; The value is ignored if SingleInstance=true +SingleFullScreenInstance=true + +; Set to true to skip the 'File Open' dialog when starting JPEGView without providing a file name as parameter +SkipFileOpenDialogOnStartup=false + +; Force using GDI+ for reading JPEGS. Only use when you have problems reading your JPEGs with the default Turbo JPEG library. +; Note that using GDI+ is slower than the Turbo JPEG library! +ForceGDIPlus=false + +; Quality when saving JPEG files (in 0..100 where 100 is the highest quality) +JPEGSaveQuality=85 + +; Quality when saving WEBP files with lossy compression (in 0..100 where 100 is the highest quality) +WEBPSaveQuality=85 + +; Default format for saving files. Supported formats: jpg, bmp, png, tif, webp +DefaultSaveFormat=jpg + +; Set to true to create a parameter DB entry when saving an image with JPEGView to avoid processing it again +CreateParamDBEntryOnSave=true + +; If set to true, Ctrl-S overrides the original file on disk, applying the current processings without +; showing a dialog or prompting the user to confirm. +; CAUTION: Use at your own risk! Be aware that the original image file is overridden and cannot be restored anymore! +OverrideOriginalFileWithoutSaveDialog=false + +; If set to true, lossless JPEG transformations will trim the image as needed without prompting the user. +; This will remove 15 pixel rows/columns at the image borders in worst case. +; CAUTION: Use at your own risk! Be aware that the original image file is overridden and the trimmed borders cannot be restored anymore! +TrimWithoutPromptLosslessJPEG=false + +; Type of confirmation required when deleting a file with the 'x' button on the navigation panel +; Possible values: Never, OnlyWhenNoRecycleBin, Always +; OnlyWhenNoRecycleBin means to only require a confirmation when there is no recycle bin available (e.g. on memory sticks) +; Notice: Does not apply to deleting files with the Del key. To change this edit the KeyMap.txt and assign another command to the Del key. +DeleteConfirmation=OnlyWhenNoRecycleBin + +; Set to false to disallow deletion of images in JPEGView. This hides the 'x' button on the navigation panel +; and disables the commands for deletion (IDM_MOVE_TO_RECYCLE_BIN etc.) +AllowFileDeletion=true + +; Set to true to show the menu item that allows editing the global INI file +AllowEditGlobalSettings=false + +; Only for multi-monitor systems! +; Monitor to start the application on +; -1: Use monitor with largest resolution, primary monitor if several monitors have the same resolution +; 0: Use primary monitor +; 1...n: Use the non-primary monitor with index n +DisplayMonitor=-1 + +; Automatic contrast correction by histogram equalization +; F5 enables/disables the correction on the current image. +AutoContrastCorrection=false + +; Using the following two keys, it is possible to explicitly exclude/include folders from the contrast correction. +; More specific patterns have precedence over less specific patterns and inclusion has precedence over exclusion if +; a folder matches both. Example: '*\pics\orig\* has precedence over *\pics\* because it is more specific +; Use the ; character to separate two expressions. +; Example: ACCExclude=%mypictures%\Digicam\edited\*;*.bmp +; This will exclude all files in the ..\My Pictures\Digicam\edited\ folder and all its subfolders and all bmp files +; from automatic contrast correction. +; The following two placeholders are recognized: +; %mypictures% : "My documents\My Pictures" folder +; %mydocuments% : "My documents" folder +ACCExclude= +ACCInclude= + +; Amount of automatic contrast correction +; 0 means no contrast correction, 1 means full (to black and white point) contrast correction. Must be in (0 .. 1) +AutoContrastCorrectionAmount=0.5 + +; Amount of color correction in the color channels reg, green, blue, cyan, magenta and yellow +; The numbers must be between 0.0 (no correction) and 1.0 (total correction towards the gray world model) +; Set all values to 0 to disable color correction +ColorCorrection = R: 0.2 G: 0.1 B: 0.35 C: 0.1 M: 0.3 Y: 0.15 + +; Amount of automatic brightness correction +; 0 means no brightness correction, 1 means full correction to middle gray. Must be in (0 .. 1) +AutoBrightnessCorrectionAmount=0.2 + +; Automatic correction of local density (local brightness of images) +; Can be enabled/disabled on the image with F6 +LocalDensityCorrection=false + +; See remark about exclusion/inclusion at the ACCExclude setting. +; The same applies to these settings. +LDCExclude= +LDCInclude= + +; Amount of local density correction of shadows +; Can be in [0, 1] +LDCBrightenShadows=0.5 + +; Deep shadow steepness of enhancement +; Can be in [0, 1], values bigger than 0.9 are not recommended +LDCBrightenShadowsSteepness=0.5 + +; Amount of local density correction of highlights +; Can be in [0, 1] +LDCDarkenHighlights=0.25 + +; Parameter set used in landscape enhancement mode +; Space separated, use -1 to leave parameter untouched +; Contrast Gamma Sharpen ColorCorrection ContrastCorrection LightenShadows DarkenHighlights DeepShadows CyanRed MagentaGreen YellowBlue Saturation +LandscapeModeParams=-1 -1 -1 -1 0.5 1.0 0.75 0.4 -1 -1 -1 -1 + +; Set to true to turn on landscape enhancement mode automatically +LandscapeMode=false + +; When setting a processed image as desktop wallpaper, the processed image must be saved somewhere. +; This INI setting sets the path to save the file. Default is %temp%, the system TEMP directory. You must have write access to the specified directory! +WallpaperPath=%temp% + +; Editor for INI files +; notepad : Use notepad.exe +; system : Use application registered for INI files +; other : Full path to application for editing INI files, %exepath% placeholder can be used +IniEditor=notepad + +; URL for the map provider to display GPS coordinates on a map +; OpenStreetmap: www.openstreetmap.org/?mlat={lat}&mlon={lng}&zoom=15 +; Google maps: https://www.google.com/maps/search/?api=1&query={lat},{lng} +GPSMapProvider=https://opentopomap.org/#marker=15/{lat}/{lng} + +; User commands +; User command must be named UserCmd# where # stands for a number. The first user command has the number zero (UserCmd0) +; and the numbering of the commands must be continuous. +; User command must have the following form: +; UserCmd#="KeyCode: %Key% Cmd: '%Cmd%' [Menuitem: '%menu%'] [Confirm: '%confirm%'] [HelpText: '%help%'] [Flags: '%flags%']" +; %Key% : Key that invokes the command. Do not define keys already used by JPEGView. +; The following keys are known: Alt, Ctrl, Shift, Esc, Return, Space, End, Home, Back, Tab, PgDn, PgUp, +; Left, Right, Up, Down, Insert, Del, Plus, Minus, Mul, Div, Comma, Period, A .. Z F1 .. F12 +; Combine modifier keys with +, e.g. 'Alt+Ctrl+P' +; %Cmd% : Application to start, including command arguments. Enclose the application name with double quotes ("") if the path contains +; spaces. To execute command line commands or batch files, use 'cmd /c command' respectively 'cmd /c MyBatchFile.bat'. +; The following placeholders can be used in the %cmd% argument: +; %filename% : Filename of current image, including path +; %filetitle% : Filename of current image, excluding path +; %directory% : Directory or current image, without trailing backslash +; %mydocuments%: The 'My Documents' folder without trailing backslash +; %mypictures% : The 'My Pictures' folder without trailing backslash +; %exepath% : Path to EXE folder where JPEGView is running +; %exedrive% : Drive letter of the EXE path, e.g. "c:" +; The resulting names are enclosed with double quotes automatically by JPEGView when no backslash is before or after the placeholder. +; %menu% : The menu item text in the 'User Commands' sub-menu shown in the JPEGView context menu. If missing the command is not contained in the menu. +; %confirm% : Message text that is shown and must be confirmed before the command is executed. +; This is an optional argument, if not used, no confirmation is needed for the command. +; %help% : Help string that is displayed in JPEG view when F1 is pressed. +; This is an optional argument, if not used, no help text will be available. +; %flags% : The following flags are supported: +; NoWindow : For console applications - if set do not display a console window. +; If the started application is the command interpreter (cmd.exe) this flag is implicitly set. +; ShortFilename : If set, the short (8.3) file name (and path) is passed to the executing application. +; Set this flag if the executing application cannot handle long file names or files and path +; names containing spaces. +; WaitForTerminate : If set, JPEGView is blocked until the command has finished execution. If not set, the command is +; started and JPEGView continues. +; MoveToNext : If set, JPEGView moves to the next image in the folder after the command has been executed. +; Cannot be combined with the ReloadCurrent flag. +; ReloadFileList : If set, the file-list of the current folder is reloaded after execution of the command. Set this +; flag when the command modifies the content of the folder (e.g. moves, renames or deletes files). +; ReloadCurrent : If set, the currently shown file is re-loaded from disk after execution of the command. +; Set this flag if the command changes the pixel data of the current image. +; ReloadAll: If set, the file-list of the current folder is reloaded and the current image and all cached images +; are reloaded. Set this flag only if the command changes pixel data of images other than the current. +; KeepModDate: Keeps the modification date/time of the current image. Can be used to preserve this time stamp +; when modifications on the image are done to keep sort ordering. +; Caution: When using this flag, always combine with the WaitForTerminate flag! +; ShellExecute: Uses the ShellExecute() system call to start the external process instead of CreateProcess(). +; Some applications do not start properly with CreateProcess(). If this flag is set, the WaitForTerminate +; must not be used. All flags requiring WaitForTerminate to be set must not be set either. +; Typically ShellExecute is set to start large external applications, e.g. an image editor. + +UserCmd0="KeyCode: Shift+Del Cmd: 'cmd /c del %filename%' Confirm: 'Do you really want to permanently delete the file %filename%?' HelpText: 'Shift+Del\tDelete current file on disk permanently' Flags: 'WaitForTerminate ReloadFileList MoveToNext'" + +; Here are some examples for user commands +;UserCmd1="KeyCode: P Cmd: 'C:\WINDOWS\system32\mspaint.exe /p %filename%' Menuitem: 'Print Image' Confirm: 'Do you really want to print the file %filename%?' HelpText: 'P\tPrint current image'" +;UserCmd2="KeyCode: Q Cmd: 'cmd /c move %filename% "%mypictures%\trash\"' Confirm: 'Really move file to %mypictures%\trash\%filetitle%' HelpText: 'Q\tMove file to trash directory' Flags: 'WaitForTerminate ReloadFileList MoveToNext'" +;UserCmd3="KeyCode: W Cmd: 'cmd /c copy %filename% "%mypictures%\trash\%filetitle%"' Confirm: 'Really copy file to %mypictures%\trash\%filetitle%' HelpText: 'W\tCopy file to trash directory' Flags: 'WaitForTerminate'" +;UserCmd4="KeyCode: A Cmd: 'cmd /u /c echo %filename% >> "%mydocuments%\test.txt"' HelpText: 'A\tAppend to file list'" + +; Open with menu commands, shown in the 'Open with..' submenu of the JPEGView context menu. +; These commands must be named OpenWith# where # stands for a number. The first open with command has the number zero (OpenWith0) +; and the numbering of the commands must be continuous. +; Open with commands must have the following form: +; OpenWith#="Cmd: '%Cmd%' Menuitem: '%menu%' [KeyCode: %Key%] [Confirm: '%confirm%'] [Flags: '%flags%']" +; For an explanation of the different options, refer to the user command documentation above. +; Notice: Open with commands should be added to the user INI file, not to this global INI file +; Example for a menu entry that opens the current image in MS Paint: +;OpenWith0="Cmd: 'C:\WINDOWS\system32\mspaint.exe %filename%' Menuitem: 'Microsoft Paint' Flags: 'ShellExecute'" diff --git a/src/JPEGView/Config/JPEGView.ini b/src/JPEGView/Config/JPEGView.ini index c199d264..4576d357 100644 --- a/src/JPEGView/Config/JPEGView.ini +++ b/src/JPEGView/Config/JPEGView.ini @@ -268,6 +268,10 @@ SlideShowTransitionEffect=Blend ; Time of the slide show transition effect in milliseconds, only used in full screen mode SlideShowEffectTime=250 +; Interval (between images) of the slide show. Default:5 mins; default unit: seconds. +; Specify in secs, mins or hrs like so: 1s = 1sec, 5m = 5 mins, 1.5h = 1.5hrs +SlideShowCustomInterval=5m + ; If set to true, only one single instance of JPEGView runs at any time, if false multiple instances are allowed ; Set to true to open all images in the same JPEGView window. SingleInstance=false diff --git a/src/JPEGView/Config/KeyMap.txt b/src/JPEGView/Config/KeyMap.txt index 46499f6f..6c1709ed 100644 --- a/src/JPEGView/Config/KeyMap.txt +++ b/src/JPEGView/Config/KeyMap.txt @@ -43,7 +43,8 @@ #define IDM_SORT_UPCOUNTING 7100 // sort upcounting #define IDM_SORT_DOWNCOUNTING 7110 // sort downcounting #define IDM_SLIDESHOW_RESUME 7399 // resume slide show (after stop) -#define IDM_SLIDESHOW_1 7401 +#define IDM_SLIDESHOW_1 7401 // start slide show @ 1fps +#define IDM_SLIDESHOW_CUSTOM 7421 // start slide show @ custom fps, specified via INI SlildeShowCustomInterval #define IDM_ROTATE_90 8000 // rotate image 90 deg #define IDM_ROTATE_270 9000 // rotate image 270 deg #define IDM_ROTATE 9100 // show free rotation dialog @@ -121,6 +122,8 @@ // Left, Right, Up, Down, Insert, Del, Plus, Minus, Mul, Div, Comma, Period // A .. Z F1 .. F12 +// Alt+Space is Not available (Windows shortcut); Ctrl+Space also seems unavailable. + // It is also possible to bind a command to a mouse button. Be aware that you override the default // functionality (e.g. to pan with left mouse) when you do so! Mouse buttons can be combined with // Alt, Ctrl and Shift but not with other keys or other mouse buttons. @@ -205,3 +208,4 @@ R IDM_ROTATE_90_LOSSLESS_CONFIRM T IDM_ROTATE_270_LOSSLESS_CONFIRM W IDM_EXPLORE Shift+Space IDM_SLIDESHOW_1 +Alt+Shift+R IDM_SLIDESHOW_CUSTOM diff --git a/src/JPEGView/JPEGView.cpp b/src/JPEGView/JPEGView.cpp index 977fabb7..8f371f6c 100644 --- a/src/JPEGView/JPEGView.cpp +++ b/src/JPEGView/JPEGView.cpp @@ -203,7 +203,9 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lp ATLASSERT(SUCCEEDED(hRes)); CString sStartupFile = ParseCommandLineForStartupFile(lpstrCmdLine); - int nAutostartSlideShow = (sStartupFile.GetLength() == 0) ? 0 : ParseCommandLineForAutostart(lpstrCmdLine); + //int nAutostartSlideShow = (sStartupFile.GetLength() == 0) ? 0 : ParseCommandLineForAutostart(lpstrCmdLine); + //Allow selection of image later, then auto-start slideshow + int nAutostartSlideShow = ParseCommandLineForAutostart(lpstrCmdLine); bool bForceFullScreen = ParseCommandLineForFullScreen(lpstrCmdLine); bool bAutoExit = ParseCommandLineForAutoExit(lpstrCmdLine); Helpers::ESorting eSorting = ParseCommandLineForSorting(lpstrCmdLine); diff --git a/src/JPEGView/JPEGView.rc b/src/JPEGView/JPEGView.rc index 39e4fbf0..f2c0db16 100644 --- a/src/JPEGView/JPEGView.rc +++ b/src/JPEGView/JPEGView.rc @@ -25,18 +25,18 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // TEXTINCLUDE // -1 TEXTINCLUDE +1 TEXTINCLUDE BEGIN "resource.h\0" END -2 TEXTINCLUDE +2 TEXTINCLUDE BEGIN "#include ""atlres.h""\r\n" "\0" END -3 TEXTINCLUDE +3 TEXTINCLUDE BEGIN "\0" END @@ -337,6 +337,7 @@ BEGIN MENUITEM "Waiting time\t7 sec", IDM_SLIDESHOW_7 MENUITEM "Waiting time\t10 sec", IDM_SLIDESHOW_10 MENUITEM "Waiting time\t20 sec", IDM_SLIDESHOW_20 + MENUITEM "Waiting time\tCustom", IDM_SLIDESHOW_CUSTOM POPUP "Transition Effect" BEGIN MENUITEM "None", IDM_EFFECT_NONE diff --git a/src/JPEGView/MainDlg.cpp b/src/JPEGView/MainDlg.cpp index 2e50fda2..35c2f586 100644 --- a/src/JPEGView/MainDlg.cpp +++ b/src/JPEGView/MainDlg.cpp @@ -202,6 +202,7 @@ CMainDlg::CMainDlg(bool bForceFullScreen) { m_eTransitionEffect = sp.SlideShowTransitionEffect(); m_nTransitionTime = sp.SlideShowEffectTimeMs(); + m_dSlideShowCustomFps = sp.SlideShowCustomFps(); CHistogramCorr::SetContrastCorrectionStrength((float)sp.AutoContrastAmount()); CHistogramCorr::SetBrightnessCorrectionStrength((float)sp.AutoBrightnessAmount()); @@ -408,7 +409,7 @@ LRESULT CMainDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam m_bLockPaint = false; m_isBeforeFileSelected = m_sStartupFile.IsEmpty(); - if (m_nAutoStartSlideShow > 0) { + if (!m_isBeforeFileSelected && (m_nAutoStartSlideShow > 0)) { StartMovieMode(1.0 / m_nAutoStartSlideShow); } @@ -436,6 +437,9 @@ LRESULT CMainDlg::OnPaint(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, B else { OpenFileWithDialog(true, true); Invalidate(TRUE); + if (m_nAutoStartSlideShow > 0) { + StartMovieMode(1.0 / m_nAutoStartSlideShow); + } } } } @@ -1136,8 +1140,9 @@ LRESULT CMainDlg::OnContextMenu(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, } if (!m_bFullScreenMode) { // Transition effect and speed only available in full screen mode - ::DeleteMenu(hMenuMovie, 9, MF_BYPOSITION); - ::DeleteMenu(hMenuMovie, 9, MF_BYPOSITION); + // v-this hardcoded position is bad! As position changes when a new slideshow interval menuitem is inserted in front of it! + ::DeleteMenu(hMenuMovie, 10, MF_BYPOSITION); + ::DeleteMenu(hMenuMovie, 10, MF_BYPOSITION); } else { ::CheckMenuItem(hMenuMovie, m_eTransitionEffect + IDM_EFFECT_NONE, MF_CHECKED); int nIndex = (m_nTransitionTime < 180) ? 0 : (m_nTransitionTime < 375) ? 1 : (m_nTransitionTime < 750) ? 2 : (m_nTransitionTime < 1500) ? 3 : 4; @@ -1449,6 +1454,9 @@ void CMainDlg::ExecuteCommand(int nCommand) { case IDM_SLIDESHOW_20: StartMovieMode(1.0/(nCommand - IDM_SLIDESHOW_START)); break; + case IDM_SLIDESHOW_CUSTOM: + StartMovieMode(m_dSlideShowCustomFps); + break; case IDM_EFFECT_NONE: case IDM_EFFECT_BLEND: case IDM_EFFECT_SLIDE_RL: diff --git a/src/JPEGView/MainDlg.h b/src/JPEGView/MainDlg.h index 9b4adcd6..797836bf 100644 --- a/src/JPEGView/MainDlg.h +++ b/src/JPEGView/MainDlg.h @@ -317,6 +317,7 @@ class CMainDlg : public CDialogImpl CHelpDlg* m_pHelpDlg; Helpers::ETransitionEffect m_eTransitionEffect; int m_nTransitionTime; + double m_dSlideShowCustomFps; DWORD m_nLastSlideShowImageTickCount; bool m_bUseLosslessWEBP; bool m_isBeforeFileSelected; diff --git a/src/JPEGView/SettingsProvider.cpp b/src/JPEGView/SettingsProvider.cpp index bcaaa52e..75124391 100644 --- a/src/JPEGView/SettingsProvider.cpp +++ b/src/JPEGView/SettingsProvider.cpp @@ -169,6 +169,38 @@ CSettingsProvider::CSettingsProvider(void) { m_nMaxSlideShowFileListSize = GetInt(_T("MaxSlideShowFileListSizeKB"), 200, 100, 10000); m_nSlideShowEffectTimeMs = GetInt(_T("SlideShowEffectTime"), 200, 100, 5000); + + //read SlideShowCustomInterval and convert to FPS + m_dSlideShowCustomFps = 1.0 / (5*60); //default 5mins + CString sSlideShowCustomInterval = GetString(_T("SlideShowCustomInterval"), _T("")).Trim(); + if (sSlideShowCustomInterval.GetLength() > 0) + { + double dMultiplier = 1.0; + int nLastChIndex = sSlideShowCustomInterval.GetLength() - 1; + wchar_t chUnits = sSlideShowCustomInterval[nLastChIndex]; + if (chUnits == 'm') + { + dMultiplier = 60.0; + sSlideShowCustomInterval = sSlideShowCustomInterval.Left(nLastChIndex); + } + else if (chUnits == 'h') + { + dMultiplier = 3600.0; + sSlideShowCustomInterval = sSlideShowCustomInterval.Left(nLastChIndex); + } + else if (chUnits == 's') + { + sSlideShowCustomInterval = sSlideShowCustomInterval.Left(nLastChIndex); + } + double dInterval = _wtof((LPCTSTR)sSlideShowCustomInterval) * dMultiplier; + if (dInterval > 1e-10) //guard against division by zero -> infinite FPS + m_dSlideShowCustomFps = 1.0 / dInterval; + } + else + { + m_dSlideShowCustomFps = 1 / (5*60); //5mins + } + m_bForceGDIPlus = GetBool(_T("ForceGDIPlus"), false); m_bSingleInstance = GetBool(_T("SingleInstance"), false); m_bSingleFullScreenInstance = GetBool(_T("SingleFullScreenInstance"), true); diff --git a/src/JPEGView/SettingsProvider.h b/src/JPEGView/SettingsProvider.h index f8e6aa11..3e0d83f5 100644 --- a/src/JPEGView/SettingsProvider.h +++ b/src/JPEGView/SettingsProvider.h @@ -68,6 +68,7 @@ class CSettingsProvider int MaxSlideShowFileListSize() { return m_nMaxSlideShowFileListSize; } Helpers::ETransitionEffect SlideShowTransitionEffect() { return m_eSlideShowTransitionEffect; } int SlideShowEffectTimeMs() { return m_nSlideShowEffectTimeMs; } + double SlideShowCustomFps() { return m_dSlideShowCustomFps; } bool ForceGDIPlus() { return m_bForceGDIPlus; } bool SingleInstance() { return m_bSingleInstance; } bool SingleFullScreenInstance() { return m_bSingleFullScreenInstance; } @@ -230,6 +231,7 @@ class CSettingsProvider int m_nMaxSlideShowFileListSize; Helpers::ETransitionEffect m_eSlideShowTransitionEffect; int m_nSlideShowEffectTimeMs; + double m_dSlideShowCustomFps; bool m_bForceGDIPlus; bool m_bSingleInstance; bool m_bSingleFullScreenInstance; diff --git a/src/JPEGView/resource.h b/src/JPEGView/resource.h index 121a8970..8a9b30b4 100644 --- a/src/JPEGView/resource.h +++ b/src/JPEGView/resource.h @@ -179,6 +179,7 @@ #define IDM_SLIDESHOW_7 7407 #define IDM_SLIDESHOW_10 7410 #define IDM_SLIDESHOW_20 7420 +#define IDM_SLIDESHOW_CUSTOM 7421 #define IDM_EFFECT_NONE 7450 #define IDM_EFFECT_BLEND 7451 #define IDM_EFFECT_SLIDE_RL 7452