EvenMore 0.91
A freeware textviewer for the Amiga

EvenMore ©1996-2017 Chris Perver


Contents

Introduction
System requirements
Installation
Features
Launching
Keyboard
ARexx
Escape Code Interpreter
Plugins
Contact me
Credits

Introduction

The Amiga operating system is well designed, but for some reason it has always lacked a decent textviewer. Commodore developed the More tool for reading plain text, and Amiga Guide and MultiView offered more enhanced features, including datatype recognition and such like. I wanted a textviewer which would look good and blend in with all my other Workbench patches. I started developing EvenMore in 1996 as a hobby. It started off fairly basic as textviewers go, but now EvenMore offers functions such as proportional font support, multi-coloured text, file conversion plugins, and more. EvenMore is entirely programmed in AmigaE and ECX, which is an excellent programming language developed by Wouter van Oortmerssen and Leif Salomonsson.

System requirements

Those requirements in red are essential for EvenMore to run. Those in black are libraries used by EvenMore if available.

MUI 3.8+
BetterString MCC

OpenURL library (for clickable links in HTML files)
CyberGraphics library (for detection of true colour graphics cards modes)
Lha, Lzx and Unzip commands for browsing archives

Installation

Installation is simple. EvenMore should run from the directory it is in, without any need of setup, as long as you have the required libraries already on your system.

Features

Launching

EvenMore can load multiple files when launching through the Shell or Workbench.

Shell

EvenMore S:User-startup 
EvenMore Docs:EvenMore SYS:Utilities S:User-startup S:Startup-sequence

Workbench

You can shift-select multiple files or drawers with the EvenMore executable (holding shift, left click on the EvenMore icon, then double click on a file). EvenMore also supports dragging and dropping files or directories on to its main window. Just drag a file or drawer on to the EvenMore window, or onto the icon when EvenMore is iconified, and EvenMore will open the file or directory.

If you try to launch EvenMore and a copy of the program is already running, then EvenMore will pass the files you have selected on to the open copy via ARexx, and will close itself.


Interface

EvenMore will detect on start-up what type of files you have selected to open. If you are running the FileTypes plugin module, EvenMore will first scan through what filetypes have been configured, and then launch the applications associated with the files listed in filetypes.txt. If there are any files remaining to be opened, the EvenMore window should then appear. 

Along the top of the window you will see two string gadgets. The large one on the left displays the full path of the currently opened file. You can also type a new file or directory into this string gadget and EvenMore will open it. To the left of this gadget there are three arrow buttons. The first two buttons browse between the currently opened files. The third arrow button opens the parent directory of the currently opened file. If you have the dir2text.plugin installed, this directory will be displayed in the main EvenMore text window. The string gadget to the right of this is a search box into which you can enter a word. EvenMore will then perform a case insensitive search on the currently viewed file, beginning at the first line displayed in the window. You can repeat the search using the arrow buttons or the keyboard commands listed in this document. At the top right-hand side of the window you will see a gadget with a plus sign in it. Clicking this gadget will store the currently viewed file and line number in the bookmarks list. 

Below these gadgets you will see the information bar. This displays information as to where you are in the document, what plugin has been used to open the document, etc. At the right hand side of this information bar you will see several small icons. These are for performing operations on the currently opened file. They are close file, re-open file, save file (modified version displayed by EvenMore), edit file, print file, information, view bookmarks and preferences.  

Quickload Menu

EvenMore will automatically look for a file called "quickload.txt" in the EvenMore directory. This is a simple text file containing a list of strings, something like the following...

S:Startup-sequence
S:User-startup
BAR
Commands
SUB
EXE
New CLI,c:newcli
Open in Multiview,sys:utilities/multiview "%s"
FILE
ITEM
BAR
Work:Readme.txt

Each of these files will then be loaded into the Quickload menu in EvenMore for easy access. The keyword 'BAR' will create a menu break. 'SUB' will place the subsequent lines in a sub menu, with the preceding line containing the name of the sub menu. 'ITEM' designates the end of the declaration of sub menu items, and the beginning of the main menu items again. 'EXE' will cause EvenMore to treat the following lines as strings to execute from the shell rather than text files for opening. These lines can be preceded by a short description and a comma, to give them an intelligible name. The text after the comma contains the command to execute. EvenMore will replace the text %s in the strings with the currently opened file, so it is possible to pass this on to external programs with the click of the mouse. 'FILE' will revert EvenMore to treating subsequent strings as text files for loading in the text viewer again.

History

Any files that are loaded into EvenMore are stored in memory. EvenMore will allow you to open up to 1000 files at one time. You can move between the files you have opened using the keyboard or the interface.

Keyboard

Up arrow, 8 on numeric keypad Scroll up one line
Down arrow, 2 on numeric keypad Scroll down one line
Left arrow, 4 on numeric keypad Scroll left 10 pixels
Right arrow, 6 on numeric keypad Scroll right 10 pixels
7 on numeric keypad Move to the start of the document
1 on numeric keypad Move to the end of the document
Shift + Up arrow, Page up, 9 on numeric keypad Scroll up one page
Shift + Down arrow, Page down, 3 on numeric keypad Scroll down one page
Shift + Left arrow Scroll left one page
Shift + Right arrow Scroll right one page
t Scroll to top of document
b Scroll to bottom of document
n Repeat search forwards
Enter Repeat search forwards
l Repeat search backwards
c Close current file
RAmiga + o Open file
RAmiga + r Reload current file
RAmiga + e Edit current file
RAmiga + p Print current file
RAmiga + i Information on current file
RAmiga + c Copy highlighted text
Tab Activate file string
f Activate search string
Control + Left arrow Move to previous opened document
Control + Right arrow Move to next opened document
Shift + ESC Iconify
ESC Quit

Configuration

You can edit the preferences by clicking Edit preferences in the File menu or by pressing the preferences button on the interface. Across the bottom of the window are 3 buttons marked Save (save settings to current preference file), Use (accept settings without saving them) and Cancel (reject any changes made). To the left is a listview where you can select different preference pages. These are as follows...

Tab Setting Description
File Default Document(s) loaded when EvenMore starts with no arguments.
Editor Contains the path of your favourite text editor to use when editing files. Note that the string you enter here is basically a command line. So you can include options other than just the editor path.

Keyword... Replaced with...
%s  Full filename 
%l   Top line of file in the window

For example...
EDITORSTR=c:ged "%s" LINE=%l

Text Font The font to use to display the file.
Leading Extra space in pixels between the lines in a file.
Tab How many spaces a tab character will use (default is 8).
Right to left Display text in the reverse format in the window for languages that read right to left.
Info bar The format of the file information bar. 
Keyword... replaced with...

%fs   File size
%fl    First line in window
%ll    Last line in window
%tl    Total lines in document
%pg  Page
%cf   Current file viewed
%nf   Number of files open

In addition there may be other preference pages in the list that appear depending on which plugins you have installed.

ARexx

You can use EvenMore's ARexx port to control EvenMore remotely. The port's name is 'EVENMORE.1'. It supports the standard MUI ARexx commands for controlling the main application, plus several additional commands for controlling document functions.

The commands are:-

CLOSE Close current file
r = GETFILENAME Return name of current file
OPEN <name> Open a new file 
VIEWFILE <number> View a file already opened
r = CURRENTFILE Get number of current file displayed
SAVE <name> Save current file to disk
PRINT Print current file
r = GETLINE <number> Return text of line number
r = GETFIRSTLINE Get number of first line in window
r = GETLASTLINE Get number of last line in window
r = GETFIRSTCOL Same as above but for column numbers
r = GETLASTCOL Same as above but for column numbers
r = GETTOTALLINES Get total number of lines in window
r = GETTOTALCOLS Same as above but for columns
SCROLLTOLINE <number> Scroll to a line number in the window
r = SEARCH <string> Search for this string in the current document
r = OCCURANCE <string> Find how many times this string occurs in the document
HIDE/SHOW Toggle iconifying of EvenMore
QUIT Close EvenMore

'r = ' indicates the command returns a value. To use one of these commands from a shell, you could simply type the following:-

RX "ADDRESS 'EVENMORE.1'; OPEN 's:startup-sequence "ram disk:my file"'"

Note the quotes which must be put around some strings when characters like ':' are present in them.

Escape Code Interpreter

EvenMore supports most of the standard Amiga escape code sequences for setting font styles. EvenMore also has an extended set of escape codes for customized styles and commands.

Escape Code Style
ESC[0m Undo all styles
ESC[1m Bold style
ESC[2m Highlight style
ESC[3m Italic style 
ESC[4m Underline style
ESC[7m Inverse style
ESC[21m Undo bold style
ESC[22m Undo highlight style
ESC[23m Undo italic style
ESC[24m Undo underline style
ESC[27m Undo inverse style
ESC[30m Set pen colour to 0
ESC[31m Set pen colour to 1
ESC[32m Set pen colour to 2
ESC[33m Set pen colour to 3
ESC[34m Set pen colour to 4
ESC[35m Set pen colour to 5
ESC[36m Set pen colour to 6
ESC[37m Set pen colour to 7
ESC[40m Set paper colour to 0
ESC[41m Set paper colour to 1
ESC[42m Set paper colour to 2
ESC[43m Set paper colour to 3
ESC[44m Set paper colour to 4
ESC[45m Set paper colour to 5
ESC[46m Set paper colour to 6
ESC[47m Set paper colour to 7
ESC[50;<r>;<g>;<b>m Set pen colour to the RGB colour value specified by the following three integers <r>, <g> and <b>
ESC[51;<r>;<g>;<b>m Set paper colour to the RGB colour value specified by the following three integers <r>, <g> and <b>
ESC[52m Turn on outline text style
ESC[53m Turn off outline text style
ESC[54m Set to main font specified in preferences
ESC[55m Set to default fixed width font
ESC[56m Turn on shadow text style
ESC[57m Turn off shadow text style
ESC[58m Turn on strikethrough text style
ESC[59m Turn off strikethrough text style
ESC[60m Turn on overline text style
ESC[61m Turn off overline text style
ESC[62m Turn on bevel text style
ESC[63m Turn off bevel text style
ESC[64m Right align text following
ESC[65m Left align text following
ESC[66m Centre align text following
ESC[67m Turn on emboss text
ESC[68m Turn off emboss text
ESC[69m Turn on engrave text
ESC[70m Turn off engrave text
Commands
ESC*CBAR Draw a horizontal dividing line across the window
ESC*NODE,<str> Specifies a hidden search string named <str> to be used with the ESC*LINK command 
ESC*LINK,<linkname>,<line>,<file>,<displaytext> A hyperlink command. Takes three optional arguments, followed by the text to display
<linkname> is the name of the NODE string to search for
<line> is the line number to scroll to in the current file in the current file or the file we are about to open
<file> is an external web address or text file to open
<displaytext> is the link text to display
ESC*CEND Specifies the end of a NODE command or LINK command

Plugins

There are quite a few plugins I have created for use with EvenMore, ranging from MSWord file conversion, HTML, RTF, and many more formats. When EvenMore loads, it will automatically check the file it is loading against each of the plugins that are installed in the plugins directory. When a match is found, this plugin will then convert the file data into a readable format. Now full colour text is possible in EvenMore, and many plugins will support this (see RTF, HTML plugins, WordWorth, etc). The function of each of the plugins will vary. One such plugin is the Filetypes plugin. This plugin looks for a file called "filetypes.txt" in the EvenMore directory. This is a file containing wildcard matches for files and an associated program path to launch the selected file with, eg:-

#?.guide=sys:utilities/multiview "%s"

This string would cause EvenMore to pass any file ending in ".guide" over to MultiView to open. The '%s' in the line is replaced with the file selected for loading. Other plugins are designed to unarchive files, wordwrap text, and so on. Some plugins allow you to create your own preferences in the EvenMore preference window. This will allow more complicated plugins to be developed in the future. 

Creating your own plugins

The plugins are fairly simple to code, and anyone with a basic understanding of any compiling language is able to create these. There are a few basic types of plugins you can create. These are identified by EvenMore using the TYPE string in the plugin's object.

When EvenMore opens a file, it is passed through these plugin types in the following order...

FTYP: This plugin type is loaded whenever the user has selected which file they want to load, but before the file is actually opened. The name of the file is passed on to the plugin, and the plugin returns either TRUE or FALSE to EvenMore depending on whether a match was made. TRUE will stop EvenMore from opening the file itself. The plugin will then be responsible for what actually happens after this.

ARCH: ARCH plugins can be used for browsing archived files and directories. EvenMore does not open the file at this stage, but passes only the name of the file onto the plugin. It is then up to the plugin to analyze the file and construct a textual version of its contents if necessary. There is a subfilename string which can be set in order to extract and browse a particular file in the archive.

PACK: EvenMore will then check the file against all the plugins with the PACK identifier. This plugin type should check if a file has been crunched by a particular compression program, such as XPK, PowerPacker etc. Even if a file has been found to be compressed, and is uncompressed by the plugin, it still will be passed onto the following plugin types for further processing.

FILE: This is the main type of plugin. Whenever EvenMore opens a file, this plugin will return a value depending on whether the file matched the plugin's criteria. If so, the conversion function will then be called, which will convert the file format.

DTYP: The DTYP plugins will check the file against any text datatypes the user has installed on the operating system. As these datatypes generally do not allow for ANSI escape code sequences, they are called after the main file conversion plugins. But if there is a particular filetype you want the DTYP plugin to handle instead of the FILE plugin, it is just a case of deleting that particular FILE plugin.

GENE: If the file does not match the criteria of any of the file conversion or datatype plugins, it will be checked against the generic plugins. These are fall-back plugins which will analyze the file for ASCII text and discard anything that is unprintable. Sometimes this works for more obscure document formats that do not have a particular plugin made for them.

FRMT: This plugin type is used after all other plugin types have been checked against the file and if none of the other FILE plugins have been used. The plugins that use this identifier should only change the formatting of a document if necessary, and not affect the file in any other way. An example of a plugin that would use the FRMT identifier would be a word wrapping plugin.

    Other plugins which don't relate to loading files...

PREF: This plugin will create its own page on the preference window of EvenMore. This can be used to store user settings for created plugins. The preference plugin will have its own separate configuration file, which will be loaded or saved whenever the main EvenMore configuration file is loaded or saved.

MPRF: This plugin is used to create the preferences window for EvenMore. The current preference plugin is created in EasyGUI, but could be replaced by an MUI interface or any other GUI. Because the preference window and settings are set through a plugin, it would also be possible for programmers to customize and expand their EvenMore preferences, either for plugins they create or for the main EvenMore program.

For examples of these plugins, please refer to the EvenMore website where their source code can be freely downloaded.

Contact me

You can contact me at the following addresses.

Postal address

Chris Perver
6 Gransha Road
Bangor
County Down
N. Ireland
BT20 4TG
Email: chris@prophecynews.co.uk
URL: www.evenmore.co.uk

I cannot expect to be able to develop this program much further, as I am a Christian and believe Jesus Christ will return very soon. If I do not reply to any mail for months and months, then the development of this program has ceased.

If anyone wishes to help in the distribution files, please email me. You could design a few NewIcons, MagicWB icons, Iconographics icons, plugins, or anything. If you have any suggestions or contributions for the distribution files, again email me :). Suggestions for the program are always welcome.

Credits

Mum & dad - RKRM manuals, Amiga 3000... (you name it, they provided it) 
Johan Björnson - AmigaGuide, program icons... 
Per Reidar Verlo - Norsk Install script, locale translations 
Girish Nath - Program icons

Beta testers: 
Johan Björnson 
Mikael Grahn 
Per Reidar Verlo 
Dominique Neveu 
Tony Hazel 
Andrew Holt 
Roland de Herder 
Raul Silva

Locale translators:
Per Reidar Verlo - Norsk 
Roland de Herder - Nederlands 
Victor Gutiérrez - Español 
Jerome Chesnot - Français
Raul Silva - Português, Glowicon and Newicon sets, program, drawer and document icons
Vitaliy Chepeleff - Russian
Alfred Faust - Deutsch
Jan Zahurancik - Slovak
Pär Boberg - Svensk
ATO-PL - Polski
    Members which working on it: 
    Daniel Sternik
    Kamil Niescioruk
    Mariusz Danilewicz - mandi@interia.pl

Without the following people, writing this program would have been virtually impossible...

Wouter van Oortmerssen - AmigaE and EasyGUI
J R Hulance - AmigaE and EasyGUI help