home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD2.bin / bbs / comm / casiolink-1.0.lha / CasioLink / SubRoutine.c < prev   
C/C++ Source or Header  |  1993-09-24  |  11KB  |  337 lines

  1. extern long BufferSize;
  2. extern BOOL EmuFlagold,EmuFlag,BSChange,BufferChange;
  3. extern char *LNStrings,ShortCut1[],ShortCut2[],ParamString[],Datei[];
  4. extern struct Library *AmigaGuideBase;
  5. extern struct Node *BufferLN;
  6. extern struct Window *Wnd, *KonfigWnd, *Konf2Wnd;
  7. extern struct RastPort *RastPort;
  8. extern struct Gadget *CasioLinkGadgets[],*KonfigGadgets[],*Konf2Gadgets[];
  9. extern struct Konfig Konf;
  10.  
  11. struct EasyStruct Help = {sizeof(struct EasyStruct), 0, "Hilfe",
  12.         "Leider kann die Hifsfunktion nicht aktiviert werden.\n"
  13.         "(AmigaGuide.library vorhanden?)", "OK"};
  14. struct EasyStruct About = {sizeof(struct EasyStruct), 0, "Autor",
  15.         "CasioLink V1.0\nFrank Nießen, © 1993", "OK"};
  16. struct EasyStruct SicherReq = {sizeof(struct EasyStruct), 0, NULL,
  17.         "%s\nSind sie sicher ?", "Ja|Nein"};
  18. struct EasyStruct SicherReq2 = {sizeof(struct EasyStruct), 0, NULL, "%s", "Ja|Nein"};
  19. struct EasyStruct Error = {sizeof(struct EasyStruct), 0, NULL,
  20.         "Fehler beim %s aufgetreten!\n%s", "OK"};
  21.  
  22. void PrintBytes(long bytes)
  23. {
  24.   GT_SetGadgetAttrs(CasioLinkGadgets[GD_bytes], Wnd, NULL, GTNM_Number, bytes, TAG_DONE);
  25. }
  26.  
  27. void PrintGadStr(long nr,char *Str)
  28. {
  29.   GT_SetGadgetAttrs(CasioLinkGadgets[nr], Wnd, NULL, GTTX_Text, Str, TAG_DONE);
  30. }
  31.  
  32. void BufferLoeschen()
  33. {
  34.   PrintBytes(0);
  35.   PrintGadStr(GD_Datei, "");
  36.   GT_SetGadgetAttrs(CasioLinkGadgets[GD_BufferListe], Wnd, NULL, GTLV_Labels, NULL, TAG_DONE);
  37.   FreeVec(LNStrings);
  38.   LNStrings = 0;
  39.   FreeVec(BufferLN);
  40.   BufferLN = 0;
  41.   if(Konf.BufferSize*1024 != BufferSize) BSChange = TRUE;
  42.   BufferSize = Konf.BufferSize*1024;
  43.   BufferChange = FALSE;
  44. }
  45.  
  46. void Loeschen()
  47. {
  48.   if(!EasyRequest(Wnd, &SicherReq, NULL, "Der Buffer wird gelöscht."))
  49.     return();
  50.   Datei[0] = 0;
  51.   BufferLoeschen();
  52. }
  53.  
  54. void ChangeState()
  55. {
  56.   long i;
  57.  
  58.   EmuFlagold = EmuFlag;
  59.   if(EmuFlag)
  60.   {
  61.     PrintGadStr(GD_Status, "Drucker-Emulation ist aktiv.");
  62.     for(i=0;i<7;i++)
  63.     {
  64.       GT_SetGadgetAttrs(CasioLinkGadgets[i], Wnd, NULL, GA_Disabled, TRUE, TAG_END);
  65.     }
  66.     OffMenu(Wnd, 0xF800);
  67.     OffMenu(Wnd, 0xF820);
  68.     OffMenu(Wnd, 0xF840);
  69.     OffMenu(Wnd, 0xFFE1);
  70.   }
  71.   else
  72.   {
  73.     PrintGadStr(GD_Status, "");
  74.     for(i=0;i<7;i++)
  75.     {
  76.       GT_SetGadgetAttrs(CasioLinkGadgets[i], Wnd, NULL, GA_Disabled, FALSE, TAG_END);
  77.     }
  78.     OnMenu(Wnd, 0xF800);
  79.     OnMenu(Wnd, 0xF820);
  80.     OnMenu(Wnd, 0xF840);
  81.     OnMenu(Wnd, 0xFFE1);
  82.   }
  83. }
  84.  
  85. void Konf_Laden(char *DateiName)
  86. {
  87.   BPTR Datei;
  88.  
  89.   if(!(Datei = Open((UBYTE *)DateiName, MODE_OLDFILE)))
  90.   {
  91.     Konf_Speichern(DateiName);
  92.     return;
  93.   }
  94.   FRead(Datei, &Konf, sizeof(Konf)-12, 1);
  95.   FGets(Datei, (UBYTE *)Konf.Editor, 43);
  96.   FGets(Datei, (UBYTE *)Konf.Shell, 41);
  97.   FGets(Datei, (UBYTE *)Konf.Device, 41);
  98.   Close(Datei);
  99.   UpdateParameter();
  100. }
  101.  
  102. void Konf_Speichern(char *DateiName)
  103. {
  104.   char Temp;
  105.   UBYTE *TempAdr;
  106.   BPTR Datei;
  107.  
  108.   TempAdr = PathPart((UBYTE *)DateiName);
  109.   Temp = *TempAdr;
  110.   *TempAdr = 0;
  111.   UnLock(CreateDir((UBYTE *)DateiName));
  112.   *TempAdr = Temp;
  113.   Datei = Open((UBYTE *)DateiName, MODE_NEWFILE);
  114.   FWrite(Datei, &Konf, sizeof(Konf)-12, 1);
  115.   FPuts(Datei, (UBYTE *)Konf.Editor);
  116.   FPutC(Datei, 0);
  117.   FPutC(Datei, 10);
  118.   FPuts(Datei, (UBYTE *)Konf.Shell);
  119.   FPutC(Datei, 0);
  120.   FPutC(Datei, 10);
  121.   FPuts(Datei, (UBYTE *)Konf.Device);
  122.   Close(Datei);
  123. }
  124.  
  125. void ShowBaudrate()
  126. {
  127.   GT_SetGadgetAttrs(KonfigGadgets[GD_Baud9], KonfigWnd, NULL, GTIN_Number, Konf.Baudrate, TAG_DONE);
  128. }
  129.  
  130. void UpdateParameter()
  131. {
  132.   long i,j;
  133.  
  134.   j = Konf.Baudrate/150;
  135.   for(i=1;(j=j/2);i++);
  136.   ParamString[6] = i + '0';
  137.   ParamString[8] = Konf.Paritaet;
  138.   ParamString[10] = Konf.Bytes + '0';
  139.   ParamString[12] = Konf.StoppBits + '0';
  140.   ParamString[20] = (Konf.XONXOFF) ? 'B' : 'N';
  141.   PrintGadStr(GD_Parameter, ParamString);
  142. }
  143.  
  144. void Konf_RS232()
  145. {
  146.   long i,class,code,gadid;
  147.   BOOL done=FALSE;
  148.   char temp[40];
  149.   struct IntuiMessage *message;
  150.   struct MsgPort      *UserPort;
  151.   struct Gadget       *gad;
  152.  
  153.   OpenKonfigWindow();
  154.   ShowBaudrate();
  155.   sprintf(temp, "%5ld, %ld, %lc, %ld",Konf.Baudrate,Konf.Bytes,Konf.Paritaet,Konf.StoppBits);
  156.   if(Konf.XONXOFF) sprintf(temp, "%s, XON/XOFF",temp);
  157.   GT_SetGadgetAttrs(KonfigGadgets[GD_Text0], KonfigWnd, NULL, GTTX_Text, temp, TAG_DONE);
  158.  
  159.   UserPort = KonfigWnd->UserPort;
  160.  
  161.   while (!(done))
  162.   {
  163.     Wait(1L << UserPort->mp_SigBit);
  164.     while(message = (struct IntuiMessage *) GT_GetIMsg(UserPort))
  165.     {
  166.       class = message->Class;
  167.       code  = message->Code;
  168.       gad   = message->IAddress;
  169.       gadid = gad->GadgetID;
  170.       switch(class)
  171.       {
  172.         case IDCMP_VANILLAKEY:
  173.           for(i=0;ShortCut1[i] && (ShortCut1[i] != code);i++);
  174.           if(i>15) break;
  175.           i /= 2;
  176.           switch(i)
  177.           {
  178.             case 0 : ActivateGadget(KonfigGadgets[GD_Baud9], KonfigWnd, NULL);
  179.                      break;
  180.             case 1 : Konf.Bytes = (Konf.Bytes == 7) ? 8 : 7;
  181.                      break;
  182.             case 2 : if(Konf.Paritaet == 'N') Konf.Paritaet = 'O';
  183.                      else Konf.Paritaet = (Konf.Paritaet == 'O') ? 'E' : 'N';
  184.                      break;
  185.             case 3 : Konf.StoppBits = (Konf.StoppBits == 1) ? 2 : 1;
  186.                      break;
  187.             case 4 : Konf.XONXOFF = (Konf.XONXOFF) ? FALSE : TRUE;
  188.           }
  189.           if(i<5) break;
  190.           gadid = i+10;
  191.         case IDCMP_GADGETUP:
  192.           switch(gadid)
  193.           {
  194.             case  0 :
  195.             case  1 :
  196.             case  2 :
  197.             case  3 :
  198.             case  4 :
  199.             case  5 : Konf.Baudrate = (1<<(5-gadid))*150;
  200.                       ShowBaudrate();
  201.                       break;
  202.             case  6 : Konf.Bytes = 8;
  203.                       break;
  204.             case  7 : Konf.Bytes = 7;
  205.                       break;
  206.             case  8 : Konf.Paritaet = 'N';
  207.                       break;
  208.             case  9 : Konf.Paritaet = 'O';
  209.                       break;
  210.             case 10 : Konf.Paritaet = 'E';
  211.                       break;
  212.             case 11 : Konf.StoppBits = 1;
  213.                       break;
  214.             case 12 : Konf.StoppBits = 2;
  215.                       break;
  216.             case 13 : Konf.XONXOFF = TRUE;
  217.                       break;
  218.             case 14 : Konf.XONXOFF = FALSE;
  219.                       break;
  220.             case 15 : Konf_Speichern(KONFARCNAME);
  221.             case 16 : Konf_Speichern(KONFNAME);
  222.             case 17 : Konf_Laden(KONFNAME);
  223.                       done = TRUE;
  224.           }
  225.           break;
  226.         case IDCMP_INACTIVEWINDOW:
  227.           WindowToFront(KonfigWnd);
  228.           ActivateWindow(KonfigWnd);
  229.       }
  230.       GT_ReplyIMsg(message);
  231.       Konf.Baudrate = ((struct StringInfo *)KonfigGadgets[GD_Baud9]->SpecialInfo)->LongInt;
  232.       sprintf(temp, "%5ld, %ld, %lc, %ld",Konf.Baudrate,Konf.Bytes,Konf.Paritaet,Konf.StoppBits);
  233.       if(Konf.XONXOFF) sprintf(temp, "%s, XON/XOFF",temp);
  234.       GT_SetGadgetAttrs(KonfigGadgets[GD_Text0], KonfigWnd, NULL, GTTX_Text, temp, TAG_DONE);
  235.     }
  236.   }
  237.   CloseKonfigWindow();
  238.  
  239.   WindowToFront(Wnd);
  240.   ActivateWindow(Wnd);
  241. }
  242.  
  243. void Konf_Sonst()
  244. {
  245.   long i,class,code,gadid;
  246.   BOOL done=FALSE;
  247.   struct IntuiMessage *message;
  248.   struct MsgPort      *UserPort;
  249.   struct Gadget       *gad;
  250.  
  251.   OpenKonf2Window();
  252.   GT_SetGadgetAttrs(Konf2Gadgets[GD_Unit], Konf2Wnd, NULL, GTIN_Number, Konf.Unit, TAG_DONE);
  253.   GT_SetGadgetAttrs(Konf2Gadgets[GD_Timeout], Konf2Wnd, NULL, GTIN_Number, Konf.Timeout, TAG_DONE);
  254.   GT_SetGadgetAttrs(Konf2Gadgets[GD_Buffer], Konf2Wnd, NULL, GTIN_Number, Konf.BufferSize, TAG_DONE);
  255.   GT_SetGadgetAttrs(Konf2Gadgets[GD_Editor], Konf2Wnd, NULL, GTST_String, Konf.Editor, TAG_DONE);
  256.   GT_SetGadgetAttrs(Konf2Gadgets[GD_Shell], Konf2Wnd, NULL, GTST_String, Konf.Shell, TAG_DONE);
  257.   GT_SetGadgetAttrs(Konf2Gadgets[GD_Device], Konf2Wnd, NULL, GTST_String, Konf.Device, TAG_DONE);
  258.   GT_SetGadgetAttrs(Konf2Gadgets[GD_Line_1+Konf.CRLF], Konf2Wnd, NULL, GTCB_Checked, TRUE, TAG_DONE);
  259.  
  260.   UserPort = Konf2Wnd->UserPort;
  261.  
  262.   while (!(done))
  263.   {
  264.     Wait(1L << UserPort->mp_SigBit);
  265.     while(message = (struct IntuiMessage *) GT_GetIMsg(UserPort))
  266.     {
  267.       class = message->Class;
  268.       code  = message->Code;
  269.       gad   = message->IAddress;
  270.       gadid = gad->GadgetID;
  271.       switch(class)
  272.       {
  273.         case IDCMP_VAN