This is gui_batch.c in view mode; [Download] [Up]
/* $Id: gui_batch.c,v 2.7 1993/06/04 14:46:52 klute Exp klute $ */ /* * Copyright 1993 Rainer Klute <klute@irb.informatik.uni-dortmund.de> * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation. The author makes no representations about the suitability * of this software for any purpose. It is provided "as is" without express * or implied warranty. * */ #include <malloc.h> #include <stdio.h> #include <Xm/Xm.h> #include <Xm/Text.h> #include "gui.h" #include "ui.h" #include "gui_batch.h" #include "gui_build.h" #include "gui_utils.h" #include "message.h" static void BatchCleanUp (Batch *batch); static Boolean BatchWorkProc (Batch *batch); static void DisplayAfter (Batch *batch); static void DisplayBefore (Batch *batch, char *strasse, char *hausnummer, char *postfach, char *plz_alt, char *ort, char *postanstalt, char *ortsteil); static void PlzFound (Batch *batch); static void PlzNotFound (Batch *batch); XtCallbackProc BatchAbort (Widget widget, XtPointer clientData, XtPointer callData) { ConversionData *cd = (ConversionData *) clientData; GuiComponents *gc = cd->gc; XtVaSetValues (gc->menuBatchStart, XmNsensitive, (XtArgVal) True, NULL); XtVaSetValues (gc->menuBatchContinue, XmNsensitive, (XtArgVal) False, NULL); XtVaSetValues (gc->menuBatchAbort, XmNsensitive, (XtArgVal) False, NULL); cd->batch->status = BatchFinished; } XtCallbackProc BatchCancel (Widget widget, XtPointer clientData, XtPointer callData) { XtPopdown (TopLevelShell (widget)); } XtCallbackProc BatchContinue (Widget widget, XtPointer clientData, XtPointer callData) { ConversionData *cd = (ConversionData *) clientData; GuiComponents *gc = cd->gc; Batch *batch = cd->batch; SetBusyCursor (gc->plz_neu); if (batch->pc->status == PlzPlzNeuGefunden) PlzFound (batch); else FputsCharSet (batch->inputRecord, batch->efl, batch->outputFormat); batch->status = BatchRunning; XtVaSetValues (gc->menuBatchStart, XmNsensitive, (XtArgVal) False, NULL); XtVaSetValues (gc->menuBatchContinue, XmNsensitive, (XtArgVal) False, NULL); XtVaSetValues (gc->menuBatchAbort, XmNsensitive, (XtArgVal) True, NULL); XtAppAddWorkProc (XtWidgetToApplicationContext (widget), (XtWorkProc) BatchWorkProc, (XtPointer) batch); } XtCallbackProc BatchOk (Widget widget, XtPointer clientData, XtPointer callData) { ConversionData *cd = (ConversionData *) clientData; GuiComponents *gc = cd->gc; Batch *batch = cd->batch; char *help; batch->inputFile = XmTextGetString (gc->inputFile); batch->outputFile = XmTextGetString (gc->outputFile); batch->errorFile = XmTextGetString (gc->errorFile); help = XmTextGetString (gc->separator); batch->separator = *help; free (help); help = XmTextGetString (gc->columnStreet); batch->columnStreet = atoi (help); free (help); help = XmTextGetString (gc->columnPlz); batch->columnPlz = atoi (help); free (help); help = XmTextGetString (gc->columnPlace); batch->columnPlace = atoi (help); free (help); batch->ifl = (FILE *) 0; batch->ofl = (FILE *) 0; batch->efl = (FILE *) 0; batch->status = BatchInit; batch->inputRecord = (char *) 0; batch->successCallback = PlzFound; batch->failureCallback = PlzNotFound; batch->beforeConvertCallback = DisplayBefore; batch->afterConvertCallback = DisplayAfter; batch->finishedCallback = BatchCleanUp; SetBusyCursor (gc->plz_neu); XtVaSetValues (gc->menuBatchStart, XmNsensitive, (XtArgVal) False, NULL); XtVaSetValues (gc->menuBatchContinue, XmNsensitive, (XtArgVal) False, NULL); XtVaSetValues (gc->menuBatchAbort, XmNsensitive, (XtArgVal) True, NULL); XtPopdown (TopLevelShell (widget)); XtAppAddWorkProc (XtWidgetToApplicationContext (widget), (XtWorkProc) BatchWorkProc, (XtPointer) batch); } XtCallbackProc BatchStart (Widget widget, XtPointer clientData, XtPointer callData) { ConversionData *cd = (ConversionData *) clientData; static Widget dialog = (Widget) 0; if (cd->batch == (Batch *) 0) { cd->batch = (Batch *) calloc (1, sizeof (Batch)); if (cd->batch == (Batch *) 0) { OutOfMemory ("BatchDefine"); return; } UpdateString (&(cd->batch->inputFile), ""); UpdateString (&(cd->batch->outputFile), ""); UpdateString (&(cd->batch->errorFile), ""); cd->batch->separator = '\0'; cd->batch->columnStreet = -1; cd->batch->columnPlz = -1; cd->batch->columnPlace = -1; cd->batch->outputFormat = OutputISO; cd->batch->ifl = (FILE *) 0; cd->batch->ofl = (FILE *) 0; cd->batch->efl = (FILE *) 0; cd->batch->pc = cd->pc; cd->batch->fehlerAnhalten = True; cd->batch->userData = cd; } if (dialog == (Widget) 0) dialog = CreateBatchDialog (widget, cd); XtPopup (dialog, XtGrabNone); } XtCallbackProc SetAusgabeFormatIso (Widget widget, XtPointer clientData, XtPointer callData) { ((ConversionData *) clientData)->batch->outputFormat = OutputISO; } XtCallbackProc SetAusgabeFormatIbm (Widget widget, XtPointer clientData, XtPointer callData) { ((ConversionData *) clientData)->batch->outputFormat = OutputIBM; } XtCallbackProc SetAusgabeFormatAtari (Widget widget, XtPointer clientData, XtPointer callData) { ((ConversionData *) clientData)->batch->outputFormat = OutputAtari; } XtCallbackProc SetFehlerAnhalten (Widget widget, XtPointer clientData, XtPointer callData) { ((ConversionData *) clientData)->batch->fehlerAnhalten = True; } XtCallbackProc SetFehlerWeiter (Widget widget, XtPointer clientData, XtPointer callData) { ((ConversionData *) clientData)->batch->fehlerAnhalten = False; } XtCallbackProc SetVerkehrsgebietWest (Widget widget, XtPointer clientData, XtPointer callData) { ((ConversionData *) clientData)->pc->verkehrsgebiet = 'W'; } XtCallbackProc SetVerkehrsgebietOst (Widget widget, XtPointer clientData, XtPointer callData) { ((ConversionData *) clientData)->pc->verkehrsgebiet = 'O'; } /****** Static functions ******/ static void BatchCleanUp (Batch *batch) { GuiComponents *gc = ((ConversionData *) batch->userData)->gc; UnsetBusyCursor (gc->plz_neu); XtVaSetValues (gc->menuBatchStart, XmNsensitive, (XtArgVal) True, NULL); XtVaSetValues (gc->menuBatchContinue, XmNsensitive, (XtArgVal) False, NULL); XtVaSetValues (gc->menuBatchAbort, XmNsensitive, (XtArgVal) False, NULL); } static Boolean BatchWorkProc (Batch *batch) { Boolean r; r = BatchConvert (batch); return r; } static void DisplayBefore (Batch *batch, char *strasse, char *hausnummer, char *postfach, char *plz_alt, char *ort, char *postanstalt, char *ortsteil) { GuiComponents *gc = ((ConversionData *) batch->userData)->gc; char string[300]; LabelSetString (gc->plz_neu, ""); strcpy (string, StrasseString (strasse, hausnummer, postfach)); XmTextSetString (gc->strasse, string); strcpy (string, OrtString (plz_alt, ort, postanstalt, ortsteil)); XmTextSetString (gc->ort, string); XmUpdateDisplay (gc->ort); } static void DisplayAfter (Batch *batch) { GuiComponents *gc = ((ConversionData *) batch->userData)->gc; PlzConversion *pc = ((ConversionData *) batch->userData)->pc; char string[300]; if (pc->status == PlzPlzNeuGefunden) LabelSetString (gc->plz_neu, pc->plz_neu); else LabelSetString (gc->plz_neu, ""); strcpy (string, StrasseString (pc->strasse, pc->hausnummer, pc->postfach)); XmTextSetString (gc->strasse, string); strcpy (string, OrtString (pc->plz_alt, pc->ort, pc->postanstalt, pc->ortsteil)); XmTextSetString (gc->ort, string); XmUpdateDisplay (gc->ort); } static void PlzFound (Batch *batch) { PlzConversion *pc = batch->pc; char *help1, *help2; char ortString[300]; help1 = ColumnReplace (batch->inputRecord, batch->columnStreet, batch->separator, StrasseString (pc->strasse, pc->hausnummer, pc->postfach)); if (batch->columnPlz > 0 && batch->columnPlz != batch->columnPlace) { help2 = ColumnReplace (help1, batch->columnPlz, batch->separator, pc->plz_neu); free (help1); help1 = help2; help2 = ColumnReplace (help1, batch->columnPlace, batch->separator, pc->ort); } else { sprintf (ortString, "%s %s", pc->plz_neu, pc->ort); help2 = ColumnReplace (help1, batch->columnPlace, batch->separator, ortString); } FputsCharSet (help2, batch->ofl, batch->outputFormat); free (help1); free (help2); } static void PlzNotFound (Batch *batch) { ConversionData *cd = (ConversionData *) batch->userData; GuiComponents *gc = cd->gc; int status = cd->pc->status; if (batch->fehlerAnhalten) { batch->status = BatchInterrupted; XtVaSetValues (gc->menuBatchStart, XmNsensitive, (XtArgVal) False, NULL); XtVaSetValues (gc->menuBatchContinue, XmNsensitive, (XtArgVal) True, NULL); XtVaSetValues (gc->menuBatchAbort, XmNsensitive, (XtArgVal) True, NULL); if (cd->pc->status != PlzPlzAltGeaendert) ConvertCallback (gc->strasse, cd, NULL); else { MessageFlush (); UnsetBusyCursor (gc->ort); } } else FputsCharSet (batch->inputRecord, batch->efl, batch->outputFormat); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.