]> granicus.if.org Git - python/commitdiff
Store default startup options in preference file or
authorJack Jansen <jack.jansen@cwi.nl>
Wed, 21 Feb 1996 16:46:57 +0000 (16:46 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Wed, 21 Feb 1996 16:46:57 +0000 (16:46 +0000)
app.

Mac/Include/pythonresources.h
Mac/Python/macgetpath.c
Mac/Python/macmain.c

index 4b353c5d98c013dc00bab816e74702933696769e..ca00a2399f907ab1820ea938672785ae8710029e 100644 (file)
 
 /* The alis resource for locating the python home directory */
 #define PYTHONHOME_ID 128
+
+/* The Python options resource and offset of its members */
+#define PYTHONOPTIONS_ID 128
+#define POPT_INSPECT   0
+#define POPT_VERBOSE   1
+#define POPT_SUPPRESS  2
+#define POPT_UNBUFFERED        3
+#define POPT_DEBUGGING 4
+#define POPT_KEEPNORM  5
+#define POPT_KEEPERR   6
index 5e528f7932e34d1553bcf751e7aa15a24b5401a1..b78273630be126d751b10ce15d28895eec9eb4d2 100644 (file)
@@ -263,3 +263,37 @@ out:
 }
 #endif /* !USE_BUILTIN_PATH */
 
+void
+PyMac_PreferenceOptions(int *inspect, int *verbose, int *suppress_print, 
+                                                int *unbuffered, int *debugging, int *keep_normal,
+                                                int *keep_error)
+{
+       short oldrh, prefrh;
+       Handle handle;
+       int size;
+       char *p;
+       
+       
+    oldrh = CurResFile();
+    prefrh = PyMac_OpenPrefFile();
+    handle = GetResource('Popt', PYTHONOPTIONS_ID);
+    if ( handle == NULL ) {
+       return;
+    }
+    HLock(handle);
+    size = GetHandleSize(handle);
+    p = (char *)*handle;
+    
+    if ( size > POPT_INSPECT ) *inspect = p[POPT_INSPECT];
+    if ( size > POPT_VERBOSE ) *verbose = p[POPT_VERBOSE];
+    if ( size > POPT_SUPPRESS ) *suppress_print = p[POPT_SUPPRESS];
+    if ( size > POPT_UNBUFFERED ) *unbuffered = p[POPT_UNBUFFERED];
+    if ( size > POPT_DEBUGGING ) *debugging = p[POPT_DEBUGGING];
+    if ( size > POPT_KEEPNORM ) *keep_normal = p[POPT_KEEPNORM];
+    if ( size > POPT_KEEPERR ) *keep_error = p[POPT_KEEPERR];
+    
+    HUnlock(handle);
+
+       CloseResFile(prefrh);
+    UseResFile(oldrh);
+}
index f6b1dee4d9f6ace7d2a5bc50cb0a3a82fa0c81d4..ecaa0187fc9c2d3c5c0e6e8af8e35c09992b5e1d 100644 (file)
@@ -178,6 +178,12 @@ PyMac_InteractiveOptions(int *inspect, int *verbose, int *suppress_print,
        DialogPtr dialog;
        Rect rect;
        
+       /* Default-defaults: */
+       *keep_error = 1;
+       /* Get default settings from our preference file */
+       PyMac_PreferenceOptions(&inspect, &Py_VerboseFlag, &Py_SuppressPrintingFlag,
+                       &unbuffered, &Py_DebugFlag, &keep_normal, &keep_error);
+       /* If option is pressed override these */
        GetKeys(rmap);
        map = (unsigned char *)rmap;
        if ( ( map[0x3a>>3] & (1<<(0x3a&7)) ) == 0 )    /* option key is 3a */
@@ -189,9 +195,20 @@ PyMac_InteractiveOptions(int *inspect, int *verbose, int *suppress_print,
                return;
        }
        
-       /* Set keep-open-on-error */
-       GetDialogItem(dialog, OPT_KEEPERROR, &type, (Handle *)&handle, &rect);
-       SetCtlValue(handle, *keep_error);
+       /* Set default values */
+#define SET_OPT_ITEM(num, var) \
+               GetDialogItem(dialog, (num), &type, (Handle *)&handle, &rect); \
+               SetCtlValue(handle, (short)*(var));
+
+       SET_OPT_ITEM(OPT_INSPECT, inspect);
+       SET_OPT_ITEM(OPT_VERBOSE, verbose);
+       SET_OPT_ITEM(OPT_SUPPRESS, suppress_print);
+       SET_OPT_ITEM(OPT_UNBUFFERED, unbuffered);
+       SET_OPT_ITEM(OPT_DEBUGGING, debugging);
+       SET_OPT_ITEM(OPT_KEEPNORMAL, keep_normal);
+       SET_OPT_ITEM(OPT_KEEPERROR, keep_error);
+
+#undef SET_OPT_ITEM
        
        while (1) {
                handle = NULL;
@@ -310,7 +327,7 @@ PyMac_Exit(status)
        if (keep) {
                SIOUXSettings.standalone = 1;
                SIOUXSettings.autocloseonquit = 0;
-               SIOUXSetTitle("\pÇterminatedÈ");
+               SIOUXSetTitle("\p«terminated»");
        }
        else
                SIOUXSettings.autocloseonquit = 1;