\subsection{Text Viewer}
\screenshot{plugins/images/ss-text_viewer-main}{Text Viewer}{img:text_viewer-main}
This is a Viewer for text files with word wrap. Just open a \fname{.txt} or
\fname{.nfo} file to display it. The text viewer features controls to handle
various styles of text formatting and has top{}-of{}-file and bottom{}-of{}-file
buttons. You can view files without a \fname{.txt} or \fname{.nfo} extension
by using \emph{Open with} from the \emph{Context Menu}
(see \reference{ref:Contextmenu}). You can also bookmark pages.

\subsubsection{Default keys}
\begin{table}
    \begin{btnmap}{}{}
    \opt{PLAYER_PAD}{\ButtonLeft}
    \opt{RECORDER_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD%
        ,SANSA_E200_PAD,SANSA_FUZE_PAD,GIGABEAT_PAD,MROBE100_PAD}{\ButtonUp}
    \opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonScrollBack}
    \opt{IRIVER_H10_PAD}{\ButtonScrollUp}
    \opt{SANSA_C200_PAD,SANSA_CLIP_PAD}{\ButtonVolUp}
    \opt{GIGABEAT_S_PAD}{\ButtonPrev}
    \opt{COWON_D2_PAD}{\ButtonMinus{} / \TouchTopMiddle}
    \opt{PBELL_VIBE500_PAD}{\ButtonOK}
    \opt{HAVEREMOTEKEYMAP}{&
        \opt{IAUDIO_M3_PAD}{\ButtonRCUp}
    }
        & Scroll{}-up\\

    \opt{PLAYER_PAD}{\ButtonRight}
    \opt{RECORDER_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD%
        ,SANSA_E200_PAD,SANSA_FUZE_PAD,GIGABEAT_PAD,MROBE100_PAD}{\ButtonDown}
    \opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonScrollFwd}
    \opt{IRIVER_H10_PAD}{\ButtonScrollDown}
    \opt{SANSA_C200_PAD,SANSA_CLIP_PAD}{\ButtonVolDown}
    \opt{GIGABEAT_S_PAD}{\ButtonNext}
    \opt{COWON_D2_PAD}{\ButtonPlus{} / \TouchBottomMiddle}
    \opt{PBELL_VIBE500_PAD}{\ButtonCancel}
    \opt{HAVEREMOTEKEYMAP}{&
        \opt{IAUDIO_M3_PAD}{\ButtonRCDown}
    }
        & Scroll{}-down\\

    \opt{PLAYER_PAD}{\ButtonMenu+\ButtonLeft}
    \opt{GIGABEAT_S_PAD}{\ButtonPlay+\ButtonLeft}
    \opt{COWON_D2_PAD}{\TouchMidLeft}
    \nopt{PLAYER_PAD,GIGABEAT_S_PAD,COWON_D2_PAD,IAUDIO_M3_PAD}{\ButtonLeft}
    \opt{HAVEREMOTEKEYMAP}{&
        \opt{IAUDIO_M3_PAD}{\ButtonRCLeft}
    }
        & Top of file (Narrow mode) /
        One screen left (Wide mode)\\

    \opt{PLAYER_PAD}{\ButtonMenu+\ButtonRight}
    \opt{GIGABEAT_S_PAD}{\ButtonPlay+\ButtonRight}
    \opt{COWON_D2_PAD}{\TouchMidRight}
    \nopt{PLAYER_PAD,GIGABEAT_S_PAD,COWON_D2_PAD,IAUDIO_M3_PAD}{\ButtonRight}
    \opt{HAVEREMOTEKEYMAP}{&
        \opt{IAUDIO_M3_PAD}{\ButtonRCRight}
    }
        & Bottom of file (Narrow mode) /
        One screen right (Wide mode)\\

    \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,SANSA_E200_PAD%
        ,SANSA_FUZE_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD,GIGABEAT_S_PAD%
        ,PBELL_VIBE500_PAD}{%
        \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn+\ButtonUp}
        \opt{SANSA_E200_PAD,SANSA_FUZE_PAD}{\ButtonScrollBack}
        \opt{SANSA_C200_PAD,SANSA_CLIP_PAD,GIGABEAT_S_PAD,PBELL_VIBE500_PAD}{\ButtonUp}
    \opt{HAVEREMOTEKEYMAP}{& }
        & One line up\\
    }

    \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,SANSA_E200_PAD%
        ,SANSA_FUZE_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD,GIGABEAT_S_PAD%
        ,PBELL_VIBE500_PAD}{%
        \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn+\ButtonDown}
        \opt{SANSA_E200_PAD,SANSA_FUZE_PAD}{\ButtonScrollFwd}
        \opt{SANSA_C200_PAD,SANSA_CLIP_PAD,GIGABEAT_S_PAD,PBELL_VIBE500_PAD}{\ButtonDown}
    \opt{HAVEREMOTEKEYMAP}{& }
        & One line down\\
    }

    \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,GIGABEAT_S_PAD}{
        \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn+\ButtonLeft}
        \opt{GIGABEAT_S_PAD}{\ButtonLeft}
    \opt{HAVEREMOTEKEYMAP}{& }
        & One column left\\
    }

    \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,GIGABEAT_S_PAD}{
        \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn+\ButtonRight}
        \opt{GIGABEAT_S_PAD}{\ButtonRight}
    \opt{HAVEREMOTEKEYMAP}{& }
        & One column right\\
    }

    \opt{RECORDER_PAD,PLAYER_PAD,IPOD_4G_PAD,IPOD_3G_PAD,IAUDIO_X5_PAD%
        ,IRIVER_H10_PAD,GIGABEAT_S_PAD,PBELL_VIBE500_PAD}{\ButtonPlay}
    \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonSelect}
    \opt{ONDIO_PAD}{\ButtonMenu}
    \opt{GIGABEAT_PAD}{\ButtonA}
    \opt{SANSA_C200_PAD,SANSA_E200_PAD}{\ButtonRec}
    \opt{SANSA_CLIP_PAD}{\ButtonHome}
    \opt{SANSA_FUZE_PAD}{\ButtonDown+\ButtonSelect}
    \opt{MROBE100_PAD}{\ButtonDisplay}
    \opt{COWON_D2_PAD}{\TouchCenter}
    \opt{HAVEREMOTEKEYMAP}{&
        \opt{IAUDIO_M3_PAD}{\ButtonRCMode}
    }
        & Toggle autoscroll\\

    \opt{PLAYER_PAD}{\ButtonOn}
    \opt{RECORDER_PAD}{\ButtonFTwo}
    \opt{ONDIO_PAD}{\ButtonMenu+\ButtonOff}
    \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn+\ButtonSelect}
    \opt{IPOD_4G_PAD,IPOD_3G_PAD,GIGABEAT_PAD,GIGABEAT_S_PAD,MROBE100_PAD}{\ButtonSelect}
    \opt{IRIVER_H10_PAD}{\ButtonFF}
    \opt{IAUDIO_X5_PAD}{\ButtonRec}
    \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD}{\ButtonDown+\ButtonSelect}
    \opt{COWON_D2_PAD}{\ButtonMenu+\ButtonPlus}
    \opt{SANSA_FUZE_PAD}{\ButtonUp+\ButtonSelect}
    \opt{PBELL_VIBE500_PAD}{\ButtonPower}
    \opt{HAVEREMOTEKEYMAP}{&
        \opt{IAUDIO_M3_PAD}{\ButtonRCPlay+\ButtonRCMode}
    }
        & Set/Reset bookmarks\\

    \opt{RECORDER_PAD}{\ButtonFOne}
    \opt{ONDIO_PAD}{Long \ButtonMenu}
    \opt{PLAYER_PAD,IPOD_4G_PAD,IPOD_3G_PAD,GIGABEAT_PAD,GIGABEAT_S_PAD%
        ,MROBE100_PAD,PBELL_VIBE500_PAD}{\ButtonMenu}
    \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonMode}
    \opt{IAUDIO_X5_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD,SANSA_E200_PAD}{\ButtonSelect}
    \opt{SANSA_FUZE_PAD}{Long \ButtonSelect}
    \opt{IRIVER_H10_PAD}{\ButtonRew}
    \opt{COWON_D2_PAD}{\ButtonMenu{} / \TouchTopRight}
    \opt{HAVEREMOTEKEYMAP}{&
        \opt{IAUDIO_M3_PAD}{\ButtonRCPlay}
    }
        & Enter menu\\

    \opt{PLAYER_PAD}{\ButtonStop}
    \opt{RECORDER_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOff}
    \opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonSelect+\ButtonMenu}
    \opt{IAUDIO_X5_PAD,IRIVER_H10_PAD,SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD%
        ,GIGABEAT_PAD,MROBE100_PAD}{\ButtonPower}
    \opt{SANSA_FUZE_PAD}{Long \ButtonHome}
    \opt{GIGABEAT_S_PAD}{\ButtonBack}
    \opt{COWON_D2_PAD}{\ButtonPower{} / \TouchTopLeft}
    \opt{IAUDIO_M3_PAD,PBELL_VIBE500_PAD}{\ButtonRec}
    \opt{HAVEREMOTEKEYMAP}{&
        \opt{IAUDIO_M3_PAD}{\ButtonRCRec}
        \opt{IRIVER_RC_H100_PAD}{\ButtonRCStop}
    }
        & Exit text viewer\\

    \end{btnmap}
\end{table}

\subsubsection{Menu}

\begin{description}
\item[Return] Return to the file being viewed.
\item[Viewer Options] Change settings for the current file.
    \begin{description}
    \item[Encoding] Set the codepage in the text viewer.
% ToDo: wrap some of the following settings into a \opt{lcd_bitmap} to exlude
% ones that don't work on charcell - as soon as the plugin itself does
    Available settings:
    \setting{ISO-8859-1} (Latin 1).
    \setting{ISO-8859-7} (Greek),
    \opt{lcd_bitmap}{
        \setting{ISO-8859-8} (Hebrew),
    }
    \setting{CP1251} (Cyrillic),
    \opt{lcd_bitmap}{
        \setting{ISO-8859-11} (Thai),
        \setting{CP1256} (Arabic),
    }
    \setting{ISO-8859-9} (Turkish),
    \setting{ISO-8859-2} (Latin Extended),
    \setting{CP1250} (Central European),
    \opt{lcd_bitmap}{
        \setting{SJIS} (Japanese),
        \setting{GB-2312} (Simple Chinese),
        \setting{KSX-1001} (Korean),
        \setting{BIG5} (Traditional Chinese),
    }
    \setting{UTF-8} (Unicode),
    This setting only applies to the plugin and is independent from the
    \setting{Default Codepage} setting (see \reference{ref:Defaultcodepage}).
    \item[Word Wrap] Toggle word wrap mode.
        \begin{description}
            \item[On] Break lines at the maximum column limit.
            \item[Off (Chop Words)] Break lines at white space or hyphen.
        \end{description}
    \item[Line Mode] Change how lines are displayed.
        \begin{description}
            \item[Normal] Break lines at newline characters.
            \item[Join] Join lines together.
            \item[Expand] Add a blank line at newlines. Useful for making paragraphs
            clearer in some book style text files.
            \opt{lcd_bitmap}{
            \item[Reflow Lines] Justify the text.
            }
        \end{description}
    \item[Wide View] Set the viewmode.
        \begin{description}
            \item[No (Narrow)] Set the maximum column width to the screen width.
            \item[Yes] Set the maximum column width to 114 pixels.
            (Currently, \setting{Wide} and \setting{Join} cannot be selected together.)
        \end{description}
    \opt{lcd_bitmap}{
    \item[Alignment] Set the text alignment.
        \begin{description}
            \item[Right] Set the text alignment to the right.
            (Useful for displaying right-to-left languages, such as Arabic or Hebrew)
            \item[Left] Set the text alignment to the left.
        \end{description}
    \item[Show Scrollbar] Toggle the scrollbar for the current mode. If the
    file fits on one screen, there is no scrollbar and toggling this setting
    has no effect.
        \begin{description}
            \item[Off] Turn the scrollbar off.
            \item[On] Turn the scrollbar on.
        \end{description}
    \item[Overlap Pages] Set whether the last line from the previous screen is
          retained when scrolling pages.
        \begin{description}
            \item[No] Set page{}-down/page{}-up to one full screen.
            \item[Yes] Set page{}-down/page{}-up to retain one line from the
            previous screen.
        \end{description}
    }
    \opt{lcd_bitmap}{
    \item[Show Header] Select whether to show the status bar and the current file path.
        \begin{description}
            \item[None] Do not display the status bar or the current file path.
            \item[File Path] Display only the current file path.
            \item[Status bar] Display only the status bar.
            \item[Both] Display both the status bar and the current file path.
        \end{description}
        \note{If the status bar position is not set to the top of the screen then
          \setting{Status bar} and \setting{Both} are not available.}

    \item[Show Footer] Select whether to show the status bar and the page number.
        \begin{description}
            \item[None] Do not display the status bar or the page number.
            \item[Page Num] Display only the page number.
            \item[Status bar] Display only the status bar.
            \item[Both] Display both the status bar and the page number.
        \end{description}
        \note{If the status bar position is not set to the bottom of the screen then
          \setting{Status bar} and \setting{Both} are not available.}

    \item[Font] Select the font to be used by the Text Viewer.
    }
    \item[Scroll Mode] Change the function of the ``Scroll-up'' and
    ``Scroll-down'' buttons.
        \begin{description}
            \item[Scroll by Page]
            \item[Scroll by Line]
        \end{description}
    \item[Auto-scroll Speed] Control the speed of auto-scrolling in number
      of lines per second.  Available options are \setting{1} to
      \setting{10} lines per second. As an example,
      \setting{4} will scroll the text at four lines per second.
    \end{description}

\item[Show Playback Menu] Display the playback menu to allow control of the
currently playing music without leaving the plugin.

\item[Select Bookmark] Select a saved bookmark. In the screenshot below, the
``*'' denotes the current page.

\screenshot{plugins/images/ss-text_viewer-sel_bk_menu}{The select bookmark menu}{img:text_viewer-sel_bk}

\item[Global Settings] Set the default settings for the text viewer.
The setting items are the same as \setting{Viewer Options}. The global
settings are stored in
\fname{.rockbox/rocks/viewers/viewer.dat}.

\item[Quit] Exits the plugin. The text viewer automatically
stores its settings, the current position and bookmarks in
\fname{.rockbox/rocks/viewers/viewer\_file.dat}.
\end{description}

\subsubsection{Bookmarks}
    To add a bookmark, press 
    \opt{PLAYER_PAD}{\ButtonOn}\opt{RECORDER_PAD}{\ButtonFTwo}%
    \opt{ONDIO_PAD}{\ButtonMenu+\ButtonOff}%
    \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn+\ButtonSelect}%
    \opt{IPOD_4G_PAD,IPOD_3G_PAD,GIGABEAT_PAD,GIGABEAT_S_PAD,MROBE100_PAD}{\ButtonSelect}%
    \opt{IRIVER_H10_PAD}{\ButtonFF}\opt{IAUDIO_X5_PAD}{\ButtonRec}%
    \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD}{\ButtonDown+\ButtonSelect}%
    \opt{COWON_D2_PAD}{\ButtonMenu+\ButtonPlus}%
    \opt{SANSA_FUZE_PAD}{\ButtonUp+\ButtonSelect}%
    \opt{IAUDIO_M3_PAD}{\ButtonRCPlay+\ButtonRCMode}.
    The bookmark will be displayed as shown below. To delete the bookmark
    press the same button again.

\screenshot{plugins/images/ss-text_viewer-bookmark}{A bookmark}{img:text_viewer-bookmark}

