From 00beef81dc064997837079c4c53d60655b8c6b8e Mon Sep 17 00:00:00 2001
From: echicken <>
Date: Tue, 18 Aug 2015 04:00:02 +0000
Subject: [PATCH] Updated instructions for the new version.

---
 xtrn/ansiview/readme.txt | 274 ++++++++++++++++++++++++++++++++++-----
 1 file changed, 240 insertions(+), 34 deletions(-)

diff --git a/xtrn/ansiview/readme.txt b/xtrn/ansiview/readme.txt
index 007a6bb1be..a1ea2a8ae4 100644
--- a/xtrn/ansiview/readme.txt
+++ b/xtrn/ansiview/readme.txt
@@ -1,34 +1,240 @@
-ansiview.js - An ANSI art browser for Synchronet BBS v3.15+
-by echicken -at- bbs.electronicchicken.com
-
-You can add  ansiview.js  as an external program  via SCFG,  or simply launch it
-from a Javascript shell with bbs.exec("?/sbbs/xtrn/ansiview/ansiview.js"); (your
-path may vary.)
-
-By default, ansiview.js looks in its own directory (eg. /sbbs/xtrn/ansiview) for
-a subdirectory called "library" (eg. /sbbs/xtrn/ansiview/library).   This is the
-root  directory  of  your  ANSI  library,  and  can  contain an  entire tree  of
-directories containing ANSI/ASCII files or ZIP artpacks. You can specify another
-location by  editing  the ansiRoot  variable at the top of  ansiview.js.   Other 
-configurable variables are  present there  that will let you disallow files with 
-certain names and extensions from being opened and to change the look and output
-speed of this script.
-
-ansiview.ans and  help.ans are the graphics  for the file browser screen and the 
-help screen, respectively.  You can modify or replace them as you like, but bear 
-in mind  that if  your new  design changes  the location  of the path bar or the 
-location and  dimensions of the file list,  you will need to edit ansiview.js to 
-work within the new boundaries that you've set.   I can make it easier to change
-the size and location of the path bar and file list if there's demand for it.
-
-If a ZIP archive is  selected in the file browser,  ansiview.js will check for a 
-directory  matching the archive's  filename  less the ".zip"  extension.   If no
-matching  directory is found,  the archive will be unzipped into a new directory
-named as described above.  In either case,  the file browser will then load that
-directory. This feature might make it easier to use ansiview.js with an existing 
-collection of ANSI art residing in your BBS' file libraries.
-
-If you need support, post a message addressed to me in DOVENet Synchronet Sysops
-or DOVENet Synchronet  Programming (Javascript),  look for me in  #synchronet on
-irc.bbs-scene.org / irc.synchro.net,  or send an email to the address at the top
-of this file.
+ANSIView
+Browse and view text files, ANSI & ASCII art on Synchronet BBS 3.15+
+echicken -at- bbs.electronicchicken.com
+
+0) Introduction
+1) Prerequisites
+2) Installation
+3) Customization
+4) Configure a local art or text file archive
+5) Connect your BBS to some online ANSI & ASCII art archives
+6) Develop your own browser module (or, "Nobody will ever do this")
+
+0) Introduction
+
+	ANSIView is a browser and viewer for text files, ANSI and ASCII art.  You
+	can present your users with a library of content local to your BBS, and
+	also connect to multiple online archives.  ANSIView uses a lightbar user-
+	interface which has been described as "okay".
+
+	Users can turn screen pausing on and off for the duration of their
+	ANSIView session, and can adjust the output speed of the displayed files.
+	When SyncTERM is in use, its native output speed emulation will be
+	employed.  When non-SyncTERM clients are in use, an attempt will be made
+	to simulate the desired output speed using server-side techniques.
+
+	ANSIView won't do much of anything until you configure it, so please read
+	through this document in order to learn how to make ANSIView do stuff.
+	Feel free to skip over section 6.
+
+	ANSIView comes without any warranty, but if it ruins your life I promise
+	to feel kinda bad about it.
+
+1) Prerequisites
+
+	ANSIView should work with Synchronet BBS 3.15+.
+
+	If you're fairly certain that your system is up-to-date, just move ahead
+	to the Installation section.  Bear in mind that at least one dependency,
+	exec/load/filebrowser.js, is newer than the release of Synchronet 3.16c.
+
+	Grab the latest copies of the following files from the Synchronet CVS:
+
+		exec/load/funclib.js
+		exec/load/frame.js
+		exec/load/tree.js
+		exec/load/scrollbar.js
+		exec/load/filebrowser.js
+		exec/load/http.js
+
+	You can find them via the CVS web interface here:
+
+		http://cvs.synchro.net/cgi-bin/viewcvs.cgi/exec/load/
+
+	Or just use your usual CVS update method, backing up first, etc.
+
+2) Installation
+
+	In SCFG (BBS -> Configure from the Synchronet Control Panel on Windows),
+	go to External Programs -> Online Programs (Doors), choose a section to
+	add this program to, and then create a new entry in that section with
+	the following details:
+
+		Name:						ANSIView
+		Internal Code:				ANSIVIEW
+		Start-up Directory:			../xtrn/ansiview
+		Command Line:				?ansiview.js
+		Multiple Concurrent Users:	Yes
+
+	All other settings can be left at their default values.
+
+3) Customization
+
+	Open the file 'xtrn/ansiview/settings.ini' with a text editor.  You'll see
+	that the root section has the following default values:
+
+		border = LIGHTBLUE,CYAN,LIGHTCYAN,WHITE
+		fg = WHITE
+		bg = BG_BLACK
+		lfg = WHITE
+		lbg = BG_CYAN
+		sfg = WHITE
+		sbg = BG_BLUE
+
+	The 'border' value can be a single color-name, or a comma-separated list
+	of color names.  You can find valid color names in exec/load/sbbsdefs.js.
+
+	The other values must be single color names, and they are as follows:
+
+		- 'fg' is the foreground color of a non-highlighted list item
+		- 'bg' is the background color of a non-highlighted list item
+		- 'lfg' is the foreground color of a highlighted list item
+		- 'lbg' is the background color of a highlighted list item
+		- 'sfg' is the foreground color of the path & status bars
+		- 'sbg' is the background color of the path & status bars
+
+	Any additional sections in 'settings.ini' will be treated as configuration
+	sections for local or online art archives.
+
+4) Configure a local art or text file archive
+
+	The following example section of 'xtrn/ansiview/settings.ini' is commented
+	out by default:
+
+		;[ANSI Gallery]
+		;description = A local archive of ANSI and ASCII artwork
+		;module = local.js
+		;path = /path/to/my/ansi/art/collection
+		;hide = *.exe,*.com
+
+	You can enable this section by removing the semicolons from the start of
+	each line.
+
+	To point this section at a local directory containing your archive of
+	art and/or text files, edit the 'path' value accordingly.
+
+	You can make copies of this section and point them at different directories
+	in order to list multiple distinct local libraries from ANSIView's main
+	menu.
+
+	Don't modify the 'module' line unless you know what you're doing.  The
+	'local.js' module invokes and configures a filesystem browser specifically
+	for use with ANSIView.
+
+	The 'hide' value is a comma-separated list of wildcard-patterns that will
+	be used to identify files that should be hidden from users. These patterns
+	are not case-sensitive.  The * and ? wildcards are supported.  You can add
+	as many patterns to the list as you like, but it's recommended that you
+	do not delete any of the default expressions.
+
+	Each directory and subdirectory within your local archive can contain an
+	'ansiview.ini' file.  This file can contain a 'descriptions' section
+	which maps the names of files in that directory to a description of the
+	file, like so:
+
+	[descriptions]
+	hugewang.ans = A large ANSI drawing of a Wang 2200 computer.
+	boobies = A directory full of pictures of blue-footed boobies.
+
+	The keys of the 'descriptions' section (ie. the filenames) must be in
+	lowercase.
+
+	Future updates to ANSIView may introduce other optional per-directory
+	settings to ansiview.ini, such as access requirements.  The ansiview.ini
+	files will be hidden from all directory listings.
+
+5) Connect your BBS to some online ANSI & ASCII art archives
+
+	The following two sections of 'xtrn/ansiview/settings.ini' are commented
+	out by default:
+
+		;[sixteencolors.net]
+		;description = An online ANSI and ASCII artwork archive
+		;module = sixteencolors.js
+		;cache = true
+		;cachettl = 86400
+
+		;[thescene.electronicchicken.com]
+		;description = An online ANSI and ASCII artwork archive
+		;module = thescene.js
+		;cache = true
+		;cachettl = 86400
+
+	You can enable access either or both of these online archives by
+	removing the semicolons from the beginning of each line of the
+	applicable section(s).
+
+	Please consider leaving the 'cache' value set to 'true' (without quotes),
+	as this will reduce the amount of traffic between your system and the
+	online archive.
+
+	If caching is enabled, each file that your user opens on the online
+	archive will be downloaded and saved to your local system, and it will
+	not be deleted unless you take steps to do so manually.  The caches are
+	stored in 'xtrn/ansiview/.cache/'.  If they start to consume too much
+	space, you can delete them without causing any problems.
+
+	The 'cachettl' value determines the time-to-live, in seconds, for cached
+	web API responses.  Data will be refreshed after this amount of time
+	passes.  (Note that this applies to things like file lists, and not to
+	files themselves.)  86400 seconds is 24 hours.
+
+	Some caching is done either way, but if 'cache' is set to false, the
+	cache will be cleared after your user logs off.
+
+6) Develop your own browser module
+	-or-
+6) Nobody will ever do this
+
+	Each non-root section of settings.ini describes a 'browser module'.  When
+	a user selects that module from ANSIView's main menu, the script pointed
+	at by the 'module' setting is loaded.  One argument is passed to that
+	script, which is a JSON string of the module's section of 'settings.ini',
+	with an additional property ('colors') comprised of the root section of
+	settings.ini.  (See 'local.js' for a basic example of handling this
+	argument.)
+
+	The loaded script must return an instance of an object that responds to
+	the following method calls:
+
+		- .open()
+			-	Open the browser and draw it in the user's terminal
+		- .cycle()
+			-	Perform any regular housekeeping tasks
+			-	This will be called every time through ANSIView's main loop
+		- .refresh()
+			-	Redraw the browser on the screen
+		- .getcmd(cmd)
+			-	Handle a string of input from the user (usually one character)
+		- .close()
+			-	Close the browser and remove it from the user's terminal
+
+	The following globals will be available to the module:
+
+		- root
+			-	The full path to ANSIView's startup directory
+		- browserFrame
+			-	An instance of Frame (exec/load/frame.js) which the browser
+				should use as a parent frame for any of its own frames.
+		- printFile(file)
+			-	A function that prints a file to the user's terminal, with
+				knowledge of ANSIView's current settings re: speed & pausing
+			-	'file' is the full path to the file to be displayed
+
+	For an example of returning an instance of an object from a load() call,
+	see local.js, or read up on self-executing anonymous functions in JS.
+
+	For consistency's sake, all browser modules should ideally use:
+
+		- Frame
+			- exec/load/frame.js
+		- Tree
+			- exec/load/tree.js
+		- ScrollBar
+			- exec/load/scrollbar.js
+
+	If the module uses a path/address bar, it should get its color settings
+	from JSON.parse(argv[0]).colors.sfg/sbg.
+
+	The module's file-list Tree should take its tree.colors.fg/bg/lfg/lbg
+	settings from JSON.parse(argv[0]).colors.fg/bg/lfg/lbg.
\ No newline at end of file
-- 
GitLab