/**********************************************************************/
/*      RCT Juni 89                                                  */
/*                                                                    */
/*      RCT Info  Neuerungen seit der Version 1.0 vom Februar 89      */
/*                                                                    */
/*      -neuer, besserer File Requester                               */
/*      -einige kleine Bugs wurden behoben                            */
/*      -RCT_TO_ASCII verbessert, und jetzt auch mit Source-Code-     */
/*       Generator für AMIGA-Basic                                    */
/*       Das Programm arbeitet noch mit dem altem File Requester      */
/*      -Symboldatei für M2Amiga zur Nutzung der rct-Library in Modula*/
/*      -Demoprogramm für M2Amiga                                     */
/**********************************************************************/


Die beiden folgenden Funktionen sind in der Version 1.0 ebenfalls
enthalten, aber im Handbuch nicht beschrieben!

screen = showscreen(base,mod,depth,title)               -264
  D0                 A0   D0 D1      A1

base:  die von der Funktion rctload zurückgelieferte Adresse
mod :  Auflösungsmodus (z.B. 0x8000 für Hires)
depth: Bitplanetiefe
title: Adresse des Titelstrings; im GFA-Basic der String selbst


Öffnet einen Screen in der angegebenen Auflösung und Tiefe und liefert
die Adresse auf die Screen-Struktur zurück.




remscreen(base,screen)          -282
           A0    A1

base:   die von der Funktion rctload zurückgelieferte Adresse
screen: Adresse der Screen-Struktur

Bevor der Screen geschlossen wird, werden alle Windows und Requester
gelöscht, so daß keine Fensterleichen entstehen.


Behobene Fehler im R.C.T.:

1. Wurde in der alten Version das Gadgetflag GADGDIABLED gesetzt und
   der Requester nach dem Speichern wieder geladen, konnte das Gadget
   nicht mehr angewählt werden.

   Besitzen Sie solche Requester, können auch diese nun problemlos
   nachbearbeitet werden.

2. Der Menüpunkt "NEWCLI" wurde entfernt, da er auf manchen Geräten
   zu GURU's führte. Wollen Sie außer dem R.C.T. noch andere
   Programme aus dem CLI aufrufen, strarten Sie bitte das R.C.T.
   mit der Anweisung "RUN RCT".


Behobene Fehler in der Library:

1. setreqtext() funktionierte nur wenn der Requester in dem ein
   neuer Text gesetzt werden soll, angezeigt war. Anderenfalls bekam
   man einen Illegal GURU.

2. setgadtext() führte nur einen Refresh auf gefüllte Gadgets aus
   anderenfalls mußte mit der Funktion redrawgad(gets) nachgeholfen
   werden.
   Jetzt wird, wenn der Requester angezeigt ist, der alte Text in der
   Requesterfarbe überzeichnet und ein Refresh ausgeführt, auch wenn
   kein Füllmuster gesetzt ist.

3. getgadtext() führte zu einem Adresserror, da ich bei der Rückkehr
   aus der Funktion den Stapel nicht richtig korrigierte.

In der Datei rct_gfabas.lst waren die Library Offsets für die Funktionen
getreqstruct (-66)und setreqstruct (-72) vertauscht, so daß keine sinnvollen
Ergebnisse zustande kamen.



Dateien auf der Diskette:

Die im Handbuch beschriebenen Dateien sind teilweise mit anderem Namen
auf der Diskette vorhanden. Außerdem kamen einige zusätzliche Dateien
dazu, die bei Drucklegung des Handbuches noch nicht feststanden.

Die Datei rct.lib, im Handbuch als Linker-Lib beschrieben steht, in drei
Versionen im Libraries-Ordner.

  rct_aztec34.lib   - die Library für den Aztec 3.4-Linker
  rct_aztec36.lib   - die Library für den Aztec 3.6-Linker
  rct_lattice40.lib - die Library für den Lattice 4.0-Linker

Der Name für die FD-Datei für GFA-Basic hat sich von rct_bas.gfa in
rct_gfabas.lst geändert, da es sich hierbei um eine ASCII-Datei handelt,
die im GFA-Basic hinzugeladen werden muß. Die übliche Extension für eine
solche GFA-Basic-Datei ist ".LST".

Ganz neu hinzugekommen ist die Datei rct.sym und rct.def.
Rct.sym ist die Symbol-Datei für Modula2 M2Amiga.
Wenn Sie in Modula2 programmieren, kopieren Sie sich bitte diese Datei
in Ihren Module-Ordner auf Ihrer Modula2 Diskette oder Festplatte.
Die Datei rct.def ist der Modula2-Source der Symboldatei.
Durch diese beiden Dateien haben Sie nun auch die Möglichkeit die
Funktionen der rct.library in Modula2-Programmen zu nutzen.
Das Modula-Demo im Ordner Demos auf der R.C.T-Diskette verdeutlicht Ihnen
die Funktionsaufrufe.


Die größte Änderung wurde im Demo-Ordner vorgenommen. Vergessen Sie deshalb
die Beschreibung auf Seite 6 des Handbuches.

Ordner Demos:

  FARBDEMO.RCT      ! Strukturdefinitionen eines Farbrequesters, der in den
  FARBDEMO.H        ! Programmen demo#? benutzt wird.
  FARBDEMO.DFN
  FARBDEMO.INFO

  ADRESSDEMO.RCT    ! Adreßein- und -ausgaberequester wird im Programm
  ADRESSDEMO.H      ! Adressdemo.gfa nachgeladen
  ADRESSDEMO.DFN
  ADRESSDEMO.INFO

  FILER.RCT         ! die R.C.T.-Dateien des neuen Filerequesters
  FILER.H           ! Diese werden vom R.C.T. selbst nicht nachgeladen,
  FILER.DFN         ! da sie in das R.C.T. im Source eingebunden wurde
  FILER.INFO

  RCTLAB.RCT        ! R.C.T.-Dateien zum PD-Programm RCTLAB
  RCTLAB.H          ! Anleitung im letzten Abschnitt dieser Datei !!!
  RCTLAB.DFN
  RCTLAB.INFO

  DEMO.C            ! Demoprogramm in Aztec-C. Es werden die Library-Funktionen
  DEMO              ! genutzt. Die Datei rct.library muß sich dazu im Libs-
                    ! Ordner der Bootdiskette befinden.

  DEMO1.C           ! Das gleiche Programm wie DEMO.C, jedoch wird der Requester
  DEMO1             ! als Source-Code verwaltet. Es wird keine Funktion
                    ! der rct.library aufgerufen.

  DEMO.GFA          ! das Programm DEMO.C in GFA-Basic

  DEMO1.GFA         ! das Programm DEMO1.C in GFA-Basic

  ADRESSDEM.GFA     ! Demo-Programm, welches den Nachrichtenempfang
                    ! für Menü-Messages in GFA-Basic verdeutlicht.

  DEMO.AMIGABAS     ! abgespeckte Version des Programms DEMO.C in
                    ! AmigaBasic

  RCTLAB            ! PD-Prgramm zum Anzeigen von R.C.T.-Dateien (.RCT)

  MODULADEMO        ! Ausführbares Modula2-Programm (kann nur aus der
                      Workbench mit Klick auf das Icon gestartet werden!)
  MODULADEMO.INFO

  MODULADEMO.MOD    ! Modula2-Source des MODULADEMO-Programmes
  MODULADEMO.MOD.INFO
  MODULADEMO.OBJ
  MODULADEMO.OBJ.INFO
  MODULADEMO.REF
  MODULADEMO.REF.INFO

Die Programme "rct.library" und "RCTLAB" sind Public Domain und können frei
kopiert werden. Das gleiche gilt auch für die Linker-Libraries, sobald Sie
die Funktionen der Libraries an Ihre eigenen Programme gelinkt haben.


/**************************************************************************/
/*                     Neues im R.C.T.:                                   */
/**************************************************************************/

1. Prop- und String-Gadgets können nun auch ein Image enthalten.

   Für String-Gadgets ist dabei nichts besonderes zu beachten.
   Gehen Sie genau so vor, als würden Sie ein Image in ein
   Boolean-Gadget stellen.

   Bitte beachten Sie folgendes für Prop-Gadgets:
   Das Image für ein Prop-Gadget ist der bewegliche Teil des Gadgets.
   Dabei spielt die Größe des Teils keine Rolle. Es kann sogar größer
   sein als das eigentliche Prop-Gadget.
   Im Image-Editor wird entsprechend der Größe des beweglichen Teils
   ein Rahmen angezeigt. Dieser ist in der Größe veränderbar. Eine
   Positionsveränderung wirkt sich nicht auf das bewegliche Teil
   sondern auf das Prop-Gadget aus. So kann es vorkommen, daß nach
   einer Positionsveränderung ein Teil des Prop-Gadgets außerhalb des
   Requesters steht. Dies ist leider nicht anders machbar. Eine
   Größenveränderung hingegen wirkt sich nur auf das bewegliche Teil des
   Propgadgets aus.

2. Füllmuster in Boolean-Gadget löschen:

   Hierfür ist ein weiteres Gadget in den Füllmuster Requester
   hinzugekommen. Klickt man auf das Gadget "Löschen"
   (zwischen OK und ABBRUCH) wird ein eventuell vorhandenes Füllmuster
   entfernt. Jetzt muß das Gadget nicht unbedingt gelöscht werden,
   wenn man es sich anders überlegt hat und doch kein Füllmuster will.




/*************************************************************************/
/*                                                                       */
/*      Der neue File Requester                                          */
/*                                                                       */
/*************************************************************************/

Er sieht ganz anders aus als der alte und kann auch mehr.

Wird er aus dem RCT zum ersten Mal aufgerufen, wird solange gewartet, bis
eines der Laufwerks-Gadgets angeklickt oder ein Pfadname in das Pfadfeld
eingegeben wird.

Während des Einladens eines Inhaltsverzeichnisses wird dieses sortiert
angezeigt. Außerdem ist es möglich, währendessen ein anderes Laufwerk,
ein weiteres Verzeichnis, ein anderes Pattern, einen Dateinamen,Up Gadget,
Down Gadget, Slider Gadget, Ok oder Abbruch anzuklicken, worauf sofort
reagiert wird.


Die Laufwerks-Gadgets

Es werden maximal 12 angeschlossene Laufwerke erkannt und deren Name in
die Gadgets am linken Rand des Requesters eingetragen. Die Länge der Namen
ist dabei nicht etwa auf die drei Zeichen, die dargestellt werden können,
begrenzt, sondern werden so übernommen wie, sie in der "mountlist" deklariert
sind.

Bei Klick auf ein Laufwerks-Gadget wird der Inhalt des gewählten Laufwerks
angezeigt. Wählt man ein Verzeichnis des geladenen Inhaltverzeichnisses
und wechselt danach auf ein anderes Laufwerk, wird der eingestellte Pfad
gespeichert, und bei Neuanwahl des Laufwerks wird wieder auf den für das
entsprechende Laufwerk eingestellten Pfad zugegriffen.

Mit einem Doppelklick auf das Gadget des aktuell eingestellten Laufwerks
werden Informationen dazu angezeigt.

        - Laufwerksname
        - Kapazität in KByte
        - Bytes pro Block
        - belegter Speicher in KByte
        - freier Speicher in KByte

Mit Klick auf irgendein Gadget oder den Requester wird das Inhaltverzeichnis
wieder angezeigt.


Verzeichnis wählen

Verzeichnisse, auch Ordner oder Schubladen genannt, sind im Inhaltsverzeichnis
mit einem Stern (*) gekennzeichnet. Wählt man ein Verzeichnis mit der Maus,
wird dessen Name in das String Gadget "Pfad:" eingetragen und der Inhalt des
Verzeichnisses angezeigt.
Mit Klick auf das Gadget "VATER" kommt man eine Verzeichnisebene zurück, wenn
man sich in einem Verzeichnis befindet.
Durch einen Klick auf das Gadget "WURZEL" wird das Wurzelverzeichnis des
Laufwerks geladen.


Datei-Info

Eine weitere Neuerung ist die Dateiinformation, die man sich ausgeben lassen
kann. Ist ein Dateiname ausgewählt, und wird auch bei Klick auf das Gadget
"Datei Info" gefunden, erhält man folgende Informationen:

        - Dateiname
        - Größe der Datei in Bytes
        - Größe der Datei in Blocks
        - Datum und Uhrzeit der letzten Veränderung
        - Kommentar für die Datei

Mit Klick auf irgendein Gadget oder den Requester wird das Inhaltverzeichnis
wieder angezeigt.


Muster

Mit Muster ist das Suchmuster gemeint, nach dem die Inhaltsverzeichniseinträge
geprüft werden sollen. Nach der Prüfung werden nur diejenigen Einträge ange-
zeigt, bei denen das Suchmuster enthalten ist. Die Einträge werden dabei rück-
wärts mit dem Musterstring verglichen. Das bedeutet, daß das Muster INFO alle
Dateien mit der Endung .INFO anzeigen würde.
Es sind bereits 9 Muster vorgegeben, die mit der Maus angewählt werden können.


/**************************************************************************/
/*                     Neues im RCT_TO_ASCII:                             */
/**************************************************************************/

Source-Code für Amiga Basic:

Mit der Version 1.1 des Programmes RCT_TO_ASCII ist es möglich auch den
Source-Code für Amiga-Basic erzeugen zu lassen.
Dazu kam ein neues Gadget mit der Aufschrift "AMIGABASIC-Source" dazu.
Nach Klick auf das Gadget wird es invers angezeigt und bei nochmaligem
Klick wieder normal. Also ein Toggleselct-Gadget. Startet man die
Übersetzung, wenn das Gadget invers angezeigt ist, wird der Source-Code
für AMIGA-Basic erzeugt.

An den Dateinamen wird die Endung ".abas" angehängt.

Der erzeugte Code hat einige Besonderheiten die bei der weiteren Verwendung
in AMIGA-Basic beachtet werden soll.

Es werden immer minimal drei SUB-Routinen erzeugt.
Die erste Routine heißt makecstring(string$,opt&) und wandelt Basic-
Strings in C-Strings, damit diese im Requester oder der Menüleiste
verwendet werden kann.

Die Routine initrct initialisiert die entsprechenden Requester und Menüleisten.
Das heißt, es wird Speicher reserviert und die jeweiligen Daten in den
reservierten Speicherbereich "gepokt". Der Aufruf sollte immer bei
Programmstart, noch bevor Fenster oder Screens geöffnet werden, erfolgen.
Bei großen Dateien kann die Initialisierung einige Minuten dauern.

Die letzte Routine rctfree gibt den in der Routine initrct angeforderten
Speicher wieder frei und sollte vor Beendigung des Programms oder nach einem
Error oder Break angesprungen werden.

Für jeden Requester wie auch für jede Menüleiste wird eine SUB-Routine
erzeugt mit der der jeweilige Requester angezeigt oder die Menüleiste
in ein Window gesetzt werden kann. An die Routinen muß unbedingt die
Adresse des Window's übergeben werden. Die Adresse erhalten Sie durch
Aufrufen der Basic-Funktion WINDOW(7).


Enthält ihre RCT-Datei Beispielsweise 3 Requester und 2 Menüleisten, werden
folgende Routinen erzeugt:

REQUESTER:

showreqa(wind&)             ; anzeige Routine für ersten Requester
reqaend                     ; Routine zum Löschen des Requesters
showreqb(wind&)             ; anzeige Routine für zweiten BuRequester
reqbend                     ; Routine zum Löschen des Requesters
showreqc(wind&)             ; anzeige Routine für dritten Requester
reqcend                     ; Routine zum Löschen des Requesters

MENÜLEISTEN:

menua(wind&)                ; anzeige Routine für erste Menüleiste
menub(wind&)                ; anzeige Routine für zweite Menüleiste

Will man die Menüleisten wieder vom Window entfernen genügt es das jeweilige
Window zu aktivieren und den MENU RESET Befehl auszuführen.

Beim Test der Menüleisten im Basic wurden Fehlfunktionen festgestellt,
wenn die Menüleiste in WINDOW 1 gesetzt wird. Dies kann auch zu einem GURU
führen, was meiner Meinung nach an einer unsauberen Menüverwaltung des
Basic-Menüs in Window 1 liegt.


WICHTIG:

Um das Programm starten zu können werden noch zwei .bmap Dateien benötigt,
die unbedingt in dem Disk-Verzeichnis stehen müssen, von dem aus AMIGA-Basic
gestartet wurde.

Es handelt sich hierbei um die Dateien exec.bmap und intuition.bmap.
Sie finden die Dateien auf ihrer Amiga-Extras-Diskette im Verzeichnis
BASIC-DEMOS.


Folgende globale Variablen werden angelegt, die während des Programmlauf
nicht mit Ihren eigenen Variablen verwechselt werden dürfen:

cstring&,  txtattr&,  itxt&,  strinf&, propinf&,  men&
bitblk& ,  image&  ,brddat&,  border&, gadget& ,  menuitem&



Hinweis:

Festgestellte Fehlfunktion in Zusammenarbeit mit dem Programm DMOUSE  !!!

Das R.C.T. hat eine UNDO-Funktion, die in der Anleitung nur am Rande be-
schrieben wird:

Will man, während man ein Objekt (GADGET,TEXT,MENUITEM...) positioniert,
dieses wieder absolut genau auf die alte Position bringen (also die
Positionierung abbrechen), genügt es, bei gedrückter linker Maustaste (Objekt
klebt an der Maus) die rechte Maustaste zu drücken, und der Rahmen des Objektes
steht wieder an der alten Position.

Hat man nun DMOUSE installiert, wird diese Funktion nicht ausgeführt, da DMOUSE
seine Events vor Intuition bekommt.



/*************************************************************************/
/*                                                                       */
/*      R C T L A B                                                      */
/*                                                                       */
/*************************************************************************/

Anleitung

Das Prgramm RCTLAB ist eine Anwendung, die die Library-Funktionen der
rct_aztec34.lib nutzt, um Requester und Menüleisten anzuzeigen.
Die einzelnen Funktionen wurden allerdings an das Programm gelinkt, so
daß kein Gebrauch von der Datei rct.library gemacht werden muß.

Die Benutzeroberfläche für dieses Programm wird aus der Datei RCTLAB.RCT
während der Laufzeit des Programmes nachgeladen. Startet man das Programm
vom CLI aus, muß der aktuelle Pfad unbedingt der sein, in dem sich die
Datei RCTLAB.RCT befindet, da sonst das Programm RCTLAB mit der Fehlermeldung
"RCTLAB.RCT nicht gefunden" abbricht.

Vom R.C.T. werden vier verschiedene Dateien erzeugt.

1. ".DFN"

  Die .DFN-Datei wird zusätzlich zur .RCT-Datei vom R.C.T. benötigt. In ihr
  sind spezielle, für das R.C.T. wichtige Informationen enthalten.


2. ".RCT"

  Die vom R.C.T. erzeugte Hauptdatei hat die Endung ".RCT". Sie enthält alle
  Strukturdefinitionen, die notwendig sind, um die Requester und Menüleisten
  darstellen zu könne. Diese Datei muß auch bei der Verwendung in eigenen
  Programmen in der Library-Funktion rctload() als Dateiname angegeben werden.
  Sie ist auch die einzige, die für rctload() benötigt wird.


3. ".H"

  Namensdefinitionen für Gadget-, Requester- und Menüleistennamen


4. ".info"

  Workbench Icon.


Wenn die Oberfläche für Ihre Programme mit dem R.C.T. gestaltet und
während des Programmlaufes mit der Funktion rctload() nachgeladen wird, kann
keiner außer Ihnen die .RCT Datei verändern, da die .DFN-Datei nicht zu Ihren
Programmen mitgegeben werden muß, sie aber zur Veränderung der .RCT-Datei
unbedingt benötigt wird.

Mit dem RCTLAB kann eine .RCT-Datei geladen und angezeigt, aber nicht verändert
werden.


Laden von .RCT-Dateien:

Zum Laden von .RCT-Dateien genügt ein Klick auf das Gadget "R.C.T. laden",
und es öffnet sich ein File-Requester, aus dem die gewünschte Datei ausgewählt
werden kann.
Nach dem Laden einer .RCT-Datei werden der Dateiname und die Anzahl der
beinhalteten Requester und Menüleisten links oben im RCTLAB-Requester angezeigt.


Anzeigen von Requestern:

In rechten Teil des RCTLAB-Requesters stehen Gadgets, mit denen Screens und
Windows geöffnet werden können.
Mit den Gadgets im oberen rechten Teil kann man die Auflösung und Bitplanetiefe
für einen Screen einstellen. Das Gadget "Start" in der Zeile Screen
öffnen führt die Funktion showscreen() mit den eingestellten Parametern aus.

Mit Klick auf das Gadget "Start" in der Zeile "Fenster öffnen" wird ein
Fenster entweder auf dem zuvor geöffneten Screen oder dem Workbenchscreen
in voller Größe geöffnet.

Damit ein Requester angezeigt werden kann, muß zuvor immer ein Fenster geöffnet
werden.
Hat man nun eine .RCT-Datei geladen, die einen oder mehrere Requester
enthält, kann mit den Pfeilgadgets in der Zeile "Requester öffnen" gewählt
werden, welcher Requester angezeigt werden soll.

Ein Klick auf das Gadget "Start" in dieser Zeile zeigt den gewählten Requester
an, wenn zuvor ein Fenster geöffnet wurde. Hierbei wird die Funktion reqdraw()
ausgeführt. Ist das Gadget "Mit Window" selektiert, wird bei Klick auf
"Start" die Funktion reqdrawwindow() ausgeführt, wobei automatisch
ein Fenster in der Größe des Requesters geöffnet wird.
Über die Gadgets in den Zeilen "Requester schließen", "Fenster schließen" und
"Screen schließen" können Requester, Fenster und Screens wieder geschlossen
werden.

Werden  Gadgets eines angezeigten Requesters angeklickt, werden die empfangenen
Nachrichten und die ID des angeklickten Gadgets im linken Teil des
RCTLAB-Requesters angezeigt.


Anzeigen von Menüleisten:

Damit man eine Menüleiste anzeigen kann, muß ebenfalls ein Fenster geöffnet
werden. In der Zeile "Menü anzeigen in Fenster" kann man mit den Pfeil-
Gadgets auswählen welches Menü angezeigt werden soll.

Klickt man das Gadget "Start" in dieser Zeile an, wird die Menüleiste
in das zuletzt geöffnete Fenster gesetzt und kann in der üblichen AMIGAart
angezeigt werden (rechte Maustaste). Wählt man einen Menüeintrag aus, werden
ebenfalls die empfangene Nachricht, MenuID, ItemID und SubID im
RCTLAB-Requester angezeigt.

Die Gadgets "Requester Info", "Gadget Info", "Menü Info" und "Menuitem Info"
haben zur Zeit noch keine Funktion.


Viel Spaß beim Experimentieren mit dem RCTLAB wünscht

Jürgen



