/* C code generated by:							*/
/* Visual Arts Version 1.0						*/
/* Copyright 1994 Danny Y. Wong  All rights reserved			*/
/* Calgary, Alberta (CANADA)                        			*/


struct VAobject {
  struct Window *va_Window;
  struct Gadget *va_Gadget;
  struct IntuiMessage *va_IntuiMsg;
  ULONG va_Flags;
  APTR va_UserData;
};

#define GetString(gad)	(((struct StringInfo *)gad->SpecialInfo)->Buffer)
#define GetUndoString(gad)	(((struct StringInfo *)gad->SpecialInfo)->UndoBuffer)
#define GetNumber(gad)	(((struct StringInfo *)gad->SpecialInfo)->LongInt)

extern int GetFileName(BOOL save, struct Window *window, char *title, char *path, char *dir, char *file);
extern void BasicDrawRects(struct Window *Wind);
extern void DrawBox(struct Window *Wind, int Left, int Top, int Wid, int Hi, UBYTE APen, short Pattern );
extern void DrawFBox(struct Window *Wind, int Left, int Top, int Wid, int Hi, UBYTE APen, short Pattern, UBYTE Outline, short Fill );
extern void SetRPortFill(struct Window *Wind, short Type);
extern void ButtonSelected(struct Window *wind, struct Gadget *gad);
extern struct Window  *BasicWnd;
extern APTR   VisualInfo;
extern struct Screen *Scr;
extern struct Gadget *BasicGadgets[14];
extern int AddNewNode(struct List *list, char name[255]);
extern int DeleteNewNode(struct List *list, char name[255]);
extern struct List *GetNewList(void);
extern struct NameNode *FindNodeName(struct List *list, char name[255]);
extern void FreeList(struct List *list);

extern void CreateBasicLists(void);
struct NameNode
{
  struct Node nn_Node;
  UBYTE nn_Data[255];
};
extern UBYTE *modelsLabels[];

ULONG LinePatterns[6] = { 0xffff, 0x0cccc, 0xaaaa, 0x8888, 0x3333, 0xffff};

struct List *BasicLists[1];

void BasicDrawRects(struct Window *Wind)
{
  UWORD offsetx = Scr->WBorLeft;
  UWORD offsety = Scr->WBorTop + Scr->RastPort.TxHeight + 1;

  DrawBevelBox(Wind->RPort, 7+offsetx, 65+offsety, 165, 31, 
	(GT_VisualInfo), VisualInfo, TAG_DONE);
  SetDrPt(Wind->RPort, 0xFFFF);
  SetOPen(Wind->RPort, 0);
  SetAfPt(Wind->RPort, NULL, 0);
}

struct List *GetNewList(void)
{
   struct List *list;

   if (!( list = AllocMem(sizeof(struct List), MEMF_CLEAR)))
       return(NULL);
   NewList(list);
   return(list);
}

int AddNewNode(struct List *list, char name[255])
{
  struct NameNode *namenode;

  if (!( namenode = AllocMem(sizeof(struct NameNode), MEMF_CLEAR)))
      return(1L);
  strcpy(namenode->nn_Data, name);
  namenode->nn_Node.ln_Name=namenode->nn_Data;
  namenode->nn_Node.ln_Type=0;
  namenode->nn_Node.ln_Pri=0;
  AddTail((struct List *)list, (struct Node *)namenode);
  return(0L);
}

int DeleteNode(struct List *list, char name[255])
{
  struct Node *node;

  node=FindName(list, name);
  if (node)
  {
      Remove(node);
      FreeMem((struct NameNode *)node, sizeof(struct NameNode));
      return(0L);
  }
  return(1L);
}

struct NameNode *FindNodeName(struct List *list, char name[255])
{
  struct NameNode *worknode, *nextnode;

  worknode=(struct NameNode *)(list->lh_Head);
  while (nextnode=(struct NameNode *)(worknode->nn_Node.ln_Succ))
  {
    if (strcmp(worknode->nn_Data, name) == 0)
       return(worknode);
     worknode=nextnode;
  }
  return(NULL);
}

void FreeList(struct List *list)
{
  struct NameNode *worknode, *nextnode;

  worknode=(struct NameNode *)(list->lh_Head);
  while (nextnode=(struct NameNode *)(worknode->nn_Node.ln_Succ))
  {
     FreeMem(worknode, sizeof(struct NameNode));
     worknode=nextnode;
  }
  FreeMem(list, sizeof(struct List));
  list=NULL;
}

void CreateBasicLists(void)
{
  short i;

  i=0;
  while (modelsLabels[i])
     AddNewNode(BasicLists[0], modelsLabels[i++]);

}

			 /* gadget functions */

int buttonObj(struct VAobject VAObject)
{
  return(1L);
}
/*	Button  Button		 */ 

int button1Obj(struct VAobject VAObject)
{
  return(1L);
}
/*	Button  Toggle Button		 */ 

int stringObj(struct VAobject VAObject)
{
  return(1L);
}
/*	String  Name		 */ 

int integerObj(struct VAobject VAObject)
{
  return(1L);
}
/*	Integer  Version		 */ 

int checkObj(struct VAobject VAObject)
{
  return(1L);
}
/*	Check Box  Visual Arts		 */ 

int mxmodelObj(struct VAobject VAObject)
{
  return(1L);
}
/*	MX  model		 */ 

int cycleObj(struct VAobject VAObject)
{
  return(1L);
}
/*	Cycle  Models		 */ 

int sliderObj(struct VAobject VAObject)
{
  return(1L);
}
/*	Slider  Slider   		 */ 

int scrollerObj(struct VAobject VAObject)
{
  return(1);
}
/*	Scroller  		 */ 

int scroller1Obj(struct VAobject VAObject)
{
  return(1);
}
/*	Scroller  		 */ 

int modellistObj(struct VAobject VAObject)
{
  return(1L);
}
/*	ListView  		 */ 

int colorObj(struct VAobject VAObject)
{
  return(1L);
}
/*	Palette  		 */ 

