home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Fish 2
/
goldfish_vol2_cd1.bin
/
files
/
dev
/
gui
/
visualarts
/
demo
/
source
/
multimain.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-09-21
|
10KB
|
357 lines
/* ******************************************************************** */
/* C code generated by: */
/* Visual Arts Version 2.0 */
/* Copyright 1994 Danny Y. Wong All rights reserved */
/* Calgary, Alberta (CANADA) */
/* Partial of the code is copyright by Jaba Development */
/* ******************************************************************** */
#include "VisualArts.h"
#define ID_ObjID6 0
#define ID_ObjID7 1
#define ID_ObjID2 2
#define ID_ObjID5 3
#define ID_ObjID8 4
#define ID_ObjID4 5
#define ID_ObjID9 6
#define ID_ObjID1 7
#define ID_ObjID3 8
#define ContextSNumGads 9
#include "MultiMain.h"
int ObjID6Obj(struct VAobject VAObject);
int ObjID7Obj(struct VAobject VAObject);
int ObjID2Obj(struct VAobject VAObject);
int ObjID5Obj(struct VAobject VAObject);
int ObjID8Obj(struct VAobject VAObject);
int ObjID4Obj(struct VAobject VAObject);
int ObjID9Obj(struct VAobject VAObject);
int ObjID1Obj(struct VAobject VAObject);
int ObjID3Obj(struct VAobject VAObject);
int GetPubScreen(void);
void ClosePubScreen(void);
int OpenContextSWindow(char windtitle[80]);
void CloseContextSWindow(void);
int ContextSHandler(void);
int ContextSMainHandler(void);
void DrawContextSObjs(void);
int main(int argc, char *argv[]);
extern void SubPrg(void);
UBYTE *PubScrName = NULL;
struct DrawInfo *ScrDrawInfo = NULL;
APTR VisualInfo = NULL;
struct Screen *Scr = NULL;
struct WindowNode *ContextSActiveWind = NULL;
struct Gadget *ContextSGList = NULL;
struct Gadget *ContextSGadgets[ContextSNumGads];
struct IntuiMessage ContextSMsg;
UWORD ContextSLeft = 0;
UWORD ContextSTop = 28;
UWORD ContextSWidth = 279;
UWORD ContextSHeight = 79;
struct IntuitionBase *IntuitionBase = NULL;
struct List *ContextSWindList;
UWORD ContextSTotalWindows = 0;
UWORD ContextSNumWindows = 0;
struct TextAttr topaz8 = { (STRPTR)"topaz.font", 8, 0x00, 0x01 };
struct TextAttr topaz800 = { (STRPTR)"topaz.font", 8, 0x00, 0x00 };
UBYTE *ModelsLabels[] = {
(UBYTE *)"Amiga 500",
(UBYTE *)"Amiga 1000",
(UBYTE *)"Amiga 2000",
(UBYTE *)"Amiga 3000",
(UBYTE *)"Amiga 4000",
(UBYTE *)"Amiga CDTV",
(UBYTE *)"Amiga CD32",
NULL
};
UBYTE *answerLabels[] = {
(UBYTE *)"Yes",
(UBYTE *)"No",
NULL
};
WORD ContextSGadTypes[] = {
BUTTON_KIND,
BUTTON_KIND,
STRING_KIND,
STRING_KIND,
CHECKBOX_KIND,
MX_KIND,
CYCLE_KIND,
LISTVIEW_KIND,
PALETTE_KIND,
};
struct NewGadget ContextSNGads[] = {
168, 2, 71, 12, (UBYTE *)"Button",&topaz800, ID_ObjID6, PLACETEXT_IN, NULL, (APTR)ObjID6Obj,
168, 16, 71, 12, (UBYTE *)"Toggle",&topaz800, ID_ObjID7, PLACETEXT_IN, NULL, (APTR)ObjID7Obj,
6, 30, 87, 12, (UBYTE *)"", &topaz800, ID_ObjID2, PLACETEXT_LEFT, NULL, (APTR)ObjID2Obj,
58, 50, 72, 12, (UBYTE *)"String", &topaz800, ID_ObjID5, PLACETEXT_LEFT, NULL, (APTR)ObjID5Obj,
213, 31, 26, 11, (UBYTE *)"Cool", &topaz800, ID_ObjID8, PLACETEXT_LEFT, NULL, (APTR)ObjID8Obj,
143, 30, 17, 16, (UBYTE *)"", &topaz800, ID_ObjID4, PLACETEXT_LEFT, NULL, (APTR)ObjID4Obj,
177, 50, 62, 12, (UBYTE *)"OK", &topaz800, ID_ObjID9, PLACETEXT_LEFT, NULL, (APTR)ObjID9Obj,
5, 2, 87, 28, (UBYTE *)"", &topaz800, ID_ObjID1, PLACETEXT_ABOVE, NULL, (APTR)ObjID1Obj,
99, 2, 61, 25, (UBYTE *)"", &topaz800, ID_ObjID3, PLACETEXT_ABOVE, NULL, (APTR)ObjID3Obj,
};
ULONG ContextSNTags[] = {
TAG_DONE,
TAG_DONE,
GTST_MaxChars, 255, (STRINGA_Justification), GACT_STRINGLEFT, TAG_DONE,
(GTST_String), (ULONG)"Visual Arts", GTST_MaxChars, 255, (STRINGA_Justification), GACT_STRINGLEFT, TAG_DONE,
TAG_DONE,
(GTMX_Labels), (ULONG)&answerLabels[0], (GTMX_Active), 0, (GTMX_Spacing), 1, TAG_DONE,
(GTCY_Labels), (ULONG)&answerLabels[0], (GTCY_Active), 0, TAG_DONE,
(GTLV_ShowSelected), 99, (GTLV_Labels), NULL, (GTLV_Top), 0, (GTLV_ScrollWidth), 16, (LAYOUTA_Spacing), 0, TAG_DONE,
(GTPA_Depth), 2, (GTPA_Color), 1, (GTPA_ColorOffset), 0, TAG_DONE,
};
int GetPubScreen(void)
{
if (!(Scr = LockPubScreen(PubScrName)))
return(1L);
if (!(VisualInfo = GetVisualInfo(Scr, TAG_DONE)))
return(2L);
if (!(ScrDrawInfo = GetScreenDrawInfo(Scr)))
return(3L);
return(0L);
}
void ClosePubScreen(void)
{
if (VisualInfo)
FreeVisualInfo(VisualInfo);
if (Scr)
UnlockPubScreen(NULL, Scr);
if (ScrDrawInfo)
FreeScreenDrawInfo(Scr, ScrDrawInfo);
}
int OpenContextSWindow(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;
int k=0;
int LVStrGads[] = {ID_ObjID2, -1 };
if (ContextSNumWindows == 0)
{
if (!(Gad = CreateContext(&ContextSGList)))
return(1L);
for (i=0, j=0; i < ContextSNumGads; i++)
{
CopyMem((char *)&ContextSNGads[i], (char *)&NewGad, (long)sizeof(struct NewGadget));
NewGad.ng_VisualInfo = VisualInfo;
NewGad.ng_LeftEdge += offsetx;
NewGad.ng_TopEdge += offsety;
if (ContextSNTags[j] == GTLV_ShowSelected && ContextSNTags[j+1] == 99)
ContextSNTags[j+1] = (ULONG)ContextSGadgets[LVStrGads[k++]];
ContextSGadgets[i] = Gad = CreateGadgetA((ULONG)ContextSGadTypes[i], Gad, &NewGad,
(struct TagItem *)&ContextSNTags[j]);
while (ContextSNTags[j])
j +=2;
j++;
if (!Gad)
return(2L);
}
ContextSGadgets[1]->Activation |= GACT_TOGGLESELECT;
}
if (!(ContextSActiveWind = AddWindowNode(ContextSWindList, windtitle, ContextSHandler)))
return(1);
if (!(ContextSActiveWind->nn_Window = OpenWindowTags(NULL,
WA_Left, ContextSLeft,
WA_Top, ContextSTop,
WA_Width, ContextSWidth,
WA_Height, ContextSHeight - Scr->WBorTop,
WA_NewLookMenus, TRUE,
WA_IDCMP, IDCMP_CLOSEWINDOW | IDCMP_NEWSIZE | IDCMP_MOUSEBUTTONS | IDCMP_MOUSEMOVE | IDCMP_GADGETUP | IDCMP_GADGETDOWN | IDCMP_INTUITICKS | IDCMP_ACTIVEWINDOW | IDCMP_INACTIVEWINDOW ,
WA_Flags, WFLG_SIZEGADGET | WFLG_SIZEBRIGHT | WFLG_DEPTHGADGET |
WFLG_CLOSEGADGET ,
WA_Gadgets, ContextSGList,
WA_Title, windtitle,
WA_ScreenTitle, "Visual Arts V2.0 Copyright 1994 Danny Y. Wong All Rights Reserved.",
WA_PubScreen, Scr,
WA_MinWidth, 160,
WA_MinHeight, 50,
WA_MaxWidth, 640,
WA_MaxHeight, 200,
TAG_DONE)))
return(3L);
if (++ContextSNumWindows == 1)
CreateContextSLists();
GT_RefreshWindow(ContextSActiveWind->nn_Window, NULL);
RefreshGadgets(ContextSGadgets[0], ContextSActiveWind->nn_Window, NULL);
GT_SetGadgetAttrs(ContextSGadgets[7], ContextSActiveWind->nn_Window, NULL,
GTLV_Labels, ContextSLists[0], TAG_END);
return(0L);
}
void CloseContextSWindow(void)
{
struct WindowNode *WindNode;
struct Node *tempNode;
if (tempNode = FindName(ContextSWindList, ContextSActiveWind->nn_Window->Title))
{
if (WindNode = FindWindowNode(ContextSWindList, ContextSActiveWind->nn_Window->Title))
{
if (ContextSTotalWindows == 1)
WindNode = NULL;
else
{
if (WindNode->ID == 1)
WindNode = FindWindowNode(ContextSWindList, tempNode->ln_Succ->ln_Name);
else
WindNode = FindWindowNode(ContextSWindList, tempNode->ln_Pred->ln_Name);
}
DelWindowNode(ContextSWindList, ContextSActiveWind->nn_Window->Title);
if (ContextSActiveWind->nn_Window)
CloseWindow(ContextSActiveWind->nn_Window);
if (WindNode)
{
ContextSActiveWind = WindNode;
ReMakeWindowID(ContextSWindList);
WindowToFront(ContextSActiveWind->nn_Window);
ActivateWindow(ContextSActiveWind->nn_Window);
}
}
}
}
int ContextSHandler(void)
{
struct IntuiMessage *msg;
struct VAobject VAObject;
int running = 1;
int (*func)(struct VAobject VAObject);
struct WindowNode *WindNode;
ULONG class;
UWORD code;
while (msg=GT_GetIMsg(ContextSActiveWind->nn_Window->UserPort))
{
CopyMem((char *)msg, (char *)&ContextSMsg, (long)sizeof(struct IntuiMessage));
class = msg->Class;
code = msg->Code;
GT_ReplyIMsg(msg);
switch(class)
{
case IDCMP_MOUSEBUTTONS :
break;
case IDCMP_MOUSEMOVE :
break;
case IDCMP_INTUITICKS :
break;
case IDCMP_NEWSIZE:
break;
case IDCMP_CLOSEWINDOW:
CloseContextSWindow();
if (--ContextSNumWindows == 0)
{
if (ContextSGList)
FreeGadgets(ContextSGList);
}
return(1);
break;
case IDCMP_ACTIVEWINDOW:
case IDCMP_INACTIVEWINDOW:
if (!IntuitionBase->ActiveWindow)
{
ActivateWindow(ContextSActiveWind->nn_Window);
break;
}
WindNode = FindWindowNode(ContextSWindList, IntuitionBase->ActiveWindow->Title);
if (WindNode)
ContextSActiveWind = WindNode;
break;
case IDCMP_GADGETUP:
VAObject.va_Window = (struct Window *)ContextSActiveWind->nn_Window ;
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 *)ContextSMsg.IAddress)->UserData;
if (func != NULL)
running = func(VAObject);
break;
}
}
return(running);
}
int ContextSMainHandler(void)
{
int running = 1;
ULONG windsig, signals;
struct WindowNode *WindNode;
int (*func)(void);
while (running == 1)
{
windsig = 1L << ContextSActiveWind->nn_Window->UserPort->mp_SigBit;
signals = Wait( windsig );
if (signals & windsig)
{
if (WindNode = FindWindowNode(ContextSWindList, ContextSActiveWind->nn_Window->Title))
{
func = (void *)WindNode->UserData;
running = func();
if (ContextSTotalWindows == 0)
running = 0;
}
}
}
return(running);
}
int main(int argc, char *argv[])
{
int rc;
IntuitionBase=(struct IntuitionBase *)OpenLibrary("intuition.library",0);
if (IntuitionBase == NULL)
exit(0);
if (!(GetPubScreen()))
{
ContextSWindList = GetNewList();
for (rc=0; rc < 2; rc++)
ContextSLists[rc]=GetNewList();
SubPrg(); //open subprg window
if (!(OpenContextSWindow("Visual Arts -- Context Sensitive Demo")))
rc = ContextSMainHandler();
for (rc=0; rc < 2; rc++)
FreeList(ContextSLists[rc]);
FreeWindowList(ContextSWindList);
ClosePubScreen();
}
if (IntuitionBase)
CloseLibrary((struct Library *)IntuitionBase);
}