/**************************************************************************** ShowScr.c This file should be linked together with a compiled version of Stolen.c, or whatever it's name may be. That file must contain the following: - A NewScreen structure: The Screen to be shown; - A list of NewWindows: The Windows to be opened on it; - A list of Menus: The Menu for the Window at the according index. Rick van Rein, October 2, 1990 ****************************************************************************/ #include #include struct IntuitionBase *IntuitionBase; struct GfxBase *GfxBase; extern struct NewWindow *swin1 []; /* Ending in NULL */ extern struct Menu *smen1 []; /* Congruent with latter, but NULL means "no MenuStrip" */ extern struct NewScreen nscr1; /* The Screen itself */ extern short cols1 []; /* The Screen's colours */ /***** This routine opens a Window with a Close-Gadget in it: */ #define BLUE_0 0 #define WHITE_1 1 #define BLACK_2 2 #define ORANGE_3 3 struct NewWindow closewin = { 30,30, /* LeftEdge,TopEdge */ 360,10, /* Width,Height */ BLUE_0,WHITE_1, /* DetailPen,BlockPen */ CLOSEWINDOW, /* IDCMPFlags */ WINDOWDRAG | WINDOWDEPTH | WINDOWCLOSE | SMART_REFRESH, /* Flags */ NULL, /* FirstGadget */ NULL, /* CheckMark */ (UBYTE *) " <<< Click here to finish ShowScr ", /* Title */ NULL, /* Screen */ NULL, /* BitMap */ -1,-1, /* MinWidth,MinHeight */ -1,-1, /* MaxWidth,MaxHeight */ WBENCHSCREEN /* Type */ }; void WaitForClick () { struct Window *win; if (win=OpenWindow (&closewin)) { WaitPort (win->UserPort); ReplyMsg (GetMsg (win->UserPort)); /* Our Gadget was Clicked */ CloseWindow (win); } else puts ("\tShowScr: Can't open Window on Workbench Screen"); } /***** The main routine of the showing mechanism: */ main () { struct Screen *scr; struct NewWindow **wp; struct Window *win,*next; struct Menu **mp; int ok; if (!(IntuitionBase=(struct IntuitionBase *) OpenLibrary ("intuition.library",0L))) { puts ("\tShowScr: Can't open intuition.library (?)"); exit (0); } if (!(GfxBase=(void *) OpenLibrary ("graphics.library",0L))) { puts ("\tShowScr: Can't open graphics.library (?)"); exit (0); } scr=OpenScreen (&nscr1); if (!scr) { puts ("\tShowScr: Can't open Screen as defined by scr1"); exit (0); } LoadRGB4 (&scr->ViewPort,cols1,1L << nscr1.Depth); wp=swin1; mp=smen1; ok=1; while (ok && *wp) { (*wp)->Screen=scr; (*wp)->Type=CUSTOMSCREEN; win=OpenWindow (*wp); if ((ok=(win!=NULL)) && *mp) SetMenuStrip (win,*mp); wp++; mp++; } if (ok) WaitForClick (); else puts ("\tShowScr: Not all Windows as described in swin1 could be opened"); win=scr->FirstWindow; while (win) { next=win->NextWindow; CloseWindow (win); win=next; } CloseScreen (scr); CloseLibrary (GfxBase); CloseLibrary (IntuitionBase); }