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 / AppWindow.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-09  |  3.6 KB  |  152 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 VAobject {
  8.   struct Window *va_Window;
  9.   struct Gadget *va_Gadget;
  10.   struct IntuiMessage *va_IntuiMsg;
  11.   ULONG va_Flags;
  12.   APTR va_UserData;
  13. };
  14.  
  15. #define GetString(gad)    (((struct StringInfo *)gad->SpecialInfo)->Buffer)
  16. #define GetUndoString(gad)    (((struct StringInfo *)gad->SpecialInfo)->UndoBuffer)
  17. #define GetNumber(gad)    (((struct StringInfo *)gad->SpecialInfo)->LongInt)
  18.  
  19. extern int GetFileName(BOOL save, struct Window *window, char *title, char *path, char *dir, char *file);
  20. extern void SetRPortFill(struct Window *Wind, short Type);
  21. extern void ButtonSelected(struct Window *wind, struct Gadget *gad);
  22. extern struct Window  *AppWindWnd;
  23. extern APTR   VisualInfo;
  24. extern struct Screen *Scr;
  25. extern struct Gadget *AppWindGadgets[3];
  26. extern int AddNewNode(struct List *list, char name[255]);
  27. extern int DeleteNewNode(struct List *list, char name[255]);
  28. extern struct List *GetNewList(void);
  29. extern struct NameNode *FindNodeName(struct List *list, char name[255]);
  30. extern void FreeList(struct List *list);
  31.  
  32. extern void CreateAppWindLists(void);
  33. struct NameNode
  34. {
  35.   struct Node nn_Node;
  36.   UBYTE nn_Data[255];
  37. };
  38. extern UBYTE *IconsLabels[];
  39.  
  40. ULONG LinePatterns[6] = { 0xffff, 0x0cccc, 0xaaaa, 0x8888, 0x3333, 0xffff};
  41.  
  42. struct List *AppWindLists[1];
  43.  
  44. struct List *GetNewList(void)
  45. {
  46.    struct List *list;
  47.  
  48.    if (!( list = AllocMem(sizeof(struct List), MEMF_CLEAR)))
  49.        return(NULL);
  50.    NewList(list);
  51.    return(list);
  52. }
  53.  
  54. int AddNewNode(struct List *list, char name[255])
  55. {
  56.   struct NameNode *namenode;
  57.  
  58.   if (!( namenode = AllocMem(sizeof(struct NameNode), MEMF_CLEAR)))
  59.       return(1L);
  60.   strcpy(namenode->nn_Data, name);
  61.   namenode->nn_Node.ln_Name=namenode->nn_Data;
  62.   namenode->nn_Node.ln_Type=0;
  63.   namenode->nn_Node.ln_Pri=0;
  64.   AddTail((struct List *)list, (struct Node *)namenode);
  65.   return(0L);
  66. }
  67.  
  68. int DeleteNode(struct List *list, char name[255])
  69. {
  70.   struct Node *node;
  71.  
  72.   node=FindName(list, name);
  73.   if (node)
  74.   {
  75.       Remove(node);
  76.       FreeMem((struct NameNode *)node, sizeof(struct NameNode));
  77.       return(0L);
  78.   }
  79.   return(1L);
  80. }
  81.  
  82. struct NameNode *FindNodeName(struct List *list, char name[255])
  83. {
  84.   struct NameNode *worknode, *nextnode;
  85.  
  86.   worknode=(struct NameNode *)(list->lh_Head);
  87.   while (nextnode=(struct NameNode *)(worknode->nn_Node.ln_Succ))
  88.   {
  89.     if (strcmp(worknode->nn_Data, name) == 0)
  90.        return(worknode);
  91.      worknode=nextnode;
  92.   }
  93.   return(NULL);
  94. }
  95.  
  96. void FreeList(struct List *list)
  97. {
  98.   struct NameNode *worknode, *nextnode;
  99.  
  100.   worknode=(struct NameNode *)(list->lh_Head);
  101.   while (nextnode=(struct NameNode *)(worknode->nn_Node.ln_Succ))
  102.   {
  103.      FreeMem(worknode, sizeof(struct NameNode));
  104.      worknode=nextnode;
  105.   }
  106.   FreeMem(list, sizeof(struct List));
  107.   list=NULL;
  108. }
  109.  
  110. void CreateAppWindLists(void)
  111. {
  112.   short i;
  113.  
  114.   i=0;
  115.   while (IconsLabels[i])
  116.      AddNewNode(AppWindLists[0], IconsLabels[i++]);
  117.  
  118. }
  119.  
  120.              /* gadget functions */
  121.  
  122. int clearObj(struct VAobject VAObject)
  123. {
  124. //detach list first
  125.  
  126.   GT_SetGadgetAttrs(AppWindGadgets[ID_iconlist], AppWindWnd, NULL,
  127.        GTLV_Labels, ~0, TAG_DONE);    
  128.  
  129. //free all the icon names and create a new list
  130.   FreeList(AppWindLists[0]);
  131.   AppWindLists[0]=GetNewList();
  132.   
  133. //now attach the new list to the listview  
  134.   GT_SetGadgetAttrs(AppWindGadgets[ID_iconlist], AppWindWnd, NULL,
  135.        GTLV_Labels, AppWindLists[0], TAG_DONE);
  136.   return(1);
  137. }
  138. /*    Button  Clear         */ 
  139.  
  140. int okObj(struct VAobject VAObject)
  141. {
  142.   return(-1L);
  143. }
  144. /*    Button  OK         */ 
  145.  
  146. int iconlistObj(struct VAobject VAObject)
  147. {
  148.   return(1L);
  149. }
  150. /*    ListView  Program Names         */ 
  151.  
  152.