@DATABASE ScreenClock.guide
@MASTER "HELP:deutsch/ScreenClock.guide"
@$VER: ScreenClock_deutsch.guide 38.18 (04.03.95) by Thomas Igracki
@AUTHOR Thomas Igracki
@(c) by Thomas Igracki
@WIDTH 78

@NODE Main "ScreenClock Anleitung"

                                                   @{b}/@{ub}
                                @{b}ScreenClock v1.7  /@{ub} von Thomas Igracki
                            _____________________@{b}/@{ub}

                      @{"     AFD - C O P Y R I G H T     " link AFD-COPYRIGHT.de/Main}

       @{" Inhalt des Archivs           " link Archiv    } @{" Programmentwicklung          " link History}
       @{" Was macht das Programm?      " link WhatItIs  } @{" Wie kann man mich erreichen? " link Me     }
       @{" Aufruf des Programms         " link HowToStart} @{" Mögliche Fehlermeldungen     " link Errors }

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

    Diese Software unterliegt der "Standard Amiga FD-Software Copyright Note"
    Sie ist @{"GIFTWARE" link AFD-COPYRIGHT.de/Main 93} wie definiert in Absatz 4g. [...]
    Für mehr Informationen lies bitte "AFD-COPYRIGHT" (Version 1 oder höher).
@ENDNODE

@NODE Archiv "ScreenClock/Inhalt des Archivs"
@{LINDENT 3}
Folgende Dateien sollten sich in diesem Archiv befinden:

   @{b}env/ScreenClock@{ub}                --> Beispiel Environment-Variable
   @{b}help/deutsch/ScreenClock.guide@{ub} --> deutsche Dokumentation, AmigaGuide Format
   @{b}help/deutsch/AFD-COPYRIGHT.de@{ub}  --> deutscher COPYRIGHT-Text
   @{b}help/english/ScreenClock.guide@{ub} --> englische Dokumentation, AmigaGuide Format
   @{b}help/english/AFD-COPYRIGHT@{ub}     --> englischer COPYRIGHT-Text
   @{b}ScreenClock@{ub}                    --> das Programm für OS >= v38 (2.1)
   @{b}ScreenClock.info@{ub}               --> das WB-Piktogramm für ScreenClock
@ENDNODE

@NODE WhatItIs "ScreenClock/Was macht das Programm?"
@{LINDENT 3}
Dieses Programm zeigt in der Titeleiste (links neben dem TiefenSymbol)
des  jeweils  aktuellen  Bildschirms  das Datum und die Uhrzeit in der
aktuellen Sprache an! Sowie auf Wunsch den freien Speicher!

@{fg shine}@{b}Die Features sind:@{ub}@{fg text}
@{LINDENT 6}
- konfigurierbares @{"Datums- und Zeit-Format" link Arg_DateFormat}
- optionales anzeigen des @{"freien Speichers" link Arg_MemoryFormat}
- @{"ein-/ausschliesen von Bildschirmen" link Arg_Screens} die benutzt bzw. nicht benutzt
  werden sollen
- einstellbare @{"Update-Rate" link Arg_Delay} in der die Anzeige erneuert werden soll
- Benutzung einer "überwachten" Umgebungs-Varaiablen (@{b}SCREENCLOCK@{ub}),
  die beim Start und bei Verändern eingelesen wird
- Überwachung von @{b}ENV:SYS/locale.prefs@{ub}, um mitzukriegen, wann die
  Sprache verändert wird
- optional werden nur Public-Screens benutzt, siehe @{"OPS=OnlyPubScreens/T" link Arg_OPS}
- einstellbare Task Priorität, siehe @{"Pri=TaskPriority/K/N" link Arg_Pri}
- AutoScroll Screens werden unterstützt, siehe @{"AV=AlwaysVisible/T" link Arg_AV}
@{LINDENT 3}
Bei nochmaligen Starten wird @{b}ScreenClock@{ub} beendet.
@ENDNODE

@NODE HowToStart "ScreenClock/Aufruf des Programms"
@{LINDENT 3}
@{b}Start von einer Shell:@{ub}
   
   [Run] @{b}ScreenClock@{ub} @{"DF=DateFormat/K" link Arg_DateFormat},@{"MF=MemoryFormat/K" link Arg_MemoryFormat},
                     @{"Screens/K" link Arg_Screens},@{"D=Delay/K/N" link Arg_Delay},@{"Mem=Memory/T" link Arg_Memory},
                     @{"OPS=OnlyPubScreens/T" link Arg_OPS},@{"Pri=TaskPriority/K/N" link Arg_Pri},
                     @{"AV=AlwaysVisible/T" link Arg_AV}


@{b}Start von der Workbench:@{ub}

   Einfach das Piktogramm doppelklicken.
   Zur  Zeit  werden  keine  ToolTypes unterstützt, man sollte stattdessen
   die Umgebungsvariable benutzen!

@ENDNODE

@NODE Arg_DateFormat "ScreenClock/Argument"
@{LINDENT 3}
@{b}DF=DateFormat/K@{ub}
   Hier kann das Format für die Anzeige des Datums angegeben werden.
   Dabei sind folgende Platzhalter verfügbar (aus @{"Locale.FormatDate()" link Locale/FormatDate}):

      %a - abgekürzter Wochentag
      %A - Wochentag
      %b - abgekürzter Monatsname
      %B - Monatsname
      %c - das gleich wie "%a %b %d %H:%M:%S %Y"
      %C - das gleiche wie "%a %b %e %T %Z %Y"
      %d - Tageszahl mit führenden 0s
      %D - das gleiche wie "%m/%d/%y"
      %e - Tageszahl mit führenden Leerzeichen
      %h - abgekürzter Monatsname
      %H - Stunde mit 24-Stundenanzeige und führenden 0s
      %I - Stunde mit 12-Stundenanzeige und führenden 0s
      %j - Julian Datum
      %m - Monatszahl mit führenden 0s
      %M - Anzahl von Minuten mit führenden 0s
      %n - Ein Linefeed
      %p - AM oder PM Strings
      %q - Stunde mit 24-Stundenanzeige
      %Q - Stunde mit 12-Stundenanzeige
      %r - das gleiche wie "%I:%M:%S %p"
      %R - das gleiche wie "%H:%M"
      %S - Anzahl von Sekunden mit führenden 0s
      %t - Fügt ein TAB ein
      %T - das gleiche wie "%H:%M:%S"
      %U - Wochenzahl, Sonntag = erster Tag der Woche
      %w - Wochentagszahl
      %W - Wochenzahl, Montag = erster Tag der Woche
      %x - das gleiche wie "%m/%d/%y"
      %X - das gleiche wie "%H:%M:%S"
      %y - Jahr mit 2 Zeichen und führenden 0s
      %Y - Jahr mit 4 Zeichen und führenden 0s

   Voreingestellt ist: @{b}"%A %d-%h-%y %T"@{ub}.
   Das entspricht dieser Anzeige: @{b}Montag 09-Jan-95 18:22:57@{ub}.

   Wenn man während @{b}ScreenClock@{ub} läuft, diesen Paramater auf @{b}""@{ub} setzt, wird
   wieder der voreingestellte String benutzt!
@ENDNODE

@NODE Arg_MemoryFormat "ScreenClock/Argument"
@{LINDENT 3}
@{b}MF=MemoryFormat/K@{ub}
   Hier kann das Format für die Anzeige des freien Speichers angegeben
   werden.

   Es werden 3 Platzhalter (@{b}%ld@{ub} bzw. @{b}%lD@{ub}) unterstützt:
     - der 1. steht für den freien CHIP-Speicher in KB,
     - der 2. steht für den freien FAST-Speicher in KB und
     - der 3. steht für den gesammten freien Speicher in KB.

   Voreingestellt ist: @{b}" - C:%lD F:%lD"@{ub}.
   Das entspricht folgender Speicher-Anzeige: @{b}" - C:1.737 F:3.538"@{ub}.
   
   Wenn man während @{b}ScreenClock@{ub} läuft, diesen Paramater auf @{b}""@{ub} setzt, wird
   wieder der voreingestellte String benutzt!

   Man sollte darauf achten, daß das 1. Zeichen ein Leerzeichen o.ä. ist,
   da der erzeugte String direkt hinter dem Datum steht!
   Man kann natürlich auch an dem Datum ein Leerzeichen anfügen;-)

   Tip:
     Wenn man die Reihenfolge ändern möchte, muß man zwischen dem
     @{b}%@{ub} und dem @{b}ld@{ub} bzw. @{b}lD@{ub} Zeichen, ein @{b}<Position>$@{ub} benutzen!
     @{b}<Position>@{ub} gibt den Platzhalter an.

     Beispiel: MF = " Total: %3$lD (FAST = %2$lD, CHIP = %1$lD)"

     Wenn man z.B. nur den 3. Platzhalter benutzen will, muß man folgende
     Schreibweise benutzen: MF = "%0.0ld%0.0ld Total: %lD"!

     Siehe dazu auch @{"Locale/FormatString()" link "Locale/FormatString"}.

   Der Unterschied zwischen @{b}%ld@{ub} und @{b}%lD@{ub} ist, das beim zweiten das lokale Format
   benutzt wird.
@ENDNODE

@NODE Arg_Screens "ScreenClock/Argument"
@{LINDENT 3}
@{b}Screens/K@{ub}
   Gibt ein Muster (mit AmigaDOS Wildcards) für den Bildschirmtitel an.
   @{b}ScreenClock@{ub} erscheint dann nur auf diesen Bildschirmen!

   Da  mit dem 'defaultTitle' des Bildschirms verglichen wird, funktioniert
   die  Uhr  auch  wenn  ein anderes Programm seinen Fenstertitel im Screen
   anzeigt!
   
   Wird kein Muster angegeben, werden alle Bildschirme benutzt, die einen
   Titel besitzen (MuchMore z.B. nicht!).

   Wenn man während @{b}ScreenClock@{ub} läuft, diesen Paramater auf @{b}""@{ub} setzt, wird
   dieser Vorgang abgeschaltet!
   
   Tip1:
      Man sollte anstatt dem Stern @{b}*@{ub} lieber ein @{b}#?@{ub} benutzten, da der Stern
      in Verbindung mit einem @{b}"@{ub} noch andere Bedeutungen haben kann!

   Tip2:
      Wenn bestimmte Screens nicht benutzt werden sollen, muß man foldenden
      Pattern benutzen:  @{b}~(<TitelName>|<TitelName>)@{ub}

      Beispiel: SCREENS = "~(DosControl#?)"

      Wirkung : Der 'DosControl'-Screen wird nicht benutzt.
@ENDNODE

@NODE Arg_Delay "ScreenClock/Argument"
@{LINDENT 3}
@{b}D=Delay/N@{ub}
   Diese Zahl gibt an, in welchem Zeitabstand @{b}ScreenClock@{ub} die Anzeige
   erneuert.

   Anzahl von 1/50 Sekunden. Mindestens 10, maximal 100.

   Voreingestellt ist 50.
@ENDNODE

@NODE Arg_Memory "ScreenClock/Argument"
@{LINDENT 3}
@{b}Mem=Memory/T@{ub}
   Hier gibt man an, ob zusätzlich der freie Speicher (@{"MemoryFormat" link Arg_MemoryFormat})
   angezeigt werden soll (immer hinter dem Datum!).
   
   Anzeige an : @{b}Memory = ON@{ub} oder @{b}Mem = ON@{ub}
   Anzeige aus: @{b}Memory = OFF@{ub} oder @{b}Mem = OFF@{ub}
   
   Voreingestellt ist OFF.
   
   Das "@{b}=@{ub}" kann auch weggelassen werden.
@ENDNODE

@NODE Arg_OPS "ScreenClock/Argument"
@{LINDENT 3}
@{b}OPS=OnlyPubScreens/T@{ub}
   Hier gibt man an, ob nur (nicht private!) Public-Screens benutzt werden
   sollen.

   AN : @{b}OnlyPubScreens = ON@{ub} oder @{b}OPS = ON@{ub}
   AUS: @{b}OnlyPubScreens = OFF@{ub} oder @{b}OPS = OFF@{ub}

   Voreingestellt ist OFF.

   Das "@{b}=@{ub}" kann auch weggelassen werden.
@ENDNODE

@NODE Arg_Pri "ScreenClock/Argument"
@{LINDENT 3}
@{b}Pri=TaskPriority/K/N@{ub}
   Hier gibt man die Priorität von @{b}ScreenClock@{ub} an.

   Es werden nur Prioritäten zwischen -3 und +3 akzeptiert.

   Voreingestellt ist 0. 
@ENDNODE

@NODE Arg_AV "ScreenClock/Argument"
@{LINDENT 3}
@{b}AV=AlwaysVisible/T@{ub}
   Hiermit gibt man an, ob die Anzeige im sichtbaren Teil des Bildschirms
   (ON) oder immer links neben dem TiefenSymbol (OFF).
   
   @{b}AlwaysVisible = ON@{ub}  oder @{b}AV ON@{ub}  -> immer im sichtbaren Bereich!
   @{b}AlwaysVisible = OFF@{ub} oder @{b}AV OFF@{ub} -> immer links vom TiefenSymbol

   Voreingestellt ist ON!

   Das "@{b}=@{ub}" kann auch weggelassen werden.
@ENDNODE

@NODE Errors "ScreenClock/Fehlermeldungen"
@{LINDENT 3}
@{u}@{b}@{fg shine}Mögliche Fehlermeldungen während des Startens sind:@{fg text}@{ub}@{uu}
@{LINDENT 6}
@{fg shine}1@{fg text} : Der @{b}MsgPort@{ub} konnte nicht erstellt werden.
@{fg shine}2@{fg text} : @{b}Dos.AllocDosObject(Dos.rdArgs)@{ub} schlug fehl.
@{fg shine}3@{fg text} : Notify auf @{b}ENV:ScreenClock@{ub} schlug fehl.
@{fg shine}4@{fg text} : Notify auf @{b}ENV:SYS/locale.prefs@{ub} schlug fehl.
@{LINDENT 3}
Falls  die Umgebungsvariable oder die Shell-Argumente nicht geparsed werden
konnten, kommt eine entsprechende Fehler-Meldung.
@ENDNODE

@NODE History "ScreenClock/Programmentwicklung"
@{LINDENT 3}
@{b}Release 1.7:@{ub}
  38.18 (04.03.95): 
       Dok: Node @{" Was macht das Programm? " link WhatItIs} neu geschrieben.
       Dok: Node @{" Wie kann man mich erreichen? " link Me} verbessert.
       Fix: Unschöne Anzeigen, bei der der alte Text nicht richtig gelöscht wurde.
            [Berichtet von J.Frede]
            [Ich hatte nur ein "<" anstatt ein ">" benutzt;-(]
       Änd: Unter OS v38, wird mit den Farben 0 auf 1 gemalt.
            Das sollten nun endgültig die richtigen sein;-)
            Falls es immer noch nicht klappen sollte, werde ich in der nächsten
            Version wohl 2 neue Optionen (Front-, BackPen) einbauen;-)
            [Berichtet von T.Schwarz]
@{b}Release 1.6:@{ub}
  38.17 (01.03.95):
       Änd: Fehlermeldungen sind nun nur noch Nummern!
       Dok: Mögliche Fehlermeldungen erklärt.
  38.16 (26.02.95):
       Fix: Bei OPS=ON, wurden keine PubScreens erkannt. [berichtet von Hanno]
@{b}Release 1.5:@{ub}
  38.15 (16.02.95):
       Änd: Es wird nun nur noch direkt um Int.PrintIText() der BarLayer ge- bzw. unlockt.
       Dok: Start von der Workbench erklärt.
       Dok: Piktogramm beigelegt!
  38.14 (15.02.95):
       Änd: Unter OS v38, wird als Hintergrund die Farbe 2 und als Vordergrund die 1 benutzt.
            Das sollte nun endlich funktionieren!?
       Fix: Falls ein AutoScroll-Screen mit LeftEdge = 0 benutzt wird, wurde die x pos.
            so berechnet, als obs ein normaler Screen wäre.
  38.13 (14.02.95):
       Neu: Falls der Layer und der PubScreen am Ende des Programms gelockt waren,
            werden sie entlockt.
            Das kann (!) z.B. passieren, wenn ScreenClock während der Vorbereitungen
            zum Anzeigen des Datums durch ein Fehler unterbrochen wurde.
            Das sollte die seltenen 'Hänger' vermeiden!?
  38.12 (13.02.95): 
       Neu: Ein paar NIL-Checks eingebaut.
       Neu: Der aktuelle Screen wird vor dem Anzeigen, nochmals mit dem Screen
            verglichen, der am Anfang der Berechnungen aktuell war.
            Dadurch sollte das Programm bei nicht-PubScreens sicherer sein.
  38.11 (12.02.95): 
       Änd: Unter OS v38, wird nun der ShadowPen anstatt der ShinePen als
            Hintergrund benutzt.
  38.10 (11.02.95): 
       Neu: Option 'AV=AlwaysVisible' -> immer im sichtbaren Bereich?
            Default ist ON!
  38.9 (09.02.95): 
       Neu: Die Anzeige erscheint nun immer im sichtbaren Bereich!
            Wichtig für überbreite (AutoScroll) Screens!
       Dok: Beispiele zur Option @{"Screens" link Arg_Screens}
@{b}Release 1.4:@{ub}
  38.8 (29.01.95):
       Fix: Es wurden auch Screens benutzt die zwar einen Titel aber
            keine TitelLeiste hatten!
       Änd: Der Text wird nun mit Intuition.PrintIText() geschrieben, so daß
            seltene Farbveränderungen der Leiste nun nicht mehr vorkommen
            sollten, da der Front- und BackPen von dieser Proz. gesetzt wird!
       Änd: Dadurch gibts wieder nur noch eine Version (für OS 2.1)!
            Es wird auch nicht mehr auf die richtige OS Version geprüft!
       Fix: FreeScreenDrawInfo() wurde nicht gemacht;-(
       Änd: Es wird vorm Schreiben nicht mehr geprüft, ob ein nicht-öffent-
            licher Bildschirm noch da ist!
@{b}Release 1.3a:@{ub}
  38.7 (28.01.95):
       Fix: Es wird geprüft, ob der BarLayer schon ge'lock't ist.
            Wenn ja, dann wird nicht gewartet bis er frei ist!
@{b}Release 1.3:@{ub}
  38.6 (27.01.95):
       Neu: 'OPS=OnlyPubScreens/T' -> es werden nur PubScreens benutzt
       Neu: Falls der aktuelle Screen ein PubScreen ist, wird er während
            des Schreibens gelockt, damit er nicht geschlossen werden kann!
            Wenn nicht, wird vor Gfx.Text() nachgeguckt, ob er noch da ist!
       Fix: Eine 'unschöne' Anzeigen sollten nun nicht mehr vorkommen! 
       Neu: 'Pri=TaskPriority/K/N' -> Priorität des Task. -3 <= pri >= +3
       Neu: Notify auf 'ENV:sys/locale.prefs'
  38.5 (26.01.95):
       Fix: Es wird nun der Screen.barLayer vor dem Schreiben gelockt.
@{b}Release 1.2:@{ub}
  38.4 (13.01.95):
       Neu: Es sollten nun die richtigen Pens (wie der ScreenTitel) benutzt
            werden!
       Neu: Zwei veschiedene Versionen für OS2.x (>=v38) und O3.x (>=v39)
            Es wird beim Start auf die richtige OS Version geprüft!
       Fix: CloseLocale() wurde am Ende des Progs vergessen;-(
       Fix: Locale.FormatDate() hängt bei manchen Formaten (die abgekürzten!)
            ein 0X zuviel, dadurch fehlte bei den anderen das letzte Zeichen
            des Datums!
       Fix: Falls das Notify nicht klappte, wurde am Ende des Programms
            trotzdem Dos.EndNotify() aufgerufen.
       Ein paar Aufräumarbeiten.

@{b}Release 1.1:@{ub}
  38.3 (12.01.95):
       Fix: Das Neueinlesen der Parameter klappte nicht so gut.
       Neu: Bei MF = "" oder DF = "" werden die defaultFormate wieder gesetzt.
  38.2 (11.01.95):
       Neu: Die EnvVar wird bei Änderungen automatisch eingelesen!
       Änd: Option 'Memory' ist nun eine Toggle-Option, s. doku
  38.1 (09.01.95):
       Änd: Locale.FormatDate() anstatt Dos.DateToStr() und SPrintF().
            Daher auch der Aufstieg zur Version 38!
       Änd: 'Seconds/S' fällt deswegen weg.
       Neu: Option 'DF=DateFormat/K'   -> Format der Datums-/ZeitAnzeige
       Neu: Option 'MF=MemoryFormat/K' -> Format der SpeicherAnzeige
       Neu: Environmentvariable (ScreenClock) für die Parameter

@{b}Release 1.0:@{ub}
  37.3 (05.01.95):
       Neu: Option 'Memory/S' -> zeigt auch den Speicher an
       Änd: Einige interne Änderungen -> weniger Zeitverbrauch !?
  37.2 (03.01.95):
       Neu: Option 'Screen/K' - gibt ein Pattern für die Bildschirmtitel
            an die benutzt werden sollen!
       Neu: Es wird ein MsgPort eingerichtet, zum überprüfen, ob
            ScreenClock schon läuft.
  37.1 (02.01.95):
       Angefangen, da ich bemerkte, daß KCX bei mir nur deswegen läuft;-)


@{b}@{u}Erklärung der Abkürzungen:@{uu}@{ub}

  Neu: Es wurde etwas neues eingebaut.
  Änd: Es wurde etwas geändert.
  Fix: Es wurden Fehler verbessert.
  Dok: Es wurde etwas in der Anleitung geändert/verbessert.
@ENDNODE

@NODE Me "ScreenClock/Wie kann man mich erreichen?"
@{LINDENT 3}
   Falls ihr Verbesserungsvorschläge, irgendwelche Fragen, Bugreports usw.
   habt, dann könnt ihr mir schreiben, am besten per e-mail!

        Z-Netz: T.Igracki@BAMP.berlinet.in-berlin.de
        FIDO  : Thomas_Igracki%2:2410/103.40
        UseNet: lokai@cs.tu-berlin.de     -oder-
                t.igracki@bamp.berlinet.in-berlin.de (bevorzugt!)
        Post  : Thomas Igracki, Siegener Str. 34, Germany-13583 Berlin

   Falls ihr mir eine kleine (oder auch große!) Geldspende für meine Arbeit
   an @{b}ScreenClock@{ub} zukommen  lassen  wollt, dann schreibt mir, ich gebe euch
   dann meine Kontoverbindung!

   Viel Spaß mit dem Programm!
@ENDNODE
