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).
This commit is contained in:
Jack Jansen 1999-12-07 23:08:10 +00:00
parent cbdff766d2
commit 8f5725af60
6 changed files with 45 additions and 13 deletions

View File

@ -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 */

View File

@ -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
#endif

View File

@ -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");
}

View File

@ -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

View File

@ -37,6 +37,10 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#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 @@ 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<<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 @@ init_mac_world()
InitDialogs((long)0);
InitMenus();
InitCursor();
init_appearance();
#endif
}

View File

@ -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