/*
** Druck-, Vorschau, Sichern eines Etiketts mit Hilfe von WordWorth
** $VER: WWEtikett.brarexx V1.01 (18.08.98)
*/

PARSE ARG ARexxPort;

ADDRESS VALUE ARexxPort;
OPTIONS RESULTS;

WWVorlage	= "WWDokumente/Etikett.ww";
WWDokument	= "t:Etikett.ww";
WWPort		= "WORDWORTH."

LF					= '0a'x;							/* Zeilenvorschub				*/

Gefunden = 0;
DO i = 1 TO 20 WHILE(Gefunden = 0)
	IF show(ports, (WWPort || i)) THEN
		DO;
			Gefunden = 1;
			WWPort = WWPort || i;
		END;
END;

IF Gefunden = 0 THEN
	DO;
		ES_TITLE				= "Warnung";
		ES_TEXTFORMAT		= "WordWorth ist nicht aktiv, bitte starten sie dieses" || LF || "und versuchen Sie es erneut";
		ES_GADGETFORMAT	= "Abbrechen";
		EASY_REQUEST;
		EXIT;
	END;

/* Original WW-Dokument nach t: kopieren, um ein versehentliches überschreiben */
/* dieser Vorlage zu verhindern */
GET_REXXPATH;
WWVorlage		= MTR_RESULT || WWVorlage;
ADDRESS COMMAND "copy" WWVorlage WWDokument;

/* Oberfläche sperren */
LOCKGUI;

/* Art ermitteln: 0 = Drucken, 1 = Vorschau, 2 = Speichern */
PRINTSTATE;
Druckart = MTR_RESULT;

Ende_Kennzeichen = 'N';

/* Suchen der zu druckenden Daten */
PRINTFIND;

/* Neues Dokument öffnen */
ADDRESS VALUE WWPort;
NEW;
WWPort = RESULT;

DO WHILE( MTR_RESULT > 0 & Ende_Kennzeichen = 'N');
	ADDRESS VALUE WWPort;

	CALL DatenAufbereiten;
	SELECT;
		WHEN Druckart = 0 THEN	/* Drucken	*/
			DO;
				ADDRESS VALUE WWPort;
				PRINT;
				ADDRESS VALUE ARexxPort;
				MTSCREENTOFRONT;
			END;
		WHEN Druckart = 1 THEN	/* Vorschau	*/
			ADDRESS VALUE ARexxPort;
		WHEN Druckart = 2 THEN	/* Sichern	*/
			DO;
				ADDRESS VALUE WWPort;
				SAVEAS;
				ADDRESS VALUE ARexxPort;
				MTSCREENTOFRONT;
			END;
		OTHERWISE
			DO;
				ES_TITLE				= "Warnung";
				ES_TEXTFORMAT		= "Druckart wird nicht unterstützt!";
				ES_GADGETFORMAT	= "Ok";
				EASY_REQUEST;
				Ende_Kennzeichen	= 'J';
			END;
	END;

	PRINTFIND;
END;

/* WordWorth-Datei aus t: wieder entfernen */
ADDRESS COMMAND "delete" WWDokument;

/* Oberfläche wieder entsperren */
ADDRESS VALUE ARexxPort;
FREEGUI;

EXIT;

DatenAufbereiten:
	OPEN FILENAME WWDokument FORCE;

	DruckString	= OFFICE.ADDRESS.ADDRESS.2 || LF;
	i = INDEX( DruckString, LF);
	IF i > 0 THEN
		DO;
			DruckTeil	= LEFT( DruckString, (i - 1) );
			DruckString = SUBSTR(DruckString, (i + 1) );
			i = INDEX( DruckString, LF);
		END;
	ELSE
		DruckTeil	= DruckString;
	FINDCHANGE FIND "<ADDRESS.2>" CHANGE DruckTeil;
	POSITION EOL;

	DO WHILE( i > 0 );
		DruckTeil	= LEFT( DruckString, (i - 1) );
		DruckString = SUBSTR(DruckString, (i + 1) );
		NEWPARAGRAPH;
		TEXT DruckTeil;
		i = INDEX( DruckString, LF);
	END;
RETURN;

