home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Fish 2
/
goldfish_vol2_cd1.bin
/
files
/
dev
/
gui
/
visualarts
/
demo
/
source
/
appwindow.c
next >
Wrap
C/C++ Source or Header
|
1994-09-19
|
8KB
|
313 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_clear 0
#define ID_quit 1
#define ID_icons 2
#define Project0NumGads 3
#include "AppWindow.h"
int clearObj(struct VAobject VAObject);
int quitObj(struct VAobject VAObject);
int iconsObj(struct VAobject VAObject);
int GetPubScreen(void);
void ClosePubScreen(void);
int OpenProject0Window(char windtitle[80]);
void CloseProject0Window(void);
int Project0Handler(void);
int Project0MainHandler(void);
int Project0AppWindHandler(struct MsgPort *appwindport);
void DrawProject0Objs(void);
int main(int argc, char *argv[]);
UBYTE *PubScrName = NULL;
struct DrawInfo *ScrDrawInfo = NULL;
APTR VisualInfo = NULL;
struct Screen *Scr = NULL;
struct Window *Project0Wnd = NULL;
struct AppWindow *Project0AppWind = NULL;
struct MsgPort *Project0AppWindPort = NULL;
struct Gadget *Project0GList = NULL;
struct Gadget *Project0Gadgets[Project0NumGads];
struct IntuiMessage Project0Msg;
UWORD Project0Left = 158;
UWORD Project0Top = 48;
UWORD Project0Width = 224;
UWORD Project0Height = 103;
struct TextAttr topaz8 = { (STRPTR)"topaz.font", 8, 0x00, 0x01 };
struct TextAttr topaz800 = { (STRPTR)"topaz.font", 8, 0x00, 0x00 };
UBYTE *IconsLabels[] = {
NULL
};
WORD Project0GadTypes[] = {
BUTTON_KIND,
BUTTON_KIND,
LISTVIEW_KIND,
};
struct NewGadget Project0NGads[] = {
6, 73, 56, 12, (UBYTE *)"_Clear",&topaz800, ID_clear, PLACETEXT_IN, NULL, (APTR)clearObj,
153, 73, 56, 12, (UBYTE *)"_Quit",&topaz800, ID_quit, PLACETEXT_IN, NULL, (APTR)quitObj,
6, 2, 203, 68, (UBYTE *)"", &topaz800, ID_icons, PLACETEXT_ABOVE, NULL, (APTR)iconsObj,
};
ULONG Project0NTags[] = {
(GT_Underscore), '_', TAG_DONE,
(GT_Underscore), '_', TAG_DONE,
(GTLV_Labels), NULL, (GTLV_Top), 0, (GTLV_ReadOnly), TRUE, (GTLV_ScrollWidth), 16, (LAYOUTA_Spacing), 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 OpenProject0Window(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(&Project0GList)))
return(1L);
for (i=0, j=0; i < Project0NumGads; i++)
{
CopyMem((char *)&Project0NGads[i], (char *)&NewGad, (long)sizeof(struct NewGadget));
NewGad.ng_VisualInfo = VisualInfo;
NewGad.ng_LeftEdge += offsetx;
NewGad.ng_TopEdge += offsety;
Project0Gadgets[i] = Gad = CreateGadgetA((ULONG)Project0GadTypes[i], Gad, &NewGad,
(struct TagItem *)&Project0NTags[j]);
while (Project0NTags[j])
j +=2;
j++;
if (!Gad)
return(2L);
}
if (!(Project0Wnd = OpenWindowTags(NULL,
WA_Left, Project0Left,
WA_Top, Project0Top,
WA_Width, Project0Width,
WA_Height, Project0Height - Scr->WBorTop,
WA_NewLookMenus, TRUE,
WA_IDCMP, IDCMP_CLOSEWINDOW | IDCMP_MOUSEBUTTONS | IDCMP_MOUSEMOVE | IDCMP_GADGETUP | IDCMP_GADGETDOWN | IDCMP_VANILLAKEY | IDCMP_INTUITICKS ,
WA_Flags, WFLG_CLOSEGADGET | WFLG_SMART_REFRESH |
WFLG_ACTIVATE | WFLG_DRAGBAR | WFLG_DEPTHGADGET,
WA_Gadgets, Project0GList,
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);
CreateProject0Lists();
if (Project0AppWindPort = CreateMsgPort())
{
Project0AppWind = AddAppWindow(1, 0, Project0Wnd, Project0AppWindPort, NULL);
if (Project0AppWind == NULL)
{
CloseProject0Window();
return(-1L);
}
}
else
return(-2L);
GT_RefreshWindow(Project0Wnd, NULL);
RefreshGadgets(Project0Gadgets[0], Project0Wnd, NULL);
GT_SetGadgetAttrs(Project0Gadgets[2], Project0Wnd, NULL,
GTLV_Labels, Project0Lists[0], TAG_END);
return(0L);
}
void CloseProject0Window(void)
{
struct AppMessage *appwindmsg;
if (Project0Wnd)
CloseWindow(Project0Wnd);
if (Project0GList)
FreeGadgets(Project0GList);
if (Project0AppWind)
{
RemoveAppWindow(Project0AppWind);
while (appwindmsg = (struct AppMessage *)GetMsg(Project0AppWindPort))
ReplyMsg((struct Message *)appwindmsg);
DeleteMsgPort(Project0AppWindPort);
}
}
int Project0Handler(void)
{
struct IntuiMessage *msg;
struct VAobject VAObject;
int running = 1;
int (*func)(struct VAobject VAObject);
ULONG class;
UWORD code;
while (msg=GT_GetIMsg(Project0Wnd->UserPort))
{
CopyMem((char *)msg, (char *)&Project0Msg, (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_CLOSEWINDOW:
return(0);
break;
case IDCMP_GADGETUP:
VAObject.va_Window = (struct Window *)Project0Wnd;
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 *)Project0Msg.IAddress)->UserData;
if (func != NULL)
running = func(VAObject);
break;
case IDCMP_VANILLAKEY:
switch(code)
{
case 'C':
case 'c':
ButtonSelected(Project0Wnd, Project0Gadgets[0]);
running = clearObj(VAObject);
break;
case 'Q':
case 'q':
ButtonSelected(Project0Wnd, Project0Gadgets[1]);
running = quitObj(VAObject);
break;
}
break;
}
}
return(running);
}
int Project0AppWindHandler(struct MsgPort *appwindport)
{
struct WBArg *wbargptr;
struct AppMessage *appwindmsg;
int i;
int rc;
while (appwindmsg = (struct AppMessage *)GetMsg(appwindport))
{
wbargptr = appwindmsg->am_ArgList;
/* examine the icons dragged into the window here. */
/* wbargptr->wa_Name ---> name of the icon */
/* wbargptr->wa_Lock ---> directory this icon is in. */
GT_SetGadgetAttrs(Project0Gadgets[ID_icons], Project0Wnd, NULL,
GTLV_Labels, ~0, TAG_END);
for (i=0; i < appwindmsg->am_NumArgs; i++)
{
rc = AddNewNode(Project0Lists[0], wbargptr->wa_Name);
wbargptr++;
}
GT_SetGadgetAttrs(Project0Gadgets[ID_icons], Project0Wnd, NULL,
GTLV_Labels, Project0Lists[0], TAG_END);
ReplyMsg((struct Message *)appwindmsg);
}
return(0);
}
int Project0MainHandler(void)
{
int running = 1;
ULONG windsig, signals;
ULONG appwindsig;
while (running == 1)
{
appwindsig = 1L << Project0AppWindPort->mp_SigBit;
windsig = 1L << Project0Wnd->UserPort->mp_SigBit;
signals = Wait( windsig | appwindsig );
if (signals & windsig)
{
running = Project0Handler();
}
else
if (signals & appwindsig)
Project0AppWindHandler(Project0AppWindPort);
}
return(running);
}
int main(int argc, char *argv[])
{
int rc;
if (!(GetPubScreen()))
{
for (rc=0; rc < 1; rc++)
Project0Lists[rc]=GetNewList();
if (!(OpenProject0Window("Visual Arts -- AppWindow Demo")))
{
rc = Project0MainHandler();
CloseProject0Window();
}
for (rc=0; rc < 1; rc++)
FreeList(Project0Lists[rc]);
ClosePubScreen();
}
}