home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
back2roots/padua
/
padua.7z
/
padua
/
system
/
sm_1_31.lha
/
SM
/
SM.anl
< prev
next >
Wrap
Text File
|
1993-09-09
|
30KB
|
791 lines
ScreenManager by Bernhard M÷llemann
all rights reserved
Hilfsprogramm zum Verwalten von Public-Screens
Version V1.31
ScreenManager (SM) ist ein kleines CLI-Programm, um Public-Screens zu
÷ffnen, schlie▀en oder noch andere Dinge zu tun. Die Screens k÷nnen
mit frei wΣhlbarer Aufl÷sung und Farben ge÷ffnet werden. Auch die
DrawInfo, die bestimmt, welche Farbe fⁿr Glanzeffekte verwendet wird,
ist wΣhlbar.
SM kann aber auch bestimmte Screens zum System-Default-Screen machen
und die anderen Public-Screen-Modes Σndern. Au▀erdem ist es m÷glich,
sich eine Liste aller Screens im System ausgeben zu lassen oder sich ⁿber
Aufl÷sung und andere Eigenschaften eines Screens zu informieren.
Diese Anleitung gliedert sich in 6 Teile:
Copyright
CLI
Beispiele
Workbench
HotKeys
Schlu▀
Das Copyright _mu▀_ jeder lesen! Wer schnell etwas ausprobieren
will, sollte danach einfach die Beispiele durchprobieren. Die
ernsthaften Anwender kommen allerdings nicht um die Lektⁿre der
CLI-Optionen herum.
Copyright
---------
Das Programmpaket ScreenManager ist Copyright 1993 Bernhard M÷llemann.
Alle Rechte vorbehalten.
Die Benutzung des Programms ScreenManager geschieht auf eigenes
Risiko. Falls durch die Benutzung des Programms irgendein Schaden
entsteht, kann der Autor dafⁿr nicht haftbar gemacht werden.
Dieses Programm ist frei kopierbar, solange folgende Regeln eingehalten
werden:
╖ ScreenManager darf nur als Ganzes verbreitet werden. Es mⁿssen folgende
Dateien in dieser Anordnung kopiert werden:
SM/ScreenManager
SM/ScreenManager.info
SM/SM.doc
SM/SM.anl
SM/SM.ver
SM/SM.doc.info
SM/SM.anl.info
SM/SM.ver.info
SM.info
SM.displayme
╖ Das Paket darf nur in ungepackter Form oder als LhA-Archiv verbreitet
werden. Das LhA-Archiv mu▀ als SM_1_31.lha oder SM.lha verbreitet hei▀en.
╖ Weder das Archiv noch eine der Dateien dⁿrfen verΣndert werden. Einzige
Ausnahme ist das Entfernen von Dateien, die nicht zum Archiv geh÷ren.
╖ Es darf kein Gewinn mit dem Verkauf, Vertrieb oder Kopieren des
Programms erwirtschaftet werden.
╖ Es darf ausschlie▀lich auf folgenden Public-Domain Disketten
verbreitet werden:
AmigaLibDisks von Fred Fish
AUGS (Amiga User Group Switzerland)
AmigaJUICE
SAUG (Saarbrⁿckener Amiga User Group)
Time
╖ Es darf nicht ohne meine Einwilligung auf CD-ROMs verbreitet
werden.
Alle, die eine der oben ausgeschlossenen Formen der Verbreitung
wⁿnschen, mⁿssen eine schriftliche Erlaubnis des Autors haben.
Diese gibt es bei:
Bernhard M÷llemann
Luisenstra▀e 17
76137 Karlsruhe
Germany
CLI
---
Wie gesagt, lΣ▀t sich mit dem ScreenManager das "Screen-System" des
Amiga kontrollieren. Es ist noch nicht m÷glich, das mit der Maus zu
machen. Eine GUI ist am Entstehen, aber noch nicht fertig.
Da es Public-Screens erst ab OS2.0 gibt, ist dieses natⁿrlich
Voraussetzung. Der ScreenManager sollte jedoch auch mit h÷heren
Betriebssystemversionen laufen.
Bliebe eigentlich nur noch zu sagen, da▀ der ScreenManager auch
resi(dent) gemacht werden kann!
Es gibt sechs verschiedene Aufgaben, die der ScreenManager l÷sen kann:
╓ffnen von Screens
Schlie▀en von Screens
Informationen ⁿber Screen oder Graphikmodus liefern
Liste der Graphikmodi ausgeben
Schon ge÷ffnete Screens manipulieren
Globale Einstellungen Σndern
Das geschieht ⁿber jeweils einen Aufruf mit einer oder mehreren der
folgenden Optionen (bitte nicht erschrecken!):
NAME: Name des Screens
OPEN: einen neuen Screen ÷ffnen
CLOSE: einen bestimmten Screen schlie▀en
INFO: gibt Infos ⁿber einen Screen aus
LIST: listet Screens oder Modi auf
EXPERT/FORCE: gibt mehr Infos aus und schaltet einige Abfragen ab
QUIET: unterdrⁿckt Fehlermeldungen im CLI
TITLE: Screentitel bei OPEN
DEPTH/PLANES: Anzahl der Bitplanes bei OPEN
MODE: Aufl÷sung bei OPEN. Der Name des ScreenModes
DISPID: alternativ zu MODE ist dies die DisplayID eines neuen
Screens
SIZE/POS: Gr÷▀e des Screens bei OPEN und Position beim Bewegen
DISPCLIP: Gr÷▀e des sichtbaren Screenbereichs bei OPEN
COLORS: Farben bei OPEN.
PENS: Farbnummern fⁿr DrawInfo
NODRAG: Der Screen kann nicht mit der Maus bewegt werden
EXCLUSIVE: Der Screen wird immer allein dargestellt
INTERLEAVED: verlangt Interleaved BitMaps fⁿr diesen Screen
PARENT: Gibt einen Parent-Screen an, zu dem dieser ein Child wird
FONT: Font, der bei OPEN vom Screen benutzt werden soll
FONTSIZE: Gr÷▀e des obigen Fonts
CLOSEGAD: versieht Screen mit einem Closegadget
AUTOCLOSE: schlie▀t Screen automatisch beim Schlie▀en des letzten
Fensters
CX_TOFRONT: HotKey, der den Screen nach vorne bringt
CX_DEFAULT: HotKey, der den Screen zum System-Default-Screen macht
CX_PRIORITY: PrioritΣt, auf der die HotKeys eingeklinkt werden
TOFRONT: Screen nach vorne bringen
TOBACK: Screen nach hinten bringen
SHANGHAI: Shanghai-Modus einschalten
NOSHANGHAI: Shanghai-Modus ausschalten
POPPUB: PopPub-Modus einschalten
NOPOPPUB: PopPub-Modus ausschalten
DEFAULT: Screen zum System-Default-Screen machen
Das ist ziemlich viel und kompliziert dazu. Aber im Prinzip lassen
sich ja nur sechs verschiedene Sachen damit machen, der Rest sind
Parameter dafⁿr.
1.1) OPEN
╓ffnet einen neuen Screen. Wenn der Screen schon existiert, bekommt
man eine entsprechende Fehlermeldung serviert. Folgende Argumente
k÷nnen bei OPEN noch angegeben werden:
1.1.1) NAME: Der Name des Screens.
Unter diesem Namen wird der Screen als Public-Screen angemeldet. Ist
kein TITLE angegeben, wird der Name auch als Titel verwendet. Der NAME
mu▀ angegeben werden.
1.1.2) TITLE: Der Screentitel.
Das ist der Text, der in der Titelzeile des Screens zu sehen ist.
Sichtbar ist er allerdings nur dann, wenn das aktive Fenster keinen
eigenen Titel setzt.
1.1.3) DEPTH/PLANES: Tiefe des Screens.
Sie legt hauptsΣchlich fest, wieviele verschiedene Farben dargestellt
werden k÷nnen - es sind 2^DEPTH. Fⁿr jeden Graphikmodus gelten
bestimmte Grenzen fⁿr DEPTH.
Werden sie ⁿberschritten, gibt es eine entsprechende Fehlermeldung.
Die Voreinstellung wird aus dem Default-Screen kopiert.
1.1.4) MODE: legt den Grafikmodus fest.
Hier gibt man - analog zu den Bezeichnungen in Prefs/ScreenMode - den
Namen der Aufl÷sung an. Dabei ist es nicht n÷tig, sich an die Gro▀-/
Kleinschreibung zu halten.
Da Commodores KreativitΣt so weit geht, da▀ in jeder neuen OS-Release
die Display-Modes auch neue Namen erhalten, kann der Mode auch als
Pattern angegeben werden. Es wird dann mit der pattern.library gesucht,
wenn Mode nicht auf Anhieb gefunden wird.
So lΣ▀t sich der Highres-Mode mit Zeilensprung in PAL recht zuverlΣssig
mit MODE=PAL:Hi#?lace#? wΣhlen 8-)
Wer Modi, die keinen Namen haben, verwenden m÷chte, gibt einen String
an, in dem jeder Buchstabe fⁿr eine bestimmte Eigenschaft steht. Wie
diese kombiniert werden k÷nnen, und welche ⁿberhaupt verfⁿgbar sind,
hΣngt von Graphikhardware und Monitor ab. Bei ungⁿltigen Eingaben
wird eine entsprechende Fehlermeldung ausgegeben.
Die einzelnen Buchstaben stehen fⁿr:
H: Hires (Default: Lores)
L: Lace (Default: Kein Interlace)
S: Superhires
E: Extrahalfbright
V: VGA
P: Productivity
A: A2024 mit 10Hz
F: A2024 mit 15Hz
X: HAM
Der gewⁿnschte Modus wird einfach durch Hintereinanderschreiben der
einzelnen Buchstaben angegeben - z. B. MODE=SL fⁿr SuperHires-Lace
Der Default-Mode wird vom Default-Public-Screen kopiert.
1.1.5) DISPID: DisplayID des zu ÷ffnenden Screens.
Sie kann alternativ zu MODE angegeben werden. Es darf allerdings nur
MODE oder DISPID aufgefⁿhrt sein, nicht beides.
Gⁿltige Werte fⁿr eine DisplayID sind in graphics/displayinfo.h zu
finden, vorausgesetzt, der entsprechende Monitor steht zur Verfⁿgung.
(Die Liste gibt auch "ScreenManager LIST DISPID" aus.)
Da der ScreenManager keine DualPlayfield-Screens unterstⁿtzt,
werden entsprechene DisplayIDs nicht akzeptiert.
Die DISPID mu▀ hexadezimal angegeben werden. Es dⁿrfen $ oder 0x
davor stehen.
1.1.6) SIZE: Gr÷▀e des Screens in Pixeln.
Voreingestellt ist Overscan-Text. Die Gr÷▀e wird in dem Format
LEFT,TOP,WIDTH,HEIGHT angegeben.
Da WIDTH und HEIGHT wohl ÷fter gebraucht werden als LEFT und TOP,
gelten, wenn nur zwei Werte angegeben sind, diese als WIDTH und
HEIGHT. Zur besseren Lesbarkeit k÷nnen sie auch als WIDTH╫HEIGHT
statt WIDTH,HEIGHT angegeben werden.
Um die Overscan-Gr÷▀en bequemer handhaben zu k÷nnen, kann man auch
die Overscan-Bereiche, die das System anbietet, namentlich angeben.
Erlaubte Overscan-Namen sind:
OSCAN_NORM Kein Overscan, Hardware-Default. Was C= offiziell
als Aufl÷sung angibt.
OSCAN_TXT Text-Overscan, wird in Prefs eingestellt (Text auch in
Ecken noch lesbar). OSCAN_TEXT ist auch erlaubt.
OSCAN_STD Standard-Overscan, wird in Prefs eingestellt (Bild fⁿllt
gerade Monitor aus). OSCAN_STANDARD ist auch erlaubt.
OSCAN_MAX Maximaler Overscan, wird durch Hardware festgelegt
Die tippfaulen Leute k÷nnen den _ oder das OSCAN_ auch weglassen.
Um von diesen Werten abweichende Gr÷▀en zu erhalten, schreibt man
hinter den Overscan - durch einen Doppelpunkt getrennt - eine
Gr÷▀enangabe. In diesem Fall wird der entsprechende Overscan benutzt
und die Gr÷▀enangaben werden auf die Overscan-Gr÷▀e _addiert_.
Fⁿr Puristen:
[[OSCAN[_]](NORM|TXT|TEXT|STD|STANDARD|MAX)[:]][[left,top,]width(,|x)height]
Also sieht eine fertige SIZE-Angabe z.B. so aus:
SIZE=OSCAN_STD:-10,-10,+20,+20
Das ergibt einen Screen, bei dem die Gr÷▀e den Standard-Overscan in
jeder Richtung um 10 Pixel ⁿberragt.
1.1.7) DISPCLIP: Gr÷▀e des sichtbaren Bereichs des Screens.
Hier gilt das gleiche Format wie fⁿr SIZE.
1.1.8) COLORS: legt die Farben als RGB-Informationen fest.
Sie werden als 3- oder 6-stellige Hexadezimalzahlen eingegeben
und durch Komma getrennt. In _diesem_ Format darf kein fⁿhrendes
$ oder 0x auftauchen. Ein Screen mit schwarz und wei▀ wird dann
so angegeben:
COLORS=000,FFF oder COLORS=000000,FFFFFF
Um mehr als 8 Bits pro Farbe angeben zu k÷nnen, werden die
einzelnen Farbanteile durch den Doppelpunkt getrennt. _Dabei_
werden die drei Zahlen als Dezimalzahlen interpretiert,
solange kein 0x oder $ davorsteht.
Obiger Screen k÷nnte also auch so angegeben werden:
COLORS=0x0:0x0:0x0,$FFFFFFFF:$FFFFFFFF:$FFFFFFFF oder
COLORS=0:0:0,4294967296:4294967296:4294967296
Eine Farbe hat also dieses Format:
RGB |
RRGGBB |
[$|0x] RRRRRRRR ':' [$|0x] GGGGGGGG ':' [$|0x] BBBBBBBB
Da es bereits Farbtabellen in einem Σhnlichen Format gibt
(X Window System), diese aber i. a. nur 8 Bits umfassen, gibt
es eine Erkennung fⁿr diesen Fall: Sind alle 3 Farbanteile <256,
wird von einer 24 Bit-Palette ausgegangen und die Farbanteile
entsprechend von 8 auf 32 Bits aufgeweitet.
1.1.9) PENS: Farbstifte, die fⁿr 3D-Darstellung benutzt werden.
Dabei ist jeder Stift fⁿr bestimmte Effekte vorgesehen. Eine nΣhere
ErlΣuterung ist in dem Include-File intuition/screens.h bei der
Beschreibung der DrawInfo.Pens zu finden.
Jedes Zeichen wird als (hexadezimale) Farbnummer der bei COLORS
angegebenen Farben interpretiert. Daraus folgt, da▀ fⁿr die Stifte
nur die ersten 16 Farben zur Verfⁿgung stehen. Wer _wirklich_ mehr
braucht, kann mir ja schreiben.
Man mu▀ nicht alle Stifte angeben, aber man mu▀ alle Stifte, die
_vor_ einem gewⁿnschten Stift liegen, spezifizieren.
Fⁿr die Farbstifte gilt:
Stift Bezeichnung wird verwendet fⁿr ...
1 DETAILPEN Schrift (1.3-kompatibel)
2 BLOCKPEN Fⁿlloperationen (1.3-kompatibel)
3 TEXTPEN normale Beschriftungen
4 SHINEPEN helle Kanten an 3D-Objekten
5 SHADOWPEN dunkle Kanten an 3D-Objekten
6 FILLPEN Hintergrund aktivierter Elemente \ z.B. aktiver
7 FILLTEXTPEN Text auf aktivierten Elementen / Fensterrahmen
8 BACKGROUNDPEN Hintergrund - mu▀ auf 0 gesetzt werden
9 HIGHLIGHTTEXTPEN hervorgehobene Beschriftungen
Folgende Pens sind erst ab 3.0 verfⁿgbar
10 BARDETAILPEN Text in Screentitle und Default fⁿr Menⁿtext
11 BARBLOCKPEN Hintergrund fⁿr Screentitle und Menⁿ
12 BARTRIMPEN Farbe der Zeile unter Screenbar
Das klingt ziemlich kompliziert und das Ergebnis ist auch nicht immer
ganz vorhersehbar. Am besten fΣngt man mit einem der unten aufgefⁿhrten
Beispiele an und modifiziert es, dann bekommt man schnell ein Gefⁿhl
dafⁿr.
1.1.10) NODRAG: Dieses Flag verhindert ein Verschieben des Screens.
Er kann dann nicht mehr mit der Maus bewegt werden. Dieses Feature
ist erst ab OS 3.0 m÷glich.
1.1.11) EXCLUSIVE: Screens mit dieser Eigenschaft beanspruchen immer
den ganzen Bildschirm fⁿr sich. Sie k÷nnen nicht verschoben werden
und sie sind auch nie im Hintergrund zu sehen, wenn ein anderer
Screen heruntergezogen wird.
Auch dieses Flag ist erst ab OS3.0 m÷glich.
1.1.12) INTERLEAVED: Fordert fⁿr diesen Screen Interleaved BitMaps
an. Diese sollen das Scrolling beschleunigen. (Ab OS3.0)
1.1.13) PARENT: Gibt den Namen des Parent-Screens fⁿr diesen Screen an.
Ab OS3.0 existieren Parent- und Child-Screens. Dabei geh÷ren zu einem
Parent-Screen ein oder mehrere Childs. Child-Screens k÷nnen nur
innerhalb des Parent-Screens bewegt werden. Auch nach vorne oder
hinten k÷nnen ein Parent-Screen und seine Child nur als Gruppe bewegt
werden. Wird bei einen Child-Screen NODRAG gesetzt, ist er lediglich
relativ zu seinem Parent fixiert.
1.1.14) FONT: Font, der dann Default-Font des Screens wird.
Das kann auch ein proportionaler Font sein. Konnte der Font nicht
gefunden werden, wird der Screen trotzdem mit dem Default-Font
des Systems ge÷ffnet! (Dieser Font wird mit dem Voreinstellungsprogramm
SYS:Prefs/Font gesetzt.)
Das .font am Ende ist optional. Au▀erdem kann die gewⁿnschte Gr÷▀e X
auch mit .X angehΣngt werden: z. B. FONT=diamond.12
1.1.15) FONTSIZE: Gr÷▀e des obigen Fonts.
Hier kann so ziemlich alles angegeben werden, da die
diskfont.library im Zweifelsfalle einen Font anderer
Gr÷▀e entsprechend skaliert.
Diese Option gibt hⁿbsche Effekte mit dummen Programmen!
1.1.16) CLOSEGAD: HΣngt ein Closegadget an den Screen.
Damit wird ein Schlie▀symbol (Closegadget) in der linken oberen Ecke
des Screens eingerichtet. Man kann dann einfach per Mausklick den
Screen wie ein Fenster schlie▀en.
1.1.17) AUTOCLOSE: Schlie▀t den Screen automatisch nach Benutzung.
Ist diese Option angegeben, wird der Screen nach dem Verschinden des
letzten Fensters geschlossen.
1.1.18) CX_TOFRONT: Hotkey, um den Screen nach vorne zu bringen.
Hiermit kann man einen Hotkey (keine hei▀e Taste, sondern eine
Abkⁿrzung) definieren, mit dem der Screen bei Bedarf in den
Vordergrund gebracht werden kann.
Die Definition entspricht dem Standard der commodities.library. Wie
eine solche Tastenkombination beschrieben wird, ist weiter unten
erlΣutert.
1.1.19) CX_DEFAULT: Hotkey, um den Screen zum System-Default-Screen
zu machen.
Analog zu obigem ist das ein Hotkey, mit dem der Screen zum System-
Default-Screen erklΣrt werden kann. Auch hier gelten die weiter unten
nochmal aufgefⁿhrten Definitionen der commodities.library.
1.1.20) CX_PRIORITY: PrioritΣt fⁿr obige Hotkeys.
Wenn sie nicht angegeben ist, wird ein Default von 0 benutzt.
1.1.21) Weitere Optionen
ZusΣtzlich kann man noch die Optionen
SHANGHAI, NOSHANGHAI, POPPUB, NOPOPPUB, DEFAULT, TOFRONT oder TOBACK
angeben. Eine nΣhere Beschreibung folgt noch, da diese auch verwendet
werden k÷nnen, ohne einen Screen zu ÷ffnen.
1.1.22) FORCE/EXPERT: Schaltet einige Sicherheitsabfragen aus.
In diesem Modus sind die Tests, ob die Hardware des Rechners die
angegebenen Gr÷▀en fⁿr SIZE, DISPCLIP und DEPTH ⁿberhaupt darstellen
kann, ausgeschaltet. Wenn der Rechner dann Mⁿll anzeigt oder gar
abstⁿrzt, bitte KEINEN Bugreport an C= oder mich!
1.1.23) QUIET: unterdrⁿckt Fehlermeldungen
Mit diesem Schlⁿsselwort werden fast alle Fehlermeldungen, die
normalerweise im CLI ausgegeben werden unterdrⁿckt. Dadurch
wird verhindert, da▀ ein bislang geschlossenes Console-Fenster
aufgeht, wenn man z. B. mit SM OPEN <scr> >NIL: QUIET einen evt.
schon offenen Screen ÷ffnen m÷chte.
1.2) CLOSE
Schlie▀t einen vorhandenen Screen.
1.2.1) NAME: Name des Screens.
Die Gro▀-/Kleinschreibung mu▀ nicht korrekt sein. Sind aber mehrere
Screens da, die passen k÷nnten, wird der erste genommen, der gefunden
wird. Ist der NAME richtig geschrieben, wird _immer_ der
entsprechende Screen genommen.
Wenn man Angela Schmidts pattern.library (Fish 625) installiert hat,
kann man sogar ein Pattern angeben - insbesondere wo* fⁿr Workbench!
Im Moment gibt es drei spezielle Namen:
* steht fⁿr den Screen, auf dem die Console dieses Prozesses liegt
# steht fⁿr den Public-Screen, der vorne liegt
. steht fⁿr den System-Default-Screen
Diese Konventionen fⁿr den Namen gelten ⁿberall, au▀er natⁿrlich bei
OPEN.
1.2.2) FORCE: Schlie▀t auch fremde Screens.
Damit k÷nnen auch Public-Screens, die weder vom ScreenManager noch von
der Workbench stammen, geschlossen werden.
Allerdings ist dann das Programm, welches sie ge÷ffnet hat, nicht
unbedingt darⁿber informiert. Wenn es spΣter versucht, ein Fenster auf
diesem Screen zu ÷ffnen, kommt es zum Absturz. Auch kann es sein, da▀
zum Screen geh÷rige Resourcen (z. B. sein Font) nicht freigegeben werden.
1.2.3) QUIET: unterdrⁿckt Fehlermeldungen
Mit diesem Schlⁿsselwort werden fast alle Fehlermeldungen, die
normalerweise im CLI ausgegeben werden, unterdrⁿckt. Dadurch
wird verhindert, da▀ sich ein bislang geschlossenes Console-Fenster
÷ffnet, wenn man z. B. mit SM CLOSE <scr> QUIET einen evt. schon
geschlossenen Screen schlie▀t.
1.3) LIST
Gibt eine Liste der Screens oder Aufl÷sungen aus.
1.3.1) <ohne Parameter>: Zeigt die Screenliste an.
Ausgegeben werden Name, Titel, Aufl÷sung, Farben und Anzahl der
Visitor-Fenster bzw. Locks des jeweiligen Screens.
Dahinter steht <SM>, wenn der Screen vom ScreenManager ge÷ffnet wurde.
Es kann dort auch noch DEFAULT stehen, wenn es der System-Default-Screen
ist, oder PRIVATE, wenn dieser Screen im Moment nicht ÷ffentlich ist.
Ist das Shell-Fenster zu schmal, wird die Ausgabe zweizeilig formatiert.
1.3.2) DISPID: Zeigt sΣmtliche Aufl÷sungen an.
Es wird eine Liste aller Darstellungsmodi, die dem System bekannt
sind, ausgegeben.
Es stehen, wenn vorhanden, auch der Name und die Verfⁿgbarkeit dabei.
1.3.3) MODE: Zeigt Aufl÷sungen an.
Gibt eine Liste der Darstellungsmodi, die dem System namentlich
bekannt sind, aus und zeigt deren Verfⁿgbarkeit an.
Hier ist es erlaubt ein Pattern anzugeben, um die gelisteten Modi
einzuschrΣnken. Zum Beispiel SM LIST MODE PAL:#?
1.4) INFO
Gibt Informationen ⁿber einen Screen oder einen Darstellungsmodus aus.
1.4.1) <ohne Parameter>: Druckt die momentan gⁿltigen Public-Screen-Modes
aus.
1.4.2) NAME: Zeigt Eigenschaften dieses Screens.
Es werden z. B. seine Aufl÷sung und Farbanzahl ausgegeben. Auch hier
gelten die bei CLOSE erwΣhnten Sonderzeichen.
1.4.3) DISPID/MODE: Gibt Infos ⁿber den Darstellungsmodus aus.
Es sind z. B. maximale Farbanzahl und minimale/maximale Gr÷▀e eines
solchen Screens dabei.
Auch hier kann mit einem Pattern versucht werden, dem Tippfehler ein
Schnippchen zu schlagen.
1.4.4) EXPERT: Gibt etwas mehr Infos aus.
Diese Option kann bei allen Parametern von INFO zusΣtzlich angegeben
werden. Es werden dann die Strukturen NameInfo, DisplayInfo,
DimensionInfo und MonitorInfo komplett angezeigt.
1.4.5) QUIET: unterdrⁿckt Fehlermeldungen.
Mit diesem Schlⁿsselwort werden fast alle Fehlermeldungen, die
normalerweise im CLI ausgegeben werden unterdrⁿckt. Dadurch
wird verhindert, da▀ ein bisher geschlossenes Console-Fenster
aufgeht, wenn man z. B. so testet, ob ein Screen schon existiert:
ScreenManager >NIL: INFO MyScreen QUIET
If ERROR
...
EndIf
1.5) Ge÷ffnete Screens manipulieren.
Folgende Optionen modifizieren die Modes eines vorhandenen
Public-Screens. Dafⁿr mu▀ natⁿrlich auch dessen Name angegeben sein.
Auch hier gelten wieder die Abkⁿrzungen, die bei CLOSE erlΣutert
wurden.
All diese Optionen k÷nnen natⁿrlich auch beim ╓ffnen eines neuen
Screens angegeben werden.
1.5.1) COLORS: NachtrΣgliches ─ndern der Farben.
Damit kann die Farbpalette eines Screens im Nachhinein geΣndert
werden. Die genaue Beschreibung des Formats ist unter OPEN (1.1.8)
zu finden.
Achtung! Werden die Farben des Workbench-Screens geΣndert, bekommt
der IPrefs-Demon das nicht mit - genausowenig wie Intuition selber.
Es kann dann zu "Effekten" bei Benutzung von Prefs/Palette kommen.
1.5.2) POS: Setzt die Screenposition neu.
Damit kann die Position eines Screens nachtrΣglich geΣndert werden.
Das Format ist "POS=x,y".
Screens, die vom Eigentⁿmer mit dem Attribut NODRAG versehen
wurden, um ein Verschieben zu verhindern, k÷nnen nur unter Angabe
von FORCE bewegt werden.
1.5.3) PLANES: Setzt die Anzahl der Planes des Screens neu.
Diese Option erm÷glicht es, die Anzahl der Planes des Screens zu erh÷hen
oder zu reduzieren. Sie wird nur zusammen mit FORCE akzeptiert - sonst
wird lediglich eine Warnung ausgegeben.
Da nicht bekannt sein kann, ob die Gr÷▀e der BitMap-Struktur, in der
fⁿr jede Plane ein Zeiger stehen mu▀, fⁿr die verlangte Anzahl der
Planes ausreicht, _kann_ es passieren, da▀ bei Erh÷hung der Planes
fremder Speicher ⁿberschrieben wird!!! Also bitte _mehr_ als
vorsichtig sein.
Unter OS V3.0 oder h÷her ist es nicht m÷glich die Anzahl der Planes zu
erh÷hen, da die vom OS bereits geholte Colormap wohl zu klein ist.
1.5.4) DEFAULT: Screen zum System-Default-Screen machen.
1.5.5) TOFRONT: Screen nach vorne bringen.
1.5.6) TOBACK: Screen nach hinten bringen.
1.5.7) CX_TOFRONT: ─ndert den Hotkey zum Nach-vorne-bringen des Screens.
Mit CX_TOFRONT="" wird er abgeschaltet.
1.5.8) CX_DEFAULT: ─ndert den Hotkey, der den Screen zum System-Default-
Screen macht. Auch er lΣ▀t sich mit dem Leerstring ausschalten.
1.6) Globale Einstellungen ─ndern.
Diese Optionen beeinflussen globale Einstellungen und k÷nnen auch
ohne Screen angewandt werden:
1.6.1) SHANGHAI: Shanghai-Mode einschalten.
Im Shanghai-Modus gehen auch die Fenster, die frⁿher auf der Workbench
aufgingen, auf dem System-Default-Screen auf.
Damit kann man vor allem alte Programme, die noch nichts ⁿber das
Konzept des Default-Screens wissen, von der Workbench fernhalten.
1.6.2) NOSHANGHAI: Shanghai-Mode ausschalten.
1.6.3) POPPUB: PopPub-Mode einschalten.
In diesem Modus kommt der Screen nach vorne, sowie ein Fenster darauf
ge÷ffnet wird.
1.6.4) NOPOPPUB: PopPub-Mode ausschalten.
Beispiele
---------
Hier noch ein paar Beispiele:
ScreenManager OPEN BlueScreen
DISPID=$00029004 PLANES=3 PENS=171657404 FONT=courier.13
SIZE=OSCAN_TEXT:+100,+100 DISPCLIP=OSCAN_TEXT
COLORS=13B,AAC,D30,FFF,CC2,015,7AF,13F
DEFAULT CLOSEGAD
ScreenManager OPEN NobelScreen
PLANES=3 PENS=121657404
COLORS=9A6100,210:220:255,0533CC,0xFF:0xFF:0x14,DC0,730,F83,C30
CX_PRI=10 CX_TOFRONT="lcommand s" CX_DEFAULT="lcommand shift s"
DEFAULT SHANGHAI POPPUB CLOSEGAD
ScreenManager OPEN ss TITLE NessieScreen
MODE=PAL:[Hh]i*[Ll]ace* PLANES=2 SIZE=STD:0╫0 PENS=021123103
COLORS=69A,FEE,002,F7C
DEFAULT SHANGHAI CLOSEGAD CX_TOFRONT "LCommand s" POPUP
ScreenManager OPEN SimpleWB
DEFAULT SHANGHAI POPPUB
ScreenManager OPEN Child
SIZE=TEXT:+40,+40,-80,-80
CLOSEGAD PARENT SimpleWB
ScreenManager LIST
ScreenManager LIST DISPID
ScreenManager INFO DISPID=$00008020 EXPERT
ScreenManager CLOSE Simple*
Diese Kommandos mⁿssen in jeweils _einer_ Zeile eingegeben werden.
Um auf einem solchen Screen Fenster ÷ffnen zu k÷nnen, mu▀ man natⁿrlich
ein Programm haben, das sich nicht krampfhaft an die Workbench klammert,
sondern seine Fenster auf dem System-Default-Screen ÷ffnet. Das tun
zumindest die Voreinstellungseditoren Time und Font sowie CON: (und
fΣlschlicherweise IconEdit *Σrger*).
Ein Console-Window kann aber auch auf einem Screen, der _nicht_
System-Default-Screen ist, aufgehen:
CON:0/15/640/185/MeinFenster/CLOSE/SCREENNobelScreen.
Der Display-Handler der WShell kann das natⁿrlich auch.
Workbench
---------
Damit die Freunde der Workbench nicht ganz leer ausgehen, kann der
ScreenManager auch die Merkmale (ToolTypes) als Argumente
interpretieren.
Die ToolTypes entsprechen den oben aufgefⁿhrten Kommandozeilenargumenten.
Es gibt allerdings ein paar Unterschiede:
NOSHANGHAI und NOPOPPUB
gibt es nicht mehr. Sie mⁿssen durch SHANGHAI=FALSE oder POPPUB=0 ersetzt
werden.
Es gibt einen zusΣtzlichen ToolType WINDOW. Das Argument wird als
Filename genommen, in den die Ausgaben z. B. bei LIST wandern. Als
File gilt natⁿrlich auch eine Fensterbeschreibung wie z. B.
CON:////ScreenManager-Output/CLOSE
Ist WINDOW nicht angegeben, wird kein Fenster ge÷ffnet und eventuelle
Fehler werden ⁿber Requester gemeldet.
Die Argumente mⁿssen, auch wenn sie Leerzeichen enthalten, ohne
Anfⁿhrungszeichen eingegeben werden, da im Gegensatz zur
Kommandozeile ja klar ist, wo das Argument aufh÷rt.
Wurde ein Projekt mit dem ScreenManager als Default-Tool angeklickt,
werden die ToolTypes des ScreenManager als Defaults genommen und dann
von denen des Projekts ⁿberschrieben.
So kann man sich beispielsweise fⁿr jeden Screen, den man oft benutzt
(bei mir ShellScreen und Workbench), ein Projekt mit NAME=<ScreenName>
anlegen und einen ScreenManager mit dem ToolType DEFAULT.
Klickt man jetzt erst auf das Projekt-Icon und dann zweimal mit gedrⁿckter
Shift-Taste auf den ScreenManager, wird der Screen <ScreenName> zum
System-Default-Screen.
Je nachdem, welches PΣrchen ich "doppelklicke", kann ich so den ShellScreen
oder den Workbench-Screen zum System-Default-Screen machen. Das Gleiche
geht z. B. auch mit POS - und fertig ist der WB-Klick-Baukasten.
Noch eine Bemerkung zur Workbench: Fehlermeldungen werden, wenn kein
Ausgabefenster mit WINDOW=... angegeben wurde, mit einem Requester gemeldet.
Leider kann es vorkommen, da▀ bei recht langen Fehlermeldungen, die durch
extrem lange Screennamen verursacht werden k÷nnen, die Layout-Routinen von
Intuition etwas durcheinandergeraten.
Hotkeys
-------
Fⁿr die, die den dicken Schuber gerade nicht greifbar haben, hier
noch die Sondertasten von Commodities V37. (kein Anspruch auf
VollstΣndigkeit 8-):
Events:
rawkey, rawmouse, event, pointerpos,
timer, newprefs, diskremoved, diskinserted
Gr÷▀tenteils nicht sehr sinnvoll, aber ganz lustig, wenn bei einem
DiskInsert der Screen mit der Shell nach vorne kommt. Au▀erdem ist
Timer noch ganz interessant, da man sonst keinen Qualifier allein
ansprechen kann. Aber natⁿrlich will ich das nicht empfehlen.
Allerdings bin ich der Meinung, da▀ sich jeder sein System kaputt-
konfigurieren darf, wie er will - nur beschweren darf er sich dann
nicht.
Qualifier:
lshift, rshift, capslock, control, lalt, ralt, lcommand, rcommand,
numericpad, repeat, relativemouse, shift, caps, alt, upstroke
Keys:
(midbutton, rbutton, leftbutton)
comma, space, backspace, tab, enter, return, esc, del
up,ádown, right, left
f1, f2, f3, f4, f5, f6, f7, f8, f9, f10
help
sowie alle normalen druckbaren Zeichen, die dann fⁿr sich selbst stehen
Eine Hotkey-Definition daraus sieht so aus:
[<Qualifier> <Qualifier> ... ] <Event>|<Key>
Da die Qualifier von der ausl÷senden Taste durch ein Leerzeichen getrennt
werden, mu▀ der ganze Ausdruck in Anfⁿhrungszeichen gepackt werden. Also
etwa so:
CX_TOFRONT="lcommand s"
CX_DEFAULT="lcommand shift s" oder CX_DEFAULT="lcommand S"
Um Hotkeys mit gro▀en Buchstaben ausl÷sen zu k÷nnen (wie die Alternative
des zweiten Beispiels), mu▀ dann natⁿrlich noch die Shift-Taste gedrⁿckt
werden (oder die KeyMap ist maximal mystisch...).
Schlu▀
------
Vielen Dank an Frank Neumann (Franky) fⁿr die englische ▄bersetzung.
Vielen Dank auch an Angela Schmidt fⁿr Bug-Reports und Anregungen.
Ich danke auch:
Frank Schwarz
Bernd Ernesti
Oliver Knorr
Bug-Reports, VerbesserungsvorschlΣge, Glⁿckwⁿnsche, Schokokugeln,
Flames und anderes (keine Briefbomben oder Raubkopien) an:
zza@rz.uni-karlsruhe.de
oder
Bernhard M÷llemann
Luisenstra▀e 17
76137 Karlsruhe
Germany