FileSelect Version 2.0
(C) André Wichmann / CLUSTER September 1990.
    Posener Weg 4
    5300 Bonn 1
    Deutschland

Dieses Programm ist Freeware und darf frei kopiert, verändert oder benutzt
werden, auch in kommerziellen Programmen.


-----------------------------------------------------------------------------

      - FileSelect V2.0 -
     ~~~~~~~~~~~~~~~~~~~~~

Und hier ist ein weiterer Filerequester in der nicht enden wollenden Serie...
Aber dieses Mal mit einigen neuen Features !

PRO UND CONTRA
~~~~~~~~~~~~~~~

        Pro FileSelect V2.0:
                
                - Zeigt auch die Filegrößen an, ist aber trotzdem noch klein
                  genug, um auf einen Lo-res Screen zu passen
                - Schnell und Kurz (Meiner Meinung nach !)
                - Die Farben können frei bestimmt werden
                - Eine Filterliste kann übergeben werden
                - Keine Beschränkungen (manche können nur 200 Files anzeigen
                  warum eigentlich ?!?)
                - Alles ist mit Strukturen und einem eigenen include-file ge-
                  löst worden (sehr Zukunftsfreundlich !)
                - Drei neue, hilfreiche Gadgets können jetzt ein oder ausge-
                  schaltet werden: makedir, delete und rename (Habe ich schon
                  oft vermißt !!!)
                - Natürlich kann man den Windowtitel, den Pfad und den
                  Filenamen beim Aufruf angeben (Ich muß wohl nicht erwähnen,
                  daß man FileSelect irgendwo auf dem Screen plazieren kann)
                - Wenn kein Screenpointer übergeben wird, sucht sich
                  FileSelect automatisch den aktiven Screen heraus
                - Zurück bekommt man den Pfad, den Filenamen UND den vollen
                  Namen
                - Device-Anzeige und Doppelklick werden unterstützt
                - Man braucht keine große, externe library wie ARP
        
        FileSelect V2.0 Contras:

                - Die Routine muß wegen einigen Images im CHIPMEM liegen
                  (wird demnächst verbessert)

WIE MAN ES BENUTZT
~~~~~~~~~~~~~~~~~~~

Man kann im 'Path'-Gadget einen beliebigen Pfad eingeben, den FileSelect
nach drücken der Return-Taste anzuzeigen versucht.Zur Fileauswahl kann man
entweder die Maus benutzen oder den Namen im 'File'-Gadget eingeben.Um den
Requester zu beenden muß man entweder 'Okay' anklicken, einen Doppelklick
auf einem File machen oder 'Cancel' anklicken.Die drei DOS-gadgets (makedir,
delete und rename) machen das Gleiche wie die gleichnamigen CLI-Kommandos.
Manchmal kann man diese Gadgets nicht anwählen; sie sind dann vom Hauptpro-
gramm ausgeschaltet worden.Mit dem rechten Mausknopf kann eine Liste aller
angeschlossenen Devices ausgegeben werden (df0:, ram: usw.).

WIE MAN FILESELECT AUFRUFT
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Diese Version ist mit dem DevPac Assembler V2.14 geschrieben worden, aber
wenn das linkfähige Programm 'FileSelect.o' benutzt wird, kann es in jeder
Sprache aufgerufen werden (glaube ich zumindest).Der eigene Quellcode muß
das include-file 'FileSelect.i' included haben, da dieses einige wichtige
Strukturen und Konstanten definiert.Um FileSelect aufzurufen, muß das
Adressregister a0 auf folgende Struktur zeigen:

NFS2_NewFileSelect      rs.b    0
NFS2_LeftEdge           rs.w    1
NFS2_TopEdge            rs.w    1
NFS2_WindowTitle        rs.l    1
NFS2_DefaultPath        rs.l    1
NFS2_DefaultFile        rs.l    1
NFS2_Screenptr          rs.l    1
NFS2_GadgetFlags        rs.w    1
NFS2_FirstFilter        rs.l    1
NFS2_BackPen            rs.b    1
NFS2_FilePen            rs.b    1
NFS2_DirPen             rs.b    1
NFS2_GadgetPen          rs.b    1
NFS2_Reserved1          rs.l    1
NFS2_Reserved2          rs.l    1
NFS2_SIZEOF             rs.w    0

NFS2_LeftEdge.w         Dies ist die X-Position für das FileSelect Window.
                        Mit NFS2_CENTREPOS (-1) wird es auf einem Hires-
                        Screen zentriert.
NFS2_TopEdge.w          Dies ist die Y-Position für das FileSelect Window.
                        Mit NFS2_CENTREPOS (-1) wird es auf einem Hires-
                        Screen zentriert.
NFS2_WindowTitle.l      Ein Zeiger auf den Window-Titel, der mit einem Null-
                        Byte abgeschlossen sein muß.Mit NFS2_DEFAULTTITLE (0)
                        wird ein vorgegebener Titel benutzt.
NFS2_DefaultPath.l      Ein Zeiger auf einen String, der in das Pfad-Gadget
                        übertragen werden soll.Mit NFS2_NODEFAULT (0) wird
                        kein Pfad vorgegeben.
NFS2_DefaultFile.l      Ein Zeiger auf einen String, der in das File-Gadget
                        übertragen werden soll.Mit NFS2_NODEFAULT (0) wird
                        kein Filename vorgegeben.
NFS2_Screenptr.l        Der Zeiger auf den Screen.NFS2_ACTIVESCREEN (0)
                        bringt FileSelect dazu, sein Window auf dem aktuellen
                        Screen anzuzeigen.
NFS2_GadgetFlags.w      Dieses Flag schaltet die drei DOS-Gadgets makedir,
                        delete und rename an bzw. aus.Mit NFS2_NOGADGETS (0)
                        werden alle drei ausgeschaltet, mit NFS2_MAKEDIR (1),
                        NFS2_DELETE (2) und NFS2_RENAME (4) einzelnd
                        eingeschaltet.Beispiele:
                        NFS2_MAKEDIR!NFS2_DELETE schaltet alle bis auf das
                        Rename-Gadget an.
                        NFS2_MAKEDIR!NFS2_DELETE!NFS2_RENAME schaltet alle
                        DOS-Gadgets ein.
NFS2_FirstFilter.l      Ein Zeiger, der auf die erste Struktur der Filter-
                        Liste zeigt (siehe unten).Mit NFS2_NOFILTER (0)
                        zeigt alle Files an.
NFS2_BackPen.b          Der Pen, mit dem der Hintergrund gezeichnet werden
                        soll.Mit NFS2_DEFAULTPEN (0) wird 1 (Weiß) benutzt.
NFS2_FilePen.b          Der Pen für die Fileanzeige.Vorgegeben: 2 (Schwarz).
NFS2_DirPen.b           Der Pen für dir Diranzeige.Vorgegeben: 3 (Orange).
NFS2_GadgetPen.b        Der Pen für die Gadgets.Vorgegeben: 2 (Schwarz).
NFS2_Reserved1.l        Auf Null setzen!
NFS2_Reserved2.l        Auf Null setzen!

Man kann FileSelect eine Liste von Filtern übergeben,d.h. daß Files mit
den angegebenen Endungen nicht angezeigt werden.Das kann sinnvoll sein,
wenn man keine .info-, .iff-, .txt-files usw. angezeigt haben will.
NFS2_FirstFilter sollte dann auf diese Struktur zeigen:

FS2F_FilterElement      rs.b    0
FS2F_NextFilter         rs.l    1
FS2F_FilterLength       rs.b    1
FS2F_AdjustToWord       rs.b    1
FS2F_Filter             rs.l    1
FS2F_Reserved           rs.l    1
FS2F_SIZEOF             rs.w    0

FS2F_NextFilter.l       Entweder ein Zeiger auf das nächste Element der
                        Filterliste oder FS2F_LASTFILTER (0) um das Ende
                        der Liste zu markieren.
FS2F_FilterLength.b     Länge des Strings in bytes.
FS2F_AdjustToWord.b     Unwichtig; zum Angleichen an die Wortgrenze.
FS2F_Filter             Ein Zeiger auf den String, der die Endung darstellt.
FS2F_Reserved           Auf Null setzen!

Wenn kein Guru aufgetaucht ist, wird daß Hauptprogramm folgende Struktur
im Datenregister d0 zurückerhalten:

FS2_FileSelectReturn    rs.b    0
FS2_Status              rs.w    1
FS2_Path                rs.l    1
FS2_File                rs.l    1
FS2_FullName            rs.l    1
FS2_Reserved1           rs.l    1
FS2_Reserved2           rs.l    1
FS2_SIZEOF              rs.w    0

FS2_Status.w            FS2_OKAY (0) bedeutet, daß der Benutzer das Okay-
                        Gadget angeklickt hat.FS2_CANCEL (1) heißt das
                        Gleiche für das Cancel-Gadget.FS2_WINDOWERR (3)
                        bedeutet, daß FileSelect das Window nicht öffnen
                        konnte (vermutlich wegen zu wenig CHIPMEM).
FS2_Path.l              Ein Zeiger auf den Pfad.FS2_NOPATH (0) taucht dort
                        nach CANCEL oder WINDOWER auf.
FS2_File.l              Ein Zeiger auf den Filenamen.FS2_NOFILE (0) taucht
                        dort nach CANCEL oder WINDOWERR auf.
FS2_FullName.l          Ein Zeiger auf den vollen Namen (Pfad + Filename).
                        FS2_NOFULLNAME (0) taucht dort nach CANCEL oder
                        WINDOWERR auf.
FS2_Reserved1.l         Normalerweise Null.
FS2_Reserved2.l         Normalerweise Null.

FileSelect braucht sehr wenig Speicher, nur ein wenig CHIPMEM für das Window
und pro angezeigtes File/Dir/Device 42 Bytes.

Um FileSelect in eigene Programme einzubauen gibt es zwei Möglichkeiten:

1) Einfach den Quellcode an das Ende des Hauptprogrammes hängen und die
   Include- und die Opt-Zeile löschen.
2) Mit blink an das Hauptprogramm anlinken.

Wenn FileSelect V2.0 benutzt wird sollte 'FileSelect.i' includet werden.
Wenn es nicht gelinkt, sondern mit assembliert wird, werden folgende
includes gebraucht:

                 include exec/exec_lib.i
                 include exec/memory.i
                 include intuition/intuition_lib.i
                 include intuition/intuition.i
                 include intuition/intuitionbase.i
                 include graphics/graphics_lib.i
                 include libraries/dos_lib.i
                 include libraries/dos.i
                 include libraries/dosextens.i

                 include FileSelect.i

Wenn FileSelect gelinkt werden soll, müssen im Hauptprogramm folgende
Importe/Exporte definiert werden:

                  XREF   FileSelect
                  XDEF   _IntuitionBase,_GfxBase,_DOSBase

Beim Aufruf müssen Intuition.library, Graphics.library und Dos.library
offen sein.

Ich kann leider nicht sagen, wie man FileSelect in anderen Sprachen als
Assembler benutzt, da ich keine Erfahrung mit solchen Dingen habe.Ich
weiß nicht, ob Compiler mit meinem Include-file klarkommen, aber wenn
man es nicht benutzt und FileSelect dazulinkt, müßte es eigentlich
klappen.Ich hoffe, daß ich bald Post mit Tips bekomme !

FileSelect darf beliebig geändert oder erweitert werden, aber wenn große
Änderungen gemacht werden, bitte ich darum, die neue Version zugeschickt
zu bekommen (Ich schicke die Disk natürlich zurück!).Eigene verbesserte
Versionen werden auch bald erscheinen.

                          ...AW 29/09/1990...
                       Aragorn/CLUSTER rules !!!

-----------------------------------------------------------------------------

CLUSTER ist eine legale Programmierergruppe, die hauptsächlich auf dem Amiga
arbeitet und Freeware produziert (vielleicht ein paar kommerzielle Programme
später ?!?).
CLUSTER ist mit den folgenden Mitgliedern im Januar 1989 gegründet worden:

André Wichmann, Guido Wegener, Martin Rosenkranz, Martin Baumann, Philipp
Witkop, Stefan Kaspari, Stefan Lietzow und Giang Nguyen.
Heute, am 29.09.1990, sind wir nur noch die Elite von damals:

André Wichmann       Assembler-Programmierer        (Aragorn !)
Guido Wegener        C-Programmierer                (Wonko der Verständige !)
Martin Mohr          Assembler/Floppy-Programmierer (X-tension !)
Martin Rosenkranz    Grafik                         (Flex !)
Philipp Witkop       Sound                          (Madison !)

Briefe sind immer willkommen !!! Schickt Bugs, neue Ideen, Geld, Disks,
enthusiastische Fan-Briefe usw. an:

                     André Wichmann
                     Posener Weg 4
                     5300 Bonn 1
                     Deutschland

Amiga - Die zweitbeste Maschine nach dem C64 !!!

