home *** CD-ROM | disk | FTP | other *** search
- #include "defs.h"
-
- // #define PROCDEBUG
-
- #ifdef PROCDEBUG
- #define D(x) printf x
- #else
- #define D(x)
- #endif
-
- static TATTR topaz80 = { "topaz.font", 8, 0,0 };
- static VINFO *vi;
-
- // The 1x1 null requester that is used to disable the gadtools gadgets,
- // as per the flamewars on usenet:
- static struct Requester req = {
- 0,
- 0,0,
- 1,1,
- 0,0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- };
-
- static short windowDisableCount = 0;
-
- // FIXME: Defines!
-
- void DisableWindow (void)
- {
- if (!windowDisableCount)
- Request (&req, mainWindow);
- windowDisableCount++;
- return;
- }
-
- void EnableWindow (void)
- {
- if (!windowDisableCount)
- return;
- windowDisableCount--;
- if (!windowDisableCount)
- EndRequest(&req, mainWindow);
- return;
- }
-
- BOOL GuageRequest (UWORD percent, char *titleText,
- char *reqText, char *buttonText)
- {
- int titleLen;
- int reqLen;
- int buttonLen;
- static WINDOW *reqWindow = 0;
- WINDOW *win = NULL;
- int width = 0;
- int height;
- static GADGET *gList = 0, *gadget = 0;
- NEWGAD ng;
- static RPORT *reqrp = 0;
- IMSG *m, msg;
- static UWORD guageX = 0, guageY = 0, guageW = 0, guageH = 0;
- UWORD ww;
- static BOOL activeFlag = 0;
-
- if (!screen)
- return 0;
-
- // these can't be initializers because topazRP may not have been
- // set up if we were called with the UPDATERC ('-u') option.
-
- titleLen = TextLength (topazRP, titleText, strlen (titleText));
- reqLen = TextLength (topazRP, reqText, strlen (reqText));
- buttonLen = TextLength (topazRP, buttonText, strlen (buttonText));
-
- win = mainWindow;
- width = titleLen;
- height = topazRP->TxHeight*6 + screen->BarHeight;
-
- vi = GetVisualInfo (screen, TAG_DONE);
- if (reqLen > width)
- width = reqLen;
- if (buttonLen > width)
- width = buttonLen;
- width += 10;
-
- if (!reqWindow) {
- if (percent >= 100)
- return 0;
- gadget = CreateContext (&gList);
- if (!gadget)
- return 0;
-
- ng.ng_GadgetID = 0;
- ng.ng_TextAttr = &topaz80;
- ng.ng_VisualInfo = vi;
- ng.ng_LeftEdge = (width - buttonLen) / 2;
- ng.ng_TopEdge = height - topazRP->TxHeight - 6 - INTERHEIGHT;
- ng.ng_Width = buttonLen + 6;
- ng.ng_Height = topazRP->TxHeight + 6;
- ng.ng_GadgetText = buttonText;
- ng.ng_Flags = NG_HIGHLABEL;
- gadget = CreateGadget (BUTTON_KIND, gadget, &ng,
- GT_Underscore, ' ', TAG_DONE);
- if (!gadget) {
- FreeGadgets (gList);
- gList = 0;
- return 0;
- }
-
- DisableWindow ();
- reqWindow = OpenWindowTags (NULL,
- WA_Left, win->LeftEdge + (win->Width - width) / 2,
- WA_Top, win->TopEdge + (win->Height - height) / 2,
- WA_Width,width,
- WA_Height,height,
- WA_DetailPen,3,
- WA_BlockPen,1,
- WA_IDCMP,BUTTONIDCMP|INACTIVEWINDOW,
- WA_Gadgets,gList,
- WA_Title,titleText,
- WA_CustomScreen,screen,
- WA_SuperBitMap,0,
- WA_MinWidth,30,
- WA_MinHeight,30,
- WA_MaxWidth,-1,
- WA_MaxHeight,-1,
- WA_SizeGadget,FALSE,
- WA_DragBar,FALSE,
- WA_DepthGadget,FALSE,
- WA_CloseGadget,FALSE,
- WA_Backdrop,FALSE,
- WA_ReportMouse,FALSE,
- WA_Borderless,FALSE,
- WA_Activate,TRUE,
- WA_RMBTrap,TRUE,
- WA_SimpleRefresh,TRUE,
- TAG_DONE
- );
- if (!reqWindow) {
- FreeGadgets (gList);
- gList = 0;
- EnableWindow ();
- return 1;
- }
- activeFlag = 1;
- GT_RefreshWindow (reqWindow, NULL);
-
- reqrp = reqWindow->RPort;
- SetFont (reqrp, topaz80Font);
-
- SetAPen (reqrp, 2);
- Move (reqrp, (width - reqLen) / 2, screen->BarHeight + 2 + reqrp->TxBaseline);
- Text (reqrp, reqText, strlen (reqText));
- guageH = 12;
- guageW = width - 16;
- guageX = (width - guageW) / 2;
- guageY = screen->BarHeight + 2 + reqrp->TxHeight + 2;
- DrawBevelBox (reqrp, guageX, guageY, guageW, guageH,
- GTBB_Recessed, TRUE, GT_VisualInfo, vi, TAG_DONE);
- guageW -=4;
- guageH -= 3;
- }
- if (percent >= 100) {
- CloseWindow (reqWindow);
- reqWindow = 0;
- FreeGadgets (gList);
- gList = 0;
- // GT_RefreshWindow (mainWindow, NULL);
- GT_BeginRefresh (mainWindow);
- GT_EndRefresh (mainWindow, TRUE);
- EnableWindow ();
- return 0;
- }
- ww = percent * guageW / 100;
- SetAPen (reqrp, 2);
- Move (reqrp, (width - reqLen) / 2, screen->BarHeight + 2 + reqrp->TxBaseline);
- Text (reqrp, reqText, strlen (reqText));
- guageH = 12;
- guageW = width - 16;
- guageX = (width - guageW) / 2;
- guageY = screen->BarHeight + 2 + reqrp->TxHeight + 2;
- DrawBevelBox (reqrp, guageX, guageY, guageW, guageH,
- GTBB_Recessed, TRUE, GT_VisualInfo, vi, TAG_DONE);
- guageW -=4;
- guageH -= 3;
- ww = percent * guageW / 100;
- if (ww) {
- SetAPen (reqrp,3);
- RectFill (reqrp, guageX + 2, guageY + 1,
- guageX + ww + 2, guageY + 1 + guageH);
- }
- while (m = GT_GetIMsg (reqWindow->UserPort)) {
- msg = *m;
- GT_ReplyIMsg (m);
- switch (msg.Class) {
- case IDCMP_GADGETUP:
- case IDCMP_GADGETDOWN:
- CloseWindow (reqWindow);
- reqWindow = 0;
- FreeGadgets (gList);
- gList = 0;
- EnableWindow ();
- return 1;
-
- case IDCMP_REFRESHWINDOW:
- GT_BeginRefresh (reqWindow);
- GT_EndRefresh (reqWindow, TRUE);
- break;
-
- case IDCMP_INACTIVEWINDOW:
- activeFlag = 0;
- break;
- }
- }
- if (!activeFlag && IntuitionBase->ActiveWindow == win) {
- MoveWindowInFrontOf(reqWindow, win);
- ActivateWindow(reqWindow);
- activeFlag = !0;
- }
- return 0;
- }
-
- BOOL OneGadgetRequest (char *titleText, char *reqText, char *buttonText)
- {
- int titleLen;
- int reqLen;
- int buttonLen;
- WINDOW *reqWindow = 0, *win = mainWindow;
- int width;
- int height;
- GADGET *gList = 0, *gadget;
- NEWGAD ng;
- RPORT *reqrp;
- IMSG *m, msg;
- BOOL activeFlag = 0;
-
- D (("OneGadgetRequest(): enter\n"));
-
- if (!screen || !topazRP) {
- D (("OneGadgetRequest(): exit, either no screen or no topaz\n"));
- return 0;
- }
-
- vi = GetVisualInfo (screen, TAG_DONE);
-
- titleLen = TextLength (topazRP, titleText, strlen (titleText));
- reqLen = TextLength (topazRP, reqText, strlen (reqText));
- buttonLen = TextLength (topazRP, buttonText, strlen (buttonText));
- width = titleLen;
- height = (topazRP->TxHeight * 4) + screen->BarHeight;
-
- if (reqLen > width)
- width = reqLen;
- else
- if (buttonLen > width)
- width = buttonLen;
- width += 10;
-
- gadget = CreateContext(&gList);
- if (!gadget) {
- D (("OneGadgetRequest(): exit, can't CreateContext()\n"));
- return 0;
- }
-
- ng.ng_GadgetID = 0;
- ng.ng_TextAttr = &topaz80;
- ng.ng_VisualInfo = vi;
- ng.ng_LeftEdge = (width - buttonLen) / 2;
- ng.ng_TopEdge = height - topazRP->TxHeight - 6 - INTERHEIGHT;
- ng.ng_Width = buttonLen + 6;
- ng.ng_Height = topazRP->TxHeight + 6;
- ng.ng_GadgetText = buttonText;
- ng.ng_Flags = NG_HIGHLABEL;
- gadget = CreateGadget (BUTTON_KIND, gadget, &ng,
- GT_Underscore, '_', TAG_DONE);
- if (!gadget) {
- FreeGadgets(gList);
- D (("OneGadgetRequest(): exit, can't CreateGadget (0)\n"));
- return 0;
- }
-
- DisableWindow ();
- reqWindow = OpenWindowTags (NULL,
- WA_Left, win->LeftEdge + (win->Width - width) / 2,
- WA_Top, win->TopEdge + (win->Height - height) / 2,
- WA_Width,width,
- WA_Height,height,
- WA_DetailPen,3,
- WA_BlockPen,1,
- WA_IDCMP,BUTTONIDCMP|INACTIVEWINDOW|IDCMP_RAWKEY,
- WA_Gadgets,gList,
- WA_Title,titleText,
- WA_CustomScreen,screen,
- WA_SuperBitMap,0,
- WA_MinWidth,30,
- WA_MinHeight,30,
- WA_MaxWidth,-1,
- WA_MaxHeight,-1,
- WA_SizeGadget,FALSE,
- WA_DragBar,FALSE,
- WA_DepthGadget,FALSE,
- WA_CloseGadget,FALSE,
- WA_Backdrop,FALSE,
- WA_ReportMouse,FALSE,
- WA_Borderless,FALSE,
- WA_Activate,TRUE,
- WA_RMBTrap,TRUE,
- WA_SimpleRefresh,TRUE,
- TAG_DONE
- );
- if (!reqWindow) {
- FreeGadgets(gList);
- EnableWindow ();
- D (("OneGadgetRequest(): exit, can't OpenWindow(reqWindow)\n"));
- return 0;
- }
- GT_RefreshWindow (reqWindow, NULL);
- activeFlag = 1;
-
- reqrp = reqWindow->RPort;
- SetFont (reqrp, topaz80Font);
-
- SetAPen (reqrp, 2);
- Move (reqrp, (width - reqLen) / 2, screen->BarHeight + 2 + reqrp->TxBaseline);
- Text (reqrp, reqText, strlen (reqText));
- MoveWindowInFrontOf (reqWindow, win);
-
- while (1) {
- #if 1
- WaitPort (reqWindow->UserPort);
- #else
- Delay (25);
- #endif
- while (m = GT_GetIMsg (reqWindow->UserPort)) {
- msg = *m;
- GT_ReplyIMsg (m);
- switch (msg.Class) {
- case IDCMP_GADGETUP:
- case IDCMP_GADGETDOWN:
- CloseWindow (reqWindow);
- FreeGadgets (gList);
- // GT_RefreshWindow (mainWindow, NULL);
- GT_BeginRefresh (mainWindow);
- GT_EndRefresh (mainWindow, TRUE);
- EnableWindow ();
- return 1;
-
- case IDCMP_REFRESHWINDOW:
- GT_BeginRefresh (reqWindow);
- SetAPen (reqrp, 2);
- Move (reqrp, (width - reqLen) / 2, screen->BarHeight + 2 + reqrp->TxBaseline);
- Text (reqrp, reqText, strlen (reqText));
- GT_EndRefresh (reqWindow, TRUE);
- break;
-
- case IDCMP_RAWKEY:
- // ESC
- if (msg.Code == 0x45) {
- CloseWindow (reqWindow);
- FreeGadgets (gList);
- EnableWindow ();
- return 1;
- }
- break;
-
- case IDCMP_INACTIVEWINDOW:
- activeFlag = 0;
- break;
-
- } // switch (msg.Class)...
- } // while (GT_GetIMsg())....
- if (!activeFlag && IntuitionBase->ActiveWindow == win) {
- MoveWindowInFrontOf (reqWindow, win);
- ActivateWindow (reqWindow);
- activeFlag = 1;
- SetAPen (reqrp, 2);
- Move (reqrp, (width - reqLen) / 2, screen->BarHeight + 2 + reqrp->TxBaseline);
- Text (reqrp, reqText, strlen (reqText));
- }
- } // while (1)....
- /* NOTREACHED */
- return 0;
- }
-
- BOOL TwoGadgetRequest (const char *titleText, const char *reqText,
- const char *leftText, const char *rightText)
- {
- int titleLen;
- int reqLen;
- int leftLen;
- int rightLen;
- WINDOW *reqWindow = 0, *win;
- int width;
- int height;
- GADGET *gList = 0, *gadget;
- NEWGAD ng;
- RPORT *reqrp;
- IMSG *m;
- BOOL activeFlag = 0;
- int i;
- int gad_id;
-
- D (("TwoGadgetRequest(): enter\n"));
-
- if (!screen || !topazRP) {
- D (("TwoGadgetRequest(): exit, either screen or topaz not set up\n"));
- return 0;
- }
-
- titleLen = TextLength (topazRP, titleText, strlen (titleText));
- reqLen = TextLength (topazRP, reqText, strlen (reqText));
- leftLen = TextLength (topazRP, leftText, strlen (leftText));
- rightLen = TextLength (topazRP, rightText, strlen (rightText));
- win = mainWindow;
- width = titleLen;
- height = (topazRP->TxHeight * 4) + screen->BarHeight;
-
- vi = GetVisualInfo (screen, TAG_DONE);
-
- if (leftLen > rightLen)
- rightLen = leftLen;
- else
- if (rightLen > leftLen)
- leftLen = rightLen;
- if (reqLen > width)
- width = reqLen;
- if ((leftLen + rightLen + 20) > width)
- width = leftLen + rightLen + 32;
- width += 10;
-
- gadget = CreateContext (&gList);
- if (!gadget) {
- D (("TwoGadgetRequest(): exit, CreateContext() failure\n"));
- return 0;
- }
-
- ng.ng_GadgetID = 0;
- ng.ng_TextAttr = &topaz80;
- ng.ng_VisualInfo = vi;
- ng.ng_LeftEdge = 6;
- ng.ng_TopEdge = height - topazRP->TxHeight - 6 - INTERHEIGHT;
- ng.ng_Width = leftLen + 6;
- ng.ng_Height = topazRP->TxHeight + 6;
- ng.ng_GadgetText = leftText;
- ng.ng_Flags = NG_HIGHLABEL;
- gadget = CreateGadget (BUTTON_KIND, gadget, &ng,
- GT_Underscore, '_', TAG_DONE);
- if (!gadget) {
- FreeGadgets (gList);
- D (("TwoGadgetRequest(): exit, CreateGadget (0) failure\n"));
- return 0;
- }
- ng.ng_GadgetID = 1;
- ng.ng_TextAttr = &topaz80;
- ng.ng_VisualInfo = vi;
- ng.ng_LeftEdge = width - rightLen - 12;
- ng.ng_TopEdge = height - topazRP->TxHeight - 6 - INTERHEIGHT;
- ng.ng_Width = rightLen + 6;
- ng.ng_Height = topazRP->TxHeight + 6;
- ng.ng_GadgetText = rightText;
- ng.ng_Flags = NG_HIGHLABEL;
- gadget = CreateGadget (BUTTON_KIND, gadget, &ng,
- GT_Underscore, '_', TAG_DONE);
- if (!gadget) {
- FreeGadgets (gList);
- D (("TwoGadgetRequest(): exit, CreateGadget (1) failure\n"));
- return 0;
- }
-
- DisableWindow ();
- reqWindow = OpenWindowTags (NULL,
- WA_Left, win->LeftEdge + (win->Width - width)/2,
- WA_Top, win->TopEdge + (win->Height - height)/2,
- WA_Width,width,
- WA_Height,height,
- WA_DetailPen,3,
- WA_BlockPen,1,
- WA_IDCMP,BUTTONIDCMP|INACTIVEWINDOW|VANILLAKEY,
- WA_Gadgets,gList,
- WA_Title,titleText,
- WA_CustomScreen,screen,
- WA_SuperBitMap,0,
- WA_MinWidth,30,
- WA_MinHeight,30,
- WA_MaxWidth,-1,
- WA_MaxHeight,-1,
- WA_SizeGadget,FALSE,
- WA_DragBar,FALSE,
- WA_DepthGadget,FALSE,
- WA_CloseGadget,FALSE,
- WA_Backdrop,FALSE,
- WA_ReportMouse,FALSE,
- WA_Borderless,FALSE,
- WA_Activate,TRUE,
- WA_RMBTrap,TRUE,
- WA_SimpleRefresh,TRUE,
- TAG_DONE
- );
- if (!reqWindow) {
- FreeGadgets (gList);
- EnableWindow ();
- D (("TwoGadgetRequest(): exit, OpenWindow (reqWindow) failure\n"));
- return 0;
- }
- GT_RefreshWindow (reqWindow, NULL);
- activeFlag = 1;
- reqrp = reqWindow->RPort;
- SetFont (reqrp, topaz80Font);
-
- SetAPen (reqrp, 2);
- Move (reqrp, (width - reqLen)/2, screen->BarHeight + 2 + reqrp->TxBaseline);
- Text (reqrp, reqText, strlen (reqText));
-
- MoveWindowInFrontOf (reqWindow, win);
- while (1) {
- #if 1
- WaitPort (reqWindow->UserPort);
- #else
- Delay (25); // why do this?
- #endif
- while (m = GT_GetIMsg (reqWindow->UserPort)) {
- switch (m->Class) {
- case IDCMP_GADGETUP:
- case IDCMP_GADGETDOWN:
- gadget = (GADGET *) m->IAddress;
- gad_id = gadget->GadgetID;
- GT_ReplyIMsg (m);
- CloseWindow (reqWindow);
- // FreeVisualInfo (vi);
- FreeGadgets (gList);
- // GT_RefreshWindow (mainWindow, NULL);
- GT_BeginRefresh (mainWindow);
- GT_EndRefresh (mainWindow, TRUE);
- EnableWindow ();
- if (gad_id) {
- D (("TwoGadgetRequest(): exit, Mouse NO (%d, 0x%x)\n", gad_id, gadget));
- return 0;
- }
- else {
- D (("TwoGadgetRequest(): exit, Mouse YES (%d, 0x%x)\n", gad_id, gadget));
- return 1;
- }
-
- case IDCMP_REFRESHWINDOW:
- GT_ReplyIMsg (m);
- GT_BeginRefresh (reqWindow);
- SetAPen (reqrp, 2);
- Move (reqrp, (width - reqLen)/2,screen->BarHeight + 2 + reqrp->TxBaseline);
- Text (reqrp, reqText, strlen (reqText));
- GT_EndRefresh (reqWindow, TRUE);
- break;
-
- case IDCMP_INACTIVEWINDOW:
- GT_ReplyIMsg (m);
- activeFlag = 0;
- break;
-
- case IDCMP_VANILLAKEY:
- i = m->Code;
- GT_ReplyIMsg (m);
- if (i == 'y' || i == 'Y' ||
- i == 'n' || i == 'N' || i == 0x1b) {
-
- CloseWindow (reqWindow);
- // FreeVisualInfo (vi);
- FreeGadgets (gList);
- EnableWindow ();
-
- if (i == 'y' || i == 'Y') {
- D (("TwoGadgetRequest(): exit, keyboard YES\n"));
- return 1;
- }
- else {
- D (("TwoGadgetRequest(): exit, keyboard NO\n"));
- return 0;
- }
- }
- break;
- default:
- GT_ReplyIMsg (m);
- break;
- } // switch...
- } // while (GT_GetIMsg())...
- if (!activeFlag && IntuitionBase->ActiveWindow == win) {
- MoveWindowInFrontOf (reqWindow, win);
- ActivateWindow (reqWindow);
- activeFlag = 1;
- SetAPen (reqrp, 2);
- Move (reqrp, (width - reqLen)/2, screen->BarHeight + 2 + reqrp->TxBaseline);
- Text (reqrp, reqText, strlen(reqText));
- }
- } // while (1)...
- /* NOTREACHED */
- return;
- }
-
- static char *postText[] = {
- "You are about to post news. This will cause a zillion Unix machines",
- "to spread your article all over the explored universe at a cost of",
- "several trillion dollars. And to top it off, you can expect other",
- "lunatics in NetLand to follow up to your article and do likewise.",
- "If you are lucky, you won't get flamed to a crisp.",
- " ",
- " Are you really sure you want to proceed? ",
- 0,
- };
-
- BOOL SendItRequest (void)
- {
- char *titleText = "GRn - Read Carefully before answering...";
- char *leftText = "_YES, I have guts";
- char *rightText = "_NO, I am a gutless worm";
- int titleLen;
- int reqLen;
- int leftLen;
- int rightLen;
- int width;
- int height;
- WINDOW *reqWindow = 0, *win = mainWindow;
- GADGET *gList = 0, *gadget;
- NEWGAD ng;
- RPORT *reqrp;
- IMSG *m;
- BOOL activeFlag = 0;
- int i, y;
- int gad_id;
-
- D (("SendItRequest(): enter\n"));
-
- if (!screen || !topazRP)
- return 0;
-
- titleLen = TextLength (topazRP, titleText, strlen (titleText));
- reqLen = TextLength (topazRP, postText [0], strlen (postText [0]));
- leftLen = TextLength (topazRP, leftText, strlen (leftText)) + INTERWIDTH;
- rightLen = TextLength (topazRP, rightText, strlen (rightText)) + INTERWIDTH;
- width = titleLen;
- height = (topazRP->TxHeight * 10) + screen->BarHeight;
-
- vi = GetVisualInfo (screen, TAG_DONE);
-
- if (leftLen > rightLen)
- rightLen = leftLen;
- else
- if (rightLen > leftLen)
- leftLen = rightLen;
- if (reqLen > width)
- width = reqLen;
- if ((leftLen + rightLen + 20) > width)
- width = leftLen + rightLen + 32;
- width += 10;
-
- gadget = CreateContext (&gList);
- if (!gadget) {
- D (("SendItRequest(): exit, CreateContext() failure\n"));
- return 0;
- }
-
- ng.ng_GadgetID = 0;
- ng.ng_TextAttr = &topaz80;
- ng.ng_VisualInfo = vi;
- ng.ng_LeftEdge = 6;
- ng.ng_TopEdge = height - topazRP->TxHeight - 6 - INTERHEIGHT;
- ng.ng_Width = leftLen + 6;
- ng.ng_Height = topazRP->TxHeight + 6;
- ng.ng_GadgetText = leftText;
- ng.ng_Flags = NG_HIGHLABEL;
- gadget = CreateGadget (BUTTON_KIND, gadget, &ng,
- GT_Underscore, '_', TAG_DONE);
- if (!gadget) {
- FreeGadgets (gList);
- D (("SendItRequest(): exit, CreateGadget (0) failure\n"));
- return 0;
- }
-
- ng.ng_GadgetID = 1;
- ng.ng_TextAttr = &topaz80;
- ng.ng_VisualInfo = vi;
- ng.ng_LeftEdge = width - rightLen - 12;
- ng.ng_TopEdge = height - topazRP->TxHeight - 6 - INTERHEIGHT;
- ng.ng_Width = rightLen+6;
- ng.ng_Height = topazRP->TxHeight + 6;
- ng.ng_GadgetText = rightText;
- ng.ng_Flags = NG_HIGHLABEL;
- gadget = CreateGadget (BUTTON_KIND, gadget, &ng,
- GT_Underscore, '_', TAG_DONE);
- if (!gadget) {
- FreeGadgets (gList);
- D (("SendItRequest(): exit, CreateGadget (1) failure\n"));
- return 0;
- }
-
- DisableWindow ();
- reqWindow = OpenWindowTags (NULL,
- WA_Left, win->LeftEdge + (win->Width - width)/2,
- WA_Top, win->TopEdge + (win->Height - height)/2,
- WA_Width,width,
- WA_Height,height,
- WA_DetailPen,3,
- WA_BlockPen,1,
- WA_IDCMP,BUTTONIDCMP|INACTIVEWINDOW|VANILLAKEY,
- WA_Gadgets,gList,
- WA_Title,titleText,
- WA_CustomScreen,screen,
- WA_SuperBitMap,0,
- WA_MinWidth,30,
- WA_MinHeight,30,
- WA_MaxWidth,-1,
- WA_MaxHeight,-1,
- WA_SizeGadget,FALSE,
- WA_DragBar,FALSE,
- WA_DepthGadget,FALSE,
- WA_CloseGadget,FALSE,
- WA_Backdrop,FALSE,
- WA_ReportMouse,FALSE,
- WA_Borderless,FALSE,
- WA_Activate,TRUE,
- WA_RMBTrap,TRUE,
- WA_SimpleRefresh,TRUE,
- TAG_DONE
- );
- if (!reqWindow) {
- FreeGadgets (gList);
- EnableWindow ();
- D (("SendItRequest(): exit, OpenWindow (reqWindow) failure\n"));
- return 0;
- }
- GT_RefreshWindow (reqWindow, NULL);
- activeFlag = 1;
- reqrp = reqWindow->RPort;
- SetFont (reqrp, topaz80Font);
-
- y = screen->BarHeight + 2 + reqrp->TxBaseline;
- for (i = 0; postText [i]; i++) {
- SetAPen (reqrp, 1);
- Move (reqrp, (width - reqLen)/2, y);
- Text (reqrp, postText [i], strlen (postText [i]));
- y += reqrp->TxHeight;
- }
-
- MoveWindowInFrontOf (reqWindow, win);
- while (1) {
- #if 1
- WaitPort (reqWindow->UserPort);
- #else
- Delay (25);
- #endif
- while (m = GT_GetIMsg (reqWindow->UserPort)) {
- switch (m->Class) {
- case IDCMP_GADGETUP:
- case IDCMP_GADGETDOWN:
- gadget = (GADGET *) m->IAddress;
- gad_id = gadget->GadgetID;
- GT_ReplyIMsg (m);
- CloseWindow (reqWindow);
- FreeGadgets (gList);
- // GT_RefreshWindow (mainWindow, NULL);
- GT_BeginRefresh (mainWindow);
- GT_EndRefresh (mainWindow, TRUE);
- EnableWindow ();
- if (gad_id) {
- D (("SendItRequest(): exit, Mouse NO (%d, 0x%x)\n", gad_id, gadget));
- return 0;
- }
- else {
- D (("SendItRequest(): exit, Mouse YES (%d, 0x%x)\n", gad_id, gadget));
- return 1;
- }
-
- case IDCMP_REFRESHWINDOW:
- GT_ReplyIMsg (m);
- GT_BeginRefresh (reqWindow);
- SetAPen (reqrp, 2);
- y = screen->BarHeight + 2 + reqrp->TxBaseline;
- for (i = 0; postText [i]; i++) {
- SetAPen (reqrp, 1);
- Move (reqrp, (width - reqLen)/2, y);
- Text (reqrp, postText [i], strlen (postText[i]));
- y += reqrp->TxHeight;
- }
- GT_EndRefresh (reqWindow, TRUE);
- break;
-
- case IDCMP_INACTIVEWINDOW:
- GT_ReplyIMsg (m);
- activeFlag = 0;
- break;
-
- case IDCMP_VANILLAKEY:
- i = m->Code;
- GT_ReplyIMsg (m);
- if (i == 'y' || i == 'Y' ||
- i == 'n' || i == 'N' || i == 0x1b) {
-
- CloseWindow (reqWindow);
- FreeGadgets (gList);
- EnableWindow ();
- if (i == 'y' || i == 'Y') {
- D (("SendItRequest(): exit, keyboard YES\n"));
- return 1;
- }
- D (("SendItRequest(): exit, keyboard NO\n"));
- return 0;
- }
- break;
- default:
- GT_ReplyIMsg (m);
- break;
- } // switch (m->Class)...
- } // while (m = GT_GetIMsg())....
- if (!activeFlag && IntuitionBase->ActiveWindow == win) {
- MoveWindowInFrontOf (reqWindow, win);
- ActivateWindow (reqWindow);
- activeFlag = 1;
- y = screen->BarHeight + 2 + reqrp->TxBaseline;
- for (i = 0; postText [i]; i++) {
- SetAPen (reqrp, 1);
- Move (reqrp, (width - reqLen)/2, y);
- Text (reqrp, postText [i], strlen (postText [i]));
- y += reqrp->TxHeight;
- }
- }
- } // while (1)
- /* NOTREACHED */
- return;
- }
-