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).
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 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 @@
 ** 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 @@
 #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 @@
 /* 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 @@
 		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 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 @@
 #include <Windows.h>
 #include <Fonts.h>
 #include <Balloons.h>
+#ifdef USE_APPEARANCE
+#include <Gestalt.h>
+#include <Appearance.h>
+#endif /* USE_APPEARANCE */
 #ifdef __MWERKS__
 #include <SIOUX.h>
 #define USE_SIOUX
@@ -64,6 +68,21 @@
 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<<gestaltAppearanceExists)) ) goto no_appearance;
+	/* XXXX Should we check the version? Compat-mode? */
+	PyMac_AppearanceCompliant = 1;
+no_appearance:
+	return;
+#endif /* USE_APPEARANCE */
+}
 /* Initialize the Mac toolbox world */
 
 static void
@@ -80,6 +99,7 @@
 	InitDialogs((long)0);
 	InitMenus();
 	InitCursor();
+	init_appearance();
 #endif
 }
 
diff --git a/Mac/mwerks/mwerks_small_config.h b/Mac/mwerks/mwerks_small_config.h
index d3ba307..cee8d06 100644
--- a/Mac/mwerks/mwerks_small_config.h
+++ b/Mac/mwerks/mwerks_small_config.h
@@ -23,6 +23,7 @@
 #define USE_MALLOC_DEBUG			/* Enable range checking and other malloc debugging */
 /* #define USE_GDBM		/* Include the gdbm module */
 /* #define USE_ZLIB		/* Include the zlib module */
+#define USE_APPEARANCE	/* Enable Appearance support */
 #ifdef __powerc
 #define USE_CACHE_ALIGNED 8		/* Align on 32-byte boundaries for 604 */
 #endif