  
  [1m[4m[31m1. Introduction and Overview[0m
  
  
  [1m[4m[31m1.1 Introduction[0m
  
  The motivation of the package [1mBrowse[0m was to provide better functionality for
  displaying  two-dimensional  arrays of data (e.g., character tables): moving
  through  the data without loosing row and column labels, searching for text,
  displaying  extra information, hiding information, allowing interactive user
  input, ...
  
  We  wanted  to  achieve  this  by  using  the  capabilities  of the terminal
  emulations  in which [1mGAP[0m is running, and not by some external graphical user
  interface.  For  this  we  have chosen to use the widely available [22m[32mC[0m-library
  [22m[32mncurses[0m, see [xxx]. It contains functions to find out terminal capabilities,
  to  change properties of terminals, to place text, to handle several windows
  with  overlapping,  ... To use these functions the terminal is switched to a
  [22m[36mvisual  mode[0m  so that the display of the non-visual mode of your terminal in
  which [1mGAP[0m is running is not clobbered.
  
  [1mBrowse[0m has now three levels of functionality:
  
  [1m[33mA low level interface to [22m[32mncurses[0m[0m
        This  may  be  interesting for all kinds of applications which want to
        display  text  with  some  markup  including  colors, maybe in several
        windows, using the available capabilities of a terminal.
  
  [1m[33mA medium level interface to a generic function [1m[34mNCurses.BrowseGeneric[0m ([1m4.3-1[0m)[0m
        This  is for displaying two-dimensional arrays of data, handles labels
        for rows and columns, searching, sorting, binding keys to actions, ...
        Look  here,  if  you  want  to implement such applications for further
        kinds of data.
  
  [1m[33mApplications of these interfaces[0m
        We  provide  some  applications  of  the  [22m[32mncurses[0m interface and of the
        generic   [1m[34mNCurses.BrowseGeneric[0m   ([1m4.3-1[0m)   function.   These  may  be
        interesting  for  end  users,  and also as examples for programmers of
        further  applications. This includes (of course) a method for browsing
        through   character   tables,  functions  for  browsing  through  data
        collections, several games, and an interface for demos.
  
  Users  interested  only  in  these  applications  should  perhaps  just  try
  [22m[32mNCurses.Demo()[0m.
  
  
  [1m[4m[31m1.2 Overview[0m
  
  
  [1m[4m[31m1.2-1 The [22m[32mncurses[1m[4m[31m interface[0m
  
  Chapter  [1m2.[0m describes [1mGAP[0m's interface to the [22m[32mncurses[0m [22m[32mC[0m-library. The imported
  [22m[32mC[0m-functions  are  shortly explained, but for further details we refer to the
  documentation of that library. There are also a few utility functions on [1mGAP[0m
  level,  such  as  [1m[34mNCurses.SetTerm[0m  ([1m2.2-2[0m),  which  simplify  the use of the
  library.
  
  The concept of an [22m[36mattribute line[0m, see [1m[34mNCurses.IsAttributeLine[0m ([1m2.2-3[0m), helps
  to deal with text with markup for its display in a terminal window.
  
  This  chapter  is  for  users  who  want  to write their own applications of
  [22m[32mncurses[0m.
  
  
  [1m[4m[31m1.2-2 Applications of [22m[32mncurses[1m[4m[31m[0m
  
  In  Chapter  [1m3.[0m  we  describe  some  interactive applications of the [22m[32mncurses[0m
  interface. For example, there is [1m[34mNCurses.Select[0m ([1m3.1-2[0m) for asking a user to
  choose  one  or  several  of  a  given  list  of items. There is also a demo
  function  [1m[34mNCurses.Demo[0m  ([1m3.2-1[0m)  which we use to demonstrate features of the
  [1mBrowse[0m package, but it may be interesting for other kinds of demos as well.
  
  
  [1m[4m[31m1.2-3 The interface to browse two-dimensional arrays[0m
  
  Chapters   [1m4.[0m   and   [1m5.[0m  describe  the  interface  to  a  generic  function
  [1m[34mNCurses.BrowseGeneric[0m  ([1m4.3-1[0m)  which can be used for an interactive display
  of  two-dimensional  arrays  of  data.  The  first of these covers the basic
  functionality  which  may be sufficient for many applications and the second
  gives  more  technical  details. With interactive display we mean that it is
  not  only  possible  to  scroll  through  the  data,  but one can search for
  strings,  sort by rows or columns, select entries, bind arbitrary actions to
  keys, ask for help, and more.
  
  
  [1m[4m[31m1.2-4 Applications of the generic function [22m[32mNCurses.BrowseGeneric[1m[4m[31m[0m
  
  In  Chapter  [1m6.[0m we describe several applications which are using the generic
  [1m[34mNCurses.BrowseGeneric[0m ([1m4.3-1[0m) interface introduced before. They are provided
  as  prototype  applications and so we include some implementation remarks in
  their documentation.
  
  Users  who just want to use these applications hopefully do not need to read
  this [1mBrowse[0m manual, all applications are coming with built-in help windows.
  
  There  are  different  kinds  of  applications. First, there are methods for
  browsing  through  character  tables  and  tables  of  marks  (our  original
  motivation  for  this  package).  Then  there  are applications for browsing
  through  data  collections,  e.g.,  the  data available through the [1mAtlasRep[0m
  package,  the  [1mGAP[0m bibliography or the sections of the [1mGAP[0m manuals. Finally,
  there  are  several  games like Sam Loyd's fifteen puzzle (generalized), peg
  solitaire,  and  Sudoku  (including  functions  to create new puzzles and to
  solve puzzles).
  
