Keepconsole is now a 4-way option: never/errorexit/unseen output/always. Default is "unseen output". Upped the Popt version number.

This commit is contained in:
Jack Jansen 2000-09-22 21:50:11 +00:00
parent e126233cd9
commit 4a5eb967b8
8 changed files with 97 additions and 46 deletions

View File

@ -1 +1 @@
#define BUILD 55 #define BUILD 66

View File

@ -68,9 +68,11 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#define OPT_OPTIMIZE 5 #define OPT_OPTIMIZE 5
#define OPT_UNBUFFERED 6 #define OPT_UNBUFFERED 6
#define OPT_DEBUGGING 7 #define OPT_DEBUGGING 7
#define OPT_KEEPNORMAL 8 #define OPT_KEEPALWAYS 8
#define OPT_KEEPERROR 9 #define OPT_KEEPOUTPUT 9
#define OPT_CMDLINE 10 #define OPT_KEEPERROR 10
#define OPT_KEEPNEVER 11
#define OPT_CMDLINE 12
#define OPT_TABWARN 13 #define OPT_TABWARN 13
#define OPT_NOSITE 14 #define OPT_NOSITE 14
#define OPT_HELP 15 #define OPT_HELP 15
@ -134,17 +136,12 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
/* The Python options resource and offset of its members */ /* The Python options resource and offset of its members */
#define PYTHONOPTIONS_ID 228 #define PYTHONOPTIONS_ID 228
#define PYTHONOPTIONSOVERRIDE_ID 229 #define PYTHONOPTIONSOVERRIDE_ID 229
#if 0
#define POPT_INSPECT 0
#define POPT_VERBOSE 1
#define POPT_OPTIMIZE 2
#define POPT_UNBUFFERED 3
#define POPT_DEBUGGING 4
#define POPT_KEEPNORM 5
#define POPT_KEEPERR 6
#endif
#define POPT_VERSION_CURRENT 5 /* Current version number */ #define POPT_VERSION_CURRENT 6 /* Current version number */
#define POPT_KEEPCONSOLE_NEVER 0
#define POPT_KEEPCONSOLE_OUTPUT 1
#define POPT_KEEPCONSOLE_ERROR 2
#define POPT_KEEPCONSOLE_ALWAYS 3
#ifndef rez #ifndef rez
typedef struct PyMac_PrefRecord { typedef struct PyMac_PrefRecord {
@ -154,8 +151,8 @@ typedef struct PyMac_PrefRecord {
unsigned char optimize; unsigned char optimize;
unsigned char unbuffered; unsigned char unbuffered;
unsigned char debugging; unsigned char debugging;
unsigned char keep_normal; unsigned char unused;
unsigned char keep_error; unsigned char keep_console;
unsigned char nointopt; unsigned char nointopt;
unsigned char noargs; unsigned char noargs;
unsigned char tabwarn; unsigned char tabwarn;

View File

@ -16,7 +16,7 @@ OVERRIDE_POPT_ID = 229
OVERRIDE_GUSI_ID = 10241 OVERRIDE_GUSI_ID = 10241
# version # version
CUR_VERSION=5 CUR_VERSION=6
preffilename = PstringLoader(AnyResLoader('STR ', resname=PREFNAME_NAME)).load() preffilename = PstringLoader(AnyResLoader('STR ', resname=PREFNAME_NAME)).load()
pref_fss = preferencefile(preffilename, 'Pyth', 'pref') pref_fss = preferencefile(preffilename, 'Pyth', 'pref')
@ -88,7 +88,7 @@ class PythonOptions:
dict['creator'], dict['type'], dict['delayconsole'] = self.gusi.load() dict['creator'], dict['type'], dict['delayconsole'] = self.gusi.load()
flags = self.popt.load() flags = self.popt.load()
dict['version'], dict['inspect'], dict['verbose'], dict['optimize'], \ dict['version'], dict['inspect'], dict['verbose'], dict['optimize'], \
dict['unbuffered'], dict['debugging'], dict['keepopen'], dict['keeperror'], \ dict['unbuffered'], dict['debugging'], dummy, dict['keep_console'], \
dict['nointopt'], dict['noargs'], dict['tabwarn'], \ dict['nointopt'], dict['noargs'], dict['tabwarn'], \
dict['nosite'], dict['nonavservice'] = flags dict['nosite'], dict['nonavservice'] = flags
return dict return dict
@ -99,7 +99,7 @@ class PythonOptions:
self.dir.save(diralias) self.dir.save(diralias)
self.gusi.save((dict['creator'], dict['type'], dict['delayconsole'])) self.gusi.save((dict['creator'], dict['type'], dict['delayconsole']))
flags = dict['version'], dict['inspect'], dict['verbose'], dict['optimize'], \ flags = dict['version'], dict['inspect'], dict['verbose'], dict['optimize'], \
dict['unbuffered'], dict['debugging'], dict['keepopen'], dict['keeperror'], \ dict['unbuffered'], dict['debugging'], 0, dict['keep_console'], \
dict['nointopt'], dict['noargs'], dict['tabwarn'], \ dict['nointopt'], dict['noargs'], dict['tabwarn'], \
dict['nosite'], dict['nonavservice'] dict['nosite'], dict['nonavservice']
self.popt.save(flags) self.popt.save(flags)

View File

@ -53,6 +53,9 @@ extern int ccommand(char ***);
#ifdef USE_MAC_SHARED_LIBRARY #ifdef USE_MAC_SHARED_LIBRARY
extern PyMac_AddLibResources(void); extern PyMac_AddLibResources(void);
#endif #endif
#ifdef USE_GUSI
#include "GUSISIOUX.h"
#endif
#define STARTUP "PythonStartup" #define STARTUP "PythonStartup"
@ -151,8 +154,15 @@ PyMac_InteractiveOptions(PyMac_PrefRecord *p, int *argcp, char ***argvp)
SET_OPT_ITEM(OPT_OPTIMIZE, optimize); SET_OPT_ITEM(OPT_OPTIMIZE, optimize);
SET_OPT_ITEM(OPT_UNBUFFERED, unbuffered); SET_OPT_ITEM(OPT_UNBUFFERED, unbuffered);
SET_OPT_ITEM(OPT_DEBUGGING, debugging); SET_OPT_ITEM(OPT_DEBUGGING, debugging);
SET_OPT_ITEM(OPT_KEEPNORMAL, keep_normal); GetDialogItem(dialog, OPT_KEEPALWAYS, &type, (Handle *)&handle, &rect);
SET_OPT_ITEM(OPT_KEEPERROR, keep_error); SetControlValue(handle, (short)(p->keep_console == POPT_KEEPCONSOLE_ALWAYS));
GetDialogItem(dialog, OPT_KEEPOUTPUT, &type, (Handle *)&handle, &rect);
SetControlValue(handle, (short)(p->keep_console == POPT_KEEPCONSOLE_OUTPUT));
GetDialogItem(dialog, OPT_KEEPERROR, &type, (Handle *)&handle, &rect);
SetControlValue(handle, (short)(p->keep_console == POPT_KEEPCONSOLE_ERROR));
GetDialogItem(dialog, OPT_KEEPNEVER, &type, (Handle *)&handle, &rect);
SetControlValue(handle, (short)(p->keep_console == POPT_KEEPCONSOLE_NEVER));
/* SET_OPT_ITEM(OPT_KEEPCONSOLE, keep_console); */
SET_OPT_ITEM(OPT_TABWARN, tabwarn); SET_OPT_ITEM(OPT_TABWARN, tabwarn);
SET_OPT_ITEM(OPT_NOSITE, nosite); SET_OPT_ITEM(OPT_NOSITE, nosite);
SET_OPT_ITEM(OPT_NONAVSERV, nonavservice); SET_OPT_ITEM(OPT_NONAVSERV, nonavservice);
@ -204,8 +214,18 @@ PyMac_InteractiveOptions(PyMac_PrefRecord *p, int *argcp, char ***argvp)
OPT_ITEM(OPT_OPTIMIZE, optimize); OPT_ITEM(OPT_OPTIMIZE, optimize);
OPT_ITEM(OPT_UNBUFFERED, unbuffered); OPT_ITEM(OPT_UNBUFFERED, unbuffered);
OPT_ITEM(OPT_DEBUGGING, debugging); OPT_ITEM(OPT_DEBUGGING, debugging);
OPT_ITEM(OPT_KEEPNORMAL, keep_normal); if ( item == OPT_KEEPALWAYS ) p->keep_console = POPT_KEEPCONSOLE_ALWAYS;
OPT_ITEM(OPT_KEEPERROR, keep_error); if ( item == OPT_KEEPOUTPUT ) p->keep_console = POPT_KEEPCONSOLE_OUTPUT;
if ( item == OPT_KEEPERROR ) p->keep_console = POPT_KEEPCONSOLE_ERROR;
if ( item == OPT_KEEPNEVER ) p->keep_console = POPT_KEEPCONSOLE_NEVER;
GetDialogItem(dialog, OPT_KEEPALWAYS, &type, (Handle *)&handle, &rect);
SetControlValue(handle, (short)(p->keep_console == POPT_KEEPCONSOLE_ALWAYS));
GetDialogItem(dialog, OPT_KEEPOUTPUT, &type, (Handle *)&handle, &rect);
SetControlValue(handle, (short)(p->keep_console == POPT_KEEPCONSOLE_OUTPUT));
GetDialogItem(dialog, OPT_KEEPERROR, &type, (Handle *)&handle, &rect);
SetControlValue(handle, (short)(p->keep_console == POPT_KEEPCONSOLE_ERROR));
GetDialogItem(dialog, OPT_KEEPNEVER, &type, (Handle *)&handle, &rect);
SetControlValue(handle, (short)(p->keep_console == POPT_KEEPCONSOLE_NEVER));
OPT_ITEM(OPT_TABWARN, tabwarn); OPT_ITEM(OPT_TABWARN, tabwarn);
OPT_ITEM(OPT_NOSITE, nosite); OPT_ITEM(OPT_NOSITE, nosite);
OPT_ITEM(OPT_NONAVSERV, nonavservice); OPT_ITEM(OPT_NONAVSERV, nonavservice);
@ -252,7 +272,7 @@ init_common(int *argcp, char ***argvp, int embedded)
#endif #endif
/* Get options from preference file (or from applet resource fork) */ /* Get options from preference file (or from applet resource fork) */
options.keep_error = 1; /* default-default */ options.keep_console = POPT_KEEPCONSOLE_OUTPUT; /* default-default */
PyMac_PreferenceOptions(&options); PyMac_PreferenceOptions(&options);
if ( embedded ) { if ( embedded ) {
@ -281,7 +301,7 @@ init_common(int *argcp, char ***argvp, int embedded)
} }
/* Copy selected options to where the machine-independent stuff wants it */ /* Copy selected options to where the machine-independent stuff wants it */
Py_VerboseFlag = options.verbose *2; Py_VerboseFlag = options.verbose;
/* Py_SuppressPrintingFlag = options.suppress_print; */ /* Py_SuppressPrintingFlag = options.suppress_print; */
Py_OptimizeFlag = options.optimize; Py_OptimizeFlag = options.optimize;
Py_DebugFlag = options.debugging; Py_DebugFlag = options.debugging;
@ -525,18 +545,31 @@ void
PyMac_Exit(status) PyMac_Exit(status)
int status; int status;
{ {
int keep; int keep = 0;
#if __profile__ == 1 #if __profile__ == 1
ProfilerDump("\pPython Profiler Results"); ProfilerDump("\pPython Profiler Results");
ProfilerTerm(); ProfilerTerm();
#endif #endif
if ( status )
keep = options.keep_error;
else
keep = options.keep_normal;
#ifdef USE_SIOUX #ifdef USE_SIOUX
switch (options.keep_console) {
case POPT_KEEPCONSOLE_NEVER:
keep = 0;
break;
case POPT_KEEPCONSOLE_OUTPUT:
if (gusisioux_state == GUSISIOUX_STATE_LASTWRITE ||
gusisioux_state == GUSISIOUX_STATE_UNKNOWN )
keep = 1;
else
keep = 0;
break;
case POPT_KEEPCONSOLE_ERROR:
keep = (status != 0);
break;
default:
keep = 1;
}
if (keep) { if (keep) {
SIOUXSettings.standalone = 1; SIOUXSettings.standalone = 1;
SIOUXSettings.autocloseonquit = 0; SIOUXSettings.autocloseonquit = 0;

Binary file not shown.

View File

@ -15,8 +15,11 @@ type 'Popt' {
byte noOptimize = 0, optimize = 1; byte noOptimize = 0, optimize = 1;
byte noUnbuffered = 0, unbuffered = 1; byte noUnbuffered = 0, unbuffered = 1;
byte noDebugParser = 0, debugParser = 1; byte noDebugParser = 0, debugParser = 1;
byte closeOnNormalExit = 0, noCloseOnNormalExit = 1; byte unused_0 = 0, unused_1 = 1;
byte closeOnErrorExit = 0, noCloseOnErrorExit = 1; byte closeAlways = POPT_KEEPCONSOLE_NEVER,
noCloseOutput = POPT_KEEPCONSOLE_OUTPUT,
noCloseError = POPT_KEEPCONSOLE_ERROR,
closeNever = POPT_KEEPCONSOLE_ALWAYS;
byte interactiveOptions = 0, noInteractiveOptions = 1; byte interactiveOptions = 0, noInteractiveOptions = 1;
byte argcArgv = 0, noArgcArgv = 1; byte argcArgv = 0, noArgcArgv = 1;
byte newStandardExceptions = 0, oldStandardExceptions = 1; byte newStandardExceptions = 0, oldStandardExceptions = 1;
@ -62,8 +65,8 @@ resource 'Popt' (PYTHONOPTIONS_ID, "Options") {
noOptimize, noOptimize,
noUnbuffered, noUnbuffered,
noDebugParser, noDebugParser,
closeOnNormalExit, unused_0,
noCloseOnErrorExit, noCloseOutput,
interactiveOptions, interactiveOptions,
argcArgv, argcArgv,
newStandardExceptions, newStandardExceptions,

View File

@ -36,32 +36,35 @@ OPT_DIALOG_ID = 510
# Map dialog item numbers to option names (and the reverse) # Map dialog item numbers to option names (and the reverse)
opt_dialog_map = [ opt_dialog_map = [
None,
None, None,
"inspect", "inspect",
"verbose", "verbose",
"optimize", "optimize",
"unbuffered", "unbuffered",
"debugging", "debugging",
"keepopen", "tabwarn",
"keeperror", "nosite",
"nonavservice",
"nointopt", "nointopt",
"noargs", "noargs",
"delayconsole", "delayconsole",
None, None, None, None, None, None, None, None, # 11-18 are different ]
"tabwarn",
"nosite",
"nonavservice"]
opt_dialog_dict = {} opt_dialog_dict = {}
for i in range(len(opt_dialog_map)): for i in range(len(opt_dialog_map)):
if opt_dialog_map[i]: if opt_dialog_map[i]:
opt_dialog_dict[opt_dialog_map[i]] = i opt_dialog_dict[opt_dialog_map[i]] = i
# 1 thru 10 are the options # 1 thru 10 are the options
# The GUSI creator/type and delay-console # The GUSI creator/type and delay-console
OD_CREATOR_ITEM = 11 OD_CREATOR_ITEM = 18
OD_TYPE_ITEM = 12 OD_TYPE_ITEM = 19
OD_OK_ITEM = 13 OD_OK_ITEM = 1
OD_CANCEL_ITEM = 14 OD_CANCEL_ITEM = 2
OD_HELP_ITEM = 22 OD_HELP_ITEM = 20
OD_KEEPALWAYS_ITEM = 14
OD_KEEPOUTPUT_ITEM = 15
OD_KEEPERROR_ITEM = 16
OD_KEEPNEVER_ITEM = 17
def optinteract(options): def optinteract(options):
"""Let the user interact with the options dialog""" """Let the user interact with the options dialog"""
@ -72,12 +75,19 @@ def optinteract(options):
SetDialogItemText(htext, options['type']) SetDialogItemText(htext, options['type'])
d.SetDialogDefaultItem(OD_OK_ITEM) d.SetDialogDefaultItem(OD_OK_ITEM)
d.SetDialogCancelItem(OD_CANCEL_ITEM) d.SetDialogCancelItem(OD_CANCEL_ITEM)
while 1: while 1:
for name in opt_dialog_dict.keys(): for name in opt_dialog_dict.keys():
num = opt_dialog_dict[name] num = opt_dialog_dict[name]
ctl = d.GetDialogItemAsControl(num) ctl = d.GetDialogItemAsControl(num)
ctl.SetControlValue(options[name]) ctl.SetControlValue(options[name])
ctl = d.GetDialogItemAsControl(OD_KEEPALWAYS_ITEM)
ctl.SetControlValue(options['keep_console'] == 3)
ctl = d.GetDialogItemAsControl(OD_KEEPOUTPUT_ITEM)
ctl.SetControlValue(options['keep_console'] == 1)
ctl = d.GetDialogItemAsControl(OD_KEEPERROR_ITEM)
ctl.SetControlValue(options['keep_console'] == 2)
ctl = d.GetDialogItemAsControl(OD_KEEPNEVER_ITEM)
ctl.SetControlValue(options['keep_console'] == 0)
n = ModalDialog(None) n = ModalDialog(None)
if n == OD_OK_ITEM: if n == OD_OK_ITEM:
htext = d.GetDialogItemAsControl(OD_CREATOR_ITEM) htext = d.GetDialogItemAsControl(OD_CREATOR_ITEM)
@ -94,6 +104,14 @@ def optinteract(options):
return return
elif n in (OD_CREATOR_ITEM, OD_TYPE_ITEM): elif n in (OD_CREATOR_ITEM, OD_TYPE_ITEM):
pass pass
elif n == OD_KEEPALWAYS_ITEM:
options['keep_console'] = 3;
elif n == OD_KEEPOUTPUT_ITEM:
options['keep_console'] = 1;
elif n == OD_KEEPERROR_ITEM:
options['keep_console'] = 2;
elif n == OD_KEEPNEVER_ITEM:
options['keep_console'] = 0;
elif n == OD_HELP_ITEM: elif n == OD_HELP_ITEM:
onoff = Help.HMGetBalloons() onoff = Help.HMGetBalloons()
Help.HMSetBalloons(not onoff) Help.HMSetBalloons(not onoff)

Binary file not shown.