home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of A1200
/
World_Of_A1200.iso
/
programs
/
misc
/
wingnuplot
/
source.lha
/
source
/
WinPlot.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-04-10
|
3KB
|
140 lines
#include "struct.c"
#include "WinPlot.h"
#include "amigawin.h"
/* at least Kick20 is required */
long __oslibversion = 36;
void __regargs __autoopenfail(char *);
/* the library bases */
struct Library *MUIMasterBase = NULL;
struct FileRequester *FileReq = NULL;
/* some private definitions */
static struct MsgPort *GnuPort = NULL;
int _STI_200_OpenMUI(void)
{
if (!(MUIMasterBase = OpenLibrary("muimaster.library", 7)))
{
__oslibversion = 7;
__autoopenfail("mui.library V2.0");
__oslibversion = 36;
return 1;
}
return 0;
}
void _STD_200_CloseMUI(void)
{
if (MUIMasterBase)
CloseLibrary(MUIMasterBase);
}
int _STI_OpenSystem(void)
{
char Buffer[255];
int i;
for(i=0; i<MAXWINDOW; i++)
Windows[i].WI_Plot = Windows[i].BT_Plot = Windows[i].BT_Load = Windows[i].BT_Save =
Windows[i].BT_CD = Windows[i].BT_Set = Windows[i].BT_New = Windows[i].BO_Plot = NULL;
GetCurrentDirName(Buffer, 255);
if (!(FileReq = MUI_AllocAslRequestTags(ASL_FileRequest,
ASLFR_PrivateIDCMP, TRUE,
ASLFR_RejectIcons, TRUE,
ASLFR_InitialDrawer, Buffer,
TAG_END)))
{
MUI_Request(NULL, NULL, 0, "WinPlot", "Ok", "Can´t allocate FileRequest structure!\n");
return 1;
}
#ifndef _DEBUG
if (!FindPort(GNUREPLY))
{
MUI_Request(NULL, NULL, 0, "WinPlot", "Ok",
"This is a GnuPlot terminal driver, Please start GnuPlot first !");
return 1;
}
#endif
return 0;
}
void _STD_CloseSystem(void)
{
if (FileReq) MUI_FreeAslRequest(FileReq);
}
ULONG main(void)
{
BOOL Quit = FALSE;
ULONG PortFlag, RexxReplyFlag;
struct PlotMessage *PlotMsg;
if (GnuPort = CreatePort(GNUPORT, 0))
{
PortFlag = 1 << GnuPort->mp_SigBit;
RexxReplyFlag = 1 << RexxReplyPort->mp_SigBit;
if (AP_WinPlot = GetGUI())
{
set(Windows[0].WI_Plot, MUIA_Window_Open, TRUE);
while (!Quit)
{
LONG MUI_ID;
ULONG MUI_Signal, Sig;
MUI_ID = DoMethod(AP_WinPlot, MUIM_Application_Input, &MUI_Signal);
if (MUI_ID != 0)
Quit = HandleMUI(MUI_ID);
if (MUI_Signal)
Sig = Wait(MUI_Signal|PortFlag|RexxReplyFlag);
else
Sig = 0L;
if (Sig & PortFlag)
while (PlotMsg = (struct PlotMessage *)GetMsg(GnuPort))
{
switch(PlotMsg->PlotCom.gpc_com)
{
case SET_GRAPHICS:
set(AP_WinPlot, MUIA_Application_Sleep, TRUE);
break;
case SET_TEXT:
ncommands = PlotMsg->PlotCom.gpc_ncommands;
commands = PlotMsg->PlotCom.gpc_commands;
set(AP_WinPlot, MUIA_Application_Sleep, FALSE);
Refresh();
break;
case RESET:
Quit = TRUE;
break;
case SETVAR:
Settings((struct SetVar *)PlotMsg->PlotCom.gpc_arg);
break;
case PAUSE:
WaitRequest(PlotMsg->PlotCom.gpc_arg);
break;
}
ReplyMsg(PlotMsg);
}
if (Sig & RexxReplyFlag)
if (GetMsg(RexxReplyPort))
ReplyRexxMsg();
}
SaveConf();
MUI_DisposeObject(AP_WinPlot);
}
DeletePort(GnuPort);
}
return 0;
}