home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / misc / wingnuplot / source.lha / source / WinPlot.c < prev    next >
C/C++ Source or Header  |  1994-04-10  |  3KB  |  140 lines

  1. #include "struct.c"
  2. #include "WinPlot.h"
  3. #include "amigawin.h"
  4.  
  5. /* at least Kick20 is required */
  6. long __oslibversion = 36;
  7. void __regargs __autoopenfail(char *);
  8.  
  9. /* the library bases */
  10. struct Library       *MUIMasterBase = NULL;
  11. struct FileRequester *FileReq = NULL;
  12.  
  13. /* some private definitions */
  14. static struct MsgPort *GnuPort = NULL;
  15.  
  16. int _STI_200_OpenMUI(void)
  17. {
  18.  
  19.  if (!(MUIMasterBase = OpenLibrary("muimaster.library", 7)))
  20.   {
  21.    __oslibversion = 7;
  22.    __autoopenfail("mui.library V2.0");
  23.    __oslibversion = 36;
  24.    return 1;
  25.   }
  26.  return 0;
  27. }
  28.  
  29. void _STD_200_CloseMUI(void)
  30. {
  31.  if (MUIMasterBase)
  32.   CloseLibrary(MUIMasterBase);
  33. }
  34.  
  35. int _STI_OpenSystem(void)
  36. {
  37.  char Buffer[255];
  38.  int  i;
  39.  
  40.  for(i=0; i<MAXWINDOW; i++)
  41.   Windows[i].WI_Plot = Windows[i].BT_Plot = Windows[i].BT_Load = Windows[i].BT_Save =
  42.   Windows[i].BT_CD = Windows[i].BT_Set = Windows[i].BT_New = Windows[i].BO_Plot = NULL;
  43.  GetCurrentDirName(Buffer, 255);
  44.  if (!(FileReq = MUI_AllocAslRequestTags(ASL_FileRequest,
  45.                      ASLFR_PrivateIDCMP,  TRUE,
  46.                      ASLFR_RejectIcons,   TRUE,
  47.                      ASLFR_InitialDrawer, Buffer,
  48.                      TAG_END)))
  49.   {
  50.    MUI_Request(NULL, NULL, 0, "WinPlot", "Ok", "Can´t allocate FileRequest structure!\n");
  51.    return 1;
  52.   }
  53.  
  54. #ifndef _DEBUG
  55.  if (!FindPort(GNUREPLY))
  56.   {
  57.    MUI_Request(NULL, NULL, 0, "WinPlot", "Ok",
  58.            "This is a GnuPlot terminal driver, Please start GnuPlot first !");
  59.    return 1;
  60.   }
  61. #endif
  62.  
  63.  return 0;
  64. }
  65.  
  66. void _STD_CloseSystem(void)
  67. {
  68.  if (FileReq) MUI_FreeAslRequest(FileReq);
  69. }
  70.  
  71. ULONG main(void)
  72. {
  73.  BOOL                Quit = FALSE;
  74.  ULONG               PortFlag, RexxReplyFlag;
  75.  struct PlotMessage *PlotMsg;
  76.  
  77.  if (GnuPort = CreatePort(GNUPORT, 0))
  78.   {
  79.    PortFlag = 1 << GnuPort->mp_SigBit;
  80.    RexxReplyFlag = 1 << RexxReplyPort->mp_SigBit;
  81.  
  82.    if (AP_WinPlot = GetGUI())
  83.    {
  84.     set(Windows[0].WI_Plot, MUIA_Window_Open, TRUE);
  85.     
  86.     while (!Quit)
  87.      {
  88.       LONG  MUI_ID;
  89.       ULONG MUI_Signal, Sig;
  90.       
  91.       MUI_ID = DoMethod(AP_WinPlot, MUIM_Application_Input, &MUI_Signal);
  92.       if (MUI_ID != 0)
  93.        Quit = HandleMUI(MUI_ID);
  94.       if (MUI_Signal)
  95.        Sig = Wait(MUI_Signal|PortFlag|RexxReplyFlag);
  96.       else
  97.        Sig = 0L;
  98.       
  99.       if (Sig & PortFlag)
  100.        while (PlotMsg = (struct PlotMessage *)GetMsg(GnuPort))
  101.     {
  102.      switch(PlotMsg->PlotCom.gpc_com)
  103.       {
  104.       case SET_GRAPHICS:
  105.        set(AP_WinPlot, MUIA_Application_Sleep, TRUE);
  106.        break;
  107.       case SET_TEXT:
  108.        ncommands = PlotMsg->PlotCom.gpc_ncommands;
  109.        commands = PlotMsg->PlotCom.gpc_commands;
  110.        set(AP_WinPlot, MUIA_Application_Sleep, FALSE);
  111.        Refresh();
  112.        break;
  113.       case RESET:
  114.        Quit = TRUE;
  115.        break;
  116.       case SETVAR:
  117.        Settings((struct SetVar *)PlotMsg->PlotCom.gpc_arg);
  118.        break;
  119.       case PAUSE:
  120.        WaitRequest(PlotMsg->PlotCom.gpc_arg);
  121.        break;
  122.       }
  123.     
  124.      ReplyMsg(PlotMsg);
  125.     }
  126.       if (Sig & RexxReplyFlag)
  127.        if (GetMsg(RexxReplyPort))
  128.     ReplyRexxMsg();
  129.      }
  130.  
  131.     SaveConf();
  132.     MUI_DisposeObject(AP_WinPlot);
  133.  
  134.    }
  135.    DeletePort(GnuPort);
  136.   }
  137.  
  138.  return 0;
  139. }
  140.