Create list of pages with function keys, buttons, and offline operation
Current function keys. Most all of this will be changing, just leaving as a quick reference.
- onboarding pages: cntlp/prev_page(maybe use Esc) cntln/next_page(maybe use Enter)
- dashboard: f1/help f2/operations f4/deactivate f9/config
- help: Esc/back T/Toggle_TOC cntlp/prev_page cntrln/next_page
- operation choose: Esc/back f2/cart f3 Load from file
- all operation screens: Esc/back f2/add to cart f5/fast broadcast f6/finalize transaction
- governance/witnesses view (except the above): f3/witness details PgUp/page up and PgDn/page down
- select node: Esc/back
- manage key aliases: Esc/back f2/new alias
- edit key alias: Esc/back f6/save
- remove key alias: Esc/back f2/confirm(ok)
- accounts management: Esc/backcart view: Esc/back f6/summary f9/clear all ctrl+
⬆ /next ctrl+⬇ /previous - transaction summary: Esc/back f2/save f3/dashboard f6/broadcast
New button/key bindings
Available key bindings based on focus within a page
Key bindings should be enabled based on focus, not on individual pages (maybe it already works this way, I don't know). For example, W to set selected account as watched account requires an account to be selected. I point this out because I'll be discussing key bindings at the page level, but keys will appear/disappear based on focus within those pages.
Moving away from function keys
We're going to replace function keys with standard letter keys (and maybe a few ctrl-keys, if necessary, but doesn't seem necessary so far). Function keys were chosen originally to operate when focus in edit boxes, but simple work around here is to tab out of edit boxes (which means we should avoid pages with only edit boxes and no buttons, but that's something we want to avoid anyways).
On operation pages
We need Add to Cart and Checkout buttons which are initially disabled. These buttons should only be enabled once enough info has been provided to create a valid transaction (and should be disabled if information is removed via editing). Associated key bindings should only be visible when buttons are enabled.
When user does an Add to cart, clear the form so that more operations of the same type can be performed (stay on the same page).
Checkout will take user to transaction summary page as final review before broadcasting.
Eliminate Fast broadcast functionality: it is overkill and confusing.
Also, let's remove Clear cart functionality from everywhere, its not particularly useful IMO.
Transaction summary page
For key bindings, use B for broadcast and S for save to file instead of function keys. Also change button titles to: Broadcast(B) and Save to file(S).
As a side note, performing either Broadcast or Save to file should clear the cart on success (probably already does).
Dashboard page
- A for add tracked account at any time
- W to set working account when account is selected
- R for remove account when account is selected
General key binding naming methodology
A for add (tracked account, etc)
R for remove (tracked account, etc)
D for delete
Esc to go back to previous page
Enter for pressing active button
S for save to file
B for broadcast
M for main page (dashboard)
PgUp/PgDown for big scroll up/down whenever focused on scrollable item.
On Any page, these should be key bindings should be available:
O for open transaction file
L for lock wallet
U for unlock wallet
? for help (or maybe Ctrl-? if we want to allow from edit boxes)
C for config
Esc for back
Opening a transaction file
We should allow opening a transaction file (O for open) from any non-modal page. If we open a transaction and the cart has items, we should ask if user wants to abort or overwrite existing cart. If the transaction file loads successfully, open the transaction summary page.
Open questions
- Now that we have clickable top bar, should we allow tabbing to it? We decided "no", but there will be key bindings to get to the functionalities there.