From 8f5725af60cc26787bf61549fc780537f287ebc0 Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Tue, 7 Dec 1999 23:08:10 +0000 Subject: First bits and pieces of appearance support: an init routine, a global flag PyMac_AppearanceCompliant (exported thru MacOS). If USE_APPEARANCE is off the code is disabled (but the variables are still there, set to 0). --- Mac/Include/macglue.h | 1 + Mac/Include/pythonresources.h | 28 +++++++++++++++------------- Mac/Modules/macosmodule.c | 3 +++ Mac/Python/macglue.c | 5 +++++ Mac/Python/macmain.c | 20 ++++++++++++++++++++ Mac/mwerks/mwerks_small_config.h | 1 + 6 files changed, 45 insertions(+), 13 deletions(-) diff --git a/Mac/Include/macglue.h b/Mac/Include/macglue.h index b40d18a..5e39044 100644 --- a/Mac/Include/macglue.h +++ b/Mac/Include/macglue.h @@ -72,6 +72,7 @@ extern char PyMac_ApplicationPath[]; /* Application location (from macargv.c) * extern OSErr PyMac_init_application_location Py_PROTO((void)); /* Init the above */ extern OSErr PyMac_GetFullPath Py_PROTO((FSSpec *, char *)); /* convert fsspec->path (macargv.c) */ extern int PyMac_GetArgv Py_PROTO((char ***, int)); /* Get argc, argv (from macargv.c) */ +extern int PyMac_AppearanceCompliant; /* True if in appearance support mode */ extern PyObject *PyMac_OSErrException; /* Exception for OSErr */ PyObject *PyMac_GetOSErrException(void); /* Initialize & return it */ diff --git a/Mac/Include/pythonresources.h b/Mac/Include/pythonresources.h index 8f6c227..a696b86 100644 --- a/Mac/Include/pythonresources.h +++ b/Mac/Include/pythonresources.h @@ -41,24 +41,26 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ** shared ppc python, in the core dynamic library) */ +#define BASE_ID 228 + /* The alert for "No Python directory, where is it?" (OBSOLETE) */ -#define NOPYTHON_ALERT 228 +#define NOPYTHON_ALERT BASE_ID+0 #define YES_ITEM 1 #define NO_ITEM 2 #define CURWD_ITEM 3 /* The alert for "this is an applet template" */ -#define NOPYC_ALERT 229 +#define NOPYC_ALERT BASE_ID+1 /* The dialog for our GetDirectory and PromptGetFile call */ -#define GETDIR_ID 230 /* Resource ID for our "get directory" */ -#define GETFILEPROMPT_ID 232 /* Resource id for prompted get file */ -#define PROMPT_ITEM 10 /* The prompt, at the top */ -#define SELECTCUR_ITEM 11 /* "Select current directory" button */ +#define GETDIR_ID BASE_ID+2 /* Resource ID for our "get directory" */ +#define GETFILEPROMPT_ID BASE_ID+4 /* Resource id for prompted get file */ +#define PROMPT_ITEM 10 /* The prompt, at the top */ +#define SELECTCUR_ITEM 11 /* "Select current directory" button */ /* The dialog for interactive options */ -#define OPT_DIALOG 231 /* Resource ID for dialog */ +#define OPT_DIALOG BASE_ID+3 /* Resource ID for dialog */ #define OPT_OK 1 #define OPT_CANCEL 2 #define OPT_INSPECT 3 @@ -74,21 +76,21 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #define OPT_HELP 16 /* Dialog for 'No preferences directory' */ -#define NOPREFDIR_ID 233 +#define NOPREFDIR_ID BASE_ID+5 /* Dialog for 'Bad or outdated preferences' */ -#define BADPREFERENCES_ID 234 +#define BADPREFERENCES_ID BASE_ID+6 #define BADPREF_DELETE 1 #define BADPREF_CONTINUE 2 #define BADPREF_QUIT 3 /* Dialog for 'Bad preference file' */ -#define BADPREFFILE_ID 235 +#define BADPREFFILE_ID BASE_ID+7 /* About box */ -#define ABOUT_ID 236 +#define ABOUT_ID BASE_ID+8 /* No preferences file name resource */ -#define NOPREFNAME_ID 237 +#define NOPREFNAME_ID BASE_ID+9 /* EditPythonPrefs range. Needed here to forestall conflicts with applets */ #define EDITPYTHONPREFS_MIN 508 @@ -168,4 +170,4 @@ typedef struct PyMac_PrefRecord { /* From macgetpath.c: */ void PyMac_PreferenceOptions Py_PROTO((PyMac_PrefRecord *)); char * PyMac_GetPythonDir Py_PROTO((void)); -#endif \ No newline at end of file +#endif diff --git a/Mac/Modules/macosmodule.c b/Mac/Modules/macosmodule.c index 14f807c..586d675 100644 --- a/Mac/Modules/macosmodule.c +++ b/Mac/Modules/macosmodule.c @@ -734,5 +734,8 @@ initMacOS() if( PyDict_SetItemString(d, "string_id_to_buffer", Py_BuildValue("i", off)) != 0) Py_FatalError("Can't define MacOS.string_id_to_buffer"); } + if (PyDict_SetItemString(d, "AppearanceCompliant", + Py_BuildValue("i", PyMac_AppearanceCompliant)) != 0) + Py_FatalError("can't define MacOS.AppearanceCompliant"); } diff --git a/Mac/Python/macglue.c b/Mac/Python/macglue.c index fa27c79..4b4c021 100644 --- a/Mac/Python/macglue.c +++ b/Mac/Python/macglue.c @@ -155,6 +155,11 @@ static int upp_inited = 0; */ static PyObject *python_event_handler; +/* +** Set to true if we're appearance-compliant +*/ +int PyMac_AppearanceCompliant; + #ifdef USE_GUSI /* ** GUSI (1.6.0 and earlier, at the least) do not set the MacOS idea of diff --git a/Mac/Python/macmain.c b/Mac/Python/macmain.c index 0fdcb51..db39e18 100644 --- a/Mac/Python/macmain.c +++ b/Mac/Python/macmain.c @@ -37,6 +37,10 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #include #include #include +#ifdef USE_APPEARANCE +#include +#include +#endif /* USE_APPEARANCE */ #ifdef __MWERKS__ #include #define USE_SIOUX @@ -64,6 +68,21 @@ PyMac_PrefRecord options; static void Py_Main Py_PROTO((int, char **)); /* Forward */ void PyMac_Exit Py_PROTO((int)); /* Forward */ +static void init_appearance() +{ +#ifdef USE_APPEARANCE + OSErr err; + SInt32 response; + + err = Gestalt(gestaltAppearanceAttr,&response); + if ( err ) goto no_appearance; + if ( !(response&(1<