This design is a proposal for keyboard shortcuts/mouse operations management in XnView.
Reference threads:
http://newsgroup.xnview.com/viewtopic.php?t=4665
http://newsgroup.xnview.com/viewtopic.php?t=4372
Why doing it
- Currently keyboard/mouse actions are configured in XnView in 3 places- General>Switching modes, Browser>Open action (not directly), and View>Keyboard/Mouse. It would be nice to have them all in one place.
- Make keyboard/mouse operation really flexible- everyone will be able to suit XnView to his/her taste. Now this type of configuration is limited.
- No more discussion about changing some shortcut/mouse action.
Why doing it like this
- Great flexibility
- Clear interface- all in one place and simple to set up
- Should be not too hard to implement, just interface to some internal events table XnView supposedly uses now.
Details
(Note: I decided to use only the most standard Windows controls. Using controls like folding lists with editable fields could improve the feature.)
"Event manager" is one page of Options: General>Mouse/Keyboard.
It contains five tabs ("Menus", "Browser", "View", "Fullscreen", "Other"), and a set of options.
The list box in every tab contains: name of action, first assigned key, first assigned mouse. Items are grouped, every group has its own "header item"-non editable item describing group below.
Code: Select all
|----------------------------------------------------
|/Menus\/Browser\/View\/Fullscreen\/Other\__________|
||-------------------------------------------------||
|| ||
|| ||
|| ASSIGNMENTS HERE ||
|| ||
|| Magnify Ctrl+Alt+H Right-Hold ||
|| Skip to next Space R-Click ||
|| ||
||-------------------------------------------------||
| Current action: Fullscreen > Magnify |
| |
| Key [Ctrl+Alt+H___|V] [Delete] Add: [______] |
| Mouse [Right-Hold___|V] [Delete] Add: [____|V] |
| |
| [Reset Tab] |
-----------------------------------------------------
Delete button removes item currently selected in the list to the left.
To add a new operation you need:
- for keyboard- click input field to the right of Add:, press required shortcut. Shortcut is added to Key list.
- for mouse- select operation from list to the right of second Add
If you enter come operation already used, you get a message informing you which action already uses it and enabling you to:
a.) keep your choice and delete setting elsewhere
b.) Cancel (=clear input control, operation is not added)
Reset Tab resets settings for the whole tab, for those really lost.
Some more details
"Menus" contains action for shortcutable menu items, including RMB menus (I considered setting different shortcuts for the same RMB menu action in fe. Browser and View not really useful). Of course if shortcut cannot work in current context, it doesn't work.
There may be a problem, that in some context some shortcut can be free to use in another context. But for the sake of consistency, let's treat all shortcuts in the same way- as already used. Anyway, is there anyone who would like one shortcut to work different ways depending on context??? (Oh, yes, actally Pierre is, maybe one should persuade him -> hint: Ctrl+G in Browser an View).
"Browser"
Keyboard/mouse operations for File list/Folder tree/Preview panels.
"View","Fullscreen"
Keyboard/mouse operations for View/Fullscreen.
"Other"
Other windows where mouse/keyboard configuration may be helpful. Like Compare or (Quick) Slide show.
How are current controls implemented
General>Switching modes - there are actions avaliable in Browser, View, Fullscreen tabs, similar to 'Open in Browser', 'Open in View', 'Open in Fullscreen'
View>Keyboard/Mouse - current situation is reversed, you choose fe. 'Go to next picture' action and assign fe. 'Space' to it.
Browser>Open action - in Browser there are actions like 'Open image in View', 'Open image in fullscreen', 'Open image in associated program' etc. You get the same behaviour as for 'Open actions' by assigning chosen keypress/mouse to appropriate action.
Example:
Let's say we want open images in View and audio in external program with double click. Currently, in General>Switch modes we have to assign Double Click to Browser<>View and in Browser>Open action define 'Open in XnView' for images and 'Open in associated program' for audio files. It is not quite logical, because after double double click on video file you don't go to View, as you could expect by contents of General>Switch modes. Details of action are defined far away, in Browser>Open action.
In new design you would need to assign 'L-Doubleclick' to 'Open image in View' and 'L-Doubleclick' to 'Open audio in associated program'.
Of course "in real life" all actions are covered by default settings, as currently.
What problems are not covered here
- What items to put in tabs' lists.
- Contents of group of options that are 'mutually exclusive' (ie. groups, where the same key/mouse operation can be assigned to every item of such group). Fe. the same L-Drag mouse operation can be used both for panning image and resizing selection, without conflict.
- What are options avaliable for some specific items- fe. panning can use general 'Mouse move' or 'Cursor keys' operations, which don't make sense for other actions.
- The problem how to handle situations where some mouse operation is at the same time element of another mouse operation (like L-Hold is a start of L-Drag operation) is not considered.