/* Prototypes for functions defined in
WBStartup+Prefs.c
 */

#include <dos/dos.h>  /* BPTR */

extern enum GadgetIDs {SAVE_GAD=0,CANCEL_GAD,LIST_GAD,TOTALGADGETS};
extern enum MenuIDs {SAVE_MENU=100,ABOUT_MENU,QUIT_MENU,RESTORE_MENU,PROGRAMINFO_MENU,SORTALPHABETICALLY_MENU,SORTPRIORITY_MENU, SELECTALL_MENU, SELECTNONE_MENU, SELECTTOGGLE_MENU, SELECTGROUP_MENU,
              CREATEGROUP_MENU,DELETEGROUP_MENU,MODIFYGROUP_MENU};

struct WBStartupPrefs
{
  char ExecutePath[200];
  char StoragePath[200];
  BOOL Alphabetize;
  APTR filenamePool;               /* Memory Pool for filenames */
  APTR groupPool;                  /* Memory Pool for groups */
  BPTR EnabledDirLock;             /* A Lock on the enabled directory */
  BPTR DisabledDirLock;            /* A Lock on the disabled directory */
  ULONG NumPrograms;               /* The # of programs in the list */
};


struct GadgetData
{
  struct Gadget *gadgets[TOTALGADGETS];
  struct Image  *upimage;
  struct Image  *downimage;
  struct Object *stringframe;
};

struct WBSPNode   /* Workbench Startup Prefs Node */
{
//  struct Node wbsp_node;
  STRPTR wbsp_name;
  UBYTE wbsp_type;
  BYTE wbsp_pri;
  UBYTE Original_Type;
  int Original_Priority;  /* no greater than BYTE */
};

struct GroupNode
{
//  struct Node group_node;
  STRPTR group_name;
  struct List enabled;
};

extern struct Node *FirstSelectedNode;
extern char const version[100];
extern struct IntuitionBase * IntuitionBase;
extern struct Library * GadToolsBase;
extern struct Library * CxBase;
extern struct Library * IconBase;
extern struct Library * ScreenNotifyBase;
extern struct Library * WorkbenchBase;
extern struct Library * DiskfontBase;
extern struct GfxBase * GfxBase;
extern struct Library * UtilityBase;

extern struct WBStartupPrefs prefs;
extern Object *appobj,*winobj,*pwinobj,*sliderobj;
extern Object *swinobj,*strobj;
extern Object *gwinobj,*glsobj;

int main(int , char ** );
void GetFilenames(APTR memPool, char *directory, UBYTE type);
struct WBSPNode *AddFileToList(APTR memPool, char *pathname, UBYTE type);
void GetArguments(int , char **);
void ProcessEvents(APTR );
BOOL RenderGadgets(struct Gadget ** , void * , struct Window * , struct Gadget ** , struct List * , struct Gadget * (* )(struct Gadget ** , void * , struct Window * , struct Gadget ** , struct List * ));
void ShowRequester(STRPTR );
struct Gadget * createAllGadgets(struct Gadget ** , void * , struct Window * , struct Gadget ** , struct List * );
void RestoreTypes(void);
void SaveChanges(void);
BOOL ChangePriTooltype(char * , BYTE );
void ShowWBIconRequester(struct WBSPNode * ,struct Screen * );
void SaveGroups(void);
void ReadGroups(APTR memPool);
void CreateGroup(char *groupname, APTR memPool);
void SelectGroup(struct List * );
void DeleteGroup(APTR );
