home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 5 / FreshFish_July-August1994.bin / bbs / dev / visualarts-1.0.lha / VisualArts-1.0 / Demo / Source / MultiMain.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-09  |  5.5 KB  |  227 lines

  1. /* C code generated by:                            */
  2. /* Visual Arts Version 1.0                        */
  3. /* Copyright 1994 Danny Y. Wong  All rights reserved            */
  4. /* Calgary, Alberta (CANADA)                                    */
  5.  
  6.  
  7. struct WindowNode
  8. {
  9.     struct Node nn_Node;
  10.     UBYTE nn_Data[80];
  11.     struct Window *nn_Window;
  12.     short ID;
  13.     APTR UserData;
  14. };
  15.  
  16.  
  17. struct VAobject {
  18.   struct Window *va_Window;
  19.   struct Gadget *va_Gadget;
  20.   struct IntuiMessage *va_IntuiMsg;
  21.   ULONG va_Flags;
  22.   APTR va_UserData;
  23. };
  24.  
  25. #define GetString(gad)    (((struct StringInfo *)gad->SpecialInfo)->Buffer)
  26. #define GetUndoString(gad)    (((struct StringInfo *)gad->SpecialInfo)->UndoBuffer)
  27. #define GetNumber(gad)    (((struct StringInfo *)gad->SpecialInfo)->LongInt)
  28.  
  29. extern int GetFileName(BOOL save, struct Window *window, char *title, char *path, char *dir, char *file);
  30. extern void SetRPortFill(struct Window *Wind, short Type);
  31. extern void ButtonSelected(struct Window *wind, struct Gadget *gad);
  32. extern struct WindowNode  *ModelsActiveWind;
  33. extern APTR   VisualInfo;
  34. extern struct Screen *Scr;
  35. extern struct Gadget *ModelsGadgets[1];
  36. extern struct WindowNode *AddWindowNode(struct List *list, char name[80], APTR handler);
  37. extern int DelWindowNode(struct List *list, char name[80]);
  38. extern struct WindowNode *FindWindowNode(struct List *list, char name[80]);
  39. extern void FreeWindowList(struct List *list);
  40. extern void ReMakeWindowID(struct List *list);
  41. extern UWORD ModelsTotalWindows;
  42. extern int AddNewNode(struct List *list, char name[255]);
  43. extern int DeleteNewNode(struct List *list, char name[255]);
  44. extern struct List *GetNewList(void);
  45. extern struct NameNode *FindNodeName(struct List *list, char name[255]);
  46. extern void FreeList(struct List *list);
  47.  
  48. extern void CreateModelsLists(void);
  49. struct NameNode
  50. {
  51.   struct Node nn_Node;
  52.   UBYTE nn_Data[255];
  53. };
  54. extern UBYTE *ModelsLabels[];
  55.  
  56. ULONG LinePatterns[6] = { 0xffff, 0x0cccc, 0xaaaa, 0x8888, 0x3333, 0xffff};
  57.  
  58. struct List *ModelsLists[1];
  59.  
  60. struct WindowNode *AddWindowNode(struct List *list, char name[80], APTR handler)
  61. {
  62.   struct WindowNode *winnode;
  63.  
  64.   if (!( winnode = AllocMem(sizeof(struct WindowNode), MEMF_CLEAR)))
  65.       return(NULL);
  66.   strcpy(winnode->nn_Data, name);
  67.   winnode->nn_Node.ln_Name=winnode->nn_Data;
  68.   winnode->nn_Node.ln_Type=0;
  69.   winnode->nn_Node.ln_Pri=0;
  70.   ++ModelsTotalWindows;
  71.   winnode->ID = ModelsTotalWindows;
  72.   winnode->UserData = handler;
  73.   AddTail((struct List *)list, (struct Node *)winnode);
  74.   return(winnode);
  75. }
  76.  
  77. int DelWindowNode(struct List *list, char name[80])
  78. {
  79.   struct Node *node;
  80.  
  81.   node=FindName(list, name);
  82.   if (node)
  83.   {
  84.       Remove(node);
  85.       FreeMem((struct WindowNode *)node, sizeof(struct WindowNode));
  86.       --ModelsTotalWindows;
  87.       return(0L);
  88.   }
  89.   return(1L);
  90. }
  91.  
  92. struct WindowNode *FindWindowNode(struct List *list, char name[80])
  93. {
  94.   struct WindowNode *worknode, *nextnode;
  95.  
  96.   worknode=(struct WindowNode *)(list->lh_Head);
  97.   while (nextnode=(struct WindowNode *)(worknode->nn_Node.ln_Succ))
  98.   {
  99.     if (strcmp(worknode->nn_Data, name) == 0)
  100.        return(worknode);
  101.      worknode=nextnode;
  102.   }
  103.   return(NULL);
  104. }
  105.  
  106. void FreeWindowList(struct List *list)
  107. {
  108.   struct WindowNode *worknode, *nextnode;
  109.  
  110.   worknode=(struct WindowNode *)(list->lh_Head);
  111.   while (nextnode=(struct WindowNode *)(worknode->nn_Node.ln_Succ))
  112.   {
  113.      FreeMem(worknode, sizeof(struct WindowNode));
  114.      worknode=nextnode;
  115.   }
  116.   FreeMem(list, sizeof(struct List));
  117.   list=NULL;
  118. }
  119.  
  120. void ReMakeWindowID(struct List *list)
  121. {
  122.   struct WindowNode *worknode, *nextnode;
  123.   short id = 1;
  124.  
  125.   worknode = (struct WindowNode *)(list->lh_Head);
  126.   while (nextnode = (struct WindowNode *)(worknode->nn_Node.ln_Succ))
  127.   {
  128.     worknode->ID = id++;
  129.     worknode = nextnode;
  130.   }
  131. }
  132.  
  133. struct List *GetNewList(void)
  134. {
  135.    struct List *list;
  136.  
  137.    if (!( list = AllocMem(sizeof(struct List), MEMF_CLEAR)))
  138.        return(NULL);
  139.    NewList(list);
  140.    return(list);
  141. }
  142.  
  143. int AddNewNode(struct List *list, char name[255])
  144. {
  145.   struct NameNode *namenode;
  146.  
  147.   if (!( namenode = AllocMem(sizeof(struct NameNode), MEMF_CLEAR)))
  148.       return(1L);
  149.   strcpy(namenode->nn_Data, name);
  150.   namenode->nn_Node.ln_Name=namenode->nn_Data;
  151.   namenode->nn_Node.ln_Type=0;
  152.   namenode->nn_Node.ln_Pri=0;
  153.   AddTail((struct List *)list, (struct Node *)namenode);
  154.   return(0L);
  155. }
  156.  
  157. int DeleteNode(struct List *list, char name[255])
  158. {
  159.   struct Node *node;
  160.  
  161.   node=FindName(list, name);
  162.   if (node)
  163.   {
  164.       Remove(node);
  165.       FreeMem((struct NameNode *)node, sizeof(struct NameNode));
  166.       return(0L);
  167.   }
  168.   return(1L);
  169. }
  170.  
  171. struct NameNode *FindNodeName(struct List *list, char name[255])
  172. {
  173.   struct NameNode *worknode, *nextnode;
  174.  
  175.   worknode=(struct NameNode *)(list->lh_Head);
  176.   while (nextnode=(struct NameNode *)(worknode->nn_Node.ln_Succ))
  177.   {
  178.     if (strcmp(worknode->nn_Data, name) == 0)
  179.        return(worknode);
  180.      worknode=nextnode;
  181.   }
  182.   return(NULL);
  183. }
  184.  
  185. void FreeList(struct List *list)
  186. {
  187.   struct NameNode *worknode, *nextnode;
  188.  
  189.   worknode=(struct NameNode *)(list->lh_Head);
  190.   while (nextnode=(struct NameNode *)(worknode->nn_Node.ln_Succ))
  191.   {
  192.      FreeMem(worknode, sizeof(struct NameNode));
  193.      worknode=nextnode;
  194.   }
  195.   FreeMem(list, sizeof(struct List));
  196.   list=NULL;
  197. }
  198.  
  199. void CreateModelsLists(void)
  200. {
  201.   short i;
  202.  
  203.   i=0;
  204.   while (ModelsLabels[i])
  205.      AddNewNode(ModelsLists[0], ModelsLabels[i++]);
  206.  
  207. }
  208.  
  209. void ButtonSelected(struct Window *wind, struct Gadget *gad)
  210. {
  211.   gad->Flags ^= GFLG_SELECTED;
  212.   RefreshGList(gad, wind, NULL, 1);
  213.   Delay(4);
  214.   gad->Flags ^= GFLG_SELECTED;
  215.   RefreshGList(gad, wind, NULL, 1);
  216. }
  217.  
  218.  
  219.              /* gadget functions */
  220.  
  221. int modelsObj(struct VAobject VAObject)
  222. {
  223.   return(1L);
  224. }
  225. /*    ListView           */ 
  226.  
  227.