home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of A1200
/
World_Of_A1200.iso
/
programs
/
compress
/
misc
/
xpk
/
workbench
/
most
/
most.dok
< prev
next >
Wrap
Text File
|
1995-02-27
|
22KB
|
547 lines
Dokumentation zu Most V1.31
Datum: 11. November 1992
Autor: Uwe Röhm
Most ist ein Textanzeiger ähnlich Less, More oder MuchMore.
Most bietet
- beliebig viele Textfenster
- verteiltes Prozeßsystem
- Suchfunktion
- frei konfigurierbar
- Kopiermöglichkeit ins ClipBoard
- Anspringen von Include-Dateien
- Fontsensitive Oberfläche
- PubScreen, eigenen Screen oder Workbench
- AppWindow, AppIcon
- ARexx Port
- Sprachanpassung per locale.library
- XPK Support
- Verwendung mit Pipes
- benötig Kickstart 2.0!!!
Inhaltsverzeichnis
====================
1. Copyright
2. Prinzip
3. Konfiguration
4. Tastatur-Belegung
5. Menus
6. Das Textfenster
7. Der Suchrequester
8. Das AppIcon
9. XPK Support
10. Pipe Support
11. Der ARexx Port
12. Anregungen, Kritiken, Ideen
13. aktuelle Versionen
14. Danksagungen
1. Copyright
===========
Am Anfang standen Schweiss und Mühe. Also sprach der Programmierer:
Es werde Giftware! Und so war es.
Most 1.31 ist Giftware und darf frei kopiert und benutzt werden. Ich
würde mich aber über Geschenke jeglicher Art von den Benutzern, die Most
regelmäßig verwenden, SEHR freuen.
Davon abgesehen behalte ich mir mein Copyright aber vor, also:
Copyright (c) 1992 Uwe Röhm
Ich verbiete ausdrücklich, daß Most kommerziellen Produkten ohne meine
Zustimmung beigelegt wird. Insbesondere darf Most NICHT für militärische
Zwecke im weitesten Sinne verwendet werden. Im weitesten Sinne heißt, daß
ich auch den Verwaltungen und sonstigen Büros solcher Firmen die Verwendung
untersage, die militärische Produkte auch nur planen oder unterstützen
(Hersteller sowieso).
Most darf in PD Sammlungen aufgenommen werden, solange jene nicht mehr
als umgerechnet 10 DM kosten. Das ist das absolute Maximum! Ich verlange
aber, daß Most immer vollständig, also insbesondere immer zusammen mit
der Dokumentation verbreitet wird. Das gilt auch für jeden normalen
Benutzer! Leute, denkt an die Doku - ohne die ist ein Programm nur die
Hälfte wert!
2. Prinzip
=========
Ich habe Most geschrieben, da ich eine Textanzeiger haben wollte, der
auf der Workbench aufgeht und sowohl über die Tastatur als auch die Maus
vollständig zu bedienen ist. Außerdem sollte er möglichst flexibel sein
und insbesondere auch mit wenig Speicher auskommen.
Deshalb arbeitet Most IMMER mit einem Fenster, in dem der Text angezeigt
wird. Wer will, kann jenes aber auch auf anderen Screens öffnen lassen.
Most kann sogar einen eigenen Screen öffnen. Wieviele Fenster Most aufhat,
wo jene liegen (welcher PubScreen) und welche Texte darin zu sehen sind
hängt nur vom Speicher und dem Benutzer ab :-)
Jeder Text hat nicht nur sein eigenes Fenster, sondern dahinter steht auch
ein eigener Prozeß. Damit sind die Textfenster voneinander völlig autonom.
Insbesondere können ARexx Befehle an verschiedenen Texte gleichzeitig
gesendet werden und es ist immer möglich, neue Fenster zu öffnen, auch wenn
die bereits geöffneten gerade "beschäftigt" sind. Dazu gibt es einen Most
Hauptprozess, der die Texte verwaltet und einige globale ARexx Befehle
behandelt.
Um den Speicherverbrauch unter Kontrolle zu haben, arbeitet Most immer
mit einem Puffer. Kleinere Texte, die vollständig in den Puffer passen,
werden in einem Aufwasch eingelesen. Als Nebeneffekt wird die Textdatei
nun nicht mehr benötigt und kann z.B. sofort weiter verändert werden.
Zu große Texte werden pufferweise gelesen. Das spart Speicherplatz (man
wähle kleine Puffergrößen), bringt aber weniger Komfort (sprich Zeiteinbuße)
beim Scrollen und Suchen. Außerdem blockiert Most nun den Text, so daß er
nicht verändert werden kann, solange Most in anzeigt.
Dieses "Pageing" großer Dateien ist sehr nützlich, wenn man wenig Speicher
oder übergroße Dateien hat. Wer es nicht haben will braucht nur die Puffer-
größe sehr sehr groß machen (sagen wir mal 4 MB), womit wohl alle normalen
Textdateien auf einen Schwung einlesbar sind. Keine Angst, Most verwendet dann
natürlich nur soviel Speicher, wie die Datei groß ist :-))
Eine Ausnahme des Pagings sind XPK-gepackte Dateien, die der Einfachheit
halber immer vollständig eingelesen werden. Für sie gibt es also KEIN
Paging!
Natürlich kann Most Texte mit allen ANSI-Steuersequenzen anzeigen. Dafür
habe ich das Rad nicht noch einmal erfunden, sondern auf Bewährtes zurückge-
griffen: Das console.device. Als Nebeneffekt kann man Textstellen markieren
und in das Clipboard kopieren - wenn die Option FASTSCROLL nicht angegeben
wurde! Leider hat dies auch drei Nachteile:
- Man kann nur innerhalb der sichtbaren Seite markieren
- Das Scrollen ist auf normalen Amigas ohne 680x0 (x >=2) relativ langsam ;-)
- Binäre Dateien sollte man NICHT einladen. Das gibt Chaos....
3. Konfiguration
===============
Most konfiguriert sich in der Reihenfolge
1.) Interne Defaultwerte
2.) Environmentvariablen "Most/Most" und "Most/FileReq"
(Bei Shellstart werden lokale Variable zuerst eingelesen)
3.) Bei Shell-Start: Shellparameter auswerten
Bei WB-Start : Icon-Tooltypes auswerten
Folgende Optionen sind jeweils in 2.) und 3.) erlaubt:
FILES Eine Liste von anzuzeigenden Dateien (nur bei Shellstart)
Es können die bekannten AmigaDOS Wildcards verwendet werden.
PUBSCREEN Der Name eines PubScreens, auf dem Most sein Fenster öffnet
PORTNAME Name des globale ARexx Ports von Most, Default: MostPort
STARTUP Arexx Skript das beim Starten von Most ausgeführt wird
(Achtung: Dieses Skript wird auch beim Öffnen jedes weiteren
Textfensters ausgeführt!!)
WX=WINDOWX Die X-Koordinate der Most-Fenster
WY=WINDOWY Die Y-Koordinate der Most-Fenster. -1 für Fenster zentriert.
WW=WINDOWW Die Breite der Fenster (Default: 600)
WH=WINDOWH Die Fensterhöhe (Default: 400)
SM=SCREENMODE Ein Name eines Schirmmodus, der dem Betriebssystem bekannt ist
(Most verwendet keine fest einprogrammierte Namensliste).
Eine Liste dieser Namen sieht man z.B. im Fenster des
Prefs/ScreenMode Programms. Wird ein gültiger Modus angegeben,
so öffnet Most einen eigenen Pubscreen (Name: Most), auf dem
seine Fenster liegen.
ACHTUNG: Je nach Version der Monitor-Files ändern sich even-
tuell die Namen der Schirmmodi.
FONT Der Name des gewünschten Zeichensatzes für den Text inklusive
der Endung ".font". Achtung mit Proportionalfonts!
FONTHEIGHT Eine besondere Zeichensatzhöhe. Wird sie nicht explizit ange-
geben, so wird die Höhe des System-Defaultfonts kopiert.
APPICON Ein Schalter, der das AppIcon von Most erscheinen läst (mehr
dazu siehe unten). Wird diese Option ohne weitere Dateinamen
angegeben, so startet Most im Hintergrund nur mit dem AppIcon.
ICONX Die X-Koordinate des AppIcons auf der Workbench
ICONY Dasselbe für die Y-Koordinate.
FASTSCROLL Ein Schalter, ob die Textausgabe ohne die Möglichkeit des Aus-
schneidens und damit schneller erfolgen soll.
WORDWRAP Schalter, ob lange Zeilen umgebrochen werden sollen.Per Default
werden zu lange Zeilen am Fensterende abgeschnitten.
Achtung: Wird WordWrap angeschaltet, so scrollt Most bei zu
langen Zeilen unkontrolliert...
BUFLEN Hiermit läßt sich die maximale Länge des Lesepuffers angeben.
Für kleiner Dateien wird nur ein Puffer von der Länge der Datei
allokiert. Dadurch kann mit sehr großen Puffergrößen er-
zwungen werden, alle Dateien vollständig einzuladen.
Defaultwert: 50 000 Bytes
QUOTES Hiermit wird eine Folge von Trennzeichen definiert. Der Sinn
dahinter ist die Möglichkeit, mit Doppelklick auf ein Wort,
das ZWISCHEN den hiermit angegebenen Trennern steht, einen Text
mit dem entsprechenden Namen zu laden. Das ist besonders für
Programmierer gedacht, die somit leicht die Inklude-Dateien in
ihren Sourcen anspringen können.
Default: "'<>(){}[]
DIRS Zum Angeben von mehreren Pfaden, in denen der Reihe nach die
einzuladenden Dateien (siehe QUOTES) gesucht werden. Die
einzelnen Pfade werden durch das Zeichen | trennt.
Beispiel: DIRS "Include:|TexInputs:|LC:Include/"
ENDS Endungen, die automatisch an Inklude-Dateien angehängt werden,
(der Reihe nach).
Beispiel: ENDS ".c.h.tex"
4. Tastatur-Belegung
===================
Grundsätzlich werden alle von More her bekannten Tastenkommandos unterstützt.
* Scrollen
CURSOR DOWN
ZIFFERBLOCK 2
RETURN
ENTER
eine Zeile tiefer
CURSOR UP
ZIFFERBLOCK 8
DELETE
eine Zeile hoch
SHIFT CURSOR DOWN
SPACE
PAGE DOWN
eine Seite weiterscrollen
SHIFT CURSOR UP
BACKSPACE
"b"
PAGE UP
Eine Seite zurück springen
HOME
"<"
Zum Textanfang springen
END
">"
Zum Textende springen
* Suchen
"n"
Bisherigen Suchbegriff weiter suchen (vorwärts)
"."
Suchen ohne auf Groß/Kleinschrift zu achten
"/"
Suchen mit Unterscheidung nach Groß/Kleinschrift
"f"
"s"
Suchfenster öffnen, bzw. bei geöffnetem Fenster den Begriff suchen
* neuen Text laden
"l"
* Information
HELP
"h"
* Editor starten
"e"
* Text schließen
ESCAPE
"q"
5. Menus
=======
Projekt
Neu...
öffnet ein neues Fenster und fragt per Filerequester nach einer neuen
Datei. Wenn der Filerequester abgebrochen wird, so wird das Fenster
wieder geschloßen.
öffnen...
Per Filerequester den Namen einer neuen Textdatei auswählen und in
das aktuelle Fenster laden. Die Ausmaße, Koordinaten und das Pattern
des Filerequesters können mit "Settings sichern" (s.u.) abgespeichert
werden.
edieren...
Startet den Editor mit dem aktuellen Text per RUN. Der Name des Editors
muß in der Environment Variable EDITOR stehen.
Info...
Öffnet einen Informationsrequester, in dem neben dem üblichen CopyRight
einige wichtige Informationen zum aktuellen Text stehen:
Name, Dateilänge, Zeilenzahl, sichtbare Zeilennummern, XPK-Packername
und entweder die Meldung, daß der Text komplett eingelesen wurde, oder
die Größe des benutzten Puffers.
Ende
Beendet den aktuellen Text und - falls es der letzte Text ist - auch
ganz Most.
Bewegen
verschiedene Menupunkte zum zeilen-/seitenweisen Springen im Text, bzw. um
gezielt die letzte/erste Seite anzuspringen.
Suchen
suchen...
Öffnet den Suchrequester und aktiviert dessen Stringgadget. Bei bereits
offenem Requester ist dieser Menupunkt inaktiviert. Näheres zum Such-
requester weiter unten.
vorwärts
rückwärts
Suchen des eingegebenen Suchtextes in die jeweilige Richtung.
Beide Punkte sind nur bei offenem Suchrequester verfügbar.
Extras
Bild neu aufbauen
Initialisiert die Console neu und baut die aktuelle Seite noch einmal
vollständig auf.
Skript starten...
Öffnet einen Filerequester, mit dem ein ARexx Makro ausgewählt werden
kann, das anschließend ausgeführt wird.
Settings
sichern
global
Speichern der momentanen Einstellungen in Env: und EnvArc: in ein
Unterverzeichnis Most (das automatisch erzeugt wird). Es werden
alle von der Kommandozeile bekannten Optionen gespeichert.
Zusätzlich werden in einer extra Variablen die Maße, die Position
und das Pattern des Filerequesters abgespeichert.
lokal
Speichern der Einstellungen in zwei lokale Shell Variablen namens
Most/Most und Most/FileReq (sorry wegen den Namen...). Diese
Option funktioniert natürlich nur, wenn Most von einer Shell aus
gestartet worden ist!
6. Das Textfenster
=================
* Gadgets
Neben den bekannten Systemgadgets zum Schließen, Zoomen, Verkleinern usw.
gibt es drei weitere Gadgets am rechten Fensterrand, mit denen im Text
gescrollt werden kann.
Der Scrollbalken kann sowohl frei bewegt, als auch durch hineinklicken
seitenweise genutzt werden. Die Bodyposition gibt die Position im Text,
seine Größe das Verhältnis der sichtbaren Seite zum ganzen Text an.
Die beiden Pfeilgadgets darunter dienen zum zeilenweisen Auf- und
Abscrollen.
* Maus
Wir mit der Maus in das Fenster doppelt geklickt, so wird an der ent-
sprechenden Stelle nach einem Dateinamen zwischen den konfigurierten
Trennzeichen gesucht. Ist dort eine solche Textstelle vorhanden
(z.B. in C-Sourcen ein "#include <exec/exec.h>" mit dem Dateinamen
exec/exec.h zwischen "<" und ">"), dann wird jener in allen konfigurierten
Verzeichnissen gesucht und sofern gefunden in einem eigenen Fenster
angezeigt.
Ist Most nicht im FASTSCROLL-Modus, so kann aus den Fenstern durch
das einfache Anklicken des Textes und dem anschließenden Bewegen der Maus
(OHNE den linken Knopf loszulassen!) ein Textbereich im Fenster
markiert werden. Der markierte Textbereich kann dann mit AMIGA-C
kopiert werden.
* AppWindow
Jedes Most-Textfenster ist ein sogenanntes AppWindow, in das jederzeit eines
oder auch mehrere Icons gezogen werden können. Die erste Datei wird dann in
das aktuelle Fenster eingeladen und für alle weiteren Dateien werden eigene
Fenster geöffnet.
7. Der Suchrequester
===================
Im Suchrequester kann ein Suchstring eingegeben, sowie die drei Suchoptionen
eingestellt werden. Dies geht sowohl mit der Maus als auch per Tastatur. Die
entsprechenden Buchstabenabkürzungen sind in den Gadgettexten unterstrichen.
Außerdem hat man im Suchrequester die gleiche Funktionalität wie im zuge-
hörigen Textfenster:
- Es sind dieselben Menus und deren Shortcuts vorhanden. Lediglich der
Menupunkt "Suchen" ist disabled und dafür die Punkte vorwärts/rückwärts
suchen zugelassen.
- Neben den speziellen Tastenbefehlen für die Gadgets des Requesters werden
ALLE Tasten des Textfensters weiterhin unterstützt. Insbesondere kann man
also bei aktiviertem Suchrequester mit den Cursortasten im Textfenster
scrollen!!! (Achtung: Das geht nur bei inaktivem Stringgadget)
8. Das AppIcon
=============
Das AppIcon erlaubt zwei Funktionen:
- Doppelklick
Ein Dateirequester erscheint, in dem eine Datei ausgewählt werden kann.
Ist nur noch das AppIcon von Most aktiv (d.h. keine Fenster offen) und
wird nun der Requester mit CANCEL verlassen, so wird Most beendet (vorher
kommt natürlich noch eine Sicherheitsabfrage)!
- Icons
Werden Icondateien auf das Most AppIcon gezogen, so werden jene angezeigt.
Bemerkungen:
Most verwendet immer das eigene Programmicon als AppIcon! Ein eingebautes
Bild bzw. ein explizit angegebenes werden nicht angeboten/unterstützt.
Die Koordinaten des AppIcons werden bei "Save Settings" mit abgespeichert.
Mit den Optionen ICONX und ICONY können explizite AppIconkoordinaten
angegeben werden.
9. XPK Support
=============
Die Schnittstelle zum XPK Standard ist absolut transparent, um nicht zu
sagen, unsichtbar gehalten. Ist eine Datei mit einem XPK Packer gepackt
und ist das XPK Packet korrekt installiert, so entpackt Most die Datei
automatisch und zeigt sie dann an. Im Informations-Requester erscheint
nun hinter "XPK-Packer:" nicht mehr wie üblich "---", sondern der Name
des verwendeten Packers.
Einzige Besonderheit:
Die Datei wird vollständig eingeladen, ein "Paging" findet nicht statt!
Most kann ohne Probleme auch ohne XPK verwendet werden. Die xpkmaster.library
ist also nicht nötig, um mit Most Texte anzuzeigen. Ohne sie werden XPK
gepackte Texte dann natürlich auch nicht entpackt...
10. Pipe Support
==============
Neuerdings unterstützt Most auch Pipes. Diese Option ist aber noch so frisch
und neu, daß sie noch nicht ausgiebig getestet ist. Bitte alle Bugs mir melden.
Wurde Most z.B. mit "type xyz | Most" gestartet, dann öffnet es ein Textfenster
Namens "<Pipe Inhalt>" und zeigt den Inhalt der Pipe an. Ist jener kleiner als
die konfigurierte Puffergröße, dann kann ganz normal darin gescrollt werden
(edieren funktioniert aber nicht!). Ist der Puffer zu klein und scrollt man
über den Puffer hinaus, so wird zwar weitergelesen, ein zurück zum Dateinanfang
gibt es jetzt aber nicht mehr. Wie üblich kann man Most natürlich einen
größeren Puffer mitgeben...
Kleine Einschränkungen: Der Puffer wird IMMER in voller Größe angelegt (wie
soll man einer Pipe entlocken, wieviel sie enthält/enthalten wird?). Und XPK
aus einer Pipe ist (noch) nicht implementiert.
11. Der ARexx Port
================
Neben dem globalen ARexx-Port "MostPort" (bzw. der durch die Option PORTNAME
angegebene Name) des Hauptprozesses von Most besitzt jedes Textfenster seinen
eigenen ARexx Port. Um einen spezielles Textfenster anzusprechen, sendet man
an den globalen ARExx Port zuerst den Befehl "GetFileList", der eine Liste aller
geöffneten Texte und deren Portnamen zurückgibt. Anhand jener Liste kann dann
das gewünschte Fenster direkt addressiert werden.
Während man an die Ports der einzelnen Fenster ALLE Arexx-Befehle senden kann,
"versteht" der Hauptport nur die ersten 6 Befehle "GetFileList", "GetScreenName",
"Quit", "OpenNew", "Set" und "Request". Werden andere Befehle dorthin gesendet,
so meldet dies Most mit einem Fehlercode von 20.
Folgende ARexx Befehle werden unterstützt:
GetFileList In RESULT wird eine Liste aller vorhandenen Textfenster und ihrer
Portnamen zurückgegeben. RESULT hat den Aufbau:
{<Fenstername> <Portname> }^+
(d.h. mindestens einmal aber beliebig viele)
GetScreenName Liefert den Namen des PublicScreens des aktuellen Textes in RESULT
Quit Beendet Most und schließt ALLE Fenster
Auch ein ev. AppIcon wird gelöscht.
Request Eine einfache Möglichkeit einer Benutzerabfrage per Systemrequester:
Als Argumente müßen mit angegeben werden
REQUEST <Titel> <Gadgets> <Text>
Set Setzen von Most-Parametern wie
CASE casesensitives Suchen AN/AUS
WORD wortweises Suchen AN/AUS
BACK Rückwärtssuchen AN/AUS
NOCH NICHT IMPLEMENTIERT!!!
OpenNew Wie Open, nur wird der Text in ein eigene Fenster geladen, auf das sich
fortan alle Rexx-Befehle beziehen. Es braucht vorher kein aktuelles Fenster
gewählt worden sein.
Open In das aktuelle Fenster eine neue Datei einladen. Die Angabe eines Datei-
namens ist optional. Wird er weggelassen, so wird ein FileRequester geöffnet.
Close Schließt das aktuelle Fenster.
ToFront Holt das aktuelle Fenster nach vorne
GetWindowDims Liefert die Ausmaße des akt. Fensters in RESULT
Edit Den Text im akt. Fenster editieren (Editor starten).
Info Öffnet das Informationsfenster zum aktuellen Text.
FirstPage Die erste Seite des Textes anzeigen
LastPage Die letzte Seite des Textes anzeigen
NextPage Nächste Seite des akt. Textes
PrevPage wie oben, nur vorherige Seite
NextLine Eine Zeile weiterscrollen
PrevLine Eine Zeile zurückscrollen
GotoLine Als Argument eine Zeile angeben, die als Seitenbeginn genommen wird.
Search Ohne Argument: Suchrequester öffnen, bzw. bereits eingegebenen
Text weitersuchen
Mit Suchbegriff: Als neuen Suchbegriff einsetzen und suchen.
12. Anregungen, Kritiken, Ideen
=============================
Most ist noch längst nicht fertig. Es gibt eine Menge Ecken und Kanten,
die ich noch abschleifen will. So ist der ARexx Port noch unvollständig
und die Einstellungen will ich noch teilweise mit Requestern versehen
(z.B. für den Font). Außerdem weicht Most (also ich) in einigen Stellen
von den Richtlinien des Style Guides ab:
- Keine Paste Option obwohl Copy möglich ist
- Menustruktur
- Speicherung der Einstellungen als pseudo Kommandozeile
Ich bin sehr an Anregungen und auch jeglicher Kritik und Bugreports
interessiert! Schreibt mir, ruft mich an oder kommt vorbei, nur teilt
es mit mit :-)
Meine Adresse:
Uwe Röhm
Wörthstr. 18
W-8390 Passau
EMail:
roehm@kirk.fmi.uni-passau.de
Fido:
2:246/200.5
13. aktuelle Versionen
====================
Die aktuellste Most Version ist immer per ftp auf forwiss.uni-passau.de
(132.231.1.10) in pub/amiga/local/UweR zu beziehen. Tip: In dem Verzeichnis
pub/amiga/local liegen noch ganz andere interessante Programme :-)
14. Danksagungen
==============
Besonderen Dank an meine Betatester
David, Uli, Karl, Holger, Stefan und Stefan ;-)
Außerdem ein Dankeschön an Urban für seine Mühe und XPK.