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

  1. extern char Dir[],Datei[],FullName[],ShortCut[];
  2. extern struct Window *Wnd;
  3. extern struct Menu   *Menus;
  4. extern struct EasyStruct About,SicherReq2;
  5.  
  6. long BufferSize=10240;
  7. BOOL done=FALSE,EmuFlagold=FALSE,EmuFlag=FALSE,SerOK=FALSE;
  8. BOOL BufferChange=FALSE,BSChange=FALSE;
  9.  
  10. struct Library  *IntuitionBase  = 0;
  11. struct Library  *GadToolsBase   = 0;
  12. struct Library  *GfxBase        = 0;
  13. struct Library  *AslBase        = 0;
  14. struct Library  *AmigaGuideBase = 0;
  15.  
  16. struct RastPort *RastPort;
  17.  
  18. char *Buffer,*LNStrings;
  19. struct Node *BufferLN;
  20.  
  21. char Editor[42] = "ED",Shell[41]  = "NewShell",Device[41] = "serial.device";
  22. char ParamString[] = "\"COM0:5,N,8,1,N,N,N,B,N\"";
  23. struct Konfig Konf = {2400, 8, 'N', 1, TRUE, -1, 0, 30, 10, Editor, Shell, Device};
  24.  
  25. struct MsgPort  *SerialMP = 0;
  26. struct IOExtSer *SerialIO = 0;
  27.  
  28. long OpenLib(void)
  29. {
  30.   if(!(IntuitionBase = (struct Library*)OpenLibrary("intuition.library",37)))
  31.     return(1);
  32.   if(!(GfxBase = (struct Library*)OpenLibrary("graphics.library",37)))
  33.     return(2);
  34.   if(!(GadToolsBase = (struct Library*)OpenLibrary("gadtools.library",37)))
  35.     return(3);
  36.   if(!(AslBase = (struct Library*)OpenLibrary("asl.library",37)))
  37.     return(4);
  38. /*  if(!(AmigaGuideBase = (struct Library*)OpenLibrary("amigaguide.library",33)))
  39.     return(5);*/
  40.     /* 48 bytes werden von der amigaguide.library nicht zurückgegeben */
  41.   return(0);
  42. }
  43.  
  44. void CleanUp()
  45. {
  46.   if(SerOK) CloseDevice((struct IORequest *)SerialIO);
  47.   DeleteIORequest((struct IORequest *)SerialIO);
  48.   DeleteMsgPort(SerialMP);
  49.   CloseWind();
  50.   CloseDownScreen();
  51.   FreeVec(LNStrings);
  52.   FreeVec(BufferLN);
  53.   FreeVec(Buffer);
  54.   CloseLibrary(AmigaGuideBase);
  55.   CloseLibrary(AslBase);
  56.   CloseLibrary(GadToolsBase);
  57.   CloseLibrary(GfxBase);
  58.   CloseLibrary(IntuitionBase);
  59. }
  60.  
  61. BOOL MenuAction(long select)
  62. {
  63.   long menu,item,subit;
  64.   char command[160];
  65.   struct NewAmigaGuide nag = {NULL};
  66.   struct stat stat1,stat2;
  67.  
  68.   menu = MENUNUM(select);
  69.   item = ITEMNUM(select);
  70.   subit = SUBNUM(select);
  71.   switch(menu)
  72.   {
  73.     case 0:
  74.       switch(item)
  75.       {
  76.         case 0: PrintGadStr(GD_Status, "Editor aktiv.");
  77.                 if(!Datei[0]) Speichern();
  78.                 if(!Datei[0])
  79.                 {
  80.                   PrintGadStr(GD_Status, "");
  81.                   break;
  82.                 }
  83.                 stat(FullName, &stat1);
  84.                 strcpy(command, Konf.Editor);
  85.                 strcat(command, " ");
  86.                 strcat(command, FullName);
  87.                 System((UBYTE*)command, NULL);
  88.                 stat(FullName, &stat2);
  89.                 if(stat1.st_mtime != stat2.st_mtime) Retrive();
  90.                 PrintGadStr(GD_Status, "");
  91.                 break;
  92.         case 1: Drucken();
  93.                 break;
  94.         case 2: System((UBYTE *)Konf.Shell, NULL);
  95.         case 4: break;
  96.         case 6: return(TRUE);
  97.       } break;
  98.     case 1:
  99.       switch(item)
  100.       {
  101.         case 0: EasyRequest(Wnd, &About, NULL, NULL);
  102.                 break;
  103.         case 1: Hilfe();
  104.       }
  105.   }
  106.  
  107.   EmuFlag = ((((struct MenuItem *)ItemAddress(Menus, 0xF880))->Flags) & CHECKED) ? TRUE : FALSE;
  108.   if(EmuFlag != EmuFlagold) ChangeState();
  109.  
  110.   return(FALSE);
  111. }
  112.  
  113. main()
  114. {
  115.   long class,code,select,Fehler,gadid,i;
  116.   struct IntuiMessage *message;
  117.   struct MsgPort      *UserPort;
  118.   struct Gadget *gad;
  119.  
  120.   /*************** Resourcen öffnen ***************/
  121.   if(Fehler = OpenLib()) goto ERROR;
  122.  
  123.   if(Fehler = SetupScreen()) goto ERROR;
  124.   if(Fehler = OpenWind()) goto ERROR;
  125.  
  126.   Konf_Laden(KONFNAME);
  127.   SerOpen();
  128.   if(!(Buffer = AllocVec(BufferSize, MEMF_ANY))) goto ERROR;
  129.  
  130.   UserPort = Wnd->UserPort;
  131.   RastPort = Wnd->RPort;
  132.  
  133.   /*************** Benutzereingabe holen **********/
  134.   while (!(done))
  135.   {
  136.     Wait(1L << UserPort->mp_SigBit);
  137.     while(message = (struct IntuiMessage *) GT_GetIMsg(UserPort))
  138.     {
  139.       class = message->Class;
  140.       code  = message->Code;
  141.       gad   = message->IAddress;
  142.       gadid = gad->GadgetID;
  143.       switch(class)
  144.       {
  145.         case IDCMP_MENUPICK:    PrintGadStr(GD_Status, "");
  146.                                 for(select=code;
  147.                                     select != MENUNULL;
  148.                                     select = (ItemAddress(Menus,select))->NextSelect)
  149.                                   done = MenuAction(select);
  150.                                 break;
  151.         case IDCMP_VANILLAKEY:  for(i=0;ShortCut[i] && (ShortCut[i] != code);i++);
  152.                                 if(i>15) break;
  153.                                 gadid = i/2;
  154.         case IDCMP_GADGETUP:    PrintGadStr(GD_Status, "");
  155.                                 switch(gadid)
  156.                                 {
  157.                                   case 0 : Speichern();
  158.                                            break;
  159.                                   case 1 : Laden();
  160.                                            break;
  161.                                   case 2 : if(SerOK) Senden();
  162.                                            break;
  163.                                   case 3 : if(SerOK) Empfangen();
  164.                                            break;
  165.                                   case 4 : Loeschen();
  166.                                            break;
  167.                                   case 5 : Konf_RS232();
  168.                                            break;
  169.                                   case 6 : Konf_Sonst();
  170.                                 }
  171.                                 break;
  172.         case IDCMP_RAWKEY:      if(code == 95) Hilfe(); /* hilfe-taste */
  173.                                 break;
  174.         case IDCMP_CLOSEWINDOW: done = TRUE;
  175.       }
  176.       GT_ReplyIMsg(message);
  177.     }
  178.   }
  179.  
  180.   if(BufferChange)
  181.     if(EasyRequest(Wnd, &SicherReq2, NULL,
  182.              "Das Programm wird beendet\nSoll der Buffer gesichert werden?"))
  183.       Speichern();
  184.   CleanUp();
  185.   return(0);
  186.  
  187. ERROR:
  188.   Printf((UBYTE *)"Fehler aufgetreten : %ld\n",Fehler);
  189.   CleanUp();
  190.   return(10);
  191. }
  192.