/* $VER: SlideShow.pwx 1.3 (23.5.94)
**
** Ein relativ einfaches Diaschau-Programm.
** Um es benutzen zu können, muß ein Anzeigemodul
** ausgewählt sein. Unter Umständen kann es Schwierigkeiten
** bereiten, das Programm abzubrechen. Sollte dieser Fall
** eintreten, empfehlen wir, ein Shell-Fenster zu öffnen
** und den Befehl "hi" einzutippen. "hi" steht für "Halt
** interrupt" und bricht alle gerade laufenden ARexx-Programme
** ab. Das "hi"-Programm befindet sich üblicherweise in der
** "Rexxc"-Schublade Ihrer Systempartition.
**
** Geschrieben von Olaf Barthel
*/

/* Befehlsergebnisse zugänglich machen. */

options results

/* Fehler sollten abgefangen werden. */

options failat 100

/* Falls ein Abbruchsignal eingeht, soll aufgeräumt werden. */

signal on halt
signal on break_c
signal on break_d
signal on break_e
signal on break_f

/* Fensteraktivierungsoption merken. */

getattr application field activate

activation = result

/* Anzeigeoption merken. */

getattr settings field photoviewonly

viewonly = result

/* "Nur anzeigen" Option aktivieren. */

setattr settings field photoviewonly val off

/* Kontaktabzuginformationen der gerade eingelegten
 * Photo CD aulesen.
 */

getattr contactsheet name cd stem contactsheet

/* Soweit alles in Ordnung? */

if rc = 0 then do

	/* Fensteraktivierung abschalten. */

	setattr application field activate val on

	/* Benutzeroberfläche für Eingaben sperren. */

	lockgui

	/* Ein schwarzer Bildschirmhintergrund wird erzeugt. */

	backdrop on

	/* Fensteraktivierung einschalten. */

	setattr application field activate val off

	/* Alle Fotos anzeigen. */

	do i = contactsheet.first to contactsheet.last

		/* Das Foto wird in der Base/4-Auflösung geöffnet. */

		open number i size base4 hidden nodisplay

		/* Nach Fehler oder Abbruchmeldung schauen. */

		if rc > 0 then do
			if rc ~= 5 then do
				/* Fehlernummer auslesen. */

				fault photoworx.lasterror

				/* Fehlermeldung ausgeben. */

				requestnotify result
			end

			break
		end

		/* Name des eben geöffneten Fotos auslesen. */

		loadedproject = result

		/* Das Foto etwa fünf Sekunden lang anzeigen. */

		view project loadedproject timeout 5

		/* Das eben geladene Foto wird freigegeben.
		 * Hinweis: dies schließt auch alle anderen
		 * Projekte gleichen Namens.
		 */

		close project loadedproject force
	end

	/* Benutzeroberfläche wieder zugänglich machen. */

	unlockgui

	/* Der schwarze Bildschirmhintergrund wird abgeschaltet. */

	backdrop off
end; else do

	/* Fehlernummer auslesen. */

	fault photoworx.lasterror

	/* Fehlermeldung erzeugen. */

	if symbol('RESULT') == "VAR" then do
		message = "Es kann kein Kontaktabzug gelesen werden." result
	end; else do
		message = "Es kann kein Kontaktabzug gelesen werden."
	end

	/* Hinweis ausgeben. */

	requestnotify message
end

/* Funktionswerte wiederherstellen. */

setattr application field activate val activation
setattr settings field photoviewonly val viewonly

/* Dieses Programm beenden. */

exit 0

/* Zu dieser Stelle springt das Programm, falls ein
 * Fehler aufgetreten ist.
 */

halt:
break_c:
break_d:
break_e:
break_f:

	/* Benutzeroberfläche wieder zugänglich machen. */

	unlockgui

	/* Der schwarze Bildschirmhintergrund wird abgeschaltet. */

	backdrop off

	/* Funktionswerte wiederherstellen. */

	setattr application field activate val activation
	setattr settings field photoviewonly val viewonly

	/* Dieses Programm beenden. */

	exit 0
