home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d5xx
/
d551
/
toolmanager.lha
/
ToolManager
/
Source
/
ToolManager.h
< prev
Wrap
C/C++ Source or Header
|
1991-10-28
|
8KB
|
212 lines
/*
* ToolManager.h V1.5
*
* main include file
*
* (c) 1991 by Stefan Becker
*
*/
#include <exec/types.h>
#define abs
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <exec/libraries.h>
#include <exec/memory.h>
#include <dos/dostags.h>
#include <graphics/gfxbase.h>
#include <intuition/gadgetclass.h>
#include <libraries/iffparse.h>
#include <workbench/icon.h>
#include <workbench/startup.h>
/* Prototypes for system functions */
#include <clib/alib_protos.h>
#include <clib/asl_protos.h>
#include <clib/commodities_protos.h>
#include <clib/dos_protos.h>
#include <clib/exec_protos.h>
#include <clib/gadtools_protos.h>
#include <clib/graphics_protos.h>
#include <clib/icon_protos.h>
#include <clib/iffparse_protos.h>
#include <clib/intuition_protos.h>
#include <clib/layers_protos.h>
#include <clib/wb_protos.h>
#undef HotKey /* Needed for -mRR */
__stkargs CxObj *HotKey(UBYTE *, struct MsgPort *, long);
/* Version number & dates */
#define TM_VERSION "1.5"
#define TM_CRYEAR "1991"
#define TM_DATE "10.10.1991"
/* Buffer lenghts */
#define BUFLEN 100 /* Buffer length for one config line */
#define NAMELEN 256 /* Buffer length for a file name */
/* Data for one config file entry */
struct ConfigBlock {
UWORD cb_Type; /* Type of tool (s. below) */
UWORD cb_Flags; /* Flags (see below) */
ULONG cb_Stack; /* Stack size */
ULONG cb_IconX; /* Icon X Position */
ULONG cb_IconY; /* Icon Y Position */
char cb_Alias[BUFLEN]; /* Alias name */
char cb_RealName[BUFLEN]; /* Real name */
char cb_WorkDir[BUFLEN]; /* Current directory */
char cb_Path[BUFLEN]; /* Path string (CLI) */
char cb_OutFile[BUFLEN]; /* Output file name (CLI) */
char cb_HotKey[BUFLEN]; /* HotKey description */
char cb_IconFile[BUFLEN]; /* Icon file name */
char cb_DockFile[BUFLEN]; /* Dock image file name */
char cb_TempLine[BUFLEN+20]; /* temporary line */
};
/* Entry for tool list */
struct ToolNode {
struct Node tn_Node; /* Node, contains name */
UWORD tn_Type; /* Type of tool (s. below) */
UWORD tn_Flags; /* Flags (see below) */
char *tn_RealName; /* Real name of tool */
char *tn_WorkDir; /* Name of current dir. */
BPTR tn_DirLock; /* Directory lock */
char *tn_Path; /* Path string (CLI) */
char *tn_OutFile; /* Output file name (CLI) */
ULONG tn_Stack; /* Stack size */
struct AppMenuItem *tn_MenuItem; /* Pointer to WB menu item */
char *tn_IconFile; /* Name of icon file */
struct DiskObject *tn_Icon; /* Pointer to icon data */
struct AppIcon *tn_AppIcon; /* Pointer to WB icon */
char *tn_HotKey; /* HotKey description */
CxObj *tn_CxObj; /* HotKey's CX Object */
char *tn_DockFile; /* Name of dock image file */
struct DiskObject *tn_Dock; /* Pointer to dock data */
};
/* Constants for tn_Type */
#define TNTYPE_DUMMY 0 /* Non-functional dummy tool */
#define TNTYPE_CLI 1 /* CLI tool */
#define TNTYPE_WB 2 /* WB tool */
/* Flags for tn_Flags */
#define TNFLAGS_MENU 0x0001 /* Tool has a WB menu item */
#define TNFLAGS_ICON 0x0002 /* Tool has a WB icon */
#define TNFLAGS_DOBJ 0x0004 /* The WB icon is a DiskObject */
#define TNFLAGS_NNAM 0x0008 /* The AppIcon has no name */
#define TNFLAGS_NARG 0x0010 /* Start tool with NO paramters */
#define TNFLAGS_COUT 0x0020 /* Start tool with output file (CLI tools) */
#define TNFLAGS_WBTF 0x0040 /* Workbench Screen to front before starting tool */
#define TNFLAGS_DOCK 0x0080 /* Tool has a dock */
#define TNFLAGS_SICN 0x0100 /* Dock icon same as WB icon */
#define TNFLAGS_DDOB 0x0200 /* The dock icon is a DiskObject */
/* Prototypes for library functions */
void NewList(struct List *);
struct ToolNode *GetHead(struct List *);
struct ToolNode *GetPred(struct ToolNode *);
struct ToolNode *GetSucc(struct ToolNode *);
/* Prototypes for program functions */
/* config.c */
void SetConfigFileName(char *);
void InitConfigBlock(struct ConfigBlock *);
void ReadConfigFile(char *, BOOL);
BOOL WriteConfigFile(struct Window *w, BOOL);
/* dockwindow.c */
void OpenDockWindow(void);
void CloseDockWindow(void);
void HandleDockWinEvent(void);
BOOL AddDock(struct ToolNode *);
void RemDock(struct ToolNode *);
void SelectDock(struct ToolNode *, WORD, WORD, BOOL);
struct ToolNode *FindDock(WORD, WORD);
/* editwindow.c */
void OpenEditWindow(ULONG, ULONG, ULONG, struct ToolNode *);
void CloseEditWindow(void);
void HandleEditWinEvent(void);
/* filreq.c */
BOOL ShowFileRequester(struct Window *, char *, char **, int);
BOOL ShowSaveConfigRequester(struct Window *);
/* hotkeyswindow.c */
void OpenHotKeysWindow(ULONG, ULONG);
void CloseHotKeysWindow(void);
void HandleHotKeysWinEvent(void);
void RefreshHotKeysWindow(struct ToolNode *, BOOL);
/* ifficon.c */
struct DiskObject *LoadIFFIcon(char *);
void FreeIFFIcon(struct DiskObject *);
/* mainloop.c */
void SetQuitFlag(void);
void mainloop(void);
/* starttools.c */
void StartTool(struct ToolNode *, struct AppMessage *);
/* statuswindow.c */
void OpenStatusWindow(BOOL);
void CloseStatusWindow(void);
void HandleStatWinEvent(void);
void RefreshStatusWindow(void);
void SetBrokerState(BOOL);
void AttachToolList(void);
void DetachToolList(void);
void StatWinEndEditing(void);
void StatWinDockState(BOOL);
struct ToolNode *FindTool(void);
/* toollist.c */
BOOL WBAddToolNode(struct WBArg *, int);
BOOL AddToolNode(struct ConfigBlock *,BPTR);
void RemToolNode(struct ToolNode *tn);
void RemoveTools(void);
/* toolmanager.c */
void cleanup(int);
/* Global variables */
extern struct MsgPort *MyMP;
extern BPTR StartupCD;
extern BOOL ShowQuitReq;
extern BOOL running;
extern struct List ToolList;
extern UWORD ToolCount;
extern ULONG wbactive;
extern char MyName[];
extern UBYTE CopyrightNote[];
extern struct DiskObject *MyIcon;
extern LONG IconXPos,IconYPos;
extern BOOL ShowIcon;
extern char *IconName;
extern struct AppIcon *MyAppIcon;
extern struct AppMenuItem *OTWAppMenuItem;
extern char WBScreenName[];
extern char *ConfigName;
extern BOOL ConfigChanged;
extern struct EasyStruct SaveES;
extern BOOL ShowStatusWindow;
extern UWORD DockCount;
extern BOOL ShowDock;
extern ULONG globalsigs;
extern ULONG statwinsig;
extern ULONG editwinsig;
extern ULONG hkeywinsig;
extern ULONG dockwinsig;
extern struct MsgPort *MyBrokerPort;
extern struct Broker *MyBroker;
extern char DefaultPopUpHotKey[];
extern char *PopUpHotKey;
extern char DefaultCLIOutputFile[];
extern char *CLIOutputFile;
extern char *GlobalPath;
/* Global defines */
#define STACKMIN 4096 /* default stack */
#define DEFPROGNAME "ToolManager" /* default program name */
#define DEFCONFIGNAME "S:ToolManager.config" /* default config file name */
#define DEFPOPUPHOTKEY "rcommand help" /* default pop up hot key */
#define WDRAGBARLEN 60 /* Width of Close & Drag gadget */
#define STATWINAPPID 1 /* Status window AppWindow ID */
#define DOCKWINAPPID 2 /* Dock window AppWindow ID */
#define FREQ_SAVE 1 /* File requester types */
#define FREQ_FILE 2
#define FREQ_DIRS 3
#define FREQ_ICON 4