# User defined toolbar

It is possible for the user to define a toolbar which will appear beneath normal toolbar.

To define such a toolbar one has to create (modify) text file with name YSokobanButtons.txt. Inside this file every line describes one button. # is used as a comment, so lines starting with # are skipped.

Syntax used to define buttons is:

      button_text (';'|':') command x{',' command x}

i.e. specify button text to appear on button and commands to be executed, separated with either : or ;

button_text is any text or it can have language or country modifiers, for example:

     en{english text},us{text for US},simpl{...},trad{...},text

Language/country modifiers are meant for use if player wants to have translated text even when switching between different languages. If there are no language/country modifiers then switching between languages will not change button texts. YSokoban will search text with modifier for current language, if not found will search for country, if not found will use text without language/country specifier which has to be the last one. Language/Country modifier is the one used in language files as language/country abbreviation. Button text (with all specifiers) is separated with ':' or ';' from the commands

It is possible to have more than one command (separate commands with ',')

Add following lines to file YSokobanButtons.txt to have user tool bar as the one from screen shot

    net: toggleNet
    reachable: showReachable
    movable: showMovable
    not moved: showNotMoved
    ruler: ruler

## Commands

In every command x is an integer parameter (if missing defaults to 0), command is one of the following:

Command | Parameter | Description | similar hot-key
--- | --- | --- | ---
setBookmark | 0..9 | Bookmark a level | Ctrl-0..9
gotoBookmark | 0..9 | Goto bookmarked level | 0..9
zoom | -100 .. 100 | Zoom (change skin size by the number of pixels specified) zoom 0 will reset skin size to original size | +/- =
loadLevel | number | 0 will restart level, other numbers will load next/prev level | Ctrl-arrows
reloadLevel | 0 1 | 0 will reload level (same as loadLevel 0) 1 will also shrink size | Esc Shift-Esc
loadUnsolvedLevel | +/-1 | same as loadLevel, but will find next/prev unsolved level | Ctrl-Shift-arrows
loadErrorLevel | +/-1 | same as loadLevel, but will find next/prev level with errors | Alt-Shift-arrows
firstLevel |  | jump to first level in collection | Ctrl-Home
lastLevel |  | jump to last level in collection | Ctrl-End
useSkin | 0, 1..6 | 0 use current skin, 1..6 use skin (with default net setting) | F3..F8
useNetSkin | 0, 1..6 | 0 use current skin, 1..6 use skin (with opposite net setting) | Ctrl-F3..F8
toggleNet |  | toggle skin net | Ctrl-N
showReachable | -1, 0, 1 | Show reachable cells (by man or box) 0=toggle, 1=on, -1=off | F9
showMovable | -1, 0, 1 | Show movable boxes 0=toggle, 1=on, -1=off | Ctrl-F9
showNotMoved | -1, 0, 1 | Show not moved boxes 0=toggle, 1=on, -1=off | Alt-F9
copyLevel | 0 1 2 3 4 5 6 7 10 12 | Copy level to clipboard: 0 - normal copy (as Ctrl-L) 1 - copy RLE packed(as Ctrl-Shift-L) 2 copy using '-' instead of space(as Ctrl-Alt-L) 3 copy level as MF8 group uses it (as Ctrl-Shift-Alt-L) 4 - normal copy + MF8 group (as Ctrl-M) 5 - same as 1, but lowercase solution 6 - same as 1, but use brackets in RLE 7 - same as 1, but lowercase solution and use brackets in RLE 10 - normal copy without solution (Alt-L) 12 - copy type 2 without solution (Alt-Shift-L) | Ctrl-L Ctrl-Shift-L Ctrl-Alt-L Ctrl-Shift-Alt-L Ctrl-M Alt-L Alt-Shift-L
copyMoves | 0 -1 1 2 3 4 | Without parameters (same as having parameter 0) it will copy moves to clipboard param < 0 - copy rest of the moves (whatever is in redo buffer), same as Ctrl-Alt-C 1 - will use push-format 2 - push-format with marked boxes 3 - push format without go-thru 4 - will not use push format (regardless of selected push mode) | Ctrl-C Ctrl-Alt-C Ctrl-P Alt-P Ctrl-Alt-P Ctrl-C
CopyMovesFmt | 1 2 3 5 6 7 | Set copyMoves format (parameters 1,2,3 are valid only for next copy, 5,6,7 will set format permanently): 1 will use push-format 2 push-format with marked boxes 3 push format without go-thru 5 same as 1, but format will be valid till next format change 6 same as 2, but format will be valid till next format change 7 same as 3, but format will be valid till next format change" |
ruler | 0 1 2 3 -1 -2 | 0 = ruler off 1 = toggle ruler alpha-num 2 = toggle ruler num-num 3 = change ruler from off->alpha-num->num-num -1 = set ruler alpha-num -2 = set ruler num-num | Ctrl-R Alt -R
saveState |  | save state | Ctrl-S
loadState |  | load state | Ctrl-O = Ctrl-D
paste | 0 1 2 3 | 0 - paste from clipboard 1 - paste, if moves then stops at first box change 2 - paste, if moves then do them instantly 3 - paste, if moves then stops at first step | Ctrl-V Ctrl-Shift-V Ctrl-I Ctrl-Alt-V
screenShot | 0, -1 | 0 make a screen shot of a current level -1 make a screen shot of all levels | Shift-X Ctrl-Shift-X
record | -2 0 1 -1 2 3 4 5 6 7 8 9 10 11 12 | ask for recording folder path toggle recording mode start recording mode stop recording mode toggle bmp/png mode select bmp mode select png mode toggle window/level mode select window mode select level mode start recording from 0 frame (or stop) continue recording (or stop) start recording from 0 frame (do not stop) continue recording (do not stop) stop recording | Alt-F3 Ctrl-Alt-Shift-F3 Ctrl-Shift-F3 Ctrl-Alt-F3 Ctrl-F3 Shift-F3
undo | 0 1 | undo one move undo pushing box | Shift-backspace backspace
redo | 0 1 2 | redo one move redo pushing box continue nonstop redo | Shift-space space Ctrl-space
help |  | show help | F1
removeDoubleLine |  | remove double lines in clipboard | Alt-D
playMacro | 0 1 | Play newly edited macro (edited in bottom part of Macro Dialog) play selected macro (shown in upper part of Macro Dialog) | M Shift-M
autoResize | 0 -1 | toggles auto-resizing on/off toggles autoresizing algorithm (there are two possible algorithms it depends on skin which one is better). | * ' or #
reloadAndMark | 0 1 | On finished level, reloads level and puts mark only on non moved boxes (see Alt-F9 about non moved boxes). reloads level and puts mark only on non moved boxes (see Alt-F9 about non moved boxes). | Home Shift-Home
jumpEnd | 0 1 -1 2 | pressed during solution replay (or pasted solution) jumps instantly to final result (skipping all moves). show not touched boxes (see Alt-F9 for more) jump to end but do not show not touched boxes (see Alt-F9 for more) Show not touched but do not jump 2 end | End Shift-End
replaySolution | 0 1 2 | replay solution replay solution (step-by-step) replay solution (stopping on box change) | F2 Shift-F2 Ctrl-F2
solutionHelp | 0 1 | start default browser with correct URL so that it will show level from solution database site put in clipboard URL for the solution database | F12 Ctrl-F12
statusbar | 0 1 -1 | toggle status/menu bar. show status/menu bar. hide status/menu bar. | Ctrl-F11
fullscreen | 0 1 -1 | toggle full screen mode. use full screen mode. switch to normal (not full screen) mode. | F11
submitMF8 |  | submit solution to MF8 group | Ctrl-Alt-F11 Ctrl-Shift-F11
move | 1 2 3 4 | move man left move man right move man up move man down | j k i m

Created with Ywiki