<para />\r
</section>\r
</section>\r
-</chapter>
+ <section id="ExifRotation">\r
+ <title>Exif Auto Rotation</title>\r
+ <para />\r
+ <section id="HowdotheExifauto-rotationcommandswork">\r
+ <title>How do the Exif auto-rotation commands work?</title>\r
+ <para>\r
+ Image auto-rotation works in either of two modes, set by\r
+ <link linkend="MetadataMiscellaneous">Write altered image orientation to the metadata</link>\r
+ option.\r
+ </para>\r
+ <para>\r
+ <guilabel>Write altered image orientation to the metadata not set</guilabel>\r
+ <para />\r
+ If you change the orientation of an image using any of the available commands, the image will always be displayed in the modified orientation. This new orientation is stored in temporary data structures associated with each image file. When Geeqie closes, these changes will be lost.\r
+ </para>\r
+ <warning>\r
+ <para>It is not possible to determine if the image as displayed is the original image or one which has been temporarily rotated.</para>\r
+ </warning>\r
+ <para>\r
+ If the option\r
+ <link linkend="Editmenu">Auto rotate image using EXIF information</link>\r
+ is selected, any images which have Exif orientation data will also be shown rotated. However, any rotation you have selected manually will always over-ride the embedded Exif rotation value.\r
+ </para>\r
+ <para>\r
+ <guilabel>Write altered image orientation to the metadata set</guilabel>\r
+ <para />\r
+ <para>If you change the orientation of an image using any of the available commands, this new orientation is stored in a metadata write queue.</para>\r
+ <para>\r
+ If the option\r
+ <link linkend="Editmenu">Auto rotate image using EXIF information</link>\r
+ is selected, any images which have Exif orientation data will be shown rotated, including any in the metadata write queue.\r
+ </para>\r
+ <para>\r
+ However if the option\r
+ <link linkend="Editmenu">Auto rotate image using EXIF information</link>\r
+ is not selected, no images will be auto-rotated. If you have manually rotated any images, the metadata write icon on the status bar will alert you to that fact. Clicking the icon will give a list of the modified files.\r
+ </para>\r
+ </para>\r
+ <para />\r
+ </section>\r
+ </section>\r
+</chapter>\r
</term>\r
<listitem>\r
<para>\r
- Similar image content, the value to use to consider two images a match is configured in the\r
- <link linkend="GuideOptionsBehavior">Behaviour tab</link>\r
- of the preferences dialog by setting <emphasis>Custom similarity threshold</emphasis>.\r
+ The percentage value to used to consider two images a match is configured in the spin box at the bottom of the window.\r
</para>\r
</listitem>\r
</varlistentry>\r
<title>Thumbnails</title>\r
<para>Thumbnails can be displayed beside each image in the result list by enabling the Thumbnails check box.</para>\r
</section>\r
+ <section id="Rotation">\r
+ <title>Ignore Rotation</title>\r
+ <para>When checked, the rotational orientation of images will be ignored.</para>\r
+ </section>\r
<section id="Comparetwofilesets">\r
<title>Compare two file sets</title>\r
<para>Sometimes it is useful to compare one group of files to another, different group of files. Enable this check box to compare two groups of files. When enabled, a second list will appear and files can be added to this list using the same methods for the main list.</para>\r
</varlistentry>\r
<varlistentry>\r
<term>\r
- <guimenu>Find duplicates…</guimenu>\r
+ <menuchoice>\r
+ <shortcut>\r
+ <keycombo>\r
+ <keycap>D</keycap>\r
+ </keycombo>\r
+ </shortcut>\r
+ <guimenu>Find duplicates...</guimenu>\r
+ </menuchoice>\r
</term>\r
<listitem>\r
<para>Opens a new Find Duplicates window.</para>\r
<menuchoice>\r
<shortcut>\r
<keycombo>\r
- <keycap>4</keycap>\r
+ <keycap>Backspace</keycap>\r
</keycombo>\r
</shortcut>\r
<guimenu>Previous Image</guimenu>\r
<varlistentry>\r
<term>\r
<menuchoice>\r
+ <shortcut>\r
+ <keycombo>\r
+ <keycap>Ctrl</keycap>\r
+ <keycap>A</keycap>\r
+ </keycombo>\r
+ </shortcut>\r
<guimenu>Select all</guimenu>\r
</menuchoice>\r
</term>\r
<varlistentry>\r
<term>\r
<menuchoice>\r
+ <shortcut>\r
+ <keycombo>\r
+ <keycap>Ctrl</keycap>\r
+ <keycap>Shift</keycap>\r
+ <keycap>A</keycap>\r
+ </keycombo>\r
+ </shortcut>\r
<guimenu>Select none</guimenu>\r
</menuchoice>\r
</term>\r
<varlistentry>\r
<term>\r
<menuchoice>\r
- <guimenu>Invert Selection</guimenu>\r
+ <shortcut>\r
+ <keycombo>\r
+ <keycap>Ctrl</keycap>\r
+ <keycap>Shift</keycap>\r
+ <keycap>I</keycap>\r
+ </keycombo>\r
+ </shortcut>\r
+ <guimenu>Invert selection</guimenu>\r
</menuchoice>\r
</term>\r
<listitem>\r
<para>Inverts current selection</para>\r
</listitem>\r
</varlistentry>\r
+ <varlistentry>\r
+ <term>\r
+ <menuchoice>\r
+ <shortcut>\r
+ <keycombo>\r
+ <keycap>Alt</keycap>\r
+ <keycap>R</keycap>\r
+ </keycombo>\r
+ </shortcut>\r
+ <guimenu>Rectangular selection</guimenu>\r
+ </menuchoice>\r
+ </term>\r
+ <listitem>\r
+ <para>Toggles rectangular selection mode for icons</para>\r
+ </listitem>\r
+ </varlistentry>\r
<varlistentry>\r
<term>\r
<menuchoice>\r
<varlistentry>\r
<term>\r
<menuchoice>\r
+ <shortcut>\r
+ <keycombo>\r
+ <keycap>M</keycap>\r
+ </keycombo>\r
+ </shortcut>\r
<guimenu>Show marks</guimenu>\r
</menuchoice>\r
</term>\r
</term>\r
<listitem>\r
<para>Swaps the top and bottom sides of the image, does not modify the file on disk.</para>\r
+ <warning>\r
+ <para>\r
+ The above orientation commands - Rotate, Mirror and Flip - do not change the image on disk. The changes will be lost when Geeqie closes. Refer to the\r
+ <link linkend="MetadataMiscellaneous">Metadata tab of the Preferences Dialog</link>\r
+ if you wish these changes to be written to metadata.\r
+ </para>\r
+ <para>\r
+ Refer also to the\r
+ <link linkend="HowdotheExifauto-rotationcommandswork">FAQ</link>\r
+ .\r
+ </para>\r
+ </warning>\r
</listitem>\r
</varlistentry>\r
<varlistentry>\r
</menuchoice>\r
</term>\r
<listitem>\r
- <para>Removes all effects applied through the Adjust menu, reverting image to its original state.</para>\r
+ <para>Removes all temporary effects applied through the above commands, reverting the image according to its Exif Orientation tag.</para>\r
+ </listitem>\r
+ </varlistentry>\r
+ <varlistentry>\r
+ <term>\r
+ <guilabel>Auto rotate image using EXIF information</guilabel>\r
+ </term>\r
+ <listitem>\r
+ <para>\r
+ Auto rotates images based on metadata stored in images that have Exif data. Refer also to the\r
+ <link linkend="HowdotheExifauto-rotationcommandswork">FAQ</link>\r
+ .\r
+ </para>\r
</listitem>\r
</varlistentry>\r
<varlistentry>\r
</menuchoice>\r
</term>\r
<listitem>\r
- The commands above modifies image metadata only. This commands actually transforms image pixels. See\r
- <link linkend="GuideImageManagementExternalEditing">Editors section</link>\r
- for details\r
+ <para>This command affects only jpeg, tiff and png files. The image file on disk is rotated to the orientation as specified by its Exif Orientation tag.</para>\r
+ <warning>\r
+ <para>\r
+ The file rotate.desktop, using external commands exiftran, exiv2 and mogrify, is used to implement this command. Refer to\r
+ <link linkend="GuideImageManagementExternalEditing">Editors section</link>\r
+ for details.\r
+ </para>\r
+ </warning>\r
</listitem>\r
</varlistentry>\r
<varlistentry>\r
<title>Buttons</title>\r
<para>Statusbar buttons corresponds to selected menu action.</para>\r
<para />\r
+ <section id="ExifRotate">\r
+ <title>Exif rotate</title>\r
+ <para>\r
+ <guiicon>\r
+ <inlinegraphic fileref="gtk-color-picker.png" />\r
+ </guiicon>\r
+ Toggles the auto-rotation of images if they have Exif orientation data. \r
+ Refer also to the\r
+ <link linkend="HowdotheExifauto-rotationcommandswork">FAQ</link>\r
+ .\r
+ </para>\r
+ <para />\r
+ </section>\r
<section id="ShowPixelInfo">\r
<title>Show Pixel Info</title>\r
<para>\r
<para />\r
</section>\r
</section>\r
-</section>
+</section>\r
<section id="Behaviour">\r
<title>Behavior</title>\r
<variablelist>\r
- <varlistentry>\r
- <term>\r
- <guilabel>Rectangular selection in icon view</guilabel>\r
- </term>\r
- <listitem>\r
- <para>Enable this to change the selection method used when selecting multiple items in an icon view.</para>\r
- </listitem>\r
- </varlistentry>\r
<varlistentry>\r
<term>\r
<guilabel>Descend folders in tree view</guilabel>\r
</varlistentry>\r
<varlistentry>\r
<term>\r
- <guilabel>Open recent list maximum size</guilabel>\r
+ <guilabel>Recent folder list maximum size</guilabel>\r
</term>\r
<listitem>\r
- <para>This is the number of entries saved in the recent open file list.</para>\r
+ <para>This is the number of entries to be saved from the recent open folder list drop-down box. The number of entries displayed in the current session is unlimited.</para>\r
</listitem>\r
</varlistentry>\r
<varlistentry>\r
</varlistentry>\r
</variablelist>\r
</section>\r
- <section id="Miscellaneous">\r
- <title>Miscellaneous</title>\r
- <variablelist>\r
- <varlistentry>\r
- <term>\r
- <guilabel>Custom similarity threshold</guilabel>\r
- </term>\r
- <listitem>\r
- <para>\r
- This setting is used by the compare method\r
- <emphasis>Similarity (custom)</emphasis>\r
- , located in the\r
- <link linkend="GuideImageSearchFindingDuplicates" endterm="titleGuideImageSearchFindingDuplicates" />\r
- section.\r
- </para>\r
- </listitem>\r
- </varlistentry>\r
- </variablelist>\r
- </section>\r
<section id="Debugging">\r
<title>Debugging</title>\r
<variablelist>\r
<section id="Convenience">\r
<title>Convenience</title>\r
<variablelist>\r
- <varlistentry>\r
- <term>\r
- <guilabel>Auto rotate image using EXIF information</guilabel>\r
- </term>\r
- <listitem>\r
- <para>Auto rotates images based on metadata stored in images that have Exif data.</para>\r
- </listitem>\r
- </varlistentry>\r
- <varlistentry>\r
+ <varlistentry>\r
<term>\r
<guilabel>Auto rotate proofs using EXIF information</guilabel>\r
</term>\r
<listitem>\r
- <para>TBD</para>\r
+ <para>Auto rotate images on print proof sheet.</para>\r
</listitem>\r
</varlistentry>\r
</variablelist>\r
<para>\r
<guilabel>Write altered image orientation to the metadata</guilabel>\r
<para />\r
- TBD\r
+ If checked, the results of orientation commands (Rotate, Mirror and Flip) issued on an image will be written to metadata either automatically as specified below or when manually initiated. This option also affects the\r
+ <link linkend="Editmenu">Auto rotate image using EXIF information</link>\r
+ menu item.\r
</para>\r
+ <warning>\r
+ <para>If this option is not checked, the results of orientation commands will be lost when Geeqie closes.</para>\r
+ <para>Do not change this option while you have temporary rotations applied to images.</para>\r
+ </warning>\r
</listitem>\r
</itemizedlist>\r
<para />\r
<entry>file:<file></entry>\r
<entry>Change main window to display <file></entry>\r
</row>\r
+ <row>\r
+ <entry />\r
+ <entry>--tell</entry>\r
+ <entry>Print filename of current image</entry>\r
+ </row>\r
<row>\r
<entry />\r
<entry>view:<file></entry>\r
<?xml version="1.0" encoding="utf-8"?>\r
<section id="GuideReferenceKeyboardShortcuts">\r
+ <title id="titleGuideReferenceKeyboardShortcuts">Keyboard and Mouse Shortcuts</title>\r
<para>\r
- The table below shows the defaults for keyboard shortcuts. The current settings for all shortcuts may be found in the\r
+ The tables below shows the defaults for keyboard shortcuts. The current settings for all shortcuts may be found in the\r
<link linkend="GuideOptionsKeyboard" endterm="titleGuideOptionsKeyboard" />\r
dialogue.\r
</para>\r
- <title id="titleGuideReferenceKeyboardShortcuts">Keyboard and Mouse Shortcuts</title>\r
- <table frame="all">\r
- <title>Default keyboard shortcuts</title>\r
- <tgroup cols="3" rowsep="1" colsep="1">\r
- <thead>\r
- <row>\r
- <entry>Shortcut</entry>\r
- <entry>Mouse</entry>\r
- <entry>Action</entry>\r
- </row>\r
- </thead>\r
- <tbody>\r
- <row colsep="0">\r
- <entry colsep="0">\r
- <emphasis role="strong">Image Navigation</emphasis>\r
- </entry>\r
- <entry colsep="0" />\r
- <entry />\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>PageDown</keycap>\r
- </entry>\r
- <entry>\r
- <code>Left Click</code>\r
- ,\r
- <para />\r
- <code>Mouse Wheel down</code>\r
- <footnote id='ref1'>\r
- <para>\r
- Default Mouse wheel functions can be altered by changing the\r
- <link linkend="GuideOptionsBehavior">Mouse wheel scrolls image</link>\r
- option.\r
- </para>\r
- </footnote>\r
- </entry>\r
- <entry>Change to next image.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>PageUp</keycap>\r
- </entry>\r
- <entry>\r
- <code>Middle Click</code>\r
- ,\r
- <para />\r
- <code>Mouse Wheel up</code>\r
- <footnoteref linkend='ref1' />\r
- </entry>\r
- <entry>Change to previous image.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>Home</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Change to first image.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>End</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Change to last image.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>Space</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Change to next image.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>Backspace</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Change to previous image.</entry>\r
- </row>\r
- <row rowsep="0">\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- </row>\r
- <row>\r
- <entry colsep="0">\r
- <emphasis role="strong">Image viewing</emphasis>\r
- (image has keyboard focus)\r
- </entry>\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>Arrow key</keycap>\r
- </entry>\r
- <entry>\r
- <code>Left click and Drag</code>\r
- <footnoteref linkend='ref1' />\r
- </entry>\r
- <entry>Pan image.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>Shift + Arrows</code>\r
- </entry>\r
- <entry />\r
- <entry>Pan Image faster.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>Ctrl + Arrow key</code>\r
- </entry>\r
- <entry />\r
- <entry>Pan to respective edge of image.</entry>\r
- </row>\r
- <row>\r
- <entry />\r
- <entry>\r
- <code>Shift + right-click</code>\r
- </entry>\r
- <entry>Smooth scroll</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>]</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Rotate image clockwise 90 degrees.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>[</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Rotate image counterclockwise 90 degree.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>Shift + R</code>\r
- </entry>\r
- <entry />\r
- <entry>Rotate image 180 degrees.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>Shift + M</code>\r
- </entry>\r
- <entry />\r
- <entry>Flip image horizontally (mirror).</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>Shift + F</code>\r
- </entry>\r
- <entry />\r
- <entry>Flip image vertically.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>+</keycap>\r
- ,\r
- <keycap>=</keycap>\r
- </entry>\r
- <entry>\r
- <code>Ctrl + Mouse Wheel up</code>\r
- </entry>\r
- <entry>Zoom image in.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>-</keycap>\r
- </entry>\r
- <entry>\r
- <code>Ctrl + Mouse Wheel down</code>\r
- </entry>\r
- <entry>Zoom image out.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>Z</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Reset zoom to original size (1:1).</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>X</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Fit image to window size.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>W</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Zoom image to fit window width.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>H</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Zoom image to fit window height.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>1</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Set zoom to 1:1</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>2</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Set zoom to 2:1</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>3</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Set zoom to 3:1</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>4</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Set zoom to 4:1</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>7</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Set zoom to 1:4</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>8</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Set zoom to 1:3</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>9</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Set zoom to 1:2</entry>\r
- </row>\r
- <row rowsep="0">\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- </row>\r
- <row>\r
- <entry colsep="0">\r
- <emphasis role="strong">File Menu</emphasis>\r
- </entry>\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>N</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>New Window</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>C</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Open a new empty collection window.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>O</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Display open collection dialog.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>F3</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Open new search window.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Shift +\r
- <keycap>P</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Open print dialog.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>F</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Create new folder in current path.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>C</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Copy selected images, opens destination selection dialog.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>M</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Move selected images, opens destination selection dialog.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>R</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Rename selected images, opens rename dialog.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>D</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Delete selected images.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
+ <section id="AllWindows">\r
+ <title>Keyboard shortcuts in all windows</title>\r
+ <table frame="all">\r
+ <title>Standard keyboard shortcuts</title>\r
+ <tgroup cols="3" rowsep="1" colsep="1">\r
+ <thead>\r
+ <row>\r
+ <entry>Shortcut</entry>\r
+ <entry>Mouse</entry>\r
+ <entry>Action</entry>\r
+ </row>\r
+ </thead>\r
+ <tbody>\r
+ <row>\r
+ <entry>\r
+ <keycap>F1</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Help.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>Menu</keycap>\r
+ </entry>\r
+ <entry>Right-click</entry>\r
+ <entry>Context menu.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>F10</keycap>\r
+ </entry>\r
+ <entry>Right-click</entry>\r
+ <entry>Context menu.</entry>\r
+ </row>\r
+ </tbody>\r
+ </tgroup>\r
+ </table>\r
+ </section>\r
+ <section id="mainKeyboard">\r
+ <title>Main window keyboard shortcuts</title>\r
+ <table frame="all">\r
+ <title>\r
+ <link linkend="GuideMainWindow">Main window</link>\r
+ keyboard shortcuts\r
+ </title>\r
+ <tgroup cols="3" rowsep="1" colsep="1">\r
+ <thead>\r
+ <row>\r
+ <entry>Shortcut</entry>\r
+ <entry>Mouse</entry>\r
+ <entry>Action</entry>\r
+ </row>\r
+ </thead>\r
+ <tbody>\r
+ <row colsep="0">\r
+ <entry colsep="0">\r
+ <emphasis role="strong">Image Navigation</emphasis>\r
+ </entry>\r
+ <entry colsep="0" />\r
+ <entry />\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>PageDown</keycap>\r
+ </entry>\r
+ <entry>\r
+ <code>Left Click</code>\r
+ ,\r
+ <para />\r
+ <code>Mouse Wheel down</code>\r
+ <footnote id='ref1'>\r
+ <para>\r
+ Default Mouse wheel functions can be altered by changing the\r
+ <link linkend="GuideOptionsBehavior">Mouse wheel scrolls image</link>\r
+ option.\r
+ </para>\r
+ </footnote>\r
+ </entry>\r
+ <entry>Change to next image.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>PageUp</keycap>\r
+ </entry>\r
+ <entry>\r
+ <code>Middle Click</code>\r
+ ,\r
+ <para />\r
+ <code>Mouse Wheel up</code>\r
+ <footnoteref linkend='ref1' />\r
+ </entry>\r
+ <entry>Change to previous image.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>Home</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Change to first image.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>End</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Change to last image.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>Space</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Change to next image.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>Backspace</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Change to previous image.</entry>\r
+ </row>\r
+ <row rowsep="0">\r
+ <entry colsep="0" />\r
+ <entry colsep="0" />\r
+ <entry colsep="0" />\r
+ </row>\r
+ <row>\r
+ <entry colsep="0">\r
+ <emphasis role="strong">Image viewing</emphasis>\r
+ (image has keyboard focus)\r
+ </entry>\r
+ <entry colsep="0" />\r
+ <entry colsep="0" />\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>Arrow key</keycap>\r
+ </entry>\r
+ <entry>\r
+ <code>Left click and Drag</code>\r
+ <footnoteref linkend='ref1' />\r
+ </entry>\r
+ <entry>Pan image.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>Shift + Arrows</code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Pan Image faster.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>Ctrl + Arrow key</code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Pan to respective edge of image.</entry>\r
+ </row>\r
+ <row>\r
+ <entry />\r
+ <entry>\r
+ <code>Shift + right-click</code>\r
+ </entry>\r
+ <entry>Smooth scroll</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>]</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Rotate image clockwise 90 degrees.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>[</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Rotate image counterclockwise 90 degree.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>Shift + R</code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Rotate image 180 degrees.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>Shift + M</code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Flip image horizontally (mirror).</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>Shift + F</code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Flip image vertically.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>+</keycap>\r
+ ,\r
+ <keycap>=</keycap>\r
+ </entry>\r
+ <entry>\r
+ <code>Ctrl + Mouse Wheel up</code>\r
+ </entry>\r
+ <entry>Zoom image in.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>-</keycap>\r
+ </entry>\r
+ <entry>\r
+ <code>Ctrl + Mouse Wheel down</code>\r
+ </entry>\r
+ <entry>Zoom image out.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>Z</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Reset zoom to original size (1:1).</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>X</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Fit image to window size.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
<keycap>W</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Close window, Geeqie exits when last window is closed.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>Q</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Quit Geeqie.</entry>\r
- </row>\r
- <row rowsep="0">\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- </row>\r
- <row>\r
- <entry colsep="0">\r
- <emphasis role="strong">Edit Menu</emphasis>\r
- </entry>\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
+ </entry>\r
+ <entry />\r
+ <entry>Zoom image to fit window width.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>H</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Zoom image to fit window height.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>1</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Set zoom to 1:1</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>2</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Set zoom to 2:1</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>3</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Set zoom to 3:1</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>4</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Set zoom to 4:1</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>7</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Set zoom to 1:4</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>8</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Set zoom to 1:3</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>9</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Set zoom to 1:2</entry>\r
+ </row>\r
+ <row rowsep="0">\r
+ <entry colsep="0" />\r
+ <entry colsep="0" />\r
+ <entry colsep="0" />\r
+ </row>\r
+ <row>\r
+ <entry colsep="0">\r
+ <emphasis role="strong">File Menu</emphasis>\r
+ </entry>\r
+ <entry colsep="0" />\r
+ <entry colsep="0" />\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>N</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>New Window</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>C</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Open a new empty collection window.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
<keycap>O</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Open Geeqie preferences window.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>S</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Save metadata</entry>\r
- </row>\r
- <row rowsep="0">\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- </row>\r
- <row>\r
- <entry colsep="0">\r
- <emphasis role="strong">Select Menu</emphasis>\r
- </entry>\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>1</keycap>\r
- ...\r
- <keycap>6</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Toggle mark 1 ... 6</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
+ </entry>\r
+ <entry />\r
+ <entry>Display open collection dialog.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>F3</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Open new search window.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Shift +\r
+ <keycap>P</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Open print dialog.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>F</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Create new folder in current path.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>C</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Copy selected images, opens destination selection dialog.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>M</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Move selected images, opens destination selection dialog.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>R</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Rename selected images, opens rename dialog.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>D</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Delete selected images.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>W</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Close window, Geeqie exits when last window is closed.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>Q</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Quit Geeqie.</entry>\r
+ </row>\r
+ <row rowsep="0">\r
+ <entry colsep="0" />\r
+ <entry colsep="0" />\r
+ <entry colsep="0" />\r
+ </row>\r
+ <row>\r
+ <entry colsep="0">\r
+ <emphasis role="strong">Edit Menu</emphasis>\r
+ </entry>\r
+ <entry colsep="0" />\r
+ <entry colsep="0" />\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>O</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Open Geeqie preferences window.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>S</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Save metadata</entry>\r
+ </row>\r
+ <row rowsep="0">\r
+ <entry colsep="0" />\r
+ <entry colsep="0" />\r
+ <entry colsep="0" />\r
+ </row>\r
+ <row>\r
+ <entry colsep="0">\r
+ <emphasis role="strong">Select Menu</emphasis>\r
+ </entry>\r
+ <entry colsep="0" />\r
+ <entry colsep="0" />\r
+ </row>\r
+ <row>\r
+ <entry>\r
<keycap>1</keycap>\r
- </code>\r
- ...\r
- <code>\r
- Ctrl +\r
+ ...\r
<keycap>6</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Select mark 1 ... 6</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>A</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Select all images.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl + SHIFT +\r
- <keycap>A</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Unselect all images.</entry>\r
- </row>\r
- <row rowsep="0">\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- </row>\r
- <row>\r
- <entry colsep="0">\r
- <emphasis role="strong">View Menu</emphasis>\r
- </entry>\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>T</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Toggle display of thumbnails when in list view.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
+ </entry>\r
+ <entry />\r
+ <entry>Toggle mark 1 ... 6</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>1</keycap>\r
+ </code>\r
+ ...\r
+ <code>\r
+ Ctrl +\r
+ <keycap>6</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Select mark 1 ... 6</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>A</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Select all images.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl + SHIFT +\r
+ <keycap>A</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Unselect all images.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl + SHIFT +\r
+ <keycap>I</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Invert selection.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Alt +\r
+ <keycap>R</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Toggle rectangular selection mode in icon view.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>M</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Show marks.</entry>\r
+ </row>\r
+ <row rowsep="0">\r
+ <entry colsep="0" />\r
+ <entry colsep="0" />\r
+ <entry colsep="0" />\r
+ </row>\r
+ <row>\r
+ <entry colsep="0">\r
+ <emphasis role="strong">View Menu</emphasis>\r
+ </entry>\r
+ <entry colsep="0" />\r
+ <entry colsep="0" />\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>T</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Toggle display of thumbnails when in list view.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>L</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Display file list as detailed list view.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>I</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Display file list as icon view.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>T</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Toggle folder display between list and tree views.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>R</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Refresh file list.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
<keycap>L</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Display file list as detailed list view.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
+ </entry>\r
+ <entry />\r
+ <entry>Toggle floating of file display.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>H</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Toggle hiding of file display.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>E</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Toggle EXIF sidebar.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Shift +\r
+ <keycap>S</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Toggle Sort Manager sidebar.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>K</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Toggle Keywords sidebar.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>V</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Toggle full screen.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
<keycap>I</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Display file list as icon view.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>T</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Toggle folder display between list and tree views.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>R</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Refresh file list.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>L</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Toggle floating of file display.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>H</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Toggle hiding of file display.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>E</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Toggle EXIF sidebar.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Shift +\r
+ </entry>\r
+ <entry />\r
+ <entry>Toggle information overlay.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
<keycap>S</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Toggle Sort Manager sidebar.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>K</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Toggle Keywords sidebar.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>V</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Toggle full screen.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>I</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Toggle information overlay.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>S</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Toggle slideshow.</entry>\r
- </row>\r
- <row rowsep="0">\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- </row>\r
- <row>\r
- <entry colsep="0">\r
- <emphasis role="strong">Help Menu</emphasis>\r
- </entry>\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>F1</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Open User Manual in browser.</entry>\r
- </row>\r
- <row rowsep="0">\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- </row>\r
- <row>\r
+ </entry>\r
+ <entry />\r
+ <entry>Toggle slideshow.</entry>\r
+ </row>\r
+ </tbody>\r
+ </tgroup>\r
+ </table>\r
+ </section>\r
+ <section id="CollectionsKeyboardShortcuts">\r
+ <title>Collections keyboard shortcuts</title>\r
+ <table frame="all">\r
+ <title>\r
+ <link linkend="GuideCollections">Collections window</link>\r
+ keyboard shortcuts\r
+ </title>\r
+ <tgroup cols="3" rowsep="1" colsep="1">\r
+ <thead>\r
+ <row>\r
+ <entry>Shortcut</entry>\r
+ <entry>Mouse</entry>\r
+ <entry>Action</entry>\r
+ </row>\r
+ </thead>\r
+ <tbody>\r
<entry colsep="0">\r
<emphasis role="strong">Collection Window</emphasis>\r
</entry>\r
<entry colsep="0" />\r
<entry colsep="0" />\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>Arrows</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Move selection.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>Shift + Arrow key</code>\r
- </entry>\r
- <entry />\r
- <entry>Select multiple images.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>Ctrl + Arrow</code>\r
- </entry>\r
- <entry />\r
- <entry>Move focus without changing selection.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>Space</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Select only image with focus.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>Ctrl + Space</code>\r
- </entry>\r
- <entry />\r
- <entry>Toggle selection of image with focus.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>Home</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Move focus to first image.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>End</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Move focus to last image.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>A</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Select all images.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl + Shift +\r
+ <row>\r
+ <entry>\r
+ <keycap>Arrows</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Move selection.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>Shift + Arrow key</code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Select multiple images.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Alt +\r
+ <keycap>R</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Toggle rectangular selection mode.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>Space</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Select only image with focus.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>Ctrl + Space</code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Toggle selection of image with focus.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>Home</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Move focus to first image.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>End</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Move focus to last image.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>A</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Select all images.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl + Shift +\r
+ <keycap>A</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Unselect all images.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>Delete</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Remove selected image from collection, does not delete image from disk.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>L</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Add images from main window's file list.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>T</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Toggle display of icon filenames.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>N</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Sort collection by name.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>D</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Sort collection by file date.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>B</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Sort collection by file size.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>P</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Sort collection by file path.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>I</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Sort collection by natural numerical order.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>Enter</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>View image with focus in main window.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>V</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>View image with focus in new window.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Shift +\r
+ <keycap>P</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Open print dialog.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>S</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Save collection.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>S</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Save collection as, opens destination dialog.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
<keycap>A</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Unselect all images.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>Delete</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Remove selected image from collection, does not delete image from disk.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>L</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Add images from main window's file list.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>T</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Toggle display of icon filenames.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>N</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Sort collection by name.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>D</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Sort collection by file date.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>B</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Sort collection by file size.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>P</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Sort collection by file path.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>I</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Sort collection by natural numerical order.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>Enter</keycap>\r
- </entry>\r
- <entry />\r
- <entry>View image with focus in main window.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>V</keycap>\r
- </entry>\r
- <entry />\r
- <entry>View image with focus in new window.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
+ </entry>\r
+ <entry />\r
+ <entry>Append to collection, opens append dialog.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>C</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Copy selected images, opens destination selection dialog.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>M</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Move selected images, opens destination selection dialog.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>R</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Rename selected images, opens rename dialog.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>D</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Delete selected images.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>W</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Close collection window.</entry>\r
+ </row>\r
+ <row rowsep="0">\r
+ <entry colsep="0" />\r
+ <entry colsep="0" />\r
+ <entry colsep="0" />\r
+ </row>\r
+ </tbody>\r
+ </tgroup>\r
+ </table>\r
+ </section>\r
+ <section id="DuplicatesKeyboardShortcuts">\r
+ <title>Duplicates keyboard shortcuts</title>\r
+ <table frame="all">\r
+ <title>\r
+ <link linkend="GuideImageSearchFindingDuplicates">Duplicates window</link>\r
+ keyboard shortcuts\r
+ </title>\r
+ <tgroup cols="3" rowsep="1" colsep="1">\r
+ <thead>\r
+ <row>\r
+ <entry>Shortcut</entry>\r
+ <entry>Mouse</entry>\r
+ <entry>Action</entry>\r
+ </row>\r
+ </thead>\r
+ <tbody>\r
+ <row>\r
+ <entry>\r
<keycap>1</keycap>\r
- </code>\r
- ...\r
- <code>\r
- Ctrl +\r
- <keycap>0</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Run external edit command on selected images.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>S</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Save collection.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>S</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Save collection as, opens destination dialog.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>A</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Append to collection, opens append dialog.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
+ </entry>\r
+ <entry />\r
+ <entry>Select group 1 duplicates.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>2</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Select group 2 duplicates.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
<keycap>C</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Copy selected images, opens destination selection dialog.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>M</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Move selected images, opens destination selection dialog.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>R</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Rename selected images, opens rename dialog.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>D</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Delete selected images.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>P</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Open image properties window.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <code>\r
- Ctrl +\r
- <keycap>W</keycap>\r
- </code>\r
- </entry>\r
- <entry />\r
- <entry>Close collection window.</entry>\r
- </row>\r
- <row rowsep="0">\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- </row>\r
- <anchor id="FindDuplicatesWindow" />\r
- <row>\r
- <entry colsep="0">\r
- <emphasis role="strong">Find Duplicates Window</emphasis>\r
- (same as Collection Window above, with the following additions)\r
- </entry>\r
- <entry colsep="0" />\r
- <entry colsep="0" />\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>1</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Select group 1 duplicates.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>2</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Select group 2 duplicates.</entry>\r
- </row>\r
- <row>\r
- <entry>\r
- <keycap>C</keycap>\r
- </entry>\r
- <entry />\r
- <entry>Open new collection window and add selected images.</entry>\r
- </row>\r
- </tbody>\r
- </tgroup>\r
- </table>\r
+ </entry>\r
+ <entry />\r
+ <entry>Open new collection window and add selected images.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>L</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Add images from main window's list.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>V</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>View selected item in new window.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>T</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Toggle thumbnails.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>A</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Select all.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl + shift +\r
+ <keycap>A</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Deselect all.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>C</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Copy selected images, opens destination selection dialog.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>M</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Move selected images, opens destination selection dialog.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>R</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Rename selected images, opens rename dialog.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>D</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Delete selected images.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>Ctrl + Delete</code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Remove all items from list.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>W</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Close window.</entry>\r
+ </row>\r
+ </tbody>\r
+ </tgroup>\r
+ </table>\r
+ </section>\r
+ <section id="SearchKeyboardShortcuts">\r
+ <title>Search keyboard shortcuts</title>\r
+ <table frame="all">\r
+ <title>\r
+ <link linkend="GuideImageSearchSearch">Search window</link>\r
+ keyboard shortcuts\r
+ </title>\r
+ <tgroup cols="3" rowsep="1" colsep="1">\r
+ <thead>\r
+ <row>\r
+ <entry>Shortcut</entry>\r
+ <entry>Mouse</entry>\r
+ <entry>Action</entry>\r
+ </row>\r
+ </thead>\r
+ <tbody>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>C</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Copy selected images, opens destination selection dialog.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>M</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Move selected images, opens destination selection dialog.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>R</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Rename selected images, opens rename dialog.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>D</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Delete selected images.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>A</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Select all.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl + shift +\r
+ <keycap>A</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Deselect all.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>Delete</code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Remove selected items from list.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>Ctrl + Delete</code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Remove all items from list.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>V</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>View selected item in new window.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>C</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Open new collection window and add selected images.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>T</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Toggle thumbnails.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>W</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Close window.</entry>\r
+ </row>\r
+ </tbody>\r
+ </tgroup>\r
+ </table>\r
+ </section>\r
+ <section id="PanViewKeyboardShortcuts">\r
+ <title>Pan view keyboard shortcuts</title>\r
+ <table frame="all">\r
+ <title>\r
+ <link linkend="GuideOtherWindowsPanView">Pan View window</link>\r
+ keyboard shortcuts\r
+ </title>\r
+ <tgroup cols="3" rowsep="1" colsep="1">\r
+ <thead>\r
+ <row>\r
+ <entry>Shortcut</entry>\r
+ <entry>Mouse</entry>\r
+ <entry>Action</entry>\r
+ </row>\r
+ </thead>\r
+ <tbody>\r
+ <row>\r
+ <entry>\r
+ <keycap>Arrow key</keycap>\r
+ </entry>\r
+ <entry>\r
+ <code>Left click and Drag</code>\r
+ <footnoteref linkend='ref1' />\r
+ </entry>\r
+ <entry>Scroll display.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>Page Up</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Scroll display half screen up.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>Page Down</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Scroll display half screen down.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>Home</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Scroll display half screen left.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>End</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Scroll display half screen right.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>F</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Display Find search bar.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>/</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Display Find search bar.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>G</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Start search.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>F11, F, V</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Toggle Fullscreen.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>Esc</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Exit fullscreen or clear search bar.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>+</keycap>\r
+ ,\r
+ <keycap>=</keycap>\r
+ </entry>\r
+ <entry>\r
+ <code>Ctrl + Mouse Wheel up</code>\r
+ </entry>\r
+ <entry>Zoom image in.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>-</keycap>\r
+ </entry>\r
+ <entry>\r
+ <code>Ctrl + Mouse Wheel down</code>\r
+ </entry>\r
+ <entry>Zoom image out.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>Z</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Reset zoom to original size (1:1).</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>1</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Set zoom to 1:1</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>2</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Set zoom to 2:1</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>3</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Set zoom to 3:1</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>4</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Set zoom to 4:1</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>7</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Set zoom to 1:4</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>8</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Set zoom to 1:3</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <keycap>9</keycap>\r
+ </entry>\r
+ <entry />\r
+ <entry>Set zoom to 1:2</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>C</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Copy selected image, opens destination selection dialog.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>M</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Move selected image, opens destination selection dialog.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>R</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Rename selected image, opens rename dialog.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>D</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Delete selected image.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>\r
+ <code>\r
+ Ctrl +\r
+ <keycap>W</keycap>\r
+ </code>\r
+ </entry>\r
+ <entry />\r
+ <entry>Close window.</entry>\r
+ </row>\r
+ </tbody>\r
+ </tgroup>\r
+ </table>\r
+ </section>\r
</section>\r
gtk_scale_button_set_value(GTK_SCALE_BUTTON(slider), (gdouble)zoom);
progress = gtk_progress_bar_new();
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress), "");
+ gtk_progress_bar_set_show_text(GTK_PROGRESS_BAR(progress), TRUE);
+#endif
state = gtk_label_new("");
gtk_label_set_justify(GTK_LABEL(state), GTK_JUSTIFY_CENTER);
cd->progress = gtk_progress_bar_new();
gtk_progress_bar_set_text(GTK_PROGRESS_BAR(cd->progress), _("click start to begin"));
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_progress_bar_set_show_text(GTK_PROGRESS_BAR(cd->progress), TRUE);
+#endif
gtk_box_pack_start(GTK_BOX(cd->gd->vbox), cd->progress, FALSE, FALSE, 0);
gtk_widget_show(cd->progress);
CTABLE_COLUMN_COUNT
};
-typedef enum {
- SELECTION_NONE = 0,
- SELECTION_SELECTED = 1 << 0,
- SELECTION_PRELIGHT = 1 << 1,
- SELECTION_FOCUS = 1 << 2
-} SelectionType;
-
-
#define INFO_SELECTED(x) (x->flag_mask & SELECTION_SELECTED)
ct->prev_selection= ct->click_info;
}
+static void collection_table_popup_rectangular_selection_cb(GtkWidget *widget, gpointer data)
+{
+ CollectTable *ct = data;
+
+ options->collections.rectangular_selection = !(options->collections.rectangular_selection);
+}
+
static void collection_table_popup_remove_cb(GtkWidget *widget, gpointer data)
{
CollectTable *ct = data;
CollectTable *ct = data;
DupeWindow *dw;
- dw = dupe_window_new(DUPE_MATCH_NAME);
+ dw = dupe_window_new();
dupe_window_add_collection(dw, ct->cd);
}
G_CALLBACK(collection_table_popup_unselectall_cb), ct);
menu_item_add(submenu, _("Invert selection"),
G_CALLBACK(collection_table_popup_select_invert_cb), ct);
+ menu_item_add_check(submenu, _("Rectangular selection"), (options->collections.rectangular_selection != FALSE),
+ G_CALLBACK(collection_table_popup_rectangular_selection_cb), ct);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu);
menu_item_add_divider(menu);
collection_set_sort_method(cw->cd, SORT_PATH);
}
break;
+ case 'R': case 'r':
+ if (event->state & GDK_MOD1_MASK)
+ {
+ options->collections.rectangular_selection = !(options->collections.rectangular_selection);
+ }
+ break;
case GDK_KEY_Delete: case GDK_KEY_KP_Delete:
list = g_list_copy(cw->table->selection);
if (list)
collection_remove_by_info(cw->cd, collection_table_get_focus_info(cw->table));
}
break;
+ case GDK_KEY_F1:
+ help_window_show("GuideReferenceKeyboardShortcuts.html#CollectionsKeyboardShortcuts");
+ break;
default:
stop_signal = FALSE;
break;
extra_label = gtk_progress_bar_new();
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(extra_label), 0.0);
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(extra_label), "");
+ gtk_progress_bar_set_show_text(GTK_PROGRESS_BAR(extra_label), TRUE);
+#endif
gtk_box_pack_start(GTK_BOX(cw->status_box), extra_label, TRUE, TRUE, 0);
gtk_widget_show(extra_label);
g_free(text[DUPE_COLUMN_DIMENSIONS]);
}
+static void dupe_listview_select_dupes(DupeWindow *dw, DupeSelectType parents);
+
static void dupe_listview_populate(DupeWindow *dw)
{
GtkListStore *store;
}
gtk_tree_view_columns_autosize(GTK_TREE_VIEW(dw->listview));
+
+ if (options->duplicates_select_type == DUPE_SELECT_GROUP1)
+ {
+ dupe_listview_select_dupes(dw, DUPE_SELECT_GROUP1);
+ }
+ else if (options->duplicates_select_type == DUPE_SELECT_GROUP2)
+ {
+ dupe_listview_select_dupes(dw, DUPE_SELECT_GROUP2);
+ }
+
}
static void dupe_listview_remove(DupeWindow *dw, DupeItem *di)
return found;
}
-static void dupe_listview_select_dupes(DupeWindow *dw, gint parents)
+static void dupe_listview_select_dupes(DupeWindow *dw, DupeSelectType parents)
{
GtkTreeModel *store;
GtkTreeSelection *selection;
DupeItem *di;
gtk_tree_model_get(store, &iter, DUPE_COLUMN_POINTER, &di, -1);
- if ( (dupe_match_find_parent(dw, di) == di) == (parents) )
+ if ((dupe_match_find_parent(dw, di) == di) == (parents == DUPE_SELECT_GROUP1))
{
gtk_tree_selection_select_iter(selection, &iter);
}
if (!di) return;
+ /* Ensure images in the lists have unique FileDatas */
+ GList *work;
+ DupeItem *di_list;
+ work = g_list_first(dw->list);
+ while (work)
+ {
+ di_list = work->data;
+ if (di_list->fd == di->fd)
+ {
+ return;
+ }
+ else
+ {
+ work = work->next;
+ }
+ }
+
+ if (dw->second_list)
+ {
+ work = g_list_first(dw->second_list);
+ while (work)
+ {
+ di_list = work->data;
+ if (di_list->fd == di->fd)
+ {
+ return;
+ }
+ else
+ {
+ work = work->next;
+ }
+ }
+ }
+
if (dw->second_drop)
{
dupe_second_add(dw, di);
DupeWindow *dw = data;
GtkTreeSelection *selection;
+ options->duplicates_select_type = DUPE_SELECT_NONE;
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dw->listview));
gtk_tree_selection_select_all(selection);
}
DupeWindow *dw = data;
GtkTreeSelection *selection;
+ options->duplicates_select_type = DUPE_SELECT_NONE;
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dw->listview));
gtk_tree_selection_unselect_all(selection);
}
{
DupeWindow *dw = data;
- dupe_listview_select_dupes(dw, TRUE);
+ options->duplicates_select_type = DUPE_SELECT_GROUP1;
+ dupe_listview_select_dupes(dw, DUPE_SELECT_GROUP1);
}
static void dupe_menu_select_dupes_set2_cb(GtkWidget *widget, gpointer data)
{
DupeWindow *dw = data;
- dupe_listview_select_dupes(dw, FALSE);
+ options->duplicates_select_type = DUPE_SELECT_GROUP2;
+ dupe_listview_select_dupes(dw, DUPE_SELECT_GROUP2);
}
static void dupe_menu_edit_cb(GtkWidget *widget, gpointer data)
if (!gtk_combo_box_get_active_iter(GTK_COMBO_BOX(combo), &iter)) return;
gtk_tree_model_get(store, &iter, DUPE_MENU_COLUMN_MASK, &dw->match_mask, -1);
+ options->duplicates_match = dw->match_mask;
+
dupe_window_recompare(dw);
}
DupeWindow *dw = data;
dw->show_thumbs = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+ options->duplicates_thumbnails = dw->show_thumbs;
if (dw->show_thumbs)
{
dupe_listview_set_height(dw->listview, dw->show_thumbs);
}
+static void dupe_window_rotation_invariant_cb(GtkWidget *widget, gpointer data)
+{
+ DupeWindow *dw = data;
+
+ options->rot_invariant_sim = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+ dupe_window_recompare(dw);
+}
+
+static void dupe_window_custom_threshold_cb(GtkWidget *widget, gpointer data)
+{
+ DupeWindow *dw = data;
+ DupeMatchType match_type;
+ GtkTreeModel *store;
+ gboolean valid;
+ GtkTreeIter iter;
+
+ options->duplicates_similarity_threshold = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
+ dw->match_mask = DUPE_MATCH_SIM_CUSTOM;
+
+ store = gtk_combo_box_get_model(GTK_COMBO_BOX(dw->combo));
+ valid = gtk_tree_model_get_iter_first(store, &iter);
+ while (valid)
+ {
+ gtk_tree_model_get(store, &iter, DUPE_MENU_COLUMN_MASK, &match_type, -1);
+ if (match_type == DUPE_MATCH_SIM_CUSTOM)
+ {
+ break;
+ }
+ valid = gtk_tree_model_iter_next(store, &iter);
+ }
+
+ gtk_combo_box_set_active_iter(GTK_COMBO_BOX(dw->combo), &iter);
+ dupe_window_recompare(dw);
+}
+
static void dupe_popup_menu_pos_cb(GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer data)
{
GtkWidget *view = data;
}
break;
case '1':
- dupe_listview_select_dupes(dw, TRUE);
+ options->duplicates_select_type == DUPE_SELECT_GROUP1;
+ dupe_listview_select_dupes(dw, DUPE_SELECT_GROUP1);
break;
case '2':
- dupe_listview_select_dupes(dw, FALSE);
+ options->duplicates_select_type == DUPE_SELECT_GROUP2;
+ dupe_listview_select_dupes(dw, DUPE_SELECT_GROUP2);
break;
case GDK_KEY_Menu:
case GDK_KEY_F10:
dupe_popup_menu_pos_cb, listview, 0, GDK_CURRENT_TIME);
}
break;
+ case GDK_KEY_F1:
+ help_window_show("GuideReferenceKeyboardShortcuts.html#DuplicatesKeyboardShortcuts");
+ break;
default:
stop_signal = FALSE;
break;
}
/* collection and files can be NULL */
-DupeWindow *dupe_window_new(DupeMatchType match_mask)
+DupeWindow *dupe_window_new()
{
DupeWindow *dw;
GtkWidget *vbox;
dw = g_new0(DupeWindow, 1);
- dw->match_mask = match_mask;
+ dw->match_mask = DUPE_MATCH_NAME;
+ if (options->duplicates_match == DUPE_MATCH_NAME) dw->match_mask = DUPE_MATCH_NAME;
+ if (options->duplicates_match == DUPE_MATCH_SIZE) dw->match_mask = DUPE_MATCH_SIZE;
+ if (options->duplicates_match == DUPE_MATCH_DATE) dw->match_mask = DUPE_MATCH_DATE;
+ if (options->duplicates_match == DUPE_MATCH_DIM) dw->match_mask = DUPE_MATCH_DIM;
+ if (options->duplicates_match == DUPE_MATCH_SUM) dw->match_mask = DUPE_MATCH_SUM;
+ if (options->duplicates_match == DUPE_MATCH_PATH) dw->match_mask = DUPE_MATCH_PATH;
+ if (options->duplicates_match == DUPE_MATCH_SIM_HIGH) dw->match_mask = DUPE_MATCH_SIM_HIGH;
+ if (options->duplicates_match == DUPE_MATCH_SIM_MED) dw->match_mask = DUPE_MATCH_SIM_MED;
+ if (options->duplicates_match == DUPE_MATCH_SIM_LOW) dw->match_mask = DUPE_MATCH_SIM_LOW;
+ if (options->duplicates_match == DUPE_MATCH_SIM_CUSTOM) dw->match_mask = DUPE_MATCH_SIM_CUSTOM;
+ if (options->duplicates_match == DUPE_MATCH_NAME_CI) dw->match_mask = DUPE_MATCH_NAME_CI;
dw->window = window_new(GTK_WINDOW_TOPLEVEL, "dupe", NULL, NULL, _("Find duplicates"));
gtk_widget_show(dw->combo);
dw->button_thumbs = gtk_check_button_new_with_label(_("Thumbnails"));
+ dw->show_thumbs = options->duplicates_thumbnails;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dw->button_thumbs), dw->show_thumbs);
g_signal_connect(G_OBJECT(dw->button_thumbs), "toggled",
G_CALLBACK(dupe_window_show_thumb_cb), dw);
gtk_box_pack_start(GTK_BOX(status_box), dw->button_thumbs, FALSE, FALSE, PREF_PAD_SPACE);
gtk_widget_show(dw->button_thumbs);
+ dw->button_rotation_invariant = gtk_check_button_new_with_label(_("Ignore Rotation"));
+ gtk_widget_set_tooltip_text(GTK_WIDGET(dw->button_rotation_invariant), "Ignore image orientation");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dw->button_rotation_invariant), options->rot_invariant_sim);
+ g_signal_connect(G_OBJECT(dw->button_rotation_invariant), "toggled",
+ G_CALLBACK(dupe_window_rotation_invariant_cb), dw);
+ gtk_box_pack_start(GTK_BOX(status_box), dw->button_rotation_invariant, FALSE, FALSE, PREF_PAD_SPACE);
+ gtk_widget_show(dw->button_rotation_invariant);
+
button = gtk_check_button_new_with_label(_("Compare two file sets"));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), dw->second_set);
g_signal_connect(G_OBJECT(button), "toggled",
gtk_container_add(GTK_CONTAINER(frame), dw->status_label);
gtk_widget_show(dw->status_label);
+ label = gtk_label_new(_("Custom Threshold"));
+ gtk_box_pack_start(GTK_BOX(status_box), label, FALSE, FALSE, PREF_PAD_SPACE);
+ gtk_widget_show(label);
+ dw->custom_threshold = gtk_spin_button_new_with_range(1, 100, 1);
+ gtk_widget_set_tooltip_text(GTK_WIDGET(dw->custom_threshold), "Custom similarity threshold");
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(dw->custom_threshold), options->duplicates_similarity_threshold);
+ g_signal_connect(G_OBJECT(dw->custom_threshold), "value_changed",
+ G_CALLBACK(dupe_window_custom_threshold_cb), dw);
+ gtk_box_pack_start(GTK_BOX(status_box), dw->custom_threshold, FALSE, FALSE, PREF_PAD_SPACE);
+ gtk_widget_show(dw->custom_threshold);
+
dw->extra_label = gtk_progress_bar_new();
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(dw->extra_label), 0.0);
#if GTK_CHECK_VERSION(3,0,0)
DUPE_MATCH_NAME_CI = 1 << 10 /* same as name, but case insensitive */
} DupeMatchType;
+typedef enum
+{
+ DUPE_SELECT_NONE,
+ DUPE_SELECT_GROUP1,
+ DUPE_SELECT_GROUP2
+} DupeSelectType;
+
typedef struct _DupeItem DupeItem;
struct _DupeItem
{
GtkWidget *status_label;
GtkWidget *extra_label;
GtkWidget *button_thumbs;
+ GtkWidget *button_rotation_invariant;
+ GtkWidget *custom_threshold;
gboolean show_thumbs;
};
-DupeWindow *dupe_window_new(DupeMatchType match_mask);
+DupeWindow *dupe_window_new(void);
void dupe_window_clear(DupeWindow *dw);
void dupe_window_close(DupeWindow *dw);
vd->progress = gtk_progress_bar_new();
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(vd->progress), 0.0);
gtk_box_pack_start(GTK_BOX(hbox), vd->progress, TRUE, TRUE, 0);
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(vd->progress), "");
+ gtk_progress_bar_set_show_text(GTK_PROGRESS_BAR(vd->progress), TRUE);
+#endif
gtk_widget_show(vd->progress);
vd->spinner = spinner_new(NULL, SPINNER_SPEED);
gboolean file_data_register_real_time_monitor(FileData *fd);
gboolean file_data_unregister_real_time_monitor(FileData *fd);
+void read_exif_time_data(FileData *file);
#endif
/* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */
SecureSaveInfo *ssi;
GList *list;
gchar *pathl;
+ gint list_count;
pathl = path_from_utf8(path);
ssi = secure_open(pathl);
* so that when reading they are added correctly
*/
work = g_list_last(hd->list);
+ list_count = g_list_position(hd->list, g_list_last(hd->list)) + 1;
while (work && secsave_errno == SS_ERR_NONE)
{
- secure_fprintf(ssi, "\"%s\"\n", (gchar *)work->data);
+ if (!(strcmp(hd->key, "path_list") == 0 && list_count > options->open_recent_list_maxsize))
+ {
+ secure_fprintf(ssi, "\"%s\"\n", (gchar *)work->data);
+ }
work = work->prev;
+ list_count--;
}
secure_fputc(ssi, '\n');
}
}
-void image_alter_orientation(ImageWindow *imd, AlterType type)
+void image_alter_orientation(ImageWindow *imd, FileData *fd_n, AlterType type)
{
static const gint rotate_90[] = {1, 6, 7, 8, 5, 2, 3, 4, 1};
static const gint rotate_90_cc[] = {1, 8, 5, 6, 7, 4, 1, 2, 3};
static const gint mirror[] = {1, 2, 1, 4, 3, 6, 5, 8, 7};
static const gint flip[] = {1, 4, 3, 2, 1, 8, 7, 6, 5};
+ gint orientation;
- if (!imd || !imd->pr || !imd->image_fd) return;
+ if (!imd || !imd->pr || !imd->image_fd || !fd_n) return;
- if (imd->orientation < 1 || imd->orientation > 8) imd->orientation = 1;
+ orientation = EXIF_ORIENTATION_TOP_LEFT;
+ {
+ if (fd_n->user_orientation)
+ {
+ orientation = fd_n->user_orientation;
+ }
+ else
+ if (options->metadata.write_orientation)
+ {
+ orientation = metadata_read_int(fd_n, ORIENTATION_KEY, EXIF_ORIENTATION_TOP_LEFT);
+ }
+ }
switch (type)
{
case ALTER_ROTATE_90:
- imd->orientation = rotate_90[imd->orientation];
+ orientation = rotate_90[orientation];
break;
case ALTER_ROTATE_90_CC:
- imd->orientation = rotate_90_cc[imd->orientation];
+ orientation = rotate_90_cc[orientation];
break;
case ALTER_ROTATE_180:
- imd->orientation = rotate_180[imd->orientation];
+ orientation = rotate_180[orientation];
break;
case ALTER_MIRROR:
- imd->orientation = mirror[imd->orientation];
+ orientation = mirror[orientation];
break;
case ALTER_FLIP:
- imd->orientation = flip[imd->orientation];
+ orientation = flip[orientation];
break;
case ALTER_NONE:
- imd->orientation = imd->image_fd->exif_orientation ? imd->image_fd->exif_orientation : 1;
+ orientation = fd_n->exif_orientation ? fd_n->exif_orientation : 1;
break;
default:
return;
break;
}
- if (imd->orientation != imd->image_fd->exif_orientation ? imd->image_fd->exif_orientation : 1)
+ if (orientation != (fd_n->exif_orientation ? fd_n->exif_orientation : 1))
{
if (!options->metadata.write_orientation)
{
we must however handle switching metadata.write_orientation on and off, therefore
we just disable referencing new fd's, not unreferencing the old ones
*/
- if (imd->image_fd->user_orientation == 0) file_data_ref(imd->image_fd);
- imd->image_fd->user_orientation = imd->orientation;
+ if (fd_n->user_orientation == 0) file_data_ref(fd_n);
+ fd_n->user_orientation = orientation;
}
}
else
{
- if (imd->image_fd->user_orientation != 0) file_data_unref(imd->image_fd);
- imd->image_fd->user_orientation = 0;
+ if (fd_n->user_orientation != 0) file_data_unref(fd_n);
+ fd_n->user_orientation = 0;
}
if (options->metadata.write_orientation)
{
if (type == ALTER_NONE)
{
- metadata_write_revert(imd->image_fd, ORIENTATION_KEY);
+ metadata_write_revert(fd_n, ORIENTATION_KEY);
}
else
{
- metadata_write_int(imd->image_fd, ORIENTATION_KEY, imd->orientation);
+ metadata_write_int(fd_n, ORIENTATION_KEY, orientation);
}
}
- pixbuf_renderer_set_orientation((PixbufRenderer *)imd->pr, imd->orientation);
+ if (imd->image_fd == fd_n && !(options->metadata.write_orientation && !options->image.exif_rotate_enable))
+ {
+ imd->orientation = orientation;
+ pixbuf_renderer_set_orientation((PixbufRenderer *)imd->pr, orientation);
+ }
}
void image_set_desaturate(ImageWindow *imd, gboolean desaturate)
here before it is taken over by the renderer. */
if (pixbuf) g_object_ref(pixbuf);
+ imd->orientation = EXIF_ORIENTATION_TOP_LEFT;
if (imd->image_fd)
{
if (imd->image_fd->user_orientation)
gdouble x_align, gdouble y_align);
void image_get_scroll_center(ImageWindow *imd, gdouble *x, gdouble *y);
void image_set_scroll_center(ImageWindow *imd, gdouble x, gdouble y);
-void image_alter_orientation(ImageWindow *imd, AlterType type);
+void image_alter_orientation(ImageWindow *imd, FileData *fd, AlterType type);
void image_set_desaturate(ImageWindow *imd, gboolean desaturate);
gboolean image_get_desaturate(ImageWindow *imd);
switch (event->keyval)
{
case 'R': case 'r':
- image_alter_orientation(imd, ALTER_ROTATE_180);
+ image_alter_orientation(imd, imd->image_fd, ALTER_ROTATE_180);
break;
case 'M': case 'm':
- image_alter_orientation(imd, ALTER_MIRROR);
+ image_alter_orientation(imd, imd->image_fd, ALTER_MIRROR);
break;
case 'F': case 'f':
- image_alter_orientation(imd, ALTER_FLIP);
+ image_alter_orientation(imd, imd->image_fd, ALTER_FLIP);
break;
case 'G': case 'g':
image_set_desaturate(imd, !image_get_desaturate(imd));
view_overlay_toggle(vw);
break;
case ']':
- image_alter_orientation(imd, ALTER_ROTATE_90);
+ image_alter_orientation(imd, imd->image_fd, ALTER_ROTATE_90);
break;
case '[':
- image_alter_orientation(imd, ALTER_ROTATE_90_CC);
+ image_alter_orientation(imd, imd->image_fd, ALTER_ROTATE_90_CC);
break;
case GDK_KEY_Delete: case GDK_KEY_KP_Delete:
if (options->file_ops.enable_delete_key)
type = GPOINTER_TO_INT(data);
if (!vw) return;
- image_alter_orientation(vw->imd, type);
+ image_alter_orientation(vw->imd, vw->imd->image_fd, type);
}
static void view_wallpaper_cb(GtkWidget *widget, gpointer data)
gtk_box_pack_start(GTK_BOX(box), tabcomp, FALSE, FALSE, 0);
gtk_widget_show(tabcomp);
+#if GTK_CHECK_VERSION(3,20,0)
+ g_signal_connect(G_OBJECT(gtk_widget_get_parent(gtk_widget_get_parent(lw->path_entry))), "changed",
+ G_CALLBACK(layout_path_entry_changed_cb), lw);
+#else
g_signal_connect(G_OBJECT(gtk_widget_get_parent(lw->path_entry)), "changed",
G_CALLBACK(layout_path_entry_changed_cb), lw);
+#endif
lw->vd = vd_new(lw->options.dir_view_type, lw->dir_fd);
vd_set_layout(lw->vd, lw);
}
lw->info_progress_bar = gtk_progress_bar_new();
gtk_widget_set_size_request(lw->info_progress_bar, PROGRESS_WIDTH, -1);
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(lw->info_progress_bar), "");
+ gtk_progress_bar_set_show_text(GTK_PROGRESS_BAR(lw->info_progress_bar), TRUE);
+#endif
gtk_box_pack_start(GTK_BOX(hbox), lw->info_progress_bar, FALSE, FALSE, 0);
gtk_widget_show(lw->info_progress_bar);
lw->info_sort = layout_sort_button(lw);
+ gtk_widget_set_tooltip_text(GTK_WIDGET(lw->info_sort), _("Select sort order"));
gtk_box_pack_start(GTK_BOX(hbox), lw->info_sort, FALSE, FALSE, 0);
gtk_widget_show(lw->info_sort);
lw->info_status = layout_status_label(NULL, lw->info_box, TRUE, 0, (!small_format));
+ gtk_widget_set_tooltip_text(GTK_WIDGET(lw->info_status), _("Folder contents (files selected)"));
if (small_format)
{
gtk_widget_show(hbox);
}
lw->info_details = layout_status_label(NULL, hbox, TRUE, 0, TRUE);
+ gtk_widget_set_tooltip_text(GTK_WIDGET(lw->info_details), _("(Image dimensions) Image size"));
toolbar = layout_actions_toolbar(lw, TOOLBAR_STATUS);
toolbar_frame = gtk_frame_new(NULL);
gtk_widget_show(toolbar);
gtk_box_pack_end(GTK_BOX(hbox), toolbar_frame, FALSE, FALSE, 0);
lw->info_zoom = layout_status_label(NULL, hbox, FALSE, ZOOM_LABEL_WIDTH, FALSE);
+ gtk_widget_set_tooltip_text(GTK_WIDGET(lw->info_zoom), _("Image zoom level"));
if (small_format)
{
hbox = gtk_hbox_new(FALSE, 0);
gtk_widget_show(hbox);
}
lw->info_pixel = layout_status_label(NULL, hbox, FALSE, 0, small_format); /* expand only in small format */
+ gtk_widget_set_tooltip_text(GTK_WIDGET(lw->info_pixel), _("[Pixel x,y coord]: (Pixel R,G,B value)"));
if (!lw->options.show_info_pixel) gtk_widget_hide(gtk_widget_get_parent(lw->info_pixel));
}
return FALSE;
}
- window = gtk_widget_get_window(lw->window);
+ window = gtk_widget_get_window(lw->tools);
gdk_window_get_root_origin(window, x, y);
*w = gdk_window_get_width(window);
*h = gdk_window_get_height(window);
WRITE_NL(); WRITE_UINT(*layout, image_overlay.state);
WRITE_NL(); WRITE_INT(*layout, image_overlay.histogram_channel);
WRITE_NL(); WRITE_INT(*layout, image_overlay.histogram_mode);
+
+ WRITE_NL(); WRITE_BOOL(*layout, animate);
}
if (READ_INT(*layout, image_overlay.histogram_channel)) continue;
if (READ_INT(*layout, image_overlay.histogram_mode)) continue;
+ if (READ_BOOL(*layout, animate)) continue;
+
log_printf("unknown attribute %s = %s\n", option, value);
}
if (id && strcmp(id, LAYOUT_ID_CURRENT) != 0)
#include "color-man.h"
#include "dnd.h"
#include "editors.h"
+#include "exif.h"
#include "filedata.h"
#include "fullscreen.h"
#include "image.h"
#include "layout.h"
#include "layout_util.h"
#include "menu.h"
+#include "metadata.h"
#include "misc.h"
#include "pixbuf_util.h"
#include "pixbuf-renderer.h"
#include <gdk/gdkkeysyms.h> /* for keyboard values */
+#define FILE_COLUMN_POINTER 0
static GtkWidget *layout_image_pop_menu(LayoutWindow *lw);
static void layout_image_set_buttons(LayoutWindow *lw);
return TRUE;
}
-static void layout_image_animate_toggle(LayoutWindow *lw)
+void layout_image_animate_toggle(LayoutWindow *lw)
{
+ GtkAction *action;
+
if (!lw) return;
lw->options.animate = !lw->options.animate;
+
+ action = gtk_action_group_get_action(lw->action_group, "Animate");
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->options.animate);
+
layout_image_animate_new_file(lw);
}
lw = submenu_item_get_data(widget);
type = (AlterType)GPOINTER_TO_INT(data);
- image_alter_orientation(lw->image, type);
+ image_alter_orientation(lw->image, lw->image->image_fd, type);
}
static void li_pop_menu_new_cb(GtkWidget *widget, gpointer data)
{
if (!layout_valid(&lw)) return;
- image_alter_orientation(lw->image, type);
+ GtkTreeModel *store;
+ GList *work;
+ GtkTreeSelection *selection;
+ GtkTreePath *tpath;
+ FileData *fd_n;
+ GtkTreeIter iter;
+ IconData *id;
+
+ if (!lw || !lw->vf) return;
+
+ if (lw->vf->type == FILEVIEW_ICON)
+ {
+ if (!VFICON(lw->vf)->selection) return;
+ work = VFICON(lw->vf)->selection;
+ }
+ else
+ {
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(lw->vf->listview));
+ work = gtk_tree_selection_get_selected_rows(selection, &store);
+ }
+
+ while (work)
+ {
+ if (lw->vf->type == FILEVIEW_ICON)
+ {
+ id = work->data;
+ fd_n = id->fd;
+ work = work->next;
+ }
+ else
+ {
+ tpath = work->data;
+ gtk_tree_model_get_iter(store, &iter, tpath);
+ gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd_n, -1);
+ work = work->next;
+ }
+
+ image_alter_orientation(lw->image, fd_n, type);
+ }
+}
+
+void layout_image_reset_orientation(LayoutWindow *lw)
+{
+ ImageWindow *imd= lw->image;
+
+ if (!layout_valid(&lw)) return;
+ if (!imd || !imd->pr || !imd->image_fd) return;
+
+ if (imd->orientation < 1 || imd->orientation > 8) imd->orientation = 1;
+
+ if (options->image.exif_rotate_enable)
+ {
+ imd->orientation = metadata_read_int(imd->image_fd, ORIENTATION_KEY, EXIF_ORIENTATION_TOP_LEFT);
+ }
+ else
+ {
+ imd->orientation = 1;
+ }
+
+ if (imd->image_fd->user_orientation != 0)
+ {
+ imd->orientation = imd->image_fd->user_orientation;
+ }
+
+ pixbuf_renderer_set_orientation((PixbufRenderer *)imd->pr, imd->orientation);
}
void layout_image_set_desaturate(LayoutWindow *lw, gboolean desaturate)
gboolean layout_image_slideshow_pause_toggle(LayoutWindow *lw);
gboolean layout_image_slideshow_paused(LayoutWindow *lw);
+void layout_image_animate_toggle(LayoutWindow *lw);
void layout_image_overlay_toggle(LayoutWindow *lw);
void layout_image_notify_cb(FileData *fd, NotifyType type, gpointer data);
-
+void layout_image_reset_orientation(LayoutWindow *lw);
#endif
/* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */
LayoutWindow *lw = data;
layout_exit_fullscreen(lw);
- dupe_window_new(DUPE_MATCH_NAME);
+ dupe_window_new();
}
static void layout_menu_pan_cb(GtkAction *action, gpointer data)
file_util_delete(NULL, layout_selection_list(lw), layout_window(lw));
}
+static void layout_menu_delete_key_cb(GtkAction *action, gpointer data)
+{
+ LayoutWindow *lw = data;
+
+ if (options->file_ops.enable_delete_key)
+ {
+ file_util_delete(NULL, layout_selection_list(lw), layout_window(lw));
+ }
+}
+
static void layout_menu_disable_grouping_cb(GtkAction *action, gpointer data)
{
LayoutWindow *lw = data;
layout_image_alter_orientation(lw, ALTER_NONE);
}
+static void layout_menu_exif_rotate_cb(GtkToggleAction *action, gpointer data)
+{
+ LayoutWindow *lw = data;
+
+ options->image.exif_rotate_enable = gtk_toggle_action_get_active(action);
+ layout_image_reset_orientation(lw);
+}
+
static void layout_menu_config_cb(GtkAction *action, gpointer data)
{
LayoutWindow *lw = data;
}
}
+static void layout_menu_animate_cb(GtkToggleAction *action, gpointer data)
+{
+ LayoutWindow *lw = data;
+
+ if (lw->options.animate == gtk_toggle_action_get_active(action)) return;
+ layout_image_animate_toggle(lw);
+}
+
+static void layout_menu_rectangular_selection_cb(GtkToggleAction *action, gpointer data)
+{
+ LayoutWindow *lw = data;
+
+ options->collections.rectangular_selection = gtk_toggle_action_get_active(action);
+}
+
static void layout_menu_histogram_toggle_channel_cb(GtkAction *action, gpointer data)
{
LayoutWindow *lw = data;
{ "Move", NULL, N_("_Move..."), "<control>M", N_("Move..."), CB(layout_menu_move_cb) },
{ "Rename", NULL, N_("_Rename..."), "<control>R", N_("Rename..."), CB(layout_menu_rename_cb) },
{ "Delete", GTK_STOCK_DELETE, N_("_Delete..."), "<control>D", N_("Delete..."), CB(layout_menu_delete_cb) },
- { "DeleteAlt1", GTK_STOCK_DELETE, N_("_Delete..."), "Delete", N_("Delete..."), CB(layout_menu_delete_cb) },
- { "DeleteAlt2", GTK_STOCK_DELETE, N_("_Delete..."), "KP_Delete", N_("Delete..."), CB(layout_menu_delete_cb) },
+ { "DeleteAlt1", GTK_STOCK_DELETE, N_("_Delete..."), "Delete", N_("Delete..."), CB(layout_menu_delete_key_cb) },
+ { "DeleteAlt2", GTK_STOCK_DELETE, N_("_Delete..."), "KP_Delete", N_("Delete..."), CB(layout_menu_delete_key_cb) },
{ "EnableGrouping", NULL, N_("Enable file _grouping"), NULL, N_("Enable file grouping"), CB(layout_menu_enable_grouping_cb) },
{ "DisableGrouping", NULL, N_("Disable file groupi_ng"), NULL, N_("Disable file grouping"), CB(layout_menu_disable_grouping_cb) },
{ "CopyPath", NULL, N_("_Copy path to clipboard"), NULL, N_("Copy path to clipboard"), CB(layout_menu_copy_path_cb) },
{ "Grayscale", NULL, N_("Toggle _grayscale"), "<shift>G", N_("Toggle grayscale"), CB(layout_menu_alter_desaturate_cb), FALSE},
{ "ImageOverlay", NULL, N_("Image _Overlay"), NULL, N_("Image Overlay"), CB(layout_menu_overlay_cb), FALSE },
{ "ImageHistogram", NULL, N_("_Show Histogram"), NULL, N_("Show Histogram"), CB(layout_menu_histogram_cb), FALSE },
+ { "RectangularSelection", NULL, N_("Rectangular Selection"), "<alt>R", N_("Rectangular Selection"), CB(layout_menu_rectangular_selection_cb), FALSE },
+ { "Animate", NULL, N_("GIF _animation"), "A", N_("Toggle GIF animation"), CB(layout_menu_animate_cb), FALSE },
+ { "ExifRotate", GTK_STOCK_ORIENTATION_PORTRAIT, N_("_Exif rotate"), "<alt>X", N_("Exif rotate"), CB(layout_menu_exif_rotate_cb), FALSE },
};
static GtkRadioActionEntry menu_radio_entries[] = {
" <menuitem action='SelectAll'/>"
" <menuitem action='SelectNone'/>"
" <menuitem action='SelectInvert'/>"
+" <menuitem action='RectangularSelection'/>"
" <placeholder name='SelectSection'/>"
" <separator/>"
" <menuitem action='CopyPath'/>"
" <menuitem action='Mirror'/>"
" <menuitem action='Flip'/>"
" <menuitem action='AlterNone'/>"
+" <separator/>"
+" <menuitem action='ExifRotate'/>"
+" <separator/>"
" </menu>"
" <menuitem action='SaveMetadata'/>"
" <placeholder name='PropertiesSection'/>"
" <menuitem action='ShowInfoPixel'/>"
" <placeholder name='ToolsSection'/>"
" <separator/>"
+" <menuitem action='Animate'/>"
" <menuitem action='SlideShow'/>"
" <menuitem action='SlideShowPause'/>"
" <menuitem action='Refresh'/>"
" <toolitem action='FloatTools'/>"
" </toolbar>"
" <toolbar name='StatusBar'>"
+" <toolitem action='ExifRotate'/>"
" <toolitem action='ShowInfoPixel'/>"
" <toolitem action='UseColorProfiles'/>"
" <toolitem action='SaveMetadata'/>"
action = gtk_action_group_get_action(lw->action_group, "SlideShow");
gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), layout_image_slideshow_active(lw));
+ action = gtk_action_group_get_action(lw->action_group, "Animate");
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->options.animate);
+
action = gtk_action_group_get_action(lw->action_group, "ImageOverlay");
gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), osd_flags != OSD_SHOW_NOTHING);
action = gtk_action_group_get_action(lw->action_group, "ImageHistogram");
gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), osd_flags & OSD_SHOW_HISTOGRAM);
+ action = gtk_action_group_get_action(lw->action_group, "ExifRotate");
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), options->image.exif_rotate_enable);
+
+ action = gtk_action_group_get_action(lw->action_group, "RectangularSelection");
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), options->collections.rectangular_selection);
+
if (osd_flags & OSD_SHOW_HISTOGRAM)
{
action = gtk_action_group_get_action(lw->action_group, "HistogramChanR");
gboolean update_on_time_change;
guint duplicates_similarity_threshold;
+ guint duplicates_match;
+ gboolean duplicates_thumbnails;
+ guint duplicates_select_type;
gboolean rot_invariant_sim;
gint open_recent_list_maxsize;
case '/':
pan_search_toggle_visible(pw, TRUE);
break;
+ case GDK_KEY_F1:
+ help_window_show("GuideReferenceKeyboardShortcuts.html#PanViewKeyboardShortcuts");
+ break;
default:
stop_signal = FALSE;
break;
options->file_ops.enable_in_place_rename = c_options->file_ops.enable_in_place_rename;
- options->collections.rectangular_selection = c_options->collections.rectangular_selection;
-
options->image.tile_cache_max = c_options->image.tile_cache_max;
options->image.image_cache_max = c_options->image.image_cache_max;
options->image_overlay.background_blue = c_options->image_overlay.background_blue;
options->image_overlay.background_alpha = c_options->image_overlay.background_alpha;
options->update_on_time_change = c_options->update_on_time_change;
- options->image.exif_rotate_enable = c_options->image.exif_rotate_enable;
options->image.exif_proof_rotate_enable = c_options->image.exif_proof_rotate_enable;
options->duplicates_similarity_threshold = c_options->duplicates_similarity_threshold;
static void config_window_help_cb(GtkWidget *widget, gpointer data)
{
- GtkWidget *notebook = GTK_WIDGET(data);
+ GtkWidget *notebook = data;
gint i;
static gchar *html_section[] =
group = pref_group_new(vbox, FALSE, _("Convenience"), GTK_ORIENTATION_VERTICAL);
- pref_checkbox_new_int(group, _("Auto rotate image using Exif information"),
- options->image.exif_rotate_enable, &c_options->image.exif_rotate_enable);
-
pref_checkbox_new_int(group, _("Auto rotate proofs using Exif information"),
options->image.exif_proof_rotate_enable, &c_options->image.exif_proof_rotate_enable);
}
group = pref_group_new(vbox, FALSE, _("Behavior"), GTK_ORIENTATION_VERTICAL);
- pref_checkbox_new_int(group, _("Rectangular selection in icon view"),
- options->collections.rectangular_selection, &c_options->collections.rectangular_selection);
-
pref_checkbox_new_int(group, _("Descend folders in tree view"),
options->tree_descend_subdirs, &c_options->tree_descend_subdirs);
pref_checkbox_new_int(group, _("List directory view uses single click to enter"),
options->view_dir_list_single_click_enter, &c_options->view_dir_list_single_click_enter);
- pref_spin_new_int(group, _("Open recent list maximum size"), NULL,
+ pref_spin_new_int(group, _("Recent folder list maximum size"), NULL,
1, 50, 1, options->open_recent_list_maxsize, &c_options->open_recent_list_maxsize);
pref_spin_new_int(group, _("Drag'n drop icon size"), NULL,
pref_checkbox_new_int(group, _("Navigation by left or middle click on image"),
options->image_lm_click_nav, &c_options->image_lm_click_nav);
- group = pref_group_new(vbox, FALSE, _("Similarities"), GTK_ORIENTATION_VERTICAL);
-
- pref_spin_new_int(group, _("Custom similarity threshold:"), NULL,
- 0, 100, 1, options->duplicates_similarity_threshold, (int *)&c_options->duplicates_similarity_threshold);
- pref_checkbox_new_int(group, _("Rotation invariant duplicate check"),
- options->rot_invariant_sim, &c_options->rot_invariant_sim);
-
#ifdef DEBUG
group = pref_group_new(vbox, FALSE, _("Debugging"), GTK_ORIENTATION_VERTICAL);
#include "bar.h"
#include "metadata.h"
#include "bar_gps.h"
+#include "dupe.h"
/*
WRITE_NL(); WRITE_UINT(*options, keyboard_scroll_step);
WRITE_NL(); WRITE_UINT(*options, duplicates_similarity_threshold);
+ WRITE_NL(); WRITE_UINT(*options, duplicates_match);
+ WRITE_NL(); WRITE_UINT(*options, duplicates_select_type);
+ WRITE_NL(); WRITE_BOOL(*options, duplicates_thumbnails);
WRITE_NL(); WRITE_BOOL(*options, rot_invariant_sim);
WRITE_SEPARATOR();
if (READ_BOOL(*options, update_on_time_change)) continue;
if (READ_UINT_CLAMP(*options, duplicates_similarity_threshold, 0, 100)) continue;
+ if (READ_UINT_CLAMP(*options, duplicates_match, 0, DUPE_MATCH_NAME_CI)) continue;
+ if (READ_UINT_CLAMP(*options, duplicates_select_type, 0, DUPE_SELECT_GROUP2)) continue;
+ if (READ_BOOL(*options, duplicates_thumbnails)) continue;
if (READ_BOOL(*options, rot_invariant_sim)) continue;
if (READ_BOOL(*options, progressive_key_scrolling)) continue;
#include "collect.h"
#include "filedata.h"
+#include "image.h"
#include "img-view.h"
#include "layout.h"
#include "layout_image.h"
g_free(filename);
}
+static void gr_file_tell(const gchar *text, GIOChannel *channel, gpointer data)
+{
+ LayoutWindow *lw = NULL; /* NULL to force layout_valid() to do some magic */
+ if (!layout_valid(&lw)) return;
+ if (image_get_path(lw->image))
+ printf_term("%s %s\n", GQ_APPNAME, image_get_path(lw->image));
+}
+
static void gr_config_load(const gchar *text, GIOChannel *channel, gpointer data)
{
gchar *filename = expand_tilde(text);
{ NULL, "--get-sidecars:", gr_get_sidecars, TRUE, FALSE, N_("<FILE>"), N_("get list of sidecars of FILE") },
{ NULL, "--get-destination:", gr_get_destination, TRUE, FALSE, N_("<FILE>"), N_("get destination path of FILE") },
{ NULL, "file:", gr_file_load, TRUE, FALSE, N_("<FILE>"), N_("open FILE") },
+ { NULL, "--tell", gr_file_tell, FALSE, FALSE, NULL, N_("print filename of current image") },
{ NULL, "view:", gr_file_view, TRUE, FALSE, N_("<FILE>"), N_("open FILE in new window") },
{ NULL, "--list-clear", gr_list_clear, FALSE, FALSE, NULL, N_("clear command line collection list") },
{ NULL, "--list-add:", gr_list_add, TRUE, FALSE, N_("<FILE>"), N_("add FILE to command line collection list") },
GList *search_keyword_list;
gchar *search_comment;
gboolean search_comment_match_case;
+ gboolean search_date_exif;
MatchType search_type;
{
GtkWidget *menu;
- sd->click_fd = mfd->fd;
+ if (mfd)
+ sd->click_fd = mfd->fd;
+ else
+ sd->click_fd = NULL;
+
menu = search_result_menu(sd, (mfd != NULL), (search_result_count(sd, NULL) > 0));
gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
search_result_menu_pos_cb, sd, 0, GDK_CURRENT_TIME);
}
break;
+ case GDK_KEY_F1:
+ help_window_show("GuideReferenceKeyboardShortcuts.html#SearchKeyboardShortcuts");
+ break;
default:
stop_signal = FALSE;
break;
gint width = 0;
gint height = 0;
gint sim = 0;
+ time_t file_date;
if (!sd->search_file_list) return FALSE;
tested = TRUE;
match = FALSE;
+ if (sd->search_date_exif)
+ {
+ read_exif_time_data(fd);
+ file_date = fd->exifdate;
+ }
+ else
+ {
+ file_date = fd->date;
+ }
+
if (sd->match_date == SEARCH_MATCH_EQUAL)
{
struct tm *lt;
- lt = localtime(&fd->date);
+ lt = localtime(&file_date);
match = (lt &&
lt->tm_year == sd->search_date_y - 1900 &&
lt->tm_mon == sd->search_date_m - 1 &&
}
else if (sd->match_date == SEARCH_MATCH_UNDER)
{
- match = (fd->date < convert_dmy_to_time(sd->search_date_d, sd->search_date_m, sd->search_date_y));
+ match = (file_date < convert_dmy_to_time(sd->search_date_d, sd->search_date_m, sd->search_date_y));
}
else if (sd->match_date == SEARCH_MATCH_OVER)
{
- match = (fd->date > convert_dmy_to_time(sd->search_date_d, sd->search_date_m, sd->search_date_y) + 60 * 60 * 24 - 1);
+ match = (file_date > convert_dmy_to_time(sd->search_date_d, sd->search_date_m, sd->search_date_y) + 60 * 60 * 24 - 1);
}
else if (sd->match_date == SEARCH_MATCH_BETWEEN)
{
{
a += 60 * 60 * 24 - 1;
}
- match = MATCH_IS_BETWEEN(fd->date, a, b);
+ match = MATCH_IS_BETWEEN(file_date, a, b);
}
}
date_selection_time_set(sd->date_sel_end, time(NULL));
gtk_box_pack_start(GTK_BOX(hbox2), sd->date_sel_end, FALSE, FALSE, 0);
gtk_widget_show(sd->date_sel_end);
+ pref_checkbox_new_int(hbox, _("Exif date"),
+ sd->search_date_exif, &sd->search_date_exif);
/* Search for image dimensions */
hbox = menu_choice(sd->box_search, &sd->check_dimensions, &sd->menu_dimensions,
sd->label_progress = gtk_progress_bar_new();
gtk_widget_set_size_request(sd->label_progress, 50, -1);
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(sd->label_progress), "");
+ gtk_progress_bar_set_show_text(GTK_PROGRESS_BAR(sd->label_progress), TRUE);
+#endif
gtk_box_pack_start(GTK_BOX(hbox), sd->label_progress, TRUE, TRUE, 0);
gtk_widget_show(sd->label_progress);
guint select_idle_id; /* event source id */
};
-struct _IconData;
+typedef enum {
+ SELECTION_NONE = 0,
+ SELECTION_SELECTED = 1 << 0,
+ SELECTION_PRELIGHT = 1 << 1,
+ SELECTION_FOCUS = 1 << 2
+} SelectionType;
+
+typedef struct _IconData IconData;
+struct _IconData
+{
+ SelectionType selected;
+ FileData *fd;
+};
struct _ViewFileInfoIcon
{
void menu_item_add_divider(GtkWidget *menu)
{
- GtkWidget *item = gtk_menu_item_new();
+ GtkWidget *item = gtk_separator_menu_item_new();
gtk_widget_set_sensitive(item, FALSE);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),item);
gtk_widget_show(item);
list = filelist_filter(list, FALSE);
}
- dw = dupe_window_new(DUPE_MATCH_NAME);
+ dw = dupe_window_new();
dupe_window_add_files(dw, list, recursive);
filelist_free(list);
ViewFile *vf = data;
DupeWindow *dw;
- dw = dupe_window_new(DUPE_MATCH_NAME);
+ dw = dupe_window_new();
dupe_window_add_files(dw, vf_pop_menu_file_list(vf), FALSE);
}
FILE_COLUMN_COUNT
};
-typedef enum {
- SELECTION_NONE = 0,
- SELECTION_SELECTED = 1 << 0,
- SELECTION_PRELIGHT = 1 << 1,
- SELECTION_FOCUS = 1 << 2
-} SelectionType;
-
-typedef struct _IconData IconData;
-struct _IconData
-{
- SelectionType selected;
- FileData *fd;
-};
-
static gint vficon_index_by_id(ViewFile *vf, IconData *in_id);
static IconData *vficon_icon_data(ViewFile *vf, FileData *fd)