/***************************************************************************
**     Words: Ein Programm zum Lernen des Vokabulars einer Fremdsprache   **
****************************************************************************
**                            geschrieben von                             **
**                            Daniel Neukomm                              **
**                             Sustenweg 17                               **
**                             CH-3014 Bern                               **
**                           Tel 031/41 80 97                             **
**                    od.   00 41 31 41 80 97 (von Deutschland aus)       **
****************************************************************************
**                Dieses Programm darf man frei kopieren.                 **
**             Das Kopieren ist nur für diejenigen verboten,              **
**         die daraus einen geschäftlichen Profit schlagen wollen         **
**             Die Copyright-Erklärung und meine Adresse muss             **
**                      im Programm stehen bleiben!                       **
***************************************************************************/
/*     in diesem Programmteil wird mit Hilfe von Stringgadgets ein
       Filename geholt und darauf der Editer ed aufgerufen */
#include<intuition/intuition.h>
extern char Device[20],Sprache[15],File[20];
extern long handle,Font9,Font8,flags;
extern struct Window *Window;
extern struct TextAttr TextAttr9;
struct IntuiText _okText = {3,0,JAM1,23,4,&TextAttr9,(UBYTE *) "ok",0};
struct IntuiText _cancelText ={3,0,JAM1,5,4,&TextAttr9,(UBYTE *)"cancel",0};
struct IntuiText DeviceText ={3,0,JAM1,62,-10,&TextAttr9,(UBYTE *)"Device",0};
struct IntuiText SpracheText ={3,0,JAM1,56,-10,&TextAttr9,(UBYTE *)"Sprache",0};
struct IntuiText FileText ={3,0,JAM1,72,-10,&TextAttr9,(UBYTE *)"File",0};
struct StringInfo DeviceString ={
   0,0,0,19,0,0,19,0,0,0,NULL,0,NULL };
struct StringInfo SpracheString ={
   0,0,0,14,0,0,14,0,0,0,NULL,0,NULL };
struct StringInfo FileString ={
   0,0,0,18,0,0,18,0,0,0,NULL,0,NULL };
short _Koord[] = {
   0,0, 70,0, 70,17, 0,17, 0,0 };
short _STRKoord[] = {
   0,0, 279,0, 279,12, 0,12, 0,0 };
struct Border _Border = {
   -1,-1,
   1,0,JAM1,
   5,_Koord,NULL  };
struct Border _STRBorder = {
   -48,-2,
   2,0,JAM1,
   5,_STRKoord,NULL  };
struct Gadget _okGadget = {
   0,180,162,69,16,GADGHCOMP,GADGIMMEDIATE| RELVERIFY,
   BOOLGADGET,(APTR)&_Border,0,
   &_okText,0,0,1,0   };
struct Gadget _cancelGadget = {
   0,390,162,69,16,GADGHCOMP,GADGIMMEDIATE | RELVERIFY,
   BOOLGADGET,(APTR)&_Border,0,
   &_cancelText,0,0,2,0   };
struct Gadget DeviceGadget = {
   0,228,50,184,12,GADGHCOMP,GADGIMMEDIATE | RELVERIFY | STRINGCENTER,
   STRGADGET,(APTR)&_STRBorder,0,
   &DeviceText,0,(APTR)&DeviceString,3,0   };
struct Gadget SpracheGadget = {
   0,228,90,184,12,GADGHCOMP,GADGIMMEDIATE | RELVERIFY | STRINGCENTER,
   STRGADGET,(APTR)&_STRBorder,0,
   &SpracheText,0,(APTR)&SpracheString,4,0   };
struct Gadget FileGadget = {
   0,228,130,184,12,GADGHCOMP,GADGIMMEDIATE | RELVERIFY | STRINGCENTER,
   STRGADGET,(APTR)&_STRBorder,0,
   &FileText,0,(APTR)&FileString,5,0   };

Eingabe()
{
   char String[50];
   char Def1[20],Def2[15],Def3[20];
   char Undo1[20],Undo2[15],Undo3[20];
   char i;
   struct RastPort *rp;
   struct IntuiMessage *Nachricht;
   struct IntuiMessage *GetMsg();
   struct Gadget *gadget;
   rp=Window->RPort;
   DeviceString.Buffer=(UBYTE *)&Def1[0];DeviceString.UndoBuffer=(UBYTE *)&Undo1[0];
   SpracheString.Buffer=(UBYTE *)&Def2[0];SpracheString.UndoBuffer=(UBYTE *)&Undo2[0];
   FileString.Buffer=(UBYTE *)&Def3[0];FileString.UndoBuffer=(UBYTE *)&Undo3[0];
   strcpy(Def1,Device);
   strcpy(Def2,Sprache);
   strcpy(Def3,File);
   Write(handle,"\f",1);
   Move (rp,213,25);
   SetAPen(rp,3);
   SetFont(rp,Font9);
   Text(rp,"Erstellen einer Datei",21);
   SetFont(rp,Font8);
   AddGadget(Window,&_okGadget,-1);
   OnGadget(&_okGadget,Window,0);
   AddGadget(Window,&_cancelGadget,-1);
   OnGadget(&_cancelGadget,Window,0);
   AddGadget(Window,&DeviceGadget,-1);
   OnGadget(&DeviceGadget,Window,0);
   AddGadget(Window,&SpracheGadget,-1);
   OnGadget(&SpracheGadget,Window,0);
   AddGadget(Window,&FileGadget,-1);
   OnGadget(&FileGadget,Window,0);
   ModifyIDCMP(Window,GADGETUP);
   do
      {
      WaitPort (Window->UserPort);
      Nachricht=GetMsg(Window->UserPort);
      gadget=(struct Gadget *)Nachricht->IAddress;
      ReplyMsg(Nachricht);
      }
   while (gadget->GadgetID>2);

   ModifyIDCMP(Window,flags);
   strcpy(String,"ed \"");
   strcat(String,Def1);
   if ((i=String[strlen(String)-1])!=':' && i!='/' && Def1[0]!=0) strcat(String,"/");
   strcat(String,Def2);
   if (Def2[0]!=0) strcat(String,"/");
   strcat(String,Def3);
   RemoveGadget(Window,&FileGadget);
   RemoveGadget(Window,&SpracheGadget);
   RemoveGadget(Window,&DeviceGadget);
   RemoveGadget(Window,&_cancelGadget);
   RemoveGadget(Window,&_okGadget);
   Write(handle,"\f",1);
   if (gadget->GadgetID==2 || Def3[0]==0) return();
   strcat(String,"\"");
   Execute(String,0,handle);  /* ed wird gestartet */
   strcpy(Device,Def1);
   strcpy(Sprache,Def2);
   strcpy(File,Def3);
}

