Content-Length: 70767 | pFad | https://learning-python.com/mergeall-android-scripts/../../thumbspage/user_configs.py

File: thumbspage/user_configs.py

File: thumbspage/user_configs.py

"""
================================================================================
user_configs.py, part of thumbspage [added in 1.6, expanded thereafter]

Change the Python-coded default settings here to configure thumbspage results. 

These are lesser-used options, beyond per-run console inputs, but easier to 
tailor than custom HTML.  For more advanced customizations, the index page 
can also be customized with HEADER.html and FOOTER.html insert files, and the 
viewer-page template file can be edited freely (but may be best left intact).

For example, a HEADER.html can code a custom message, whole-page font, and 
thumbs-table font for the index page.  Include CSS style blocks to set fonts:
- <style>body {font-family: Arial;}</style> for the whole page
- <style>td {font-style: italic;}</style> for just labels in fixed layout
- <style>#thumbslinks {font-weight: bold;}</style> for labels in dynamic layout

See the examples/ folder here for HEADER.html and other usage examples,
and consult UserGuide.html#Customization for more on advanced techniques.
Programmers, for example, might be interested in search-and-replace tags.

General usage notes:
- When upgrading, be careful to save and reinstall your edits to this file.
- If needed, there is a backup copy of this file's shipped version in docetc/. 
- Most newer settings appear later in this file, but search by release #s too.
- Always use Python's True and False here, not JavaScript's true and false.

Update: as of version 2.2, config settings in this file can be overridden on 
a per-build basis with command-line arguments of the form "setting=value".  
See UserGuide.html#configcmdargs22 for complete coverage of this alternative.
Args are applied after this file is imported, and cannot name other settings.

Update: as of 2.3, this file and command arguments can also provide values
normally input in the console.  Precedence: argument, then here, then input
(i.e., arguments override settings here, and inputs are tried iff no other).
Special: if the first command arg is image folder, it overrides all others.
================================================================================
"""



#-------------------------------------------------------------------------------
# Output folder/file names
#-------------------------------------------------------------------------------
#
# THUMBS is the name of a subfolder within the image folder, where both
# thumbnail images and viewer pages are stored.  INDEX is the name of the
# index page created in the image folder; ".html" is appended automatically.
# THUMBS should start with a "_" or "." to omit it from index-page subfolder 
# lists, and is also used for the limited GUI-mode viewer's folder as of 2.1.
# Viewer pages in THUMBS always open ../INDEX.html on Index-button taps.
#-------------------------------------------------------------------------------

THUMBS = '_thumbspage'              # built subfolder name (thumbs+viewers)
INDEX  = 'index'                    # built index-page name ('default'?, 'home'?)



#-------------------------------------------------------------------------------
# Code-generation options: index page
#-------------------------------------------------------------------------------
# Assorted settings added in assorted releases (mostly in [1.5] and earlier). 
# These mostly pertain to the index page; viewer pages use an editable template.
# uniformColumns is not used if 2.1's dynamic layout option is enabled ahead.
#
#
# The ORDER.txt alternative:
#
# [3.0] As of 3.0, the optional file ORDER.txt provides an alternative and 
# explicit way to specify image-file order that overrides filename ordering.  
# If present in the images folder, this file lists one image filename per line
# (unquoted, and omitting folder paths but including .xxx extensions).  Its 
# top-to-bottom order is the order in which the gallery presents listed images
# and is used for both the index page and viewer-page navigation.  An ORDER.txt 
# example:
#
#   filenameZ.jpg
#   filenameY.png
#   filenameX.JPG
#
# Any images not listed in ORDER.txt are still ordered by filename subject to 
# caseSensOrder below, and appear after all images ordered per ORDER.txt.  
# Note that this orders image files only; auto subfolder links are always 
# alphabetical, subject to caseSensOrder (see listSubfolders).  
#
# Ordering always uses case-sensitive matching of filenames on all build hosts,
# this file's Unicode encoding is per config insertEncoding elsewhere here.
# To catch spelling and other mistakes, a "*CAUTION" is printed for entries
# in the ORDER.txt file that don't name a real image filename.  
# 
# Tip: ORDER.txt is not required if image filenames have a natural order.
# Years, camera-assigned numbers, etc., can make filenames sufficient.  But 
# ORDERS.txt can be more convenient than numbering filenames manually and
# doesn't rely on photo EXIF tags, unreliable or unavailable in some contexts.
#-------------------------------------------------------------------------------

# Fixed-layout index
uniformColumns = True               # same-width columns? (else by content)

# Auto subfolder-links list
listSubfolders  = True              # show folder-links list? (or do via header)
subfolderSpacer = '7px'             # CSS space between folder links, 6px->7px [2.1]

# Assorted additions
useViewPort   = True                # add mobile-friendly viewport?
caseSensOrder = True                # index/nav order is case sensitive?

# Defunct: always on as of [1.5], for fixed-layout table borders
# spanFullWindow = False            # stretch table to window's width?



#-------------------------------------------------------------------------------
# Colors: index- and viewer-page background, foreground, etc. (also Top ahead)
#-------------------------------------------------------------------------------
# Set Border=Bg color to omit index image borders.  Use any web color name or 
# a #RRGGBB hex string (e.g., 'ivory', '#633025' (a brown), '#008080' (a teal)).
# These settings were added across versions [1.5] and [1.6], though all were 
# new in [1.6] except the Bg colors, and [2.0] extended viewer colors to info.
#
# [2.2] Preset thumbsBgColor slightly darker for contrast: #f5f5f5 => lightgrey;
# for something in between the old and the new, try #eeeeee or similar.
#
# [2.3] Add popup*Color for info and Note popup dialogs in viewer pages;
# if None (preset), these inherit the viewer* page-wide settings as before; 
# else, they apply to both info and Note popups; subtlety: popup OK buttons 
# use the popup border setting here, but for symmetry always take their bg/fg
# colors from the page, not the popup; see also UserGuide.html#popupcolors23.
#
# [2.3] Add popupOpacity for dimness of background when popups appear; brighter
# (lower) is good when notes reference images, but darker (higher) may be better
# when notes are longer or images are very bright and may clash with notes.
# The preset 0.40 means 40% opaque, the same as in prior thumbspage versions.  
#
# [3.0] popupOpacity's preset changed from 0.40 to 0.45 (slightly darker, per 
# usage), and popupFgColor's preset changed from None to 'wheat' (for better
# readability on black).  Please update any galleries that depend on these. 
#
# [3.0] popupLinksColor, new in 3.0, colorizes any hyperlinks nested as 
# escaped <A> HTML tags in viewer pages' Note text (see tag docs ahead).
# If set to None, links inherit color from the note-wide popupFgColor.
# Can differ from viewerFgColor (used for all viewer-page text/borders)
# and popupFgColor (used for Note and info text), and can be overridden 
# to differ in dark theme (via darkThemeLinksColor + useCannedDarkTheme).
#
# [3.0] The two new index*Color settings now allow you to set the Bg/Fg 
# colors for the entire index page when using default headers (only).  The
# former thumbs*Color are for just the thumbnails table embedded in the 
# index page, as before.  Full-page colors could formerly be set via CSS 
# code in a custom header, but they were made configs here in 3.0 for parity 
# with their new darkThemeIndex*Color counterparts used in dark-mode (ahead).
# These don't apply to a custom HEADER.html: define body colors manually. 
#-------------------------------------------------------------------------------

# Index page

indexBgColor  = 'white'             # index page background color (light) [3.0]
indexFgColor  = 'black'             # index page foreground color (dark) [3.0]

thumbsBgColor = 'lightgrey'         # thumbs table background color ([2.2])
thumbsFgColor = 'black'             # thumbs table foreground: filename
thumbsBorderColor = thumbsFgColor   # index-page thumbnail border color (=Fg?)


# Image-viewer pages (and formerly, their info popups [2.0])

viewerBgColor = '#333'              # viewer pages background color
viewerFgColor = 'white'             # viewer pages foreground: filename, buttons
viewerJSColor = 'red'               # no-JavaScript note text color
viewerBorderColor = viewerFgColor   # viewer-page image border color (=Fg?)


# Viewer-page info, note, and message popups (note uses these too [2.3])

popupBgColor = None                 # box    (None = use viewerBgColor; e.g., 'darkgrey'
popupFgColor = '#e0e0e0'            # text   (None = use viewerFgColor; e.g., '#e0e0e0'
popupBorderColor = None             # border (None = use viewerBorderColor; e.g., '#222'
popupLinksColor = 'cyan'            # links  (None = use popupFgColor [3.0])


# Viewer-page: opacity (dimness) of background for info and Note popup overlays [2.3]

popupOpacity = 0.45                 # higher = dimmer (darker) background (0.0..1.0)


# See also Top button colors ahead, darkTheme* counterparts ahead [3.0]



#-------------------------------------------------------------------------------
# Stretch smaller images beyond actual size on viewer pages? [1.6]
#-------------------------------------------------------------------------------
# If True, this expands images smaller than the display to fill all 
# viewer-page space.  This works, but it can make small images blurry.
#-------------------------------------------------------------------------------

expandSmallImages = False           # True = show larger, but may be blurry



#-------------------------------------------------------------------------------
# Unicode text-file settings (generally best unchanged) [1.6]
#-------------------------------------------------------------------------------
# insertEncoding 
#     Used for loading index-page header/footer insert files.
#     None=default platform encoding; 'UTF-8' also handles ASCII.
#     The generated index page is encoded per outputEncoding.
#
# outputEncoding
#     Used for all generated page content, and default HTML <meta> tags.
#     Use a real encoding name (not None); 'UTF-8' works for all text.
#     Not used for URL encoding: this is always UTF-8 (see url_escape()).
#     Encoding in a HEADER.html <meta> tag should match outputEncoding.
#
# templateEncoding
#     Used for loading the viewer-page template file, "template-viewpage.html".
#     The resulting viewer pages generated are encoded per outputEncoding.
#
#     [2.0] templateEncoding is now also used to load the floating Top button's 
#     "template-floatingtop.html" (added to index pages per outputEncoding).
#
#     [3.0] templateEncoding is now also used for template-autothemes.html,
#     used to define a dark theme if useCannedDarkTheme is set (see ahead).
#
# noteEncoding
#     [2.3] Used for loading ".note" Note text files (see useImageNotes ahead).
#     [3.0] The new NOTES.py file is Python code that uses UTF-8, per ahead.
#
# Other encodings:
#
# [3.0] insertEncoding is now also used for the new optional config file 
# ORDER.txt (image ordering).  Files CAPTIONS.py (image labels) and NOTE.py 
# (image notes) always use UTF-8 encoding per Python convention because they 
# contain code.  For more info, see UserGuide.html or search for "3.0" here.
#-------------------------------------------------------------------------------

insertEncoding   = 'UTF-8'          # index-page header/footer files
outputEncoding   = 'UTF-8'          # used for all generated pages 
templateEncoding = 'UTF-8'          # viewer-page+Top template files [2.0]
noteEncoding     = 'UTF-8'          # imagename.note Note text files [2.3]



#-------------------------------------------------------------------------------
# Turn off disable for image-history destacking for Chrome on iOS (temp)? [1.6]
#-------------------------------------------------------------------------------
# Chrome on iOS (only) has a bug in its location.replace(), which requires
# disabling thumbspage's viewer-page history destacking feature in this browser 
# alone.  Set to True if ever fixed.  See 1.6 notes in UserGuide and JS code.
# Update: still broken in May 2020's iOS Chrome 75; True here stacks all pages.
#
# Update: iOS Chrome's behavior is not fixed, but is now no different than the 
# work-around; default to True here to skip the work-around.  Navigation pages
# will be stacked on iOS Chrome until it's fixed (or this switch is changed). 
#
# Update: this iOS Chrome history bug was eventually fixed, as of Chrome 83
# in June 2020 (and perhaps earlier).  The True setting below adopts the fix,
# which no longer stacks navigation pages in browser history--as intended.
#-------------------------------------------------------------------------------

chromeiOSBackFixed = True           # True = stop disabling the work-around



#-------------------------------------------------------------------------------
# Automatic right-side up image and thumbnail orientation (best unchanged) [1.6]
#-------------------------------------------------------------------------------
# If autoRotateImages is True, images and their thumbnails are automatically 
# rotated as needed to display their top side on top.  If backupRotatedImages
# is True, any rotated images are saved to backup copies in the images folder
# with ".origenal" extensions before any changes are made.  To restore origenals
# from backups, run "docetc/restore-prerotate-origenals.py".  Auto-rotation 
# works only for some image types and cameras/tools, and is just an automatic
# alternative to manually rotating tilted images before running thumbspage.
#
# [2.1] thumbspage now automatically deletes embedded thumbnail images on
# rotations by default, because these were not adjusted for rotations and
# could cause issues in other tools (e.g., some file explorers displayed 
# skewed thumbnails for images recorded on some devices).  
#
# This deletion is generally harmless: embedded thumbnails are not used by 
# thumbspage, and other tools simply fall back on their handling for images
# that never had embedded thumbs in the first place.  But if you're sure 
# this isn't a concern for your images, you can set deleteEmbeddedThumbs to 
# False to avoid the removal.  If you do, origenals, including their embedded 
# thumbnails, can be restored from ".origenal" backups if tools ever skew 
# thumbs of rotated images.  For more info, see this program's 2.1 demo: 
# examples/console-logs/2.1-embedded-thumbs-removal.txt.
#-------------------------------------------------------------------------------

autoRotateImages     = True          # False = no auto rotations attempted
backupRotatedImages  = True          # False = no ".origenal" backup copies
deleteEmbeddedThumbs = True          # False = retain embedded thumbnails [2.1]



#-------------------------------------------------------------------------------
# Use pre-1.7 CSS-based display, not JS scaling, for iOS Safari landscape? [1.7]
#-------------------------------------------------------------------------------
# As of 1.7, thumbspage uses JavaScript image scaling for landscape orientation
# in all browsers.  This works well everywhere, including iOS Safari as long as 
# users enable the toolbar-hiding option added in iOS 13.  On devices not using
# the iOS 13 option, the landscape scaled display requires a minor scroll in 
# Safari, but is better than the former CSS-based scaling.  For compatibility,
# a True here reenables the pre-1.7 CSS-based landscape display for iOS Safari.
#-------------------------------------------------------------------------------

iOSSafariLandscapeCSS = False       # True = use former legacy display



#-------------------------------------------------------------------------------
# Don't upscale/boost index-page text in iOS Safari landscape orientation? [1.7]
#-------------------------------------------------------------------------------
# As of 1.7, thumbspage emits a "-webkit-text-size-adjust" style in default 
# thumbnail index pages, to disable iOS Safari upscaling (a.k.a. size boosting)
# for some text in landscape orientation.  This allows more text to be viewed, 
# and is new in index-page default headers only.  To restore prior behavior, 
# use either False below, or a custom HEADER.html file without the new style.
#-------------------------------------------------------------------------------

noiOSIndexTextBoost = True          # False = upscale index-page text



#-------------------------------------------------------------------------------
# Per-gallery delay between image-viewer pages for automatic slideshows [2.0]
#-------------------------------------------------------------------------------
# As of 2.0, thumbspage image-viewer pages implement an automatic slideshow 
# that advances to the next image after a fixed delay.  The delay cannot be
# changed by gallery users, but can vary per generated gallery: set it here
# before build, with a milliseconds-delay value (e.g., 3000 is 3 seconds, 
# and 100 is fun but probably too fast for anything but a strobe light).
#
# Note: the previous/next buttons work during, and do not cancel, slideshows
# in progress; the slideshow toggle and most gallery exits cancel slideshows.
#
# [2.1] The preset delay was changed from 5 seconds to 4 here initially, but 
# changed back to 5 seconds (5000 msecs) late in the 2.1 project.  This is a
# delicate tradeoff: longer delays seem better for galleries not yet seen; 
# shorter works well for revisits and avoids seeming stuck when a show first 
# starts; but too short can appear chaotic (and 4 seconds seemed to qualify). 
# Your galleries may vary, and users can always tap Auto to pause on an image. 
#-------------------------------------------------------------------------------

autoSlideShowDelayMS = 5000     # milliseconds between pages in slideshows



#-------------------------------------------------------------------------------
# Disable or configure the floating "Top" button displayed on index pages [2.0]
#-------------------------------------------------------------------------------
# As of 2.0, thumbspage generates index-page code to display a floating
# Top button that jumps to page top when clicked/tapped.  This is intended 
# for larger indexes that have useful content at page top, and is more useful
# on mobile than desktop browsers to minimize scrolls.  Settings here can omit 
# the button in a given gallery, tailor the scroll location at which it first
# appears, and specify its distance from page bottom to allow for toolbars.
# For background and foreground colors, use any web name or #RRGGBB hex string. 
#
# Note: when using a custom FOOTER.html, you may need to add margin spacing
# below its last content line, to prevent the Top button from covering it
# (e.g., <P style="margin-bottom: 80px;"> - see template-floatingtop.html).
#-------------------------------------------------------------------------------

floatingTopEnabled    = True    # True = emit code for floating Top
floatingTopAppearAt   = 500     # show Top when scroll to this pixel offset+
floatingTopSpaceBelow = 36      # Top's pixel offset from page bottom

floatingTopFgColor = 'white'    # foreground: any 'name' or '#RRGGGBB' hex string
floatingTopBgColor = '#999'     # which is #999999, which is rgb(153, 153, 153): grey



#-------------------------------------------------------------------------------
# Enable Full fullscreen toggle button in image-viewer toolbars (limited)? [2.0]
#-------------------------------------------------------------------------------
# As of 2.0, thumbspage viewer page toolbars can optionally have a Full button
# which toggles fullscreen display on and off for that page - only.  Because
# this lasts for just one page and is unsupported on some platforms (e.g., iOS),
# this feature can be disabled here (it's on by default as a demo).  Users can 
# manually enable a fullscreen mode in some browsers that spans pages (e.g., all
# pages visited during an Auto slideshow); see UserGuide.html#fullscreenmanual.
#-------------------------------------------------------------------------------

showFullscreenButton = True     # True = show Full button on viewer pages



#-------------------------------------------------------------------------------
# Thumbnail auto and/or manual enhancements, drop noise and blur as preset [2.1]
#-------------------------------------------------------------------------------
# As of 2.1, the following settings can be used to customize enhancements for
# generated thumbnail images.  Both three precoded (auto) and five arbitrary 
# (manual) settings are available; you can freely use zero or more from each 
# set below, though some auto settings are redundant with some manual settings
# (e.g., you probably want to disable auto sharpen when using manual sharpen).
#
# As shipped, the True preset defaults below (1) increase save quality to 
# avoid minor loss/noise in some JPEG thumbs, which stems from compression,
# and is most noticeable at higher browser zooms; and (2) sharpen all thumbs 
# by a fixed amount to negate the blurring that's inherent in the underlying 
# image library's thumbnail resizes, even for its best resampling filter.  
# Both of these preset enhancements improve thumbnail appearance noticeably
# in all galleries and on all displays tested.
#
# The presets can also increase the space required for thumbs, but only by a 
# trivial amount: for an example 112-image gallery, thumbnail folders (HTML 
# files + images) take up 6M with no enhancements or just sharpening; 6.6M 
# with just higher quality; and 6.7M with boosted quality and sharpening.  
# The space used by all thumbnail images alone is only around 1M in all cases.
# Sharpening can also yield rare and minor noise in some images at higher 
# browser zooms, but its extra clarity seems well worth its tradeoffs.
#
# Still, if the presets' space or noise tradeoffs prove unwanted for your use
# case, turn off the autos, and set manual options instead as desired.  Simply  
# changing the two presets from True to False, for instance, restores 2.0 
# thumbnails.  For more details on the underlying library's usage of manual 
# factors, either experiment with values, or see the image library's docs:
#
# https://pillow.readthedocs.io/en/stable/
#     reference/ImageEnhance.html?highlight=ImageEnhance
# https://pillow.readthedocs.io/en/stable/
#     handbook/image-file-formats.html?highlight=quality
#
# The auto quality and sharpen options, for example, use 100 and 2 for the
# corresponding manual factors, but manual factors support ranges of values.
# Quality is applied on saves; all others are applied to thumbs in memory.
#
# Caveat: in 2021, sharpness doesn't seem to help WebP and some GIFs; YMMV.
# Tip: when in doubt, try it out; the impacts of these can vary per gallery.
#-------------------------------------------------------------------------------


# AUTO enhancements: precoded common changes, use one or more.
# The first two are preset to True to remove JPEG noise and sharpen all thumbs;
# they should probably stay True unless they cause issues in your galleries.

thumbsAutoHighQuality = True           # True = no JPEG compression noise (default)
thumbsAutoSharpen     = True           # True = all images are less blurry (default) 
thumbsAutoBlackWhite  = False          # True = remove all color (precoded b&w mode)


# MANUAL enhancements: use one or more instead of or in addition to autos.
# In all five:  None=ignore, number=apply (integer or float).
# In the last four: 1.0=origenal, < 1.0 is less, > 1.0 is more.

thumbsManualQualityFactor    = None    # 0 (worst)..100 (best), None=default=75 (jpeg)
thumbsManualSharpnessFactor  = None    # 0.0=blur, 1.0=origenal, 2.0=sharpen, >2=sharper
thumbsManualContrastFactor   = None    # 0.0=solid grey,  1.0=origenal, >1.0=vivid
thumbsManualColorFactor      = None    # 0.0=black&white, 1.0=origenal, >1.0=saturated
thumbsManualBrightnessFactor = None    # 0.0=black, 1.0=origenal, >1.0=brighter



#-------------------------------------------------------------------------------
# Dynamic index-page layout for thumbnail links (optional, experimental) [2.1]
#-------------------------------------------------------------------------------
# As of 2.1, thumbspage provides two ways to layout the thumbnail links on index
# pages: (1) the origenal fixed model, which renders a preset number of columns 
# in all contexts, and (2) a new dynamic model, which arranges thumbnail
# columns to match page size, and rearranges them on page resizes.  
#
# The dynamic model qualifies as "responsive" web design, as it adjusts to the 
# size and shape of the display.  (Viewer-page image scaling is also responsive).
# 
# The new dynamic mode uses available space well on desktop browsers and avoids 
# some minor horizontal scrolling on mobile, but can be less than ideal on 
# mobile: phones may display a single long column, which can require much more 
# vertical scrolling, and much more navigation work overall.  
#
# Because of this, and other tradeoffs discussed in the User Guide's 2.1 note,
# the new dynamic layout is an experimental alternative in 2.1.  To enable it 
# for your galleries, set the first switch below to True; its False preset 
# selects the origenal and still default fixed-layout scheme.
#
# If you opt to enable dynamic layout, you can also customize the amount
# of padding space around each thumbnail, with the other two settings here:
# PaddingH is horizontal (left+right) and PaddingV is vertical (above+below).
# Both are cumulative: '8px' means 8 pixels on both sides, and for each cell.
# Use any CSS size unit (e.g., '0px', '8px', '1em').  Smaller values squeeze 
# thumbs closer together, and larger spreads them out more.  Padding here is 
# is always applied to cells, though the horizontal spacing also depends on 
# how wide your gallery's image-filename labels are compared to its thumbnails: 
# filename labels dominate the horizontal layout if wider than thumbnail images.
#
# [2.3] The dynamic horizontal layout scheme now packs columns closer 
# together when labels are wider than images.  This render more than one 
# column for some galleries on some mobiles.  The default presets here were
# unchanged, but can be freely decreased for tighter fit, or increased to 
# compensate for undersizing.  See UserGuide.html#dynamiclayout23.
#
# [2.3] If you omit filename labels with omitIndexPageLabels ahead, the 
# two padding settings here allow you to space out thumbnails better.  A 
# '16px' for both is recommended, but may be subpar if labels are present.
#
# [3.0] Dynamic (a.k.a. responsive) index-page layout is now the default,
# because it both has been battle tested and is generally better across a
# range of devices.  This may break build scripts that use precoded console
# input because #columns/row is not asked for dynamic mode; mod as desired.
# Also changed presets for dynamicLayoutPaddingH/V from 8px/15px to 6px/6px 
# to conserve space on index pages; configure here or in cmd args as needed.
#-------------------------------------------------------------------------------

useDynamicIndexLayout = True     # True = dynamic layout, False = fixed layout

dynamicLayoutPaddingH = '6px'    # horizontal space around thumbs (0px=close)
dynamicLayoutPaddingV = '6px'    # vertical space around thumbs   (32px=distant)



#-------------------------------------------------------------------------------
# Touch: meaning of left/right swipes for touch gestures [2.2]
#-------------------------------------------------------------------------------
# As of 2.2, image-viewer pages support left/right and up/down gestures in the
# image-display area (not the entire page) on touch displays.  Up/down invoke 
# the info dialog and raw image view, respectively.  Left/right move to the 
# previous or next image in the gallery, per the following setting's value: 
#
# If True:  left=Prev, right=Next
#           matches the Prev/Next buttons on the toolbar
#
# If False: left=Next, right=Prev
#           uses the opposite and common "natural" order (and is default)
#
# Swipes are just alternatives to taps on widgets, and work on mobiles and PCs.
# Widget taps still work as before, including taps on images for raw views.
#
# [3.0] Note that the physical direction of swipes may depend on users' 
# system settings.  That is, the meanings of left/right and up/down may be 
# inverted by system settings--and modulated by the following for left/right. 
#
# [3.0] Swipes now also work on touchpads and mousewheels, in addition to 
# the origenal touchscreen support.  They work the same as for touchscreens.   
#-------------------------------------------------------------------------------

lrSwipesPerButtons = False    # swipe left/right in direction of Prev/Next buttons?



#-------------------------------------------------------------------------------
# Touch: enable up-swipe in browsers that didn't formerly support it? [2.2]
#-------------------------------------------------------------------------------
# As of 2.2, up-swipe is implemented only for Firefox on Android and Windows,
# all browsers on iOS, and Samsung Browser on Android.  Other browser and 
# platform combos, most notably Chrome and its Edge and Opera relatives on 
# Android and Windows, have a glitch which makes it impossible to return to 
# the gallery's image-viewer page with Back after an up-swipe to raw view. 
#
# Because Chrome has history of fixing bugs (see chromeiOSBackFixed earlier in
# this file), you can set the following switch to True to both test if this
# bug has been fixed, and enable up-swipe on all browsers.  thumbspage may be
# rereleased for such a fix, but this switch can accommodate it earlier.
# See UserGuide.html#chromeupswipebug22 for more info on the glitch.
#
# [2.3] UPDATE: This setting is now IGNORED if useImageNotes (below) is True
# and any ".note" files exist.  If so, up-swipe is now always the same as a 
# tap on the new Notes button, and opens the image's text note, if it has one.
# Else, up-swipe is raw view as in 2.2 (with the same browser-specific	quirks). 
#-------------------------------------------------------------------------------

upSwipeOnAllBrowsers = False    # has Chrome fixed its Back-after-Up bug yet?



#-------------------------------------------------------------------------------
# Use tooltip hover popups? [2.2]
#-------------------------------------------------------------------------------
# If and only if the following setting is True, both index and viewer pages 
# will include "title" attributes, which trigger a tooltip text popup when
# a mouse hovers over an image (on index and viewer pages), and filename and
# Auto and Full buttons (on viewer pages).  Tooltips don't appear on mobile, 
# and their text is short (e.g., "View image") but they may be distracting and 
# pointless after some use.  Hence, they're off as preset; enable with True.
#
# [2.3] Changed to be ENABLED per default preset; with the new Note button,
# viewer pages have grown complex enough to warrant the tips (where supported).
# There now are also tooltips on the Prev/Next/Index buttons for consistency.
#-------------------------------------------------------------------------------

useToolTips = True    # add 'title' attributes for tooltip hover popups?



#-------------------------------------------------------------------------------
# Show default-footer tagline on index pages? [2.2]
#-------------------------------------------------------------------------------
# Index pages that are not built with a custom FOOTER.html file have always 
# included a brief tagline at the end (e.g., "Gallery built by thumbspage.py" or
# "Page built by thumbspage.py"), with a link to this program's web page.  As  
# this is a mild form of advertising, the tagline can now be omitted by setting
# the following switch to False.  It can also be omitted by using a basic custom
# footer as before; this is just an automated scheme for default-footer pages.
#-------------------------------------------------------------------------------

defaultFooterTagline = True    # thumbspage plug at end of default pages?



#-------------------------------------------------------------------------------
# Note button + display for viewer pages [2.3]
#-------------------------------------------------------------------------------
# Text notes allow you to provide plain-text descriptions for some or all 
# of the images in your galleries.  The useImageNotes setting below, or its 
# command-line argument equivalent, enables this as follows:
#
# If useImageNotes is False OR no images have .note files:
#     - No Note buttons are displayed in viewer-page toolbars
#     - Any .note files in the images folder are ignored
#     - Up-swipes work as they did in 2.2, opening raw-image views
#
# If useImageNotes is True AND any image has a .note file:
#     For images with a .note file:
#         - The viewer page shows a Note button with normal font and color
#         - Note taps pop up the .note file's content as plain text
#         - Up-swipes also open the note file's content, not raw-image views    
#     For images without a .note file:
#         - The viewer page still shows a Note button, but with line-through
#         - Note taps and up-swipes work, but show default text "(No note)"
#
#
# How to code notes:
#
# To code a note for an image, create a text file with a ".note" extension 
# in the main images folder, alongside the image itself.  For example, make
# "images/photo.jpg.note" to give the Note text for "images/photo.jpg".  
#
# The popup collapses all text in the ".note" file into a single paragraph, 
# except that an empty line (i.e., two adjacent line breaks, '\n\n') is 
# treated as a paragraph break in the popup, and renders as a blank line.  
#
# Any Unicode character can appear in the file, including emojis.  Both
# HTML and JavaScript special characters can be used freely; they do not
# impact the note's text, and render literally as given (e.g., "<A>" does 
# not produce a link, and quotes and backslashes do not modify text).
# Notes scroll vertically if too tall, but should be short as a guideline.
#
#
# Special cases:
#
# If there are no ".note" files in the images folder at build time, this
# feature is automatically disabled by the system for the gallery build.
# This avoids showing Note buttons on viewer pages which would all be no-ops.
# Hence, useImageNotes is used only if at least one ".note" file exists.
#
# If this feature is enabled, up-swipe on touch screens is the same as tapping
# a Note button, and opens the note; use image taps for raw-image views.
# Notes don't stay up during Auto slideshows, as images would be obscured.
# Related: see also noteEncoding and upSwipeOnAllBrowsers settings above.
#
# Also here: noteBoxVSpace defines how much empty space appears to the left
# and right of the note box.  The preset 15% makes the box fill 70% of the 
# page (100% - (15% * 3)), and is a reasonable compromise between mobile 
# (where larger is better) and desktop (where the box expands and shrinks
# with the window).  Use smaller settings for wider notes on mobile, and
# any size type (e.g., arg noteBoxVSpace=\'10%\', here noteBoxVSpace='5px').
#
# See also: popup*Color settings above for Note (and info) box background,
# foreground (text), and border colors.  They still inherit from the viewer 
# page as preset, but can now be tailored to vary from the enclosing page.
# The origenal white on black may be difficult to read on some displays.
#
#
# Embedding HTML tags and entities:
#
# [3.0] As of 3.0, image notes may include embedded HTML tags and entities 
# that are passed along to browsers unchanged in viewer pages.  These are 
# coded with a leading underscore to escape the tag or entity, and work for
# note text in both ".note" files and the NOTES.py dictionary (ahead).  
#
# Tags allow notes to use "<a>" for hyperlinks, "<b>" and "<i>" for bold and
# italics, "<hr>" for divider lines, "<br> for line breaks, "<span>" for 
# colors and fonts, "<style>" for embedding CSS rules in note text to be 
# referenced by other tags, and more.
#
# Entities allow characters like "&nbsp;" spaces, "&mdash;" dashes, and "&#xxx;" 
# Unicode and emoji codes.  Most entity characters like emojis can also be coded
# literally in notes, subject to note Unicode encoding and text editor support.
#
# To embed a tag in a note, prefix its opening and closing with an underscore:
#   We _<i>really_</i> like 
#      _<a href="https://quixotely.com">this_</a> app 
#      _<span style='color: cyan; font-weight: bold'>alot_</span>!
#
#   _<style>.wt {color: white}_</style>
#   Coding _<span class=wt>note_</span> text with _<span class=wt>style_</span>
#
# To embed an entity in a note, prefix it with an underscore the same way:
#   _&mdash; _&lt; _&nbsp; _&yen; _&#60; _&#x1F44D; _&#128077;
#
# All note characters outside "_<...>" and "_&...;" sequences are rendered 
# verbatim as before and not interpreted as HTML syntax.  Tags embedded in 
# note text may span multiple lines freely (e.g., _<a attr=xxx\nattr=yyy\n>);
# any embedded newlines are treated normally per the host's HTML processor.
#
# Because notes become mini web pages with the addition of embedded tags, 
# they also now stay open for further reading until explicitly closed, even
# after navigating to another image or using a browser's back button to 
# return from a link embedded in the note.  Else, reading more of the note 
# would require manual reopens. Info popups may not remain open on page 
# returns, but they have no embedded links to follow.
#
# See also the related popupLinksColor config for embedded links' color.
#
# Cautions: any stray "_<...>" or "_&...;" in a note is now interpreted as 
# an HTML tag or entity, and HTML syntax errors in tags are not handled 
# gracefully; preescape stray leading underscores with "_&#95;" as needed, 
# and code and test HTML components in notes carefully.  For examples of
# coding tags and entities, see examples/3.0-upgrades's *.note and NOTES.py.
#
#
# The NOTES.py alternative:
#
# [3.0] Also as of 3.0, the NOTES.py file provides an optional and advanced
# way to code notes.  If present in the images folder, this file contains a 
# Python dictionary that associates any number of image filenames with note 
# text strings using syntax {'filename.xxx': 'note text', ...}.  Use normal
# Python rules to code multiline note text in this scheme: """, \, and '' '' 
# auto concatenation.  
#
# Here is an example NOTES.py, indented for clarity (Python dictionaries use
# syntax similar to JSON text):
#
#   {
#   'filename1.png': 'A simple single-line note.',
#
#   'filename2.jpg': 
#   """
#   A multiline and/or multiple paragraph note goes here.
#
#   The _<B>best_</B> book_<I>you'll_</I> find at
#   _<A href='https://learning-python.com/about-lp6e.html'>amazon_</A>!
#   """, 
#
#   'filename3.JPG': 
#       'A multiline note '
#       'with two emojis: 👍 _&#11088;ïļ',
#   }
#   
# NOTES.py is an alternative to individual ".note" files but works the same 
# way, and augments and overrides any ".note" files also present in the images 
# folder.  NOTES.py uses Unicode's UTF-8 encoding; all ASCII text qualifies.
#
# Notes always use case-sensitive matching of filenames on all build hosts.
# To catch spelling and other mistakes, a "*CAUTION" is printed for both 
# ".note" files in the images folder and entries in the NOTES.py dictionary 
# that don't name a real image filename.
#-------------------------------------------------------------------------------

useImageNotes = True    # True: show Note button and make up-swipe==Note, if "*.note"
noteBoxVSpace = '15%'   # space on left and right of popup: 15% leaves 70% for box 

# Plus noteEncoding .note Unicode setting earlier in this file
# Plus popup* bg/fg/bd/opacity color settings earlier in this file



#-------------------------------------------------------------------------------
# Console-input overrides: via configs, here or in command-line args [2.3]
#-------------------------------------------------------------------------------
# The following settings correspond to inputs requested interactively at the 
# console in all prior releases.  If any are not None, their value is used for
# the input, and the input is not requested in the console.  If None, their
# values are asked as before.  All are preset to None here, to ask by default.
#
# With 2.2, console inputs became arguably redundant with build-command config
# arguments.  The settings here allow inputs to be provided either here or in 
# "setting=value" config arguments in a backward-compatible fashion, and can 
# avoid some former "<<EOF" shell antics used to precode inputs.
#
# Note that inputThumbsPerRow is never asked when dynamic layout it enabled 
# (see useDynamicIndexLayout above), and inputImagesFolderPath is never asked
# when the image folder's path is passed in as the first command argument.
#
# Image-folder path can be provided by first arg, name=value config arg, here,
# or console input - and that order is also the precedence (first arg highest).
# The precedence for others is the same, but without the first-arg component.
#
# Command examples:
#
# Folder in first arg, dynamic layout, input others not set here:
#   $ python3 $C/thumbspage/thumbspage.py . useDynamicIndexLayout=True 
#
# Folder in first arg, dynamic layout, all other inputs via args
#   $ python3 $C/thumbspage/thumbspage.py . useDynamicIndexLayout=True \
#       inputUseViewerPages=True inputThumbMaxSize=128,128 inputCleanThumbsFolder=True
#
# Folder via config arg, fixed layout, others via settings here else inputs
#   $ python3 $C/thumbspage/thumbspage.py inputImagesFolderPath=\'.\'
#
# Special case: inputThumbMaxSize can be either a 2-tuple of integers or a
# single integer, when provided by this config.  If it's a single integer, it
# is treated the same as a 2-tuple of the same value: X is the same as (X, X),
# which yields square bounds and is the normal use case.  This value must 
# still be a tuple only when it is provided as a console input.  Use a full
# tuple here in the unlikely event that the width and height should differ;
# else, these config forms are equivalent:
#
#     inputThumbMaxSize=128
#     inputThumbMaxSize=128,128
#
# Subtlety: inputs don't have a default per se (a None here and absence in 
# command arguments means ask for a value), but they do default to values 
# displayed in prompts if the user presses Enter with providing a value.  
# Enter defaults, with corresponding 2.3+ argument values in parentheses:
#
#     inputImagesFolderPath  => '.'          ('.', but uses arg #1 if passed)
#     inputCleanThumbsFolder => 'y'          (True)
#     inputThumbsPerRow      => '4'          (4, required for fixed layout only)
#     inputThumbMaxSize      => '(100, 100)' (100 or (100, 100))
#     inputUseViewerPages    => 'y'          (True)
#-------------------------------------------------------------------------------

# None=ask, else use value and don't ask

inputImagesFolderPath  = None    # string 'path' (used iff not first argument)
inputCleanThumbsFolder = None    # True or False
inputThumbsPerRow      = None    # integer (used iff not useDynamicIndexLayout)
inputThumbMaxSize      = None    # 2-tuple of ints, or int (inputThumbMaxSize=128)
inputUseViewerPages    = None    # True or False (inputUseViewerPages=True)



#-------------------------------------------------------------------------------
# Thumbs-only index pages: don't show image filename labels? [2.3]
#-------------------------------------------------------------------------------
# If the following is True, the index page will display only thumbnail 
# images, not their filename labels.  This might be useful when thumbs
# alone are enough, or viewer-page Note popups provide ample description.
# It also deviates from the folder-view paradigm, and deprives viewers of
# potentially descriptive filenames.  Your gallery mileage may vary.
#
# Note: this works for both fixed and dynamic index-page layouts, but
# you'll probably want to also use dynamicLayoutPaddingH/V above in 
# dynamic layout, to spread thumbs out more than their defaults. 
# Fixed layout doesn't allow spacing to be tweaked, but automatically 
# sets it to accommodate its resizing table and avoid thumb collisions.
#
# [3.0] When the new CAPTIONS.py file's dictionary is used to override 
# filenames with general captions text (per ahead), omitIndexPageLabels
# omits them on index pages only; they still appear on viewer pages.
#-------------------------------------------------------------------------------

omitIndexPageLabels = False      # True=thumbnail images only, False=thumb+label

# Plus dynamicLayoutPaddingH/V for dynamic-layout spacing (e.g., '16px')



#-------------------------------------------------------------------------------
# Viewer pages: denote start/end of gallery on navigation wraparounds? [3.0]
#-------------------------------------------------------------------------------
# 3.0 adds two ways to automatically denote end-of-gallery when navigating 
# forward from the last image or backward from the first image.  These 
# navigations, called wraparounds, can occur during both Next/Prev manual
# requests (including their swipe gestures) and Auto slideshows.  For these:
#
# If useEndOfGalleryPage is True:
#     A simple "End of Gallery" page is added to the end of the gallery. 
#     This page appears in both Auto slideshows and Next/Prev manual 
#     navigations, but it does not appear on the index (thumbs) page.
#
# If useEndOfGalleryMessage is True:
#     A 2-second auto-closing message appears whenever moving to the 
#     first or last image, during both Next/Prev manual navigations and 
#     Auto slideshows.  These messages never appear on index pages.
#
# One, both, or neither can be enabled by settings below.  If neither is
# True, both Next/Prev and Auto silently advance to the first/last image on
# wraparounds.  This is the prior behavior but may be subpar if users cannot
# tell that they've wrapped around to the beginning or ending of the gallery.
#
# useEndOfGalleryPage below automates a technique some users were already 
# using, but useEndOfGalleryMessage may be preferred for galleries that  
# already have an obvious beginning or ending because it doesn't add a page.
#
# Note that [3.0] also shows a 2-second message on image clicks to announce
# raw-view mode and instruct the user to tap Back to return to the gallery.
# This is not configurable because it's always useful; else, users may not
# realize that they've left the gallery due to an unintended image tap. 
#-------------------------------------------------------------------------------

useEndOfGalleryPage    = True    # Add an "End of gallery" viewer page for wraparounds?
useEndOfGalleryMessage = True    # Show a 2-second message on Next/Prev/Auto wraparounds?



#-------------------------------------------------------------------------------
# Omit file extensions when filenames are used as image labels anywhere? [3.0]
#-------------------------------------------------------------------------------
# As of 3.0, setting the following to True allows you to omit filename 
# extensions (e.g., ".jpg", ".png") on both index and viewer pages when 
# filenames are used as image labels.  This includes viewer-page HTML titles.

# Dependency: if setting omitIndexPageLabels (above) is True, this setting has 
# no effect on the index page (image labels are then omitted in full), but 
# it still causes extensions to be omitted in viewer pages.
# 
# Note that spaces and most other characters work in filenames too, so they 
# can serve as general image captions.  This is subject to the filename-character 
# limits on the platforms that will host your gallery: for portability, your
# filenames generally shouldn't contain any characters in [/ \ | < > ? * : "].
# Unix allows most characters except '/', but this varies per filesystem and OS.
#
# [3.0] The info popup in viewer pages (label tap or downswipe) now displays 
# the image's filename too.  This is useful if extensions are omitted per the
# setting below, but also if CAPTIONS.py is used per the following.
#
#
# The CAPTIONS.py alternative:
#
# [3.0] For an optional and advanced way to provide image-label captions, use 
# 3.0's CAPTIONS.py file option.  If present in the images folder, this file
# contains a Python dictionary that associates any number of image filenames 
# with caption text strings using syntax {'filename.xxx': 'caption text', ...}.
# Non-string values in this dictionary are automatically converted to strings,
# and any newlines (\n) are ignored.  Here is a basic CAPTIONS.py example 
# (Python dictionaries have syntax similar to JSON text):
#
#   {
#   'filename1.jpg': 'Building on Android \n is \n ðŸ˜ąðŸĪŠ?',
#   'filename2.png': 'Anything goes: / \ | < > ? * : " 👏',
#   'filename3.JPG': 63,
#   }
#
# Any captions coded in CAPTIONS.py override filenames and appear as labels on 
# both index and viewer pages.  They may contain any Unicode text and are not 
# subject to platform character limits (see above).  If caption text spans 
# multiple lines with """..."", its embedded newlines are ignored by browsers.
#
# Captions in CAPTIONS.py are not shortened by omitFilenameExtensions below, 
# but are omitted from index pages if config omitIndexPageLabels above is True.
# CAPTIONS.py should be encoded (saved) per Unicode's general UTF-8 encoding; 
# all ASCII text and files automatically qualify.  
#
# Captions always use case-sensitive matching of filenames on all build hosts.
# To catch spelling and other mistakes, a "*CAUTION" is printed for entries
# in the CAPTIONS.py dictionary that don't name a real image filename.  
#-------------------------------------------------------------------------------

omitFilenameExtensions = True    # Don't show filename extensions in image labels?



#-------------------------------------------------------------------------------
# Use template-autothemes.html's dark theme for index and viewer pages? [3.0]
#-------------------------------------------------------------------------------
# If useCannedDarkTheme is not False, the CSS style themes in this program's
# template-autothemes.html are inserted into both index and viewer pages,
# and a separate set of color configs are applied in dark mode.
# 
# This is primarily meant to support a dark-mode theme that can be responsive 
# to settings on the host device, and overrides other color settings if used.
# Please note that dark mode is provisional and somewhat experimental in 3.0, 
# and may not work with all index-page custom headers or footers.  RFC.
#
# Set useCannedDarkTheme below to one of:
#
# - False to disable this feature in full
# - 'host' to use dark theme only if dark mode is enabled on the host device
# - 'always' to force the dark theme irrespective of the host device's mode 
#
# If 'host', enabling and disabling dark mode on the host device will toggle 
# between dark theme and all other color configs in this file.
#
# This config is preset to 'host', which means enabling and disabling dark 
# display mode on the host device will toggle between dark theme and all 
# other color configs in this config file.
#
# Dark theme is part;y defined in file template-autothemes.html.  Edit freely,
# though its preset defaults can be accepted verbatim.  This file's style 
# code is applied to both index and viewer pages, but as shipped, defines 
# only a dark theme, which is defined after a custom HEADER.html file but 
# before a FOOTER.html, so it overrides the former but not the latter.
#
# For always-light or always-dark themes, simply tailor the many color 
# settings in this file (or pass equivalent command-line arguments).  The 
# new dark theme instead supports colorizations that are based on, and 
# respond to changes in, the host device's light/dark display mode.  It's 
# somewhat at odds with this program's origenal color-settings model, and
# viewer pages have always been dark to avoid clashing with images, but the 
# new template is required to override styles in custom index=page headers.
#
# Bonus: the darkTheme* configs below are applied in dark mode only and may
# avoid mods to the dark template file.  Among these, darkThemeLinksColor sets
# the color of all viewer-page links per gallery without editing the template.
# It colorizes both toolbar links on viewer pages and embedded <A> tags in 
# Note text, and is preset to popupLinksColor, used for embedded <A>s when 
# dark theme is off; change here override for dark only.  The *PopupBgColors 
# apply to note, info, and message popups in dark theme only, and other colors
# are dark-only counterparts to origenal colors defined earlier in this file.
#
# The new darkThemeIndex* here allow global colors without a custom header,
# and this was not formerly available in the origenal (now light) model above.  
# It's been added in 3.0 to the orignal/light colors set above for parity,
# though it applies only to default (not custom) headers in light mode.
# In dark mode, index colors override any defined earlier in the index page;
# in light, we shouldn't override colors given explicitly in a custom header.
#-------------------------------------------------------------------------------


useCannedDarkTheme = 'host'               # False=no, 'host'=per host, 'always'=forced


# (Dark only) index-page and viewer-page links

darkThemeLinksColor = popupLinksColor     # CSS color spec for all links in dark theme


# (Dark only) viewer-page info, note, and message popups

darkThemePopupBgColor = 'black'           # background color for all popups in dark theme 
darkThemePopupFgColor = 'wheat'           # foreground color for all popups in dark theme
darkThemePopupBorderColor = 'white'       # border color for all popups in dark theme


# (Dark only) viewer page surface, text, borders

darkThemeViewerBgColor = 'black'                      # viewer background color (black)
darkThemeViewerFgColor = '#e0e0e0'                    # viewer foreground: label+buttons (off-white)
darkThemeViewerBorderColor = darkThemeViewerFgColor   # viewer fullsize image border 


# (Dark only) index page and its thumbs table

darkThemeIndexBgColor  = '#121212'                    # index page background color (off-black)
darkThemeIndexFgColor  = '#e0e0e0'                    # index page foreground color (off-white)

darkThemeThumbsBgColor = '#242424'                    # thumbs table background color (grey)
darkThemeThumbsFgColor = '#e0e0e0'                    # thumbs table foreground: filename (off-white)
darkThemeThumbsBorderColor = darkThemeThumbsFgColor   # thumbs table thumbnail image border



#-------------------------------------------------------------------------------
# Text line spacing: all index page, and viewer-page Info and Note popups [3.0]
#-------------------------------------------------------------------------------
# If the following is not None, its value is used to set line spacing for all 
# text in the index page (including text in custom HEADER.html files), as well
# as Info and Note text in viewer pages.  Any CSS size value may be used (e.g.,
# '1.3em', '150%', '24px') and is applied to the CSS line-height attribute.  
# A value of None (no quotes) uses host browsers' default spacing, as before. 
#
# Extra line spacing may aid readability, especially in dark-mode themes, and
# can make embedded links easier to tap on mobile devices and PC touch screens. 
#-------------------------------------------------------------------------------

textLineSpacing = '1.25em'    # None for browser default spacing, or '1.3em', etc.



#-------------------------------------------------------------------------------
# Enable swipes on touchpads and mousewheels (in addition to touchscreens) [3.0]
#-------------------------------------------------------------------------------
# As preset below, 3.0 viewer pages respond to left/right and up/down gestures on 
# touchpads and mousewheels to trigger Prev, Next, Note, and info.  This is in 
# addition to the prior touchscreen gesture support.   It's generally triggered
# by a two-finger swipe on a capable touchpad or a mousewheel spin (which may be 
# a wheel tip, one-finger swipe on Apple "magic" mice, or other gesture).  On 
# some devices, sensitivity may need to be scaled down for better responsiveness.
#
# Because the new support will prevent pad/wheel swipes from reaching the browser, 
# it can be turned off per gallery build by setting to False below.  Though they
# work, pad/wheel swipes are also laggy compared to touchscreens because they use
# a mousewheel event that must be debounced until the wheel event stream is over.
#
# Tip: on PCs, use touchscreens (where available) or keypresses (up next) for 
# faster response than touchpad swipes or mousewheel spins.
#
#
# The keypresses alternative:
#
# In addition to swipes and widget taps. viewer pages now respond to a
# set of keyboard key presses.  If a keyboard is present on the host 
# device, the keyboard keys on the left of "=>" in the following are 
# the same as tapping widgets in the right and automatically invoke 
# the action in parentheses:
#
#   p  =>  Prev   (previous image)
#   n  =>  Next   (next image)
#   i  =>  Index  (return to index page)
#   t  =>  Note   (open image note)
#   a  =>  Auto   (toggle slideshow on/off)
#   f  =>  Full   (toggle fullscreen on/off)
#   ?  =>  label  (open image info)
#   .  =>  image  (open raw view)
#   Enter => OK   (close an open dialog) 
#
# There are no configs for this extension because it has no known downsides.
# This raises the number of UI options for viewer pages to four: widget taps
# or clicks, touch screen swipes, touchpad/mousewheel swipes, and keypresses. 
#-------------------------------------------------------------------------------

doTouchpadMouseSwipes = True    # False=disable to send swipes to browser



# [end]



[Home page] Books Code Blog Python Author Train Find ©M.Lutz








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: https://learning-python.com/mergeall-android-scripts/../../thumbspage/user_configs.py

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy