home *** CD-ROM | disk | FTP | other *** search
- /* ******************************************************************** */
- /* C code generated by: */
- /* Visual Arts Version 1.0 */
- /* Copyright 1994 Danny Y. Wong All rights reserved */
- /* Calgary, Alberta (CANADA) */
- /* Partial of the code is copyright by Jaba Development */
- /* ******************************************************************** */
-
- #include <exec/types.h>
- #include <exec/memory.h>
- #include <intuition/intuition.h>
- #include <intuition/gadgetclass.h>
- #include <graphics/displayinfo.h>
- #include <graphics/gfxbase.h>
- #include <graphics/gfxmacros.h>
- #include <libraries/gadtools.h>
- #include <libraries/dos.h>
- #include <libraries/asl.h>
-
- #include <clib/exec_protos.h>
- #include <clib/intuition_protos.h>
- #include <clib/gadtools_protos.h>
- #include <clib/graphics_protos.h>
- #include <clib/utility_protos.h>
- #include <clib/alib_protos.h>
- #include <clib/dos_protos.h>
- #include <clib/asl_protos.h>
- #include "string.h"
-
- #define ID_ok 0
- #define ID_ok11 1
-
- #define CustomNumGads 2
- #include "CustomScr.h"
-
- int okObj(struct VAobject VAObject);
- int ok11Obj(struct VAobject VAObject);
-
- int SetupScreen(void);
- void CloseDownScreen(void);
- int OpenCustomWindow(char windtitle[80]);
- void CloseCustomWindow(void);
- int CustomHandler(void);
- int CustomMainHandler(void);
- void DrawCustomObjs(void);
- int main(int argc, char *argv[]);
-
- struct Screen *PubScr=NULL;
- struct DrawInfo *ScrDrawInfo=NULL;
- APTR VisualInfo = NULL;
- struct Screen *Scr = NULL;
- struct Window *CustomWnd = NULL;
- struct Menu *CustomMenus = NULL;
- struct Gadget *CustomGList = NULL;
- struct Gadget *CustomGadgets[2];
- struct IntuiMessage CustomMsg;
- UWORD CustomLeft = 88;
- UWORD CustomTop = 79;
- UWORD CustomWidth = 415;
- UWORD CustomHeight = 179;
- struct NewMenu CustomNewMenu1[] = {
-
- { NM_TITLE, "Project", 0 , 0 , 0 , 0,},
- { NM_ITEM, "About", 0 , 0L , 0 , 0,},
- { NM_SUB, "Visual Arts V1", 0 , 0L , 0 , (APTR)Visual_Arts_V1MenuObj,},
- { NM_SUB, "Copyright 1994 Danny Y Wong", 0 , 0L , 0 , (APTR)Copyright_1994_Danny_Y_WongMenuObj,},
- { NM_SUB, "All Rights Reserved", 0 , 0L , 0 , (APTR)All_Rights_ReservedMenuObj,},
- { NM_ITEM, NM_BARLABEL, 0 , 0 , 0 , 0,},
- { NM_ITEM, "Open", "O", 0L , 0, (APTR)OpenMenuObj,},
- { NM_ITEM, "Save", "S", 0L , 0, (APTR)SaveMenuObj,},
- { NM_ITEM, NM_BARLABEL, 0 , 0 , 0 , 0,},
- { NM_ITEM, "Print", 0 , 0L , 0 , 0,},
- { NM_SUB, "Printer", "1", CHECKED , 0, (APTR)PrinterMenuObj,},
- { NM_SUB, "File", "2", 0L , 0, (APTR)FileMenuObj,},
- { NM_SUB, "Plotter", "3", 0L , 0, (APTR)PlotterMenuObj,},
- { NM_SUB, "Postscript", "4", 0L , 0, (APTR)PostscriptMenuObj,},
- { NM_ITEM, NM_BARLABEL, 0 , 0 , 0 , 0,},
- { NM_ITEM, "Quit", "Q", 0L , 0, (APTR)QuitMenuObj,},
-
- { NM_TITLE, "Edit", 0 , 0 , 0 , 0,},
- { NM_ITEM, "Undo", "Z", 0L , 0, (APTR)UndoMenuObj,},
- { NM_ITEM, NM_BARLABEL, 0 , 0 , 0 , 0,},
- { NM_ITEM, "Copy", "C", 0L , 0, (APTR)CopyMenuObj,},
- { NM_ITEM, "Paste", "V", 0L , 0, (APTR)PasteMenuObj,},
- { NM_ITEM, "Cut", "X", 0L , 0, (APTR)CutMenuObj,},
-
- { NM_TITLE, "Misc", 0 , 0 , 0 , 0,},
- { NM_ITEM, "Font", 0 , 0L , 0 , (APTR)FontMenuObj,},
- { NM_ITEM, "Prefs", 0 , 0L , 0 , (APTR)PrefsMenuObj,},
-
- { NM_END, NULL, 0 , 0 , 0 , 0,},
- };
-
- struct TextAttr topaz8 = { (STRPTR)"topaz.font", 8, 0x00, 0x01 };
- struct TextAttr topaz800 = { (STRPTR)"topaz.font", 8, 0x00, 0x00 };
-
- struct IntuiText CustomIText[] = {
- 2, 0, JAM2, 98, 19, &topaz800, (UBYTE *)"This is a custom screen demo", &CustomIText[1],
- 1, 0, JAM2, 50, 37, &topaz800, (UBYTE *)"Creating requester like window is easy", &CustomIText[2],
- 1, 0, JAM2, 134, 50, &topaz800, (UBYTE *)"in Visual Arts.", &CustomIText[3],
- 1, 3, JAM2, 39, 75, &topaz800, (UBYTE *)"Try out the menus. Menus was constructed", &CustomIText[4],
- 2, 0, JAM2, 39, 87, &topaz800, (UBYTE *)"in minutes with Visual Arts Menu Manager.", &CustomIText[5],
- 2, 1, JAM2, 106, 103, &topaz800, (UBYTE *)"Select OK to quit Demo", NULL,
- };
-
- WORD CustomGadTypes[] = {
- BUTTON_KIND,
- BUTTON_KIND,
- };
-
- struct NewGadget CustomNGads[] = {
- 17, 136, 93, 22, (UBYTE *)"_OK",&topaz800, ID_ok, PLACETEXT_IN, NULL, (APTR)okObj,
- 297, 136, 93, 22, (UBYTE *)"_Cancel",&topaz800, ID_ok11, PLACETEXT_IN, NULL, (APTR)ok11Obj,
- };
-
- ULONG CustomNTags[] = {
- (GT_Underscore), '_', TAG_DONE,
- (GT_Underscore), '_', TAG_DONE,
- };
-
- int SetupScreen(void)
- {
- PubScr = LockPubScreen("Workbench");
- if (PubScr != NULL)
- {
- ScrDrawInfo = GetScreenDrawInfo(PubScr);
- if (!(Scr = OpenScreenTags(NULL,
- SA_Left, 0,
- SA_Top, 0,
- SA_Width, 640,
- SA_Height, 400,
- SA_Depth, 2,
- SA_Font, &topaz800,
- SA_Type, CUSTOMSCREEN,
- SA_DisplayID, 102404,
- SA_AutoScroll, TRUE,
- SA_Overscan, 1,
- SA_Pens, (ULONG)(ScrDrawInfo->dri_Pens),
- SA_Title, "Visual Arts V1.0 Copyright 1994 Danny Y. Wong All Rights Reserved.",
- TAG_DONE)))
- return(1L);
- }
- else
- return(1L);
-
- if (!(VisualInfo = GetVisualInfo(Scr, TAG_DONE)))
- return(2L);
- return(0L);
- }
-
- void CloseDownScreen(void)
- {
- if (ScrDrawInfo)
- FreeScreenDrawInfo(PubScr, ScrDrawInfo);
- if (VisualInfo)
- FreeVisualInfo(VisualInfo);
- if (Scr)
- CloseScreen(Scr);
- if (PubScr)
- UnlockPubScreen(NULL, PubScr);
- }
-
- int OpenCustomWindow(char windtitle[80])
- {
- struct NewGadget NewGad;
- struct Gadget *Gad;
- register UWORD i, j;
- UWORD offsetx = Scr->WBorLeft;
- UWORD offsety = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
-
- if (!(Gad = CreateContext(&CustomGList)))
- return(1L);
-
- for (i=0, j=0; i < CustomNumGads; i++)
- {
- CopyMem((char *)&CustomNGads[i], (char *)&NewGad, (long)sizeof(struct NewGadget));
-
- NewGad.ng_VisualInfo = VisualInfo;
- NewGad.ng_LeftEdge += offsetx;
- NewGad.ng_TopEdge += offsety;
-
- CustomGadgets[i] = Gad = CreateGadgetA((ULONG)CustomGadTypes[i], Gad,&NewGad,
- (struct TagItem *)&CustomNTags[j]);
- while (CustomNTags[j])
- j +=2;
- j++;
- if (!Gad)
- return(2L);
- }
-
- if (!(CustomMenus = CreateMenus(CustomNewMenu1,
- GTMN_FrontPen, 0L, TAG_DONE)))
- return(3L);
- LayoutMenus(CustomMenus, VisualInfo, GTMN_TextAttr,
- &topaz800, TAG_DONE);
-
- if (!(CustomWnd = OpenWindowTags(NULL,
- WA_Left, CustomLeft,
- WA_Top, CustomTop,
- WA_Width, CustomWidth,
- WA_Height, CustomHeight - Scr->WBorTop,
- WA_IDCMP, IDCMP_CLOSEWINDOW | IDCMP_GADGETUP | IDCMP_VANILLAKEY | IDCMP_REFRESHWINDOW | IDCMP_MENUPICK ,
- WA_Flags, WFLG_CLOSEGADGET | WFLG_SIMPLE_REFRESH | WFLG_ACTIVATE | WFLG_DRAGBAR ,
- WA_Gadgets, CustomGList,
- WA_Title, windtitle,
- WA_ScreenTitle, "Visual Arts V1.0 Copyright 1994 Danny Y. Wong All Rights Reserved.",
- WA_CustomScreen, Scr,
- WA_AutoAdjust, TRUE,
- WA_MinWidth, 20,
- WA_MinHeight, 10,
- WA_MaxWidth, 640,
- WA_MaxHeight, 400,
- TAG_DONE)))
- return(3L);
-
- SetMenuStrip(CustomWnd, CustomMenus);
- DrawCustomObjs();
- GT_RefreshWindow(CustomWnd, NULL);
- RefreshGadgets(CustomGadgets[0], CustomWnd, NULL);
- return(0L);
- }
-
- void CloseCustomWindow(void)
- {
- if (CustomWnd)
- CloseWindow(CustomWnd);
- if (CustomGList)
- FreeGadgets(CustomGList);
- if (CustomMenus)
- {
- ClearMenuStrip(CustomWnd);
- FreeMenus(CustomMenus);
- }
- }
-
- int CustomHandler(void)
- {
- struct MenuItem *menu;
- struct IntuiMessage *msg;
- struct VAobject VAObject;
- int running = 1;
- int (*func)(struct VAobject VAObject);
- ULONG class;
- UWORD code;
-
- while (msg=GT_GetIMsg(CustomWnd->UserPort))
- {
- CopyMem((char *)msg, (char *)&CustomMsg, (long)sizeof(struct IntuiMessage));
- class = msg->Class;
- code = msg->Code;
-
- GT_ReplyIMsg(msg);
- switch(class)
- {
-
- case IDCMP_REFRESHWINDOW:
- GT_BeginRefresh(CustomWnd);
- DrawCustomObjs();
- GT_EndRefresh(CustomWnd, NULL);
- break;
-
- case IDCMP_CLOSEWINDOW:
- return(0);
- break;
-
- case IDCMP_GADGETUP:
- VAObject.va_Window = (struct Window *)CustomWnd;
- VAObject.va_Gadget = (struct Gadget *)msg->IAddress;
- VAObject.va_IntuiMsg = (struct IntuiMessage *)msg;
- VAObject.va_Flags = 0;
- VAObject.va_UserData = 0;
- func = (void *)((struct Gadget *)CustomMsg.IAddress)->UserData;
- running = func(VAObject);
- break;
-
-
- case IDCMP_VANILLAKEY:
- switch(code)
- {
- case 'O':
- case 'o': //added
- ButtonSelected(CustomWnd, CustomGadgets[0]);
- running = -1; //added
- break;
- case 'C':
- ButtonSelected(CustomWnd, CustomGadgets[1]);
- break;
- }
- break;
-
- case IDCMP_MENUPICK:
- while ( code != MENUNULL)
- {
- VAObject.va_Window = (struct Window *)CustomWnd;
- VAObject.va_Gadget = NULL;
- VAObject.va_IntuiMsg = (struct IntuiMessage *)msg;
- VAObject.va_Flags = NULL;
- VAObject.va_UserData = 0;
- menu = ItemAddress(CustomMenus, code);
- func = (void *)(GTMENUITEM_USERDATA(menu));
- running = func(VAObject);
- code = menu->NextSelect;
- }
- break;
- }
- }
- return(running);
- }
-
- void DrawCustomObjs(void)
- {
- CustomDrawRects(CustomWnd);
- CustomDrawLine(CustomWnd);
- PrintIText(CustomWnd->RPort, CustomIText, CustomWnd->BorderLeft, CustomWnd->BorderTop);
-
- }
-
- int CustomMainHandler(void)
- {
- int running = 1;
- ULONG windsig, signals;
-
- while (running == 1)
- {
- windsig = 1L << CustomWnd->UserPort->mp_SigBit;
- signals = Wait( windsig );
- if (signals & windsig)
- {
- running = CustomHandler();
- }
- }
- return(running);
- }
-
- int main(int argc, char *argv[])
- {
- int rc;
-
- if (!(SetupScreen()))
- {
- if (!(OpenCustomWindow("Menu and Custom Screen Demo")))
- {
- rc = CustomMainHandler();
- CloseCustomWindow();
- }
- CloseDownScreen();
- }
- }
-