home *** CD-ROM | disk | FTP | other *** search
- #include <intuition/intuition.h>
- #include <devices/load.h>
- #include "intuidef.h"
- #include "execdef.h"
- #include "windownode.h"
-
- #include <exec/proto.h>
- #include <intuition/proto.h>
-
- #include "Cleanup.proto"
- #include "Init.proto"
- #include "NewData.proto"
- #include "NewWindowSize.proto"
- #include "RedrawWindow.proto"
- #include "CloseLoadWindow.proto"
- #include "FindWindowNode.proto"
- #include "PrintRecordTypes.proto"
-
- #define SIGQUIT 12
-
- struct Library *GfxBase;
- struct IntuitionBase *IntuitionBase;
-
- loadrequest *loadRequest;
- MsgPort *loadPort;
- MsgPort *windowPort;
-
- MinList windowList;
-
- void
- _main(argp)
- char *argp;
- {
- IntuiMessage *msg;
- Window *message_window;
- unsigned long message_class;
- unsigned short message_code;
- long signals, window_signal_mask, load_signal_mask, combined_signal_mask;
- long quit_signal_mask;
- long errno;
-
- if (errno = Init(argp))
- {
- Cleanup();
- exit(errno);
- }
- quit_signal_mask = 1 << SIGQUIT;
- window_signal_mask = 1 << windowPort->mp_SigBit;
- load_signal_mask = 1 << loadPort->mp_SigBit;
- combined_signal_mask = quit_signal_mask | window_signal_mask | load_signal_mask;
-
- loadRequest->lr_node.io_Command = CMD_READ;
- SendIO(&loadRequest->lr_node);
- while(windowList.mlh_TailPred != (MinNode *)&windowList)
- {
- signals = Wait(combined_signal_mask);
- if (signals & window_signal_mask)
- {
- while (msg = (struct IntuiMessage *)GetMsg(windowPort))
- {
- message_window = msg->IDCMPWindow;
- message_class = msg->Class;
- message_code = msg->Code;
- ReplyMsg(msg);
- switch(message_class)
- {
- case MOUSEBUTTONS:
- if (msg->Code == MENUDOWN)
- PrintRecordTypes(message_window);
- break;
- case CLOSEWINDOW:
- CloseLoadWindow(FindWindowNode(message_window));
- break;
- case NEWSIZE:
- if (!NewWindowSize(message_window))
- goto bug_out;
- break;
- case REFRESHWINDOW:
- BeginRefresh(message_window);
- RedrawWindow(message_window);
- EndRefresh(message_window, TRUE);
- break;
- }
- }
- }
- if (signals & load_signal_mask)
- {
- (void)GetMsg(loadPort);
- NewData(&loadRequest->lr_load);
- SendIO(&loadRequest->lr_node);
- }
- if (signals & quit_signal_mask)
- break;
- }
- bug_out:
- AbortIO(&loadRequest->lr_node);
- Cleanup();
- }
-