home *** CD-ROM | disk | FTP | other *** search
- /*
- ***************************************************************************
- *
- * Datei:
- * RSysInit.c
- *
- * Inhalt:
- * void RefreshRastPort(struct Window *wind, struct Gadget **gads, int *gadnum, int cnt);
- * long SetupScreen(void);
- * void CloseDownScreen(void);
- * int OpenSysWindow(void);
- *
- * Bemerkungen:
- * Initialisierung des Hauptfensters von RSys.
- *
- * Erstellungsdatum:
- * 07-Jul-93 Rolf Böhme
- *
- * Änderungen:
- * 07-Jul-93 Rolf Böhme Erstellung
- *
- ***************************************************************************
- */
-
- #include "RSysDebug.h"
- #include "RSysFunc.h"
-
- /*
- * FillGadget() löscht den Hintergrund eines Boolean-Gadgets
- */
- static void
- FillGadget( struct Window *wind, struct Gadget *gad )
- {
- BYTE GadType = (BYTE)gad->GadgetType;
- UWORD pos = RemoveGadget(wind,gad);
-
- if(GadType == GTYP_STRGADGET)
- EraseRect( wind->RPort,(long)gad->LeftEdge - 2,
- (long)gad->TopEdge - 1,
- (long)(gad->LeftEdge + gad->Width + 1),
- (long)(gad->TopEdge + gad->Height) );
- else
- EraseRect( wind->RPort,(long)gad->LeftEdge,
- (long)gad->TopEdge,
- (long)(gad->LeftEdge + gad->Width - 1),
- (long)(gad->TopEdge + gad->Height - 1) );
-
- AddGadget(wind,gad,(ULONG)pos);
-
- return;
- }
-
- /*
- * RefreshRastPort() malt das Hintergrundmuster und erneuert
- * die Gadgets und deren Hintergrund
- */
- void
- RefreshRastPort(struct Window *wind, struct Gadget **gads,
- int *gadnum, int cnt)
- {
- struct RastPort *RP = wind->RPort;
- struct Gadget *gad;
- extern int bpc, bgc;
- extern long bpp;
- register int i;
-
- if((bgc || bpc) && NOT(wind->Flags & WFLG_ZOOMED))
- {
- SetAfPt(RP,(USHORT *)&bpp,1L);
-
- SetAPen(RP,bpc);
- SetBPen(RP,bgc);
-
- SetDrMd(RP,JAM2);
-
- /*
- MyEasyRequest(SysWnd, (UBYTE *)"huhu",(UBYTE *)"Ok",
- (UBYTE *)"OffX: %ld\nScr->WBorRight: %ld",
- OffX, Scr->WBorRight);
- */
-
- RectFill(RP,(long)OffX,(long)OffY,
- (long)wind->Width - Scr->WBorRight /* - OffX + 3*/,
- (long)wind->Height - Scr->WBorBottom + 1 );
-
- SetAfPt(RP,NULL,NULL);
-
- for(i = 0; i < cnt; i++)
- FillGadget( wind,gads[gadnum[i]] );
-
-
- for(gad = gads[0]; gad; gad = gad->NextGadget)
- if(gad->GadgetText)
- {
- int pixlen = IntuiTextLength(gad->GadgetText);
- int x = gad->LeftEdge + gad->GadgetText->LeftEdge - 3,
- y = gad->TopEdge + gad->GadgetText->TopEdge - 2,
- w = pixlen + 6,
- h = gad->GadgetText->ITextFont->ta_YSize + 4;
-
- EraseRect( wind->RPort,(long)x, (long)y, (long)(x + w - 1), (long)(y + h - 1));
-
- DrawBevelBox( wind->RPort, x, y, w, h,
- GTBB_Recessed, TRUE,
- GT_VisualInfo, VisualInfo,
- TAG_DONE );
- }
-
- RefreshGadgets(wind->FirstGadget, wind,NULL);
- RefreshWindowFrame(wind);
- }
-
- GT_RefreshWindow( wind, NULL );
-
- return;
- }
-
- /*
- * SetupScreen() ermittelt eine Zeiger auf den vordersten
- * Screen. Ist der vorderste Screen kein PublicScreen,
- * wird der WorkBench-Screen als Default-Screen genommen.
- */
- long
- SetupScreen(void)
- {
- extern struct Screen *lastpubscreen;
-
- DPOS;
-
- (void)FindFrontPubScr(lastpubscreen);
-
- if (NOT(Scr = LockPubScreen(namebuffer)))
- {
- strcpy((char *)namebuffer,"Workbench");
- if (NOT(Scr = LockPubScreen(namebuffer)))
- return (1L);
- }
-
- ComputeFont(Scr,(UWORD) 0, (UWORD) 0);
-
- if (NOT(VisualInfo = GetVisualInfo(Scr, TAG_DONE)))
- return (2L);
-
- lastpubscreen = Scr;
-
- return (NULL);
- }
-
- /*
- * CloseDownScreen() gibt den Screen frei, auf den ein
- * RSys-Window geöffnet wurde.
- */
- void
- CloseDownScreen(void)
- {
- DPOS;
-
- if (VisualInfo)
- {
- FreeVisualInfo(VisualInfo);
- VisualInfo = NULL;
- }
-
- if (Scr)
- {
- UnlockPubScreen(NULL, Scr);
- Scr = NULL;
- }
-
- return;
- }
-
- static UWORD SysGTypes[] = {
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- LISTVIEW_KIND,
- TEXT_KIND,
- TEXT_KIND
- };
-
- static struct NewGadget SysNGad[] = {
- 5,117,93,12, (UBYTE *)"_Tasks",NULL,GD_TasksGad,PLACETEXT_IN,NULL,NULL,
- 101,117,93,12,(UBYTE *)"_Libraries",NULL,GD_LibrariesGad,PLACETEXT_IN,NULL,NULL,
- 197,117,93,12,(UBYTE *)"_Memory",NULL,GD_MemoryGad,PLACETEXT_IN,NULL,NULL,
- 293,117,93,12,(UBYTE *)"_Ports",NULL,GD_PortsGad,PLACETEXT_IN,NULL,NULL,
-
- 5,131,93,12, (UBYTE *)"_Volumes",NULL,GD_VolumesGad,PLACETEXT_IN,NULL,NULL,
- 101,131,93,12,(UBYTE *)"_Assigns",NULL,GD_AssignsGad,PLACETEXT_IN,NULL,NULL,
- 197,131,93,12,(UBYTE *)"_Fonts",NULL,GD_FontsGad,PLACETEXT_IN,NULL,NULL,
- 293,131,93,12,(UBYTE *)"_Ressources",NULL,GD_ResourcesGad,PLACETEXT_IN,NULL,NULL,
-
- 5,145,93,12, (UBYTE *)"_Interrupts",NULL,GD_InterruptsGad,PLACETEXT_IN,NULL,NULL,
- 101,145,93,12,(UBYTE *)"_Windows",NULL,GD_WindowsGad,PLACETEXT_IN,NULL,NULL,
- 197,145,93,12,(UBYTE *)"_Screens",NULL,GD_ScreensGad,PLACETEXT_IN,NULL,NULL,
- 293,145,93,12,(UBYTE *)"_HandlerInp",NULL,GD_HandlerInpGad,PLACETEXT_IN,NULL,NULL,
-
- 5,159,93,12, (UBYTE *)"S_ystem",NULL,GD_SystemGad,PLACETEXT_IN,NULL,NULL,
- 101,159,93,12,(UBYTE *)"Har_dware",NULL,GD_HardwareGad,PLACETEXT_IN,NULL,NULL,
- 197,159,93,12,(UBYTE *)"Save List",NULL,GD_SaveListGad,PLACETEXT_IN,NULL,NULL,
- 293,159,93,12,(UBYTE *)"_Jump",NULL,GD_JumpGad,PLACETEXT_IN,NULL,NULL,
-
- 5,16,381,85, (UBYTE *)NULL,NULL,GD_ListeLV,0,NULL,NULL,
-
- 5,2,381,12, (UBYTE *)NULL,NULL,GD_TextHeader,0,NULL,NULL,
-
- 5,102,381,13, (UBYTE *)NULL,NULL,GD_InfoMsgGad,0,NULL,NULL
- };
-
- extern struct List ListeLVList;
-
- static ULONG *SysGTags[] = {
- (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
- (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
- (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
- (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
- (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
- (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
- (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
- (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
- (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
- (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
- (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
- (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
- (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
- (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
- (ULONG *)(TAG_DONE),
- (ULONG *)(GT_Underscore), (ULONG *)'_', (ULONG *)(TAG_DONE),
-
- (ULONG *)(GTLV_Labels), (ULONG *)&ListeLVList, (ULONG *)(TAG_DONE),
- (ULONG *)(GTTX_Text), (ULONG *)NULL,(ULONG *)(GTTX_Border), (ULONG *)TRUE, (ULONG *)(TAG_DONE),
- (ULONG *)(GTTX_Text), (ULONG *)NULL,(ULONG *)(GTTX_Border), (ULONG *)TRUE,(ULONG *)(TAG_DONE)
- };
-
- #define Sys_CNT 19
-
- /*
- * OpenSysWindow() öffnet das Hauptfenster von RSys
- */
- int
- OpenSysWindow(void)
- {
- struct NewGadget ng;
- struct Gadget *g;
- UWORD wleft = SysLeft,
- wtop = SysTop,
- ww,
- wh;
- UWORD lc, tc;
- extern int winddetail,windblock,menudetail;
-
- DPOS;
-
- ComputeFont(Scr,SysWidth, SysHeight);
-
- ww = compute((UWORD) 0, FontX, (int)SysWidth);
- wh = compute((UWORD) 0, FontY, (int)SysHeight);
-
- if ((wleft + ww + OffX + Scr->WBorRight) > Scr->Width)
- wleft = Scr->Width - ww;
- if ((wtop + wh + OffY + Scr->WBorBottom) > Scr->Height)
- wtop = Scr->Height - wh;
-
- ww = compute((UWORD) (OffX + Scr->WBorRight), FontX, (int)SysWidth);
- wh = compute((UWORD) (OffY + Scr->WBorBottom), FontY, (int)SysHeight);
-
- CenterWindow(Scr, &wtop, &wleft, ww, wh);
-
- if (NOT(g = CreateContext(&SysGList)))
- return (1L);
-
- SysGTags[50] = (ULONG *)&EntryAttr[LastID].ea_header[0];
-
- for( lc = 0, tc = 0; lc < Sys_CNT; lc++ ) {
-
- CopyMem(&SysNGad[ lc ], &ng, sizeof( struct NewGadget ));
-
- ng.ng_VisualInfo = VisualInfo;
- ng.ng_TextAttr = Font;
- ng.ng_LeftEdge = OffX + ComputeX( ng.ng_LeftEdge );
- ng.ng_TopEdge = OffY + ComputeY( ng.ng_TopEdge );
- ng.ng_Width = ComputeX( ng.ng_Width );
- ng.ng_Height = ComputeY( ng.ng_Height);
-
- SysGadgets[ lc ] = g = CreateGadgetA((ULONG)SysGTypes[ lc ], g, &ng, ( struct TagItem * )&SysGTags[ tc ] );
-
- while( SysGTags[ tc ] ) tc += 2;
- tc++;
-
- if ( NOT g )
- return( 2L );
- }
-
- #define FFLAG 62
-
- SysNewMenu[FFLAG].nm_Flags = (Flags.fastmode ? (CHECKIT | CHECKED | MENUTOGGLE) :
- (CHECKIT | MENUTOGGLE)) ;
- SysNewMenu[FFLAG+1].nm_Flags = (Flags.sortmode ? (CHECKIT | CHECKED | MENUTOGGLE) :
- (CHECKIT | MENUTOGGLE)) ;
- SysNewMenu[FFLAG+2].nm_Flags = (Flags.workingbar ? (CHECKIT | CHECKED | MENUTOGGLE) :
- (CHECKIT | MENUTOGGLE)) ;
- SysNewMenu[FFLAG+3].nm_Flags = (Flags.autofront ? (CHECKIT | CHECKED | MENUTOGGLE) :
- (CHECKIT | MENUTOGGLE)) ;
- SysNewMenu[FFLAG+4].nm_Flags = (Flags.mousewindow ? (CHECKIT | CHECKED | MENUTOGGLE) :
- (CHECKIT | MENUTOGGLE)) ;
- SysNewMenu[FFLAG+5].nm_Flags = (Flags.sysfont ? (CHECKIT | CHECKED | MENUTOGGLE) :
- (CHECKIT | MENUTOGGLE));
- SysNewMenu[FFLAG+7].nm_Flags = (Flags.speakmode ? (CHECKIT | CHECKED | MENUTOGGLE) :
- (CHECKIT | MENUTOGGLE));
- SysNewMenu[FFLAG+9].nm_Flags = (Flags.saveasking ? (CHECKIT | CHECKED | MENUTOGGLE) :
- (CHECKIT | MENUTOGGLE));
-
- if (NOT(SysMenus = CreateMenus(SysNewMenu, GTMN_FrontPen, menudetail, TAG_DONE)))
- return (3L);
-
- LayoutMenus(SysMenus, VisualInfo, TAG_DONE);
-
- SysZoom[0] = 300;
- SysZoom[1] = 0;
- SysZoom[2] = compute((UWORD) (OffX + Scr->WBorRight), FontX, 158);
- SysZoom[3] = OffY;
-
- if (NOT(SysWnd = OpenWindowTags(NULL,
- WA_Left, wleft,
- WA_Top, wtop,
- WA_Width, ww,
- WA_Height, wh,
- WA_DetailPen, winddetail,
- WA_BlockPen, windblock,
- WA_IDCMP, BUTTONIDCMP |
- LISTVIEWIDCMP |
- IDCMP_MOUSEBUTTONS |
- IDCMP_MOUSEMOVE |
- IDCMP_CLOSEWINDOW |
- IDCMP_ACTIVEWINDOW |
- IDCMP_INACTIVEWINDOW |
- IDCMP_RAWKEY |
- IDCMP_VANILLAKEY |
- IDCMP_CHANGEWINDOW |
- IDCMP_DISKREMOVED |
- IDCMP_DISKINSERTED |
- IDCMP_MENUPICK,
- WA_Flags, WFLG_DRAGBAR |
- WFLG_DEPTHGADGET |
- WFLG_CLOSEGADGET |
- WFLG_SMART_REFRESH |
- WFLG_NOCAREREFRESH,
- WA_Gadgets, SysGList,
- WA_PubScreenName, (LONG) namebuffer,
- WA_PubScreenFallBack, TRUE,
- WA_PubScreen, Scr,
- WA_Title, SysWdt,
- WA_Zoom, SysZoom,
- /* WA_Dummy + 0x30, 1L,*/
- TAG_DONE)))
- return (4L);
-
- SysZoom[0] = SysWnd->LeftEdge;
- SysZoom[1] = SysWnd->TopEdge;
- SysZoom[2] = SysWnd->Width;
- SysZoom[3] = SysWnd->Height;
-
- SetMenuStrip(SysWnd, SysMenus);
-
- if(NOT(Flags.wb_start))
- OffMenu(SysWnd, 0);
-
- RefreshMainWindowPattern();
-
- if(Flags.autofront)
- {
- WindowToFront(SysWnd);
- ActivateWindow(SysWnd);
- }
-
- return (NULL);
- }
-