EvenMore 0.67
A freeware textviewer for the Amiga

EvenMore ©1996-2009 Chris Perver
ReqTools  ©1991-1994 Nico François, ©1995-1998 Magnus Holmgren


Contents

Introduction
System requirements
Installation
Features
Getting started
Programming EvenMore
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, which is an excellent programming language developed by Wouter van Oortmerssen.

System requirements

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

Kickstart 39+ 
Asl.library 37+ 
ReqTools.library 37+ 
XPK libraries 2+ 
Newicon.library 
OpenURL.library 
Titlebar.image class
Icon library 44+

Installation

Installation is simple. EvenMore should run directly from the directory it is in, without any need of setup as long as you have the required libraries already on your system. But if you don't, here is what to do.

1) Copy 'libs/reqtools.library' to 'Libs:', if you haven't already got it, or haven't got a version later than 37. 
2) Copy the entire EvenMore directory anywhere on your harddrive. 
3) Run EvenMore and then configure the preferences to your own taste.

Features

Getting started

Arguments

EvenMore takes two arguments when running from Shell and just one when running from Workbench (Which is drawers or files).

Shell

If you do not specify any filenames, a requester will pop up allowing you to do so. Once you have selected the file you wish to view, a window will open displaying the contents, eg:-

EvenMore S:User-startup PREFS=BigHD:EvenMore.prefs 
EvenMore Docs:EvenMore SYS:Utilities S:User-startup S:Startup-sequence

Workbench

You can either shift-select multiple files or drawers with EvenMore (Holding shift, left click on the EvenMore icon, then double click on a file), or if you simply double click on the EvenMore icon, a requester will allow you to choose a file. EvenMore of course supports drag and drop. Just drag a file or folder on to the EvenMore window, or onto the icon when EvenMore is iconified, and EvenMore will open the file or folder.


Interface

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

Across the top of the window you will see a toolbar, giving access to common functions of EvenMore. Positioning the mouse over each of these will display a help text to show what each button does. The buttons and an explanation of what they do are listed below.

Close file Close currently displayed file
Open file Open a new file. If the file is already opened, the previously opened file will be viewed instead.
Reopen file Reopen displayed file
Save file Save displayed file in a plain text format (if the file was opened through a plugin, EvenMore will not save it in its original format)
Edit file Open the displayed file in a text editor
Print file Print the displayed file/highlighted section
Search window Search the document for words
Find last Repeat last search going backwards
Find next Repeat last search going forwards
Find occurrence Find number of times a word occurs in the displayed file
Preferences Change the EvenMore settings

Depending on the current configuration, you may have EvenMore set to open with a standard Amiga window, or on it's own custom window. Whatever the case may be, you can use the scroll bars available to scroll about the document. Pressing the HELP key will open a list of additional keys you may use to run common functions on EvenMore.

Quickload Menu

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

S:Startup-sequence
S:User-startup
BAR
Commands
SUB
EXE
NewCLI,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. 'BAR' in the file will create a menu break. 'SUB' will place the following 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 Menu

Any files that are loaded into EvenMore are stored in memory. In fact, EvenMore will allow you to open up to 1000 files at one time. Each filename is then added to the History menu. You can move between the files you have opened by selecting documents in this menu.

Configuration

Clicking on the Preferences button on the main toolbar will bring up the settings window. 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
Application Position This will let you specify where on the screen the appitem will be created when EvenMore is iconified
Open/Close This will allow you to select how EvenMore behaves when it is opened or closed. It can open as an icon on Workbench, or when you quit, EvenMore can be iconified instead, etc.
Confirm quit A requester will appear whenever you want to quit, asking you to confirm this is ok.
Multiple copies If EvenMore is already running in the background when you try to open another file with EvenMore, the file will be passed on to the copy already open. This option disables that behaviour.
File XPK pack method If you have XPK archiver installed you can select which method of archiving you wish to use if you want to save a file crunched with XPK.
XPK efficiency Again, same as above except this option specifies how efficient the crunch routine should be.
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

GUI Objects Clicking on an object in the listview (eg, Gadgets, Text, Info bar), will select the settings for that object in EvenMore's window.
R, G, B Adjusting these sliders will allow you to set the main colour of the currently selected object.
Style Using the listview, you can select what each GUI element that makes up the EvenMore interface will look like. 
Recess/Light Selecting these will show the object currently selected in a recessed state, or in a lightened state.
Offsets These are the gaps between the edge of the window and the rest of the interface, and the gap around the toolbar buttons in pixels.
Dither You can select a type of dither to use for either the window pen or the toolbar pen.
Select icon set This is the path where the images for the toolbar are located.
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).
Page overlap How many lines will be 'repeated' when you scroll by a page length.
Wheel-mouse Scroll How many lines a single scroll of a wheel mouse is equal to.
Smooth scroll Scrolling will be graduated instead of immediate.
Window Mode Screen mode to use for EvenMore's own screen.
Public screen The name of the screen EvenMore should use.
ASL filerequester Use an ASL filerequester instead of ReqTools (default).
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

Scrollers You can set which proportional gadgets should be available in the window, or have a borderless window for EvenMore.
3d window title If enabled the title will be drawn in 3D when the window is borderless.

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

Programming EvenMore

Arexx

You can use EvenMore's ARexx port to control EvenMore remotely. The port's name is 'EvenMore', followed by a number. This number will increment if a port of a similar name is found, for instance if you load two copies of EvenMore, the first copy will have a port name of 'EVENMORE.1', and the second one will have a port name of 'EVENMORE.2'. You can find which port EvenMore is using by looking in the Information/About requester.

The commands are:-

CLOSE Close current file
CLOSEALL Close all files opened
r = GETFILENAME Return name of current file
r = GETFILESIZE Return size 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
SCROLLTOCOL <number> Same as above but for columns
SCROLLTOPAGE <number> Same as above but for pages
SCROLLTOPERCENT <percent> Same as above but for a percentage of the document
BOOKMARKSTORE <number 0-4> Store current position in document
BOOKMARKRECALL <number 0-4> Recall stored position in document
r = GETFONT Get the name and size of font used
SETFONT <name/size> Set the font 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
GOTOSCREEN <name> Move window to another screen
ICONIFY Toggle iconifying of EvenMore
QUIT Close EvenMore
GETWINPTR Return a pointer to the EvenMore window if open

'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.

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 by EvenMore with the file selected for loading. Other plugins are designed to unarchive files, word wrap text, and so on. Some plugins can even 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 library-compiling language is able to create these. There are a few basic types of plugins you can create. These are identified by EvenMore from the Em_pluginid() function.

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).

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.

FILE: This is the main type of plugin. Whenever EvenMore opens a file, the Em_begin() function in the plugin will be called, which will return TRUE or FALSE depending on whether the file matched the plugin's criteria. If so, the function Em_main() will be called, which will convert the file format into the desired format via the plugin code, allocating extra memory if required.

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@evenmore.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. Tell me what YOU would like to see in a text viewer.

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

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

Nico François, Magnus Holmgren  - ReqTools 
Dietmar Eilert - GoldEd 
Wouter van Oortmerssen - AmigaE and EasyGUI 
J R Hulance - AmigaE and EasyGUI help

Ilan Sharoni - Word wrapping help 
Marco Talamelli - ReqTools help 
Eric Sauvageau - Screenmode help 
Sven Steiniger - patternStringF, runback modules 
Will Harwood - gadgetinfo module 
A.F.C. - rexxer
Massimo Tantignone - titlebarimage.class