# ZPreview Roadmap

Listed below are the features and changes I want to implement. Marked in _italics_ are features that have already been implemented in the source code.

## 1.0.3
* When selecting a new file, try the current renderer first
* _Also support Shift+Ctrl+Alt from ZTreeWin (~ instead of ^)_
* Add command-line parameter for `zbar.dat` location
* Add button to close error panel
* Add dialog to check for updates (branch
* Save and load settings
  - window size and position of all forms
  - 'checked' property of all View actions
  - preferential order of renderers
  - which engines and/or renderers have been disabled
  - list of WLX plugins to load
* Improve error handling during automatic selection of renderer
* Refactor user interface for preview engines and renderers
  - add engine management dialog (to enable/disable renderers, _change their order of preference_, and perhaps associate specific renderers with specific file extensions)
  - remove current buttons to enable/disable engines (this can be done from the abovementioned dialog)
  - 'flatten' current "preview engine" menu with a series of buttons, one for each engine. Each button will show a menu with the renderers that engine supports.


## Later versions
* Add hex viewer renderer (branch
* Add preferences dialog
  - whether to check for updates (and how often)
  - when we last (successfully) checked for updates
  - list of WLX plugins to load
* Add main menu to the preview form
* Add options to change the view mode;
  - when showing images: 1:1 or fit to window
* Add a toggle to fix the current renderer, and try to use that for all selected files
* Correctly respond to pre-commands in the zbar.dat file, to prevent preview engines from locking a file when ZTreeWin wants to delete or move it.
* When minimized or hidden, disable all preview handlers.
* Keep track of changes in zbar.dat in a separate thread, so the user interface becomes more responsive.
* Handle Ctrl-Shift-←↑→↓, Page Up/-Down, Home, End etc. (perhaps delegate that to the preview engines)
  - images in 1:1 view mode, scroll the image
  - Windows Preview Handlers: try sending WM_SCROLL messages to the handler
* Add an 'About' window

## Long-term ideas
* Add possibility to assign a custom shortcut (from ZTreeWin or the program itself) to each renderer
* Add user interface to edit all shortcuts
* Have each renderer's CouldShowFile return instead of a boolean; only show 'maybe' when it makes sense
* Decouple the sentinel file, and allow other means of specifying the file to preview (modularize the input)
* Handle multiple available zbar.dat files
* Have renderers return a score for a specific file type, and choose the one with the best score