home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The CDPD Public Domain Collection for CDTV 4
/
CDPD_IV.bin
/
fish
/
891-910
/
ff891
/
askenv
/
askenv.dok
< prev
next >
Wrap
Text File
|
1994-05-04
|
13KB
|
428 lines
AskEnv 2.5 23-Mar-93
==========
Wozu dient AskEnv?
------------------
Der einzige Befehl von AmigaDos zur Eingabe von Daten ist der ASK-Befehl.
Seit der Veröffentlichung von OS2 ist ARexx ein Bestandteil des
Betriebssystems. Dieser Sprache fehlen aber ebenfalls Befehle für die
Kommunikation mit dem Benutzer, die über Zeile schreiben und lesen
hinausgehen. Kein Wunder, denn die Sprache stammt von IBM-Grossrechnern
mit Zeichenterminals.
Mit AskEnv werden diese Eingabemöglichkeiten erweitert. AskEnv ermöglicht
ARexx-Programmen, Shell-Scripts, Superbase DML-Programmen und allen anderen
Sprachen, die ein externes Programm aufrufen und eine Datei einlesen können,
einen einfachen Aufruf von System-, File- und frei definierbaren Requestern.
AskEnv braucht mindestens OS 2.04.
Aufruf:
-------
Der Programmstart ist nur aus dem CLI sinnvoll (oder ARexx, Superbase...):
AskEnv [EOL/S,F=FREQ/S,DEF/K,SBMODE/S,S=SREQ/K,BODY/K,NEG/K,POS/K,GADFILE/K]
AskEnv ist pure, kann also resident geladen werden.
Funktionen
==========
Es gibt zwei Klassen von Funktionen in Askenv: einfache, bei denen sich
der Aufwand für die Eingabe auf die Argumente in der Kommandozeile
beschränkt. Komplexe Funktionen hat es nur eine: mit einem Konfigurations-
File kann ein frei definierbarer Requester gebastelt werden.
einfache Funktionen
-------------------
Zeile lesen
-----------
AskEnv [>datei] [EOL]
Im Shell-Fenster wird eine Zeile von der Tastatur gelesen bis zum
Zeilenende, der Text wird in die Standardausgabe geschrieben. Mit EOL kann
bei allen einfachen Funktionen ein Zeilenende an den Text gehängt werden.
(Mit dieser Funktion fing alles einmal an!)
File-Requester
--------------
AskEnv [>datei] FREQ Titel [DEF pfad] [DIR] [SBMODE] [EOL]
ruft einen File-Requester mit "Titel" in der Titelzeile auf. Mit DEF kann
ein Pfad zu einer Datei oder Verzeichnis vorgegeben werden. Mit DIR wird der
Requester auf eine Verzeichnisauswahl beschränkt; Dateien werden dann nicht
angezeigt.
WARNUNG: Wenn der File Requester von SBPro aus gestartet wird, muss die
Option SBMODE verwendet werden, sonst hängt der Requester. Dies ist ein Bug
in SBPro: es mag es gar nicht, wenn man auf sein Fenster zugreift um den
Screen zu bestimmen, auf dem es läuft.
System-Requester
----------------
AskEnv SREQ Zeile1 [BODY Zeile2] POS posiKnopf [NEG negaKnopf]
Wird der negative Text gewählt, wird ein Fehlercode WARN zurückgegeben.
komplexe Requesterfunktionen
----------------------------
Mit "AskEnv gadfile <file>" kann eine Beschreibung eines Requesters gelesen
werden, ein unstrukturiertes ASCII-File mit Schlüsselwörtern. Die Elemente
können beliebig auf Zeilen verteilt werden.
Strings müssen auf einer Zeile liegen und mit " " einrahmt werden, wenn sie
Leerzeichen enthalten.
Mit ";" werden Kommentare eingeleitet. Schlüsselwörter müssen gross
geschrieben werden.
IMMEDIATE vs SELECT-Modus
-------------------------
Askenv wählt sich einen von 2 Modi, abhängig von den definierten Gadgets.
IMMEDIATE Requester verschwindet nach der ersten Berührung;
die ID des Gadgets wird in die Variable VAR, die im
Header genannt wird, geschrieben. Ist kein Name unter
VAR angegeben, wird die Variable "AskEnv_Button"
verwendet.
Die ID des Buttons ist die Nummer in der Reihenfolge
der Definitionen, beginnend mit 1.
SELECT bleibt, bis ein END-, CANCEL- oder das Close-Gadget
gewählt wird. Dann werden die Zustände aller Gadgets
rausgeschrieben.
In beiden Fällen bewirkt das Close-Gadget einen WARN-Error und
nichts wird geschrieben. Variablenwerte sind also nicht definiert!
Meistens bleiben sie auf den vorherigen Werten, die können aber durch
andere Programme verändert worden sein!
Der Modus wird automatisch ermittelt:
Nur Buttons werden als "IMMEDIATE" behandelt. Wenn Nicht-Buttons
dazukommen, wird auf "SELECT" geschaltet. Zu den Nicht-Buttons
gehören auch Buttons mit File-Requester- oder Programmstart-
Funktionen.
Elemente mit Read-only werden dabei nicht beachtet.
Konfigurations-File
-------------------
Das File besteht aus einem Header und beliebig vielen Gadget-Definitionen.
Im Header stehen die globalen Eigenschaften:
WINDOW : dieses Schlüsselwort muss am Anfang des Files stehen.
SIZE x y w h : durch Spaces getrennt; bin nicht verantwortlich für
sinnvolle Koordinaten.
Als Alternative:
CENTER w h : Zentriert den Requester auf dem Bildschirm.
NAME name : Fenstername, optional
SCREEN screen : screen ist der Name eines Public-Screens, auf dem sich der
Requester öffnen soll. Ist kein Public-Screen dieses
Namens vorhanden, wird der Default Public Screen (meist die
Workbench) verwendet.
VAR name : Im Immediate-Modus, dh. wenn nur Buttons vorhanden sind,
wird die Nummer des Buttons rausgeschrieben.
Im Select-Modus wird ebenfalls die Nummer des gewählten
Buttons hier reingeschrieben, dies aber nur, wenn das
Schlüsselwort GLOBAL dabei steht! GLOBAL kann auch ohne
Variablenname verwendet werden, es darf dann nur nicht vor
dem abschliessenden "#" stehen.
Wurde kein Name unter VAR angegeben, so wird in die
Variable "AskEnv_Button" geschrieben.
Achtung: ab Version 2.4 kann mit VAR keine Datei mit allen Variablen mehr
erzeugt werden. Das war ein Ueberbleibsel aus frühen Tagen, für das wohl
kaum mehr Bedarf besteht. Falls erwünscht, kann ich es ja wieder hinein-
nehmen.
Nach dem Header folgen die Gadget-Definitionen:
Ein Gadget beginnt mit einem Schlüsselwort und endet mit " #" (wie die
MountList).
Zur Zeit werden folgende Gadget-Typen unterstützt:
BUTTON in verschiedenen Funktionen
CHECKBOX
INTEGER nur zur Vollständigkeit
NUMBER readOnly
CYCLE
STRING
MX
TEXT readOnly
HIBOX hervorstehender Rahmen
LOBOX vertiefter Rahmen
Ausserdem können ein Button- und ein String-Gadget zu einem File-Requester-
Aufruf kombiniert werden und über den Buttontyp Programme aufgerufen
werden.
Funktionen für alle Gadgets:
----------------------------
POSITION x y w h: obligatorisch für alle. Die minimale Höhe der Gadgets
richtet sich nach der Höhe des Screenfonts.
LABEL text : Gadgettext, voreingestellt IM Gadget, kann mit...
PLACETEXT ort : noch gesetzt werden: ABOVE, BELOW, LEFT, RIGHT
END : Dieses Gadgets bricht den Requester ab. Kann bei
mehreren Gadgets eines Fensters verwendet werden.
CANCEL : Abbruch des Requesters. Nichts wird geschrieben.
GLOBAL var
LOCAL var : in diese entweder lokale oder globale (ENV:) Variable wird
der Wert dieses Gadgets geschrieben. Was genau geschrieben
wird, ist vom Typ abhängig.
ENTRY : Falls verwendet, MUSS es am Schluss einer Definition
stehen. Danach folgen 1 bis n Einträge, abhängig vom Typ.
Spezielles zu den Typen:
------------------------
BUTTON
------
Zurückgegeben wird im IMMEDIATE-Modus die Nummer des Buttons in der im
Header definierten globalen Variable. Nur Buttons und in Reihenfolge der
Definition abzählen!!
Im SELECT-Modus wird die Nummer in die Variable "AskEnv_Button" geschrieben,
aber nur von Buttons, die das Schlüsselwort GLOBAL zusammen mit einer Dummy-
Variablen enthalten.
Spezialfunktionen für BUTTONs:
FREQ : Als nächstes Gadget muss eine String-Gadget-Definition
folgen, in das ein voreingestellter Pfad mit ENTRY
geschrieben werden kann. Die Wahl des Buttons aktiviert
dann einen File-Requester, dessen Auswahl zurück ins
String-Gadget geschrieben wird.
DIR : Zusatzoption für Filerequester: der Requester wird auf eine
Verzeichnisauswahl beschränkt; Dateien werden dann nicht
angezeigt. Kann bei gewissen ASL-Ersatzrequestern versagen
(z.B. MFR).
SYNCRUN : Die Zeichenfolge, die diesem Schlüsselwort folgt, wird
als Programm synchron gestartet. AskEnv schaltet sein
Fenster solange ab, bis das externe Programm beendet
worden ist. Enthält das Kommando Argumente oder Optionen,
die mit Leerzeichen abgetrennt werden, muss der Befehl
in Anführungszeichen stehen!
Der Returncode des aufgerufenen Programms kann bei synchron
gestarteten Programmen weiterverwendet werden:
WARN limit : mit einer Zahl limit kann festgelegt werden, bis zu welchen
Fehlerlevel ohne eine Benachrichtigung des Benutzers fort-
gefahren werden kann. Ist der Returncode grösser als limit,
öffnet sich ein Requester mit der Option zum Programm-
abbruch. AskEnv gibt darauf einen Returncode von 10 weiter.
ASYNCRUN : Wie bei SYNCRUN, nur dass der AskEnv-Requester nach dem
Absetzen des Kommandos wieder zur Eingabe bereit ist. Das
asynchron gestartete Programm ist nun unabhängig von
AskEnv.
FILE filedef : Optionales Ausgabefile für das asynchron gestartete
Program.
Z.B. NIL:, RAM:Test oder ein CON-Fenster.
Wird ein externes Programm (synchron oder asynchron) gestartet, werden
zuerst die Werte aller Variablen rausgeschrieben. Das aufgestartete Programm
kann somit bereits auf Eingabewerte zb. in Filerequester-Gadgets zugreifen.
Diese Werte können sofort wieder verwendet werden: SYNCRUN und ASYNCRUN-
Kommandos dürfen Variablen enthalten. Die Definition
STRING ...
LOCAL myDir ...
BUTTON ...
SYNCRUN "dir $myDir"
versucht den Inhalt des Stringgadgets als Verzeichnis zu lesen.
CHECKBOX
--------
CHECKED : das Häkchen wird beim Start eingeschaltet.
Als Funktionswert gibt das Checkbox-Gadget 0 zurück, wenn
gewählt, sonst -1.
INTEGER
-------
Nach ENTRY kann eine Default-Zahl angegeben werden, die beim Aufruf
im Integer-Gadget erscheint. Mit "MAXCHARS zahl" kann die maximale Zahl
der Zeichen, die aufgenommen werden, verändert werden (default 20).
NUMBER
------
Aehnlich INTEGER, aber Read-Only. Es wird nichts geschrieben.
Mit NOBOX wird der Rahmen unterdrückt.
STRING
------
Aehnlich INTEGER, auch mit der Einstellmöglichkeit MAXCHARS (default 80).
TEXT
----
Analog zu INTEGER --> NUMBER
CYCLE
-----
Alle gewünschten Einträge nach ENTRY auflisten. Rausgeschrieben wird die
Nummer des zuletzt selektierten Eintrags, beginnend bei 0.
Zur Erinnerung: ENTRY immer an den Schluss einer Gadgetdefinition!!.
MX
--
Dieser Gadget-Typ wird wie ein oben erwähntes CYCLE-Gadget installiert und
ausgewertet. Zusätzlich gibt es noch die Option
SPACING n : Zusätzlicher Abstand zwischen den einzelnen Einträgen
HIBOX, LOBOX
------------
ACHTUNG: kein Endzeichen #, nur die vier Parameter X, Y, Breite, Höhe:
HIBOX
50 20 100 20
Tips und Tricks
===============
TEXT-Typen werden normalerweise zentriert zur X-Koordinate ausgegeben. Soll
eine Reihe von Texten linksbündig ohne Box angeordnet werden, kann dies
mit einer Breitenangabe von 0 und der Option PLACETEXT RIGHT erreicht werden.
Abspann
=======
Im Vertriebsverzeichnis müssen enthalten sein:
LACE (dir)
About.req intro.req
Offset.req Select.req
Strings.req warning.req
HIRES (dir)
about.req intro.req
Offset.req Select.req
Strings.req Warning.req
AskEnv
AskEnv.doc
AskEnv.dok
Brief.rexx
BriefHilfe.req
Changes.doc
Changes.dok
dearc.req
DeArc.rexx
LiesMich
Plotter Plotter.info
PrefMan.rexx
ReadMe
Test
noch zu tun:
------------
- AREXX Support
Danke allen, die sich mit Tips und Tricks beteiligt haben.
Ab V2.4 ist AskEnv mit MungWall und Enforcer gestestet, was keine grosse
Hürde ist, da AskEnv mit M2Amiga Modula2 programmiert wurde.
AskEnv wurde gestestet unter OS 2.04 und OS 2.1.
Dieses Programm ist frei kopierbar. Das Verzeichnis muss vollständig weiter-
gegeben werden.
Die Aufnahme in PD-Serien ist erlaubt unter der Bedingung, dass eine Diskette
für nicht mehr als 5 sFr/DM verkauft wird. Wenn die Diskette, mit der
AskEnv erworben wurde, teurer war, bitte ich um einen Hinweis.
Soll AskEnv auf Serien, die mit gedruckten Anleitungen vertrieben werden,
veröffentlicht werden, darf dies nur nach Absprache mit dem Autor getan
werden.
Alle Rechte verbleiben beim Programmierer.
Bugreports an:
============================================================================
Bengt Giger
Schmiedgasse 48
CH-8640 Rapperswil
Switzerland
055/27 98 79
Link-CH1 ++41 (0)61 681 63 60 Aminet: B.GIGER%LINK-CH1 44:8010/408.0
Z-Netz: B.GIGER@LINK-CH1
============================================================================