mirror of
https://github.com/elliotnunn/supermario.git
synced 2024-11-25 09:30:50 +00:00
270 lines
11 KiB
C
270 lines
11 KiB
C
/*
|
|
File: PPCBrowserPriv.h
|
|
|
|
Contains: Private header file for the PPC Browser
|
|
|
|
Written by: Jeff Miller
|
|
|
|
Copyright: © 1990, 1992 by Apple Computer, Inc., all rights reserved.
|
|
|
|
This file is used in these builds:
|
|
|
|
Change History (most recent first):
|
|
|
|
<18> 7/5/92 csd #1034096 <gbm>: Changed listFont and listFontSize to use the
|
|
application font and size by setting them to 1 and 0
|
|
respectively. This will make the Browser show the lists in the
|
|
application font which works better for other script systems.
|
|
<17> 3/30/92 DCL Include StandardFile.h. It used to be indirectly included
|
|
through Packages.h.
|
|
<16> 9/21/90 JSM Use angle brackets again since we're using the real
|
|
PPCToolbox.h, update some stuff to reflect this.
|
|
<15> 9/15/90 ngk Fix include of PPCToolbox to use quotes instead of angle
|
|
brackets
|
|
<14> 9/14/90 JSM Add theLocNBPType to globals.
|
|
<13> 8/21/90 JSM Add DefaultPromptStr constant.
|
|
<12> 7/25/90 JSM Add ZoneListColumns, MachListColumns, and AppListColumns
|
|
constants, define NoCellSelected explicitly as a short to reduce
|
|
code size.
|
|
<11> 7/11/90 JSM #include String.h to avoid C compiler warnings.
|
|
<10> 5/29/90 JSM Update to add support for new Chooser-style interface.
|
|
<9> 5/3/90 JSM #include IntlUtilsPriv, add support for type select utilities to
|
|
globals.
|
|
<8> 4/24/90 JSM Add okEnabled field to globals, #define buttonEnabledHilite and
|
|
buttonDisabledHilite.
|
|
<7> 3/19/90 JSM Add support for machine not registered on network, call filter
|
|
with PortInfo instead of PortName.
|
|
<6> 3/15/90 JSM Add support for browser configuration resource.
|
|
<5> 3/14/90 JSM Update MachListData structure to specify local machine.
|
|
<4> 3/12/90 JSM Add support for zones coming and going.
|
|
<3> 3/8/90 JSM Update to do asynchronous NBP lookups and IPCListPorts.
|
|
<2> 2/20/90 JSM Add some lowmem #defines, add hasAT to browser globals.
|
|
<1> 2/19/90 JSM First checked in.
|
|
|
|
*/
|
|
|
|
#include <Types.h>
|
|
#include <stdio.h>
|
|
#include <Resources.h>
|
|
#include <ToolUtils.h>
|
|
#include <Memory.h>
|
|
#include <Errors.h>
|
|
#include <Packages.h>
|
|
#include <StandardFile.h> /*<17>*/
|
|
#include <Lists.h>
|
|
#include <IntlUtilsPriv.h>
|
|
#include <String.h> /* for memcmp definition */
|
|
#include <PPCToolbox.h>
|
|
|
|
/* resource types */
|
|
#define BrowseConfigType 'ppcc' /* browser configuration resource */
|
|
|
|
/* resource IDs to use */
|
|
#define BrowseConfigID -5856 /* browser configuration */
|
|
#define BrowseDLOGID -5856 /* browser dialog */
|
|
#define BrowseSTR -5856 /* browser STR# */
|
|
#define PPCToolboxSTR -16409 /* STR# with entity type of PPCToolbox */
|
|
#define PPCMachNameSTR -16413 /* STR with machine name */
|
|
|
|
/* items in browse dialog */
|
|
#define OKOutlineItem 3 /* outline of OK button */
|
|
#define PromptText 4 /* prompt at top of dialog */
|
|
#define ZoneText 5 /* title for zone list */
|
|
#define MachText 6 /* title for machine list */
|
|
#define ApplText 7 /* title for application list */
|
|
|
|
/* note - keep lists sequential! */
|
|
#define ZoneListItem 8 /* zone list */
|
|
#define MachListItem 9 /* machine list */
|
|
#define ApplListItem 10 /* application list */
|
|
|
|
/* note - keep list outlines sequential! */
|
|
#define ZoneListOutlineItem 11 /* outline for zone list */
|
|
#define MachListOutlineItem 12 /* outline for machine list */
|
|
#define ApplListOutlineItem 13 /* outline for application list */
|
|
|
|
/* indexes into BrowseSTR */
|
|
#define ZoneTitle 1 /* title for zone list */
|
|
#define MachTitle 2 /* title for machine list */
|
|
#define ApplTitle 3 /* default title for application list */
|
|
#define DefaultPromptStr 4 /* default prompt */
|
|
#define NoMachineStr 5 /* default name of local machine when there is no machine name */
|
|
|
|
/* indexes into PPCToolboxSTR */
|
|
#define PPCNBPType 1 /* NBP type string - "PPCToolbox" */
|
|
|
|
/* indexes into theList - keep zero based */
|
|
#define ZoneListIndex 0
|
|
#define MachListIndex 1
|
|
#define ApplListIndex 2
|
|
|
|
/* number of columns in each list */
|
|
#define ZoneListColumns 1
|
|
#define MachListColumns 2 /* second column not displayed, used to store data for each entry */
|
|
#define ApplListColumns 2 /* second column not displayed, used to store data for each entry */
|
|
|
|
#define typeDelay 60 /* long delay between keys for matching */
|
|
|
|
/* value for zoneCell, machCell, and applCell when no cell selected */
|
|
#define NoCellSelected ((short)-1)
|
|
|
|
/* font information for list cell font */
|
|
#define listFont 1 /* geneva */
|
|
#define listFontSize 0
|
|
|
|
#define listFrameSize 2 /* thickness of pen for framing of active list */
|
|
|
|
#define buttonEnabledHilite 0 /* contrlHilite of enabled button */
|
|
#define buttonDisabledHilite 255 /* contrlHilite of disabled button */
|
|
|
|
/* constants corresponding to keys of interest */
|
|
#define charUpArrow 0x1E /* up arrow key */
|
|
#define charDownArrow 0x1F /* down arrow key */
|
|
#define charReturn 0x0D /* return key */
|
|
#define charEnter 0x03 /* enter key */
|
|
#define charDelete 0x08 /* delete/backspace key */
|
|
#define charClear 0x1B /* clear key on keypad */
|
|
#define charEscape 0x1B /* escape key is same as clear key, so… */
|
|
#define kcEscape 0x35 /* we need the key code to be unambiguous */
|
|
#define charTab 0x09 /* tab key */
|
|
#define charPeriod 0x2E /* period character for Cancel */
|
|
|
|
/* some global variables we look at */
|
|
#define KeyThresh *((short*)0x18E) /* key threshold */
|
|
#define SPConfig *((unsigned char*)0x1FB) /* serial port config */
|
|
|
|
/* stuff for NBP */
|
|
|
|
/* defines stolen from ATalkEqu.a so we can look directly at the NBP response buffer */
|
|
#define tupleNet 0 /* Offset to network no. [word] */
|
|
#define tupleNode 2 /* Offset to node ID [byte] */
|
|
#define tupleName 5 /* Offset to name part of tuple [byte] */
|
|
|
|
/* maximum size of a single response from a lookup (in bytes) */
|
|
#define NBPMaxResponseSize 72 /* name + type + "\p*" + addrBlock */
|
|
|
|
/* minimum number of bytes left before growing response buffer */
|
|
#define NBPOverflowTolerance NBPMaxResponseSize
|
|
|
|
/* initial guess at how big the response buffer should be (in bytes) */
|
|
#define NBPGuess 512
|
|
|
|
/* how much to increment the response buffer size if we overflow (in bytes) */
|
|
#define NBPIncrement 512
|
|
|
|
/* stuff for IPCListPorts */
|
|
|
|
/* initial guess at how many PPC ports we'll get for one location */
|
|
#define PPCGuess 5
|
|
|
|
/* how many ports to increment the buffer by if we overflow */
|
|
#define PPCIncrement 2
|
|
|
|
/* macro to get global variables */
|
|
#define GetBrowseGlobals(theDialog) (browseGlobals*)GetWRefCon(theDialog)
|
|
|
|
/*
|
|
Structure for the PPC Browser configuration resource.
|
|
This is in 'ppcc' resource id -5856. Default values
|
|
are in parentheses.
|
|
*/
|
|
typedef struct
|
|
{
|
|
unsigned char NBPInterval; /* NBP lookup interval (1) */
|
|
unsigned char NBPCount; /* NBP lookup count (5) */
|
|
short NBPMaxLives; /* NBP maximum lives an entry has before deletion (9) */
|
|
short NBPMaxToGet; /* NBP maximum number of entities (256) */
|
|
short NBPMaxIdle; /* NBP idle time in ticks between lookups (120) */
|
|
short PPCMaxToGet; /* PPC maximum number of ports (128) */
|
|
short PPCMaxIdle; /* PPC idle time in ticks between list ports (120) */
|
|
|
|
} BrowseConfigRes;
|
|
|
|
/*
|
|
Structure for list cell data for second column of machine list.
|
|
We never actually display this, but use it to store further
|
|
data related to the machine in column 0.
|
|
*/
|
|
typedef struct
|
|
{
|
|
short age; /* for aging entries */
|
|
Boolean isHomeMachine; /* true if this is the local machine */
|
|
|
|
} MachListData;
|
|
|
|
/*
|
|
Structure for list cell data for second column of application list.
|
|
We never actually display this, but use it to store further
|
|
data related to the application in column 0.
|
|
*/
|
|
typedef struct
|
|
{
|
|
Boolean exists; /* set to true if it exists */
|
|
PortInfoRec thePortInfo; /* from IPCListPorts */
|
|
|
|
} ApplListData;
|
|
|
|
/* global variables hung off of dialog's refCon */
|
|
typedef struct
|
|
{
|
|
DialogPtr theDialog; /* pointer to dialog */
|
|
ListHandle theList[3]; /* zone, machine, and application lists */
|
|
short machListBottDelta; /* bottom coordinate of mach list */
|
|
short currList; /* index into theList of current list */
|
|
short zoneCell; /* currently selected row in zone list */
|
|
short machCell; /* currently selected row in mach list */
|
|
short applCell; /* currently selected row in appl list */
|
|
|
|
/* stuff for doing NBP lookups */
|
|
MPPParamBlock *NBPpb; /* parameter block for NBP */
|
|
long NBPBackoff; /* backoff timer */
|
|
short NBPOffset; /* current offset into the response buffer */
|
|
short NBPNumFound; /* number of names found last time we looked */
|
|
EntityName NBPEntity; /* the name we're looking up */
|
|
Str32 homeZone; /* name of the zone we're in */
|
|
|
|
/* NBP configuration info from resource */
|
|
unsigned char NBPInterval; /* NBP lookup interval */
|
|
unsigned char NBPCount; /* NBP lookup count */
|
|
short NBPMaxLives; /* NBP maximum lives an entry has before deletion */
|
|
short NBPMaxToGet; /* NBP maximum number of entities */
|
|
short NBPMaxIdle; /* NBP idle time in ticks between lookups */
|
|
|
|
/* stuff for listing PPC ports */
|
|
IPCListPortsPBRec *PPCpb; /* parameter block for IPCListPorts */
|
|
long PPCBackoff; /* backoff timer */
|
|
LocationNameRec PPCLoc; /* location of ports we're looking up */
|
|
PPCPortRec PPCPort; /* the port we're looking up */
|
|
|
|
/* PPC configuration info from resource */
|
|
short PPCMaxToGet; /* PPC maximum number of ports */
|
|
short PPCMaxIdle; /* PPC idle time in ticks between list ports */
|
|
|
|
/* stuff for list keyboard navigation */
|
|
TypeSelectRecord theTSR; /* record for type selecting */
|
|
|
|
/* labels in browse dialog */
|
|
char promptStr[256]; /* prompt */
|
|
char applListTitle[256]; /* title for application list */
|
|
|
|
/* parameters passed in by caller */
|
|
PPCFilterProcPtr portFilter; /* filter for port list */
|
|
LocationNameRec *theLoc; /* default location */
|
|
PortInfoRec *thePortInfo; /* default port info */
|
|
Str32 theLocNBPType; /* NBP type to use for location lookups */
|
|
|
|
/* group Booleans here for alignment */
|
|
Boolean NBPBackingOff; /* true if backing off NBP lookup */
|
|
Boolean PPCBackingOff; /* true if backing off listing ports */
|
|
Boolean machineRegistered; /* true if our machine is registered on the network */
|
|
Boolean firstHomeLookup; /* true if doing first lookup in our home zone */
|
|
Boolean defaultSpecified; /* true if trying to select a specified default */
|
|
Boolean selectingDefault; /* true if trying to do any default selection */
|
|
Boolean hasZones; /* true if zones present */
|
|
Boolean hasAT; /* true if AppleTalk enabled */
|
|
Boolean okEnabled; /* true if OK button enabled */
|
|
Boolean zoneListShown; /* true if zone list shown */
|
|
|
|
} browseGlobals;
|
|
|