mirror of
https://github.com/GnoConsortium/gno.git
synced 2024-12-22 14:30:29 +00:00
7ec020a057
delimiters.
523 lines
12 KiB
C
523 lines
12 KiB
C
|
|
/*
|
|
* Copyright (c) Kopriha Software, 1990-1991
|
|
* All Rights Reserved
|
|
*
|
|
* KS.CDev.h
|
|
*
|
|
* Description: This include file contains all the external
|
|
* variable and routine definitions (prototypes)
|
|
* for the SpoolMaster CDEV.
|
|
*
|
|
*
|
|
* Table of contents:
|
|
*
|
|
* Defined variables:
|
|
*
|
|
* All CDEV flags passed the CDEV entry point
|
|
* All control IDs of the defined controls
|
|
* The port driver file/aux type
|
|
*
|
|
*
|
|
* External variables:
|
|
*
|
|
* static_text_substitution
|
|
* text0_string
|
|
* text_control_handle
|
|
*
|
|
*
|
|
* External routines:
|
|
*
|
|
* do_about()
|
|
* do_create()
|
|
* do_hit()
|
|
*
|
|
* scroll_action()
|
|
*
|
|
*
|
|
*
|
|
* History:May 18, 1991 Dave Created this file
|
|
*
|
|
*/
|
|
|
|
#ifndef _KS_CDEV_
|
|
#define _KS_CDEV_
|
|
|
|
/* define HEY_DAVE_WE_MUST_DEBUG_MORE */
|
|
|
|
|
|
|
|
#ifndef _KS_FILEIO_
|
|
#include "KS.FileIO.E"
|
|
#endif
|
|
|
|
#ifndef _KS_DEFINES_
|
|
#include "KS.Defines.h"
|
|
#endif
|
|
|
|
#ifndef _KS_ROUTINES_
|
|
#include "KS.Routines.h"
|
|
#endif
|
|
|
|
#ifndef _KS_MEMORY_
|
|
#include "ks.memory.h"
|
|
#endif
|
|
|
|
#ifndef _KS_SHARED_DATA_
|
|
#include "SharedData.h"
|
|
#endif
|
|
|
|
#ifndef __CONTROL__
|
|
#include <control.h>
|
|
#endif
|
|
|
|
#ifndef __LIST__
|
|
#include <list.h>
|
|
#endif
|
|
|
|
#ifndef __STDFILE__
|
|
#include <StdFile.h>
|
|
#endif
|
|
|
|
#ifndef __RESOURCES__
|
|
#include <Resources.h>
|
|
#endif
|
|
|
|
#ifndef __LOADER__
|
|
#include <Loader.h>
|
|
#endif
|
|
|
|
|
|
|
|
/* ****************************************************************** *
|
|
* Macro definitions: *
|
|
* ****************************************************************** */
|
|
|
|
|
|
/* ****************************************************************** *
|
|
* The following macro simplifies by global variable definitions... *
|
|
* *
|
|
* The reasoning goes like this: *
|
|
* EXTERNAL is defined as extern by all modules that include this *
|
|
* file but have not defined EXTERNAL (IE: All but Data.CC). *
|
|
* Data.CC defines EXTERNAL to be nothing - thus we create the *
|
|
* data in Data.CC but do not have to duplicate the global *
|
|
* variable definitions... *
|
|
* *
|
|
* This seems to simplify my maintenance - once copy of variable *
|
|
* definitions to support... *
|
|
* ****************************************************************** */
|
|
|
|
#ifndef EXTERNAL
|
|
#define EXTERNAL extern
|
|
#endif
|
|
|
|
|
|
|
|
/* ****************************************************************** *
|
|
* The following are all of the currently defined 'events' that are *
|
|
* passed to the CDEV entry point. *
|
|
* ****************************************************************** */
|
|
|
|
#define MachineCDEV 1
|
|
#define BootCDEV 2
|
|
#define Reserved 3
|
|
#define InitCDEV 4
|
|
#define CloseCDEV 5
|
|
#define EventsCDEV 6
|
|
#define CreateCDEV 7
|
|
#define AboutCDEV 8
|
|
#define RectCDEV 9
|
|
#define HitCDEV 10
|
|
#define RunCDEV 11
|
|
|
|
|
|
/* ****************************************************************** *
|
|
* The following is a list of all the controls we have defined for *
|
|
* the spoolmaster CDEV *
|
|
* *
|
|
* Note: Static text controls are not included in this list. *
|
|
* ****************************************************************** */
|
|
|
|
#define MainControlList (1L)
|
|
|
|
#define PortListControl (3L)
|
|
#define SpoolDirButtonControl (4L)
|
|
#define ScrollBarControl (6L)
|
|
#define BufferSizeTextControl (7L)
|
|
#define PrintFileCheckBoxCtl (8L)
|
|
#define DeleteFileCheckBoxCtl (9L)
|
|
|
|
#define HelpControl (0x0100L)
|
|
|
|
#define CantWriteAlert (1L)
|
|
#define CantWriteOkButton (0)
|
|
#define CantWriteTryAgain (1)
|
|
|
|
#define SpoolDirPrompt (1L)
|
|
|
|
|
|
|
|
#ifdef HEY_DAVE_WE_MUST_DEBUG_MORE
|
|
|
|
#define DebugCloseAlert (2L)
|
|
#define DebugRoutineEntry (3L)
|
|
#define DebugRoutineExit (4L)
|
|
#define DebugEndOfLoop (5L)
|
|
#define DebugStandardFile (6L)
|
|
|
|
#endif
|
|
|
|
|
|
/*
|
|
* Macro definition of print task id (for resource file)
|
|
*/
|
|
|
|
#define PrintTask (2L)
|
|
|
|
|
|
/*
|
|
* Macro definitions of the saved user parameters
|
|
*/
|
|
|
|
#define SpoolDefaultsType (0x0a13)
|
|
#define rMyCodeResource (0x0a14)
|
|
|
|
|
|
#define SpoolOptions (0x010L)
|
|
#define SpoolPrefix (0x010L)
|
|
|
|
/*
|
|
* Macro definitions of the standard file dialog template item numbers
|
|
*/
|
|
|
|
#define SFDT_SaveItem 1
|
|
#define SFDT_OpenItem 2
|
|
#define SFDT_CloseItem 3
|
|
#define SFDT_NextItem 4
|
|
#define SFDT_CancelItem 5
|
|
#define SFDT_ScrollItem 6
|
|
#define SFDT_PathItem 7
|
|
#define SFDT_FileItem 8
|
|
#define SFDT_PromptItem 9
|
|
#define SFDT_FilenameItem 10
|
|
#define SFDT_FreeSpaceItem 11
|
|
#define SFDT_NewFolderItem 12
|
|
|
|
|
|
|
|
/* ****************************************************************** *
|
|
* Port driver filetype and auxtype - used when we're building the *
|
|
* port driver list... Apple should have defined these... *
|
|
* ****************************************************************** */
|
|
|
|
#define PORT_DRIVER_TYPE ((Word) 0x0bb)
|
|
#define PORT_DRIVER_AUXTYPE ((Long) 2)
|
|
|
|
|
|
/* ****************************************************************** *
|
|
* Structure for the loader (actually InitialLoad2 with flagWord==2. *
|
|
* ****************************************************************** */
|
|
|
|
typedef struct
|
|
{
|
|
Pointer memoryAddress;
|
|
Word fileLength;
|
|
} InitialLoad2_Pkt;
|
|
|
|
|
|
|
|
/* ****************************************************************** *
|
|
* Standard file name/path reference description for an undefined *
|
|
* reference... Apple should have defined this... *
|
|
* ****************************************************************** */
|
|
|
|
#define STDFILE_REFERENCE_UNDEFINED ((Word) 3)
|
|
|
|
|
|
/* ****************************************************************** *
|
|
* Non-purgable purge level for memory blocks (setup by the memory *
|
|
* manager on a SetPurge. Apple should have defined this... *
|
|
* ****************************************************************** */
|
|
|
|
#define NOT_PURGEABLE ((Word) 0)
|
|
|
|
|
|
|
|
/* ****************************************************************** *
|
|
* Maximum string stubstitution index (apple should have defined *
|
|
* this) *
|
|
* ****************************************************************** */
|
|
|
|
#define MAX_SUB_INDEX 10
|
|
|
|
|
|
|
|
/* ****************************************************************** *
|
|
* Macros to get the filename/pathname from a standard file dialog. *
|
|
* ****************************************************************** */
|
|
|
|
#define DerefFileName ((** (ResultBuf255 **) ReplyRecord.nameRef).bufString)
|
|
#define DerefFilePath ((** (ResultBuf255 **) ReplyRecord.pathRef).bufString)
|
|
|
|
|
|
|
|
/* ****************************************************************** *
|
|
* External definitions: *
|
|
* ****************************************************************** */
|
|
|
|
/*
|
|
* static_text_substitution[] - is the static text substitution array.
|
|
*
|
|
* We use text substitution to display the selected buffer size.
|
|
*/
|
|
|
|
EXTERNAL Pointer static_text_substitution[MAX_SUB_INDEX];
|
|
|
|
/*
|
|
* text0_string[] - this is the single substitution string we use.
|
|
*/
|
|
|
|
EXTERNAL char text0_string[10];
|
|
|
|
|
|
/*
|
|
* cdev_window_handle - is the handle to the window of the CDEV.
|
|
*/
|
|
|
|
EXTERNAL WindowPtr cdev_window_handle;
|
|
|
|
|
|
/*
|
|
* text_control_handle - handle to the static text that will
|
|
* display the selected buffer size.
|
|
*
|
|
* Note: This is defined here as a performance improvement to
|
|
* the user interface (I see no reason to continually make
|
|
* the toolbox call to get this handle to redraw the text...).
|
|
*/
|
|
|
|
EXTERNAL CtlRecHndl text_control_handle;
|
|
|
|
|
|
/*
|
|
* Flags indicating which toolsets needed to be started...
|
|
*/
|
|
|
|
EXTERNAL Word QDAuxStarted;
|
|
EXTERNAL Word IMStarted;
|
|
EXTERNAL Word FMStarted;
|
|
EXTERNAL Word TEStarted;
|
|
EXTERNAL Word LMStackPointer;
|
|
EXTERNAL Word OriginalStackPtr;
|
|
|
|
|
|
/*
|
|
* Handles to the memory allocated for toolsets that we started.
|
|
*/
|
|
|
|
EXTERNAL Handle MemoryForFM;
|
|
EXTERNAL Handle MemoryForTE;
|
|
EXTERNAL Handle MemoryForLM;
|
|
|
|
|
|
/*
|
|
* list_handle/list_pointer are the handle/pointer to the Member
|
|
* record for the port driver list.
|
|
*/
|
|
|
|
EXTERNAL MemRecHndl list_handle;
|
|
EXTERNAL MemRecPtr list_pointer;
|
|
EXTERNAL CtlRecHndl list_control;
|
|
EXTERNAL Word number_of_ports;
|
|
EXTERNAL Word selected_port;
|
|
|
|
/*
|
|
* orig_control_values - this is a SHARED_DATA structure that holds
|
|
* the original copy of all the control values.
|
|
*
|
|
* It is currently setup when we process the OPEN event of the CDEV!
|
|
* This will soon change to the INIT event.
|
|
*/
|
|
|
|
EXTERNAL KS_SHARED_DATA_HDL shared_data_handle;
|
|
EXTERNAL KS_SHARED_DATA_PTR shared_data_values;
|
|
|
|
EXTERNAL ResultBuf255Hndl shared_spooldir_hdl;
|
|
EXTERNAL ResultBuf255Ptr shared_spooldir_ptr;
|
|
|
|
|
|
EXTERNAL KS_SHARED_DATA_HDL new_shared_handle;
|
|
EXTERNAL KS_SHARED_DATA_PTR new_shared_values;
|
|
|
|
|
|
|
|
/*
|
|
* dialog_filename - this is the temporary filename that we display
|
|
* with the standard file dialog.
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
Word length;
|
|
char text[64];
|
|
} GSString64;
|
|
|
|
EXTERNAL GSString64 dialog_filename;
|
|
EXTERNAL GSString64 backup_dialog_filename;
|
|
|
|
|
|
/*
|
|
* Prefix<0,8> - are handles we use to save prefix 0 and prefix 8.
|
|
*/
|
|
|
|
EXTERNAL Handle Prefix0;
|
|
EXTERNAL Handle Prefix8;
|
|
|
|
|
|
/*
|
|
* SpoolPrefixDirectory - handle used to save the new spool directory
|
|
*/
|
|
|
|
EXTERNAL Handle SpoolPrefixDirectory;
|
|
EXTERNAL Handle SpoolPrefixBackup;
|
|
|
|
|
|
/*
|
|
* handles/pointers to the control templates that are
|
|
* used only during the save of changed controls.
|
|
*/
|
|
|
|
EXTERNAL Handle CheckBoxHandle;
|
|
EXTERNAL RadioButtonTemplate *CheckBoxControlTemplate;
|
|
EXTERNAL Handle ScrollBarHandle;
|
|
EXTERNAL ScrollBarTemplate *ScrollBarControlTemplate;
|
|
|
|
|
|
|
|
/*
|
|
* The following four variables are from the build_port_list()
|
|
* routine. This is part of the effort to reduce stack usage
|
|
* so the finder can work for us...
|
|
*/
|
|
|
|
EXTERNAL KS_FILE_PTR bpl_file_ptr;
|
|
EXTERNAL char *bpl_port_name;
|
|
EXTERNAL DirEntryRecGS bpl_dir_entry;
|
|
EXTERNAL ResultBuf32 bpl_filename;
|
|
|
|
|
|
/*
|
|
* ReplyRecord - returned filled in by standard file dialog...
|
|
*/
|
|
|
|
EXTERNAL SFReplyRec2 ReplyRecord;
|
|
|
|
|
|
/*
|
|
* il2_pkt - packet used to load a memory resident code section.
|
|
*/
|
|
|
|
EXTERNAL InitialLoad2_Pkt il2_pkt;
|
|
|
|
|
|
/*
|
|
* port_rec - used to load the print task code.
|
|
*/
|
|
|
|
EXTERNAL InitialLoadOutputRec port_rec;
|
|
|
|
|
|
|
|
|
|
/*
|
|
* The following externals exist only when we are debugging
|
|
* the close code - if they are defined then when we are
|
|
* about to write the 'changed' data to the resource fork,
|
|
* then we will put up an alert window with all the variables
|
|
* displayed so we can see that they are correct.
|
|
*/
|
|
|
|
#ifdef HEY_DAVE_WE_MUST_DEBUG_MORE
|
|
|
|
EXTERNAL Pointer debug_sub_array[10];
|
|
EXTERNAL char debug_sub1[80];
|
|
EXTERNAL char debug_sub2[80];
|
|
EXTERNAL char debug_sub3[80];
|
|
EXTERNAL char debug_sub4[80];
|
|
EXTERNAL char debug_sub5[80];
|
|
EXTERNAL Word debug_stackptr;
|
|
|
|
#endif
|
|
|
|
|
|
/*
|
|
* Pathname to directory to select port driver from...
|
|
*
|
|
* It is not declared with the EXTERNAL macro because of the
|
|
* static initialization...
|
|
*/
|
|
|
|
extern GSString32 port_dir_path;
|
|
|
|
|
|
/*
|
|
* spoolmaster_path - the complete path to where the
|
|
* spoolmaster CDEV lives... I'd like to remove this
|
|
* variable...
|
|
*/
|
|
|
|
extern GSString32 spoolmaster_path;
|
|
|
|
|
|
/*
|
|
* my_sf_dialog_template - is my special standard file dialog templates
|
|
*/
|
|
|
|
extern Word my_sf_dialog320;
|
|
extern Word my_sf_dialog640;
|
|
|
|
|
|
/* ****************************************************************** *
|
|
* Function Prototypes: *
|
|
* ****************************************************************** */
|
|
|
|
/*
|
|
* Functions from Spool.CC
|
|
*/
|
|
|
|
void do_boot(void);
|
|
|
|
void do_about(WindowPtr);
|
|
|
|
Long do_create(WindowPtr);
|
|
|
|
void do_close(void);
|
|
|
|
void do_hit(CtlRecHndl,
|
|
Long);
|
|
|
|
/*
|
|
* Functions from Controls.CC
|
|
*/
|
|
|
|
void scroll_action(CtlRecHndl,
|
|
Word);
|
|
|
|
void build_port_list(void);
|
|
|
|
void save_control_values(void);
|
|
|
|
void GetRidOfSFMemory(void); /* Standard file support... */
|
|
int SFStart(int *, Handle *);
|
|
void SFStop(int, Handle);
|
|
void sfdialog_hook(Pointer, Word *);
|
|
int SFPut(void);
|
|
int PrefixToHandle (Word, Handle *);
|
|
void HandleToPrefix (Word, Handle);
|
|
int SavePrefixes(void);
|
|
void RestorePrefixes (void);
|
|
|
|
|
|
#endif
|