summaryrefslogtreecommitdiffstats
path: root/macosx/tkMacOSXDialog.c
diff options
context:
space:
mode:
authorhobbs <hobbs>2007-04-21 19:06:37 (GMT)
committerhobbs <hobbs>2007-04-21 19:06:37 (GMT)
commitfc87f3751a9393132d24550de1637785b4aac5e5 (patch)
tree67b15fa8aaeefba792a30cace3d1ecf46d134365 /macosx/tkMacOSXDialog.c
parent85f6905c50918a0ff282d5897620c1768a2e326d (diff)
downloadtk-fc87f3751a9393132d24550de1637785b4aac5e5.zip
tk-fc87f3751a9393132d24550de1637785b4aac5e5.tar.gz
tk-fc87f3751a9393132d24550de1637785b4aac5e5.tar.bz2
* macosx/tkMacOSXBitmap.c, macosx/tkMacOSXButton.c:
* macosx/tkMacOSXCarbonEvents.c, macosx/tkMacOSXClipboard.c: * macosx/tkMacOSXCursor.c, macosx/tkMacOSXDialog.c: * macosx/tkMacOSXDraw.c, macosx/tkMacOSXEvent.c: * macosx/tkMacOSXFont.c, macosx/tkMacOSXInit.c, macosx/tkMacOSXInt.h: * macosx/tkMacOSXKeyEvent.c, macosx/tkMacOSXMenu.c: * macosx/tkMacOSXMenubutton.c, macosx/tkMacOSXMouseEvent.c: * macosx/tkMacOSXScale.c, macosx/tkMacOSXWindowEvent.c: * macosx/tkMacOSXWm.c: Revert of commits from 2007-04-13 which broke the OS X build.
Diffstat (limited to 'macosx/tkMacOSXDialog.c')
-rw-r--r--macosx/tkMacOSXDialog.c1013
1 files changed, 532 insertions, 481 deletions
diff --git a/macosx/tkMacOSXDialog.c b/macosx/tkMacOSXDialog.c
index 4b41cb5..2db0ca5 100644
--- a/macosx/tkMacOSXDialog.c
+++ b/macosx/tkMacOSXDialog.c
@@ -6,10 +6,10 @@
* Copyright (c) 1996-1997 Sun Microsystems, Inc.
* Copyright 2001, Apple Computer, Inc.
*
- * See the file "license.terms" for information on usage and redistribution of
- * this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacOSXDialog.c,v 1.22 2007/04/13 14:51:18 dkf Exp $
+ * RCS: @(#) $Id: tkMacOSXDialog.c,v 1.23 2007/04/21 19:06:37 hobbs Exp $
*/
#include "tkMacOSXInt.h"
@@ -25,7 +25,6 @@
/*
* The following are ID's for resources that are defined in tkMacOSXResource.r
*/
-
#define OPEN_BOX 130
#define OPEN_POPUP 131
#define OPEN_MENU 132
@@ -44,45 +43,46 @@
* The following structure is used in the GetFileName() function. It stored
* information about the file dialog and the file filters.
*/
-
typedef struct _OpenFileData {
FileFilterList fl; /* List of file filters. */
SInt16 curType; /* The filetype currently being listed. */
short popupItem; /* Item number of the popup in the dialog. */
- int usePopup; /* True if we show the popup menu (this is an
- * open operation and the -filetypes option is
- * set). */
+ int usePopup; /* True if we show the popup menu (this is
+ * an open operation and the -filetypes
+ * option is set). */
} OpenFileData;
+
/*
- * The following structure is used in the tk_messageBox implementation.
+ * The following structure is used in the tk_messageBox
+ * implementation.
*/
-
typedef struct {
- WindowRef windowRef;
- int buttonIndex;
+ WindowRef windowRef;
+ int buttonIndex;
} CallbackUserData;
+
static OSStatus AlertHandler(EventHandlerCallRef callRef,
EventRef eventRef, void *userData);
-static Boolean MatchOneType(StringPtr fileNamePtr, OSType fileType,
+static Boolean MatchOneType(StringPtr fileNamePtr, OSType fileType,
OpenFileData *myofdPtr, FileFilter *filterPtr);
-static pascal Boolean OpenFileFilterProc(AEDesc* theItem, void* info,
+static pascal Boolean OpenFileFilterProc(AEDesc* theItem, void* info,
NavCallBackUserData callBackUD,
NavFilterModes filterMode);
-static pascal void OpenEventProc(NavEventCallbackMessage callBackSelector,
+static pascal void OpenEventProc(NavEventCallbackMessage callBackSelector,
NavCBRecPtr callBackParms,
NavCallBackUserData callBackUD);
-static void InitFileDialogs(void);
-static int NavServicesGetFile(Tcl_Interp *interp,
- OpenFileData *ofd, AEDesc *initialDescPtr,
+static void InitFileDialogs();
+static int NavServicesGetFile(Tcl_Interp *interp, OpenFileData *ofd,
+ AEDesc *initialDescPtr,
char *initialFile, AEDescList *selectDescPtr,
- CFStringRef title, CFStringRef message,
- int multiple, int isOpen);
-static int HandleInitialDirectory(Tcl_Interp *interp,
- char *initialFile, char *initialDir,
- FSRef *dirRef, AEDescList *selectDescPtr,
- AEDesc *dirDescPtr);
+ CFStringRef title, CFStringRef message, int multiple, int isOpen);
+static int HandleInitialDirectory (Tcl_Interp *interp,
+ char *initialFile, char *initialDir,
+ FSRef *dirRef,
+ AEDescList *selectDescPtr,
+ AEDesc *dirDescPtr);
/*
* Have we initialized the file dialog subsystem
@@ -97,14 +97,16 @@ static int fileDlgInited = 0;
static NavObjectFilterUPP openFileFilterUPP;
static NavEventUPP openFileEventUPP;
+
/*
*----------------------------------------------------------------------
*
* Tk_ChooseColorObjCmd --
*
- * This procedure implements the color dialog box for the Mac platform.
- * See the user documentation for details on what it does.
+ * This procedure implements the color dialog box for the Mac
+ * platform. See the user documentation for details on what it
+ * does.
*
* Results:
* A standard Tcl result.
@@ -117,10 +119,10 @@ static NavEventUPP openFileEventUPP;
int
Tk_ChooseColorObjCmd(
- ClientData clientData, /* Main window associated with interpreter. */
- Tcl_Interp *interp, /* Current interpreter. */
- int objc, /* Number of arguments. */
- Tcl_Obj *CONST objv[]) /* Argument objects. */
+ ClientData clientData, /* Main window associated with interpreter. */
+ Tcl_Interp *interp, /* Current interpreter. */
+ int objc, /* Number of arguments. */
+ Tcl_Obj *CONST objv[]) /* Argument objects. */
{
Tk_Window parent;
char *title;
@@ -129,17 +131,17 @@ Tk_ChooseColorObjCmd(
static int inited = 0;
static RGBColor in;
static CONST char *optionStrings[] = {
- "-initialcolor", "-parent", "-title", NULL
+ "-initialcolor", "-parent", "-title", NULL
};
enum options {
- COLOR_INITIAL, COLOR_PARENT, COLOR_TITLE
+ COLOR_INITIAL, COLOR_PARENT, COLOR_TITLE
};
if (inited == 0) {
- /*
- * 'in' stores the last color picked. The next time the color dialog
- * pops up, the last color will remain in the dialog.
- */
+ /*
+ * 'in' stores the last color picked. The next time the color dialog
+ * pops up, the last color will remain in the dialog.
+ */
in.red = 0xffff;
in.green = 0xffff;
@@ -152,44 +154,46 @@ Tk_ChooseColorObjCmd(
picked = 0;
for (i = 1; i < objc; i += 2) {
- int index;
- char *option, *value;
+ int index;
+ char *option, *value;
if (Tcl_GetIndexFromObj(interp, objv[i], optionStrings, "option",
TCL_EXACT, &index) != TCL_OK) {
return TCL_ERROR;
}
if (i + 1 == objc) {
- option = Tcl_GetString(objv[i]);
+ option = Tcl_GetStringFromObj(objv[i], NULL);
Tcl_AppendResult(interp, "value for \"", option, "\" missing",
- NULL);
+ (char *) NULL);
return TCL_ERROR;
}
value = Tcl_GetStringFromObj(objv[i + 1], NULL);
switch ((enum options) index) {
- case COLOR_INITIAL: {
- XColor *colorPtr;
+ case COLOR_INITIAL: {
+ XColor *colorPtr;
- colorPtr = Tk_GetColor(interp, parent, value);
- if (colorPtr == NULL) {
- return TCL_ERROR;
+ colorPtr = Tk_GetColor(interp, parent, value);
+ if (colorPtr == NULL) {
+ return TCL_ERROR;
+ }
+ in.red = colorPtr->red;
+ in.green = colorPtr->green;
+ in.blue = colorPtr->blue;
+ Tk_FreeColor(colorPtr);
+ break;
}
- in.red = colorPtr->red;
- in.green = colorPtr->green;
- in.blue = colorPtr->blue;
- Tk_FreeColor(colorPtr);
- break;
- }
- case COLOR_PARENT:
- parent = Tk_NameToWindow(interp, value, parent);
- if (parent == NULL) {
- return TCL_ERROR;
+ case COLOR_PARENT: {
+ parent = Tk_NameToWindow(interp, value, parent);
+ if (parent == NULL) {
+ return TCL_ERROR;
+ }
+ break;
+ }
+ case COLOR_TITLE: {
+ title = value;
+ break;
}
- break;
- case COLOR_TITLE:
- title = value;
- break;
}
}
@@ -209,13 +213,13 @@ Tk_ChooseColorObjCmd(
/* This doesn't seem to actually set the title! */
Tcl_UtfToExternal(NULL, NULL, title, -1, 0, NULL,
- StrBody(cpinfo.prompt), 255, &srcRead, &dstWrote, NULL);
+ StrBody(cpinfo.prompt), 255, &srcRead, &dstWrote, NULL);
StrLength(cpinfo.prompt) = (unsigned char) dstWrote;
if ((PickColor(&cpinfo) == noErr) && (cpinfo.newColorChosen != 0)) {
- in.red = cpinfo.theColor.color.rgb.red;
- in.green = cpinfo.theColor.color.rgb.green;
- in.blue = cpinfo.theColor.color.rgb.blue;
+ in.red = cpinfo.theColor.color.rgb.red;
+ in.green = cpinfo.theColor.color.rgb.green;
+ in.blue = cpinfo.theColor.color.rgb.blue;
picked = 1;
}
@@ -235,24 +239,24 @@ Tk_ChooseColorObjCmd(
*
* Tk_GetOpenFileObjCmd --
*
- * This procedure implements the "open file" dialog box for the Mac
- * platform. See the user documentation for details on what it does.
+ * This procedure implements the "open file" dialog box for the
+ * Mac platform. See the user documentation for details on what
+ * it does.
*
* Results:
- * A standard Tcl result.
+ * A standard Tcl result.
*
* Side effects:
- * See user documentation.
- *
+ * See user documentation.
*----------------------------------------------------------------------
*/
int
Tk_GetOpenFileObjCmd(
- ClientData clientData, /* Main window associated with interpreter. */
- Tcl_Interp *interp, /* Current interpreter. */
- int objc, /* Number of arguments. */
- Tcl_Obj *CONST objv[]) /* Argument objects. */
+ ClientData clientData, /* Main window associated with interpreter. */
+ Tcl_Interp *interp, /* Current interpreter. */
+ int objc, /* Number of arguments. */
+ Tcl_Obj *CONST objv[]) /* Argument objects. */
{
int i, result, multiple;
OpenFileData ofd;
@@ -264,12 +268,16 @@ Tk_GetOpenFileObjCmd(
AEDescList selectDesc = {typeNull, NULL};
char *initialFile = NULL, *initialDir = NULL;
static CONST char *openOptionStrings[] = {
- "-defaultextension", "-filetypes", "-initialdir", "-initialfile",
- "-message", "-multiple", "-parent", "-title", NULL
+ "-defaultextension", "-filetypes",
+ "-initialdir", "-initialfile",
+ "-message", "-multiple",
+ "-parent", "-title", NULL
};
enum openOptions {
- OPEN_DEFAULT, OPEN_FILETYPES, OPEN_INITDIR, OPEN_INITFILE,
- OPEN_MESSAGE, OPEN_MULTIPLE, OPEN_PARENT, OPEN_TITLE
+ OPEN_DEFAULT, OPEN_FILETYPES,
+ OPEN_INITDIR, OPEN_INITFILE,
+ OPEN_MESSAGE, OPEN_MULTIPLE,
+ OPEN_PARENT, OPEN_TITLE
};
if (!fileDlgInited) {
@@ -284,9 +292,9 @@ Tk_GetOpenFileObjCmd(
TkInitFileFilters(&ofd.fl);
- ofd.curType = 0;
- ofd.popupItem = OPEN_POPUP_ITEM;
- ofd.usePopup = 1;
+ ofd.curType = 0;
+ ofd.popupItem = OPEN_POPUP_ITEM;
+ ofd.usePopup = 1;
for (i = 1; i < objc; i += 2) {
char *choice;
@@ -307,57 +315,55 @@ Tk_GetOpenFileObjCmd(
}
switch (index) {
- case OPEN_DEFAULT:
- break;
- case OPEN_FILETYPES:
- if (TkGetFileFilters(interp, &ofd.fl, objv[i + 1], 0) != TCL_OK) {
- result = TCL_ERROR;
- goto end;
- }
- break;
- case OPEN_INITDIR:
- initialDir = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
- /* empty strings should be like no selection given */
- if (choiceLen == 0) {
- initialDir = NULL;
- }
- break;
- case OPEN_INITFILE:
- initialFile = Tcl_GetStringFromObj(objv[i + 1], NULL);
- /* empty strings should be like no selection given */
- if (choiceLen == 0) {
- initialFile = NULL;
- }
- break;
- case OPEN_MESSAGE:
- choice = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
- message = CFStringCreateWithBytes(NULL, (unsigned char*) choice,
- choiceLen, kCFStringEncodingUTF8, false);
- break;
- case OPEN_MULTIPLE:
- if (Tcl_GetBooleanFromObj(interp, objv[i+1], &multiple)!=TCL_OK) {
- result = TCL_ERROR;
- goto end;
- }
- break;
- case OPEN_PARENT:
- choice = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
- parent = Tk_NameToWindow(interp, choice, parent);
- if (parent == NULL) {
- result = TCL_ERROR;
- goto end;
- }
- break;
- case OPEN_TITLE:
- choice = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
- title = CFStringCreateWithBytes(NULL, (unsigned char*) choice,
- choiceLen, kCFStringEncodingUTF8, false);
- break;
+ case OPEN_DEFAULT:
+ break;
+ case OPEN_FILETYPES:
+ if (TkGetFileFilters(interp, &ofd.fl, objv[i + 1], 0)
+ != TCL_OK) {
+ result = TCL_ERROR;
+ goto end;
+ }
+ break;
+ case OPEN_INITDIR:
+ initialDir = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
+ /* empty strings should be like no selection given */
+ if (choiceLen == 0) { initialDir = NULL; }
+ break;
+ case OPEN_INITFILE:
+ initialFile = Tcl_GetStringFromObj(objv[i + 1], NULL);
+ /* empty strings should be like no selection given */
+ if (choiceLen == 0) { initialFile = NULL; }
+ break;
+ case OPEN_MESSAGE:
+ choice = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
+ message = CFStringCreateWithBytes(NULL, (unsigned char*) choice, choiceLen,
+ kCFStringEncodingUTF8, false);
+ break;
+ case OPEN_MULTIPLE:
+ if (Tcl_GetBooleanFromObj(interp, objv[i + 1], &multiple)
+ != TCL_OK) {
+ result = TCL_ERROR;
+ goto end;
+ }
+ break;
+ case OPEN_PARENT:
+ choice = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
+ parent = Tk_NameToWindow(interp, choice, parent);
+ if (parent == NULL) {
+ result = TCL_ERROR;
+ goto end;
+ }
+ break;
+ case OPEN_TITLE:
+ choice = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
+ title = CFStringCreateWithBytes(NULL, (unsigned char*) choice, choiceLen,
+ kCFStringEncodingUTF8, false);
+ break;
}
}
if (HandleInitialDirectory(interp, initialFile, initialDir, &dirRef,
- &selectDesc, &initialDesc) != TCL_OK) {
+ &selectDesc, &initialDesc) != TCL_OK) {
result = TCL_ERROR;
goto end;
}
@@ -368,7 +374,7 @@ Tk_GetOpenFileObjCmd(
result = NavServicesGetFile(interp, &ofd, initialPtr,
NULL, &selectDesc, title, message, multiple, OPEN_FILE);
- end:
+ end:
TkFreeFileFilters(&ofd.fl);
AEDisposeDesc(&initialDesc);
AEDisposeDesc(&selectDesc);
@@ -414,12 +420,12 @@ Tk_GetSaveFileObjCmd(
CFStringRef title, message;
OpenFileData ofd;
static CONST char *saveOptionStrings[] = {
- "-defaultextension", "-filetypes", "-initialdir", "-initialfile",
- "-message", "-parent", "-title", NULL
+ "-defaultextension", "-filetypes", "-initialdir", "-initialfile",
+ "-message", "-parent", "-title", NULL
};
enum saveOptions {
- SAVE_DEFAULT, SAVE_FILETYPES, SAVE_INITDIR, SAVE_INITFILE,
- SAVE_MESSAGE, SAVE_PARENT, SAVE_TITLE
+ SAVE_DEFAULT, SAVE_FILETYPES, SAVE_INITDIR, SAVE_INITFILE,
+ SAVE_MESSAGE, SAVE_PARENT, SAVE_TITLE
};
if (!fileDlgInited) {
@@ -432,59 +438,59 @@ Tk_GetSaveFileObjCmd(
message = NULL;
for (i = 1; i < objc; i += 2) {
- char *choice, *string;
+ char *choice;
int index, choiceLen;
+ char *string;
if (Tcl_GetIndexFromObj(interp, objv[i], saveOptionStrings, "option",
TCL_EXACT, &index) != TCL_OK) {
return TCL_ERROR;
}
if (i + 1 == objc) {
- string = Tcl_GetString(objv[i]);
+ string = Tcl_GetStringFromObj(objv[i], NULL);
Tcl_AppendResult(interp, "value for \"", string, "\" missing",
- NULL);
+ (char *) NULL);
return TCL_ERROR;
}
switch (index) {
- case SAVE_DEFAULT:
- break;
- case SAVE_FILETYPES:
- /* Currently unimplemented - what would we do here anyway? */
- break;
- case SAVE_INITDIR:
- choice = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
- /* empty strings should be like no selection given */
- if (choiceLen && HandleInitialDirectory(interp, NULL, choice,
- &dirRef, NULL, &initialDesc) != TCL_OK) {
- result = TCL_ERROR;
- goto end;
- }
- break;
- case SAVE_INITFILE:
- initialFile = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
- /* empty strings should be like no selection given */
- if (choiceLen == 0) {
- initialFile = NULL;
- }
- break;
- case SAVE_MESSAGE:
- choice = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
- message = CFStringCreateWithBytes(NULL, (unsigned char*) choice,
- choiceLen, kCFStringEncodingUTF8, false);
- break;
- case SAVE_PARENT:
- choice = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
- parent = Tk_NameToWindow(interp, choice, parent);
- if (parent == NULL) {
- result = TCL_ERROR;
- goto end;
- }
- break;
- case SAVE_TITLE:
- choice = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
- title = CFStringCreateWithBytes(NULL, (unsigned char*) choice,
- choiceLen, kCFStringEncodingUTF8, false);
- break;
+ case SAVE_DEFAULT:
+ break;
+ case SAVE_FILETYPES:
+ /* Currently unimplemented - what would we do here anyway? */
+ break;
+ case SAVE_INITDIR:
+ choice = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
+ /* empty strings should be like no selection given */
+ if (choiceLen &&
+ HandleInitialDirectory(interp, NULL, choice, &dirRef,
+ NULL, &initialDesc) != TCL_OK) {
+ result = TCL_ERROR;
+ goto end;
+ }
+ break;
+ case SAVE_INITFILE:
+ initialFile = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
+ /* empty strings should be like no selection given */
+ if (choiceLen == 0) { initialFile = NULL; }
+ break;
+ case SAVE_MESSAGE:
+ choice = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
+ message = CFStringCreateWithBytes(NULL, (unsigned char*) choice, choiceLen,
+ kCFStringEncodingUTF8, false);
+ break;
+ case SAVE_PARENT:
+ choice = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
+ parent = Tk_NameToWindow(interp, choice, parent);
+ if (parent == NULL) {
+ result = TCL_ERROR;
+ goto end;
+ }
+ break;
+ case SAVE_TITLE:
+ choice = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
+ title = CFStringCreateWithBytes(NULL, (unsigned char*) choice, choiceLen,
+ kCFStringEncodingUTF8, false);
+ break;
}
}
@@ -495,9 +501,10 @@ Tk_GetSaveFileObjCmd(
initialPtr = &initialDesc;
}
result = NavServicesGetFile(interp, &ofd, initialPtr, initialFile, NULL,
- title, message, false, SAVE_FILE);
+ title, message, false, SAVE_FILE);
+
+ end:
- end:
AEDisposeDesc(&initialDesc);
if (title != NULL) {
CFRelease(title);
@@ -514,26 +521,26 @@ Tk_GetSaveFileObjCmd(
*
* Tk_ChooseDirectoryObjCmd --
*
- * This procedure implements the "tk_chooseDirectory" dialog box for the
- * Windows platform. See the user documentation for details on what it
- * does.
+ * This procedure implements the "tk_chooseDirectory" dialog box
+ * for the Windows platform. See the user documentation for details
+ * on what it does.
*
* Results:
- * See user documentation.
+ * See user documentation.
*
* Side effects:
- * A modal dialog window is created. Tcl_SetServiceMode() is called to
- * allow background events to be processed
+ * A modal dialog window is created. Tcl_SetServiceMode() is
+ * called to allow background events to be processed
*
*----------------------------------------------------------------------
*/
int
-Tk_ChooseDirectoryObjCmd(
- ClientData clientData, /* Main window associated with interpreter. */
- Tcl_Interp *interp, /* Current interpreter. */
- int objc, /* Number of arguments. */
- Tcl_Obj *CONST objv[]) /* Argument objects. */
+Tk_ChooseDirectoryObjCmd(clientData, interp, objc, objv)
+ ClientData clientData; /* Main window associated with interpreter. */
+ Tcl_Interp *interp; /* Current interpreter. */
+ int objc; /* Number of arguments. */
+ Tcl_Obj *CONST objv[]; /* Argument objects. */
{
int i, result;
Tk_Window parent;
@@ -589,8 +596,8 @@ Tk_ChooseDirectoryObjCmd(
break;
case CHOOSE_MESSAGE:
choice = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
- message = CFStringCreateWithBytes(NULL, (unsigned char*)choice,
- choiceLen, kCFStringEncodingUTF8, false);
+ message = CFStringCreateWithBytes(NULL, (unsigned char*) choice, choiceLen,
+ kCFStringEncodingUTF8, false);
break;
case CHOOSE_PARENT:
choice = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
@@ -602,8 +609,8 @@ Tk_ChooseDirectoryObjCmd(
break;
case CHOOSE_TITLE:
choice = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
- title = CFStringCreateWithBytes(NULL, (unsigned char*) choice,
- choiceLen, kCFStringEncodingUTF8, false);
+ title = CFStringCreateWithBytes(NULL, (unsigned char*) choice, choiceLen,
+ kCFStringEncodingUTF8, false);
break;
}
}
@@ -628,7 +635,7 @@ Tk_ChooseDirectoryObjCmd(
return result;
}
-
+
int
HandleInitialDirectory (
Tcl_Interp *interp,
@@ -695,21 +702,21 @@ HandleInitialDirectory (
AEDisposeDesc(&fileDesc);
}
- end:
+end:
if (dirName != NULL) {
Tcl_DStringFree(&ds);
}
return result;
}
-
+
static void
-InitFileDialogs(void)
+InitFileDialogs()
{
fileDlgInited = 1;
openFileFilterUPP = NewNavObjectFilterUPP(OpenFileFilterProc);
openFileEventUPP = NewNavEventUPP(OpenEventProc);
}
-
+
static int
NavServicesGetFile(
Tcl_Interp *interp,
@@ -731,13 +738,13 @@ NavServicesGetFile(
int result;
err = NavGetDefaultDialogCreationOptions(&diagOptions);
- if (err != noErr) {
+ if (err!=noErr) {
return TCL_ERROR;
}
diagOptions.location.h = -1;
diagOptions.location.v = -1;
diagOptions.optionFlags = kNavDontAutoTranslate
- + kNavDontAddTranslateItems;
+ + kNavDontAddTranslateItems;
if (multiple) {
diagOptions.optionFlags += kNavAllowMultipleFiles;
}
@@ -757,8 +764,8 @@ NavServicesGetFile(
int index = 0;
ofdPtr->curType = 0;
- menuItemNames = (CFStringRef *)
- ckalloc(ofdPtr->fl.numFilters * sizeof(CFStringRef));
+ menuItemNames = (CFStringRef *)ckalloc(ofdPtr->fl.numFilters
+ * sizeof(CFStringRef));
for (filterPtr = ofdPtr->fl.filters; filterPtr != NULL;
filterPtr = filterPtr->next, index++) {
@@ -773,14 +780,13 @@ NavServicesGetFile(
}
/*
- * This is required to allow App packages to be selectable in the file
- * dialogs...
+ * This is required to allow App packages to be selectable in the
+ * file dialogs...
*/
diagOptions.optionFlags += kNavSupportPackages;
- diagOptions.clientName = CFStringCreateWithCString(NULL, "Wish",
- kCFStringEncodingUTF8);
+ diagOptions.clientName = CFStringCreateWithCString(NULL, "Wish", kCFStringEncodingUTF8);
diagOptions.message = message;
diagOptions.windowTitle = title;
if (initialFile) {
@@ -795,25 +801,42 @@ NavServicesGetFile(
diagOptions.preferenceKey = 0;
/*
- * Now process the selection list. We have to use the popupExtension to
- * fill the menu.
+ * Now process the selection list. We have to use the popupExtension
+ * to fill the menu.
*/
if (isOpen == OPEN_FILE) {
- err = NavCreateGetFileDialog(&diagOptions, NULL, openFileEventUPP,
- NULL, openFileFilterUPP, ofdPtr, &dialogRef);
- LOG_ON_ERROR(NavCreateGetFileDialog);
+ err = NavCreateGetFileDialog(&diagOptions,
+ NULL,
+ openFileEventUPP,
+ NULL,
+ openFileFilterUPP,
+ ofdPtr,
+ &dialogRef);
+ if (err != noErr) {
+#ifdef TK_MAC_DEBUG
+ fprintf(stderr,"NavCreateGetFileDialog failed, %d\n", err);
+#endif
+ dialogRef = NULL;
+ }
} else if (isOpen == SAVE_FILE) {
err = NavCreatePutFileDialog(&diagOptions, 'TEXT', 'WIsH',
openFileEventUPP, NULL, &dialogRef);
- LOG_ON_ERROR(NavCreatePutFileDialog);
+ if (err!=noErr){
+#ifdef TK_MAC_DEBUG
+ fprintf(stderr,"NavCreatePutFileDialog failed, %d\n", err);
+#endif
+ dialogRef = NULL;
+ }
} else if (isOpen == CHOOSE_FOLDER) {
err = NavCreateChooseFolderDialog(&diagOptions, openFileEventUPP,
openFileFilterUPP, NULL, &dialogRef);
- LOG_ON_ERROR(NavCreateChooseFolderDialog);
- }
- if (err != noErr) {
- dialogRef = NULL;
+ if (err!=noErr){
+#ifdef TK_MAC_DEBUG
+ fprintf(stderr,"NavCreateChooseFolderDialog failed, %d\n", err);
+#endif
+ dialogRef = NULL;
+ }
}
if (dialogRef) {
@@ -825,11 +848,16 @@ NavServicesGetFile(
NavCustomControl(dialogRef, kNavCtlSetSelection, selectDescPtr);
}
- err = NavDialogRun(dialogRef);
- LOG_ON_ERROR(NavDialogRun);
- if (err == noErr) {
- err = NavDialogGetReply(dialogRef, &theReply);
- LOG_ON_ERROR(NavDialogGetReply);
+ if ((err = NavDialogRun(dialogRef)) != noErr){
+#ifdef TK_MAC_DEBUG
+ fprintf(stderr,"NavDialogRun failed, %d\n", err);
+#endif
+ } else {
+ if ((err = NavDialogGetReply(dialogRef, &theReply)) != noErr) {
+#ifdef TK_MAC_DEBUG
+ fprintf(stderr,"NavGetReply failed, %d\n", err);
+#endif
+ }
}
}
@@ -850,57 +878,68 @@ NavServicesGetFile(
if (theReply.validRecord && err == noErr) {
AEDesc resultDesc;
long count;
- FSRef fsRef;
- char pathPtr[1024];
- int pathValid = 0;
-
+ FSRef fsRef;
+ char pathPtr[1024];
+ int pathValid = 0;
err = AECountItems(&theReply.selection, &count);
if (err == noErr) {
long i;
-
for (i = 1; i <= count; i++) {
- err = AEGetNthDesc(&theReply.selection, i, typeFSRef, NULL,
- &resultDesc);
+ err = AEGetNthDesc(&theReply.selection,
+ i, typeFSRef, NULL, &resultDesc);
pathValid = 0;
- if (err != noErr) {
- continue;
- }
- err = AEGetDescData(&resultDesc, &fsRef, sizeof(fsRef));
- LOG_ON_ERROR(AEGetDescData);
if (err == noErr) {
- err = FSRefMakePath(&fsRef, (unsigned char*) pathPtr,
- 1024);
- LOG_ON_ERROR(FSRefMakePath);
- if (err == noErr) {
- if (isOpen == SAVE_FILE) {
- CFStringRef saveNameRef;
- char saveName[1024];
-
- saveNameRef = NavDialogGetSaveFileName(dialogRef);
- if (!saveNameRef) {
- LOG_MSG("NavDialogGetSaveFileName failed");
- } else if (!CFStringGetCString(saveNameRef,
- saveName, 1024, kCFStringEncodingUTF8)) {
- LOG_MSG("CFStringGetCString failed");
- } else if (strlen(pathPtr)+strlen(saveName)<1023){
- strcat(pathPtr, "/");
- strcat(pathPtr, saveName);
- goto pathValid;
- } else {
- LOG_MSG("Path name too long");
- }
- }
+ if ((err = AEGetDescData(&resultDesc, &fsRef, sizeof(fsRef)))
+ != noErr) {
+#ifdef TK_MAC_DEBUG
+ fprintf(stderr,"AEGetDescData failed %d\n", err);
+#endif
} else {
- pathValid:
- if (multiple) {
- Tcl_ListObjAppendElement(interp, theResult,
- Tcl_NewStringObj(pathPtr, -1));
+ if ((err = FSRefMakePath(&fsRef, (unsigned char*) pathPtr, 1024))) {
+#ifdef TK_MAC_DEBUG
+ fprintf(stderr,"FSRefMakePath failed, %d\n", err);
+#endif
} else {
- Tcl_SetStringObj(theResult, pathPtr, -1);
+ if (isOpen == SAVE_FILE) {
+ CFStringRef saveNameRef;
+ char saveName [1024];
+ if ((saveNameRef = NavDialogGetSaveFileName(dialogRef))) {
+ if (CFStringGetCString(saveNameRef, saveName,
+ 1024, kCFStringEncodingUTF8)) {
+ if (strlen(pathPtr) + strlen(saveName) < 1023) {
+ strcat(pathPtr, "/");
+ strcat(pathPtr, saveName);
+ pathValid = 1;
+ } else {
+#ifdef TK_MAC_DEBUG
+ fprintf(stderr, "Path name too long\n");
+#endif
+ }
+ } else {
+#ifdef TK_MAC_DEBUG
+ fprintf(stderr, "CFStringGetCString failed\n");
+#endif
+ }
+ } else {
+#ifdef TK_MAC_DEBUG
+ fprintf(stderr, "NavDialogGetSaveFileName failed\n");
+#endif
+ }
+ } else {
+ pathValid = 1;
+ }
+ if (pathValid) {
+ if (multiple) {
+ Tcl_ListObjAppendElement(interp, theResult,
+ Tcl_NewStringObj(pathPtr, -1));
+ } else {
+ Tcl_SetStringObj(theResult, pathPtr, -1);
+ }
+ }
}
}
+ AEDisposeDesc(&resultDesc);
}
- AEDisposeDesc(&resultDesc);
}
}
err = NavDisposeReply(&theReply);
@@ -929,14 +968,12 @@ NavServicesGetFile(
if (diagOptions.clientName) {
CFRelease(diagOptions.clientName);
}
-
/*
* dispose of the CFArray diagOptions.popupExtension
*/
if (menuItemNames) {
int i;
-
for (i = 0;i < ofdPtr->fl.numFilters; i++) {
CFRelease(menuItemNames[i]);
}
@@ -948,11 +985,10 @@ NavServicesGetFile(
return result;
}
-
+
static pascal Boolean
OpenFileFilterProc(
- AEDesc *theItem,
- void *info,
+ AEDesc* theItem, void* info,
NavCallBackUserData callBackUD,
NavFilterModes filterMode)
{
@@ -960,86 +996,94 @@ OpenFileFilterProc(
if (!ofdPtr || !ofdPtr->usePopup) {
return true;
- }
-
- if (ofdPtr->fl.numFilters == 0) {
- return true;
- }
-
- if ((theItem->descriptorType == typeFSS)
- || (theItem->descriptorType = typeFSRef)) {
- NavFileOrFolderInfo* theInfo = (NavFileOrFolderInfo *) info;
- char fileName[256];
- int result, i, len;
- OSType fileType;
- StringPtr fileNamePtr;
- Tcl_DString fileNameDString;
- FileFilter *filterPtr;
-
- if (!theInfo->isFolder) {
- fileType = theInfo->fileAndFolder.fileInfo.finderInfo.fdType;
- Tcl_DStringInit(&fileNameDString);
-
- if (theItem->descriptorType == typeFSS) {
- fileNamePtr = (((FSSpec *) *theItem->dataHandle)->name);
- len = fileNamePtr[0];
- strncpy(fileName, (char*) fileNamePtr + 1, len);
- fileName[len] = '\0';
- fileNamePtr = (unsigned char*) fileName;
- } else if ((theItem->descriptorType = typeFSRef)) {
- OSStatus err;
- FSRef *theRef = (FSRef *) *theItem->dataHandle;
- HFSUniStr255 uniFileName;
-
- err = FSGetCatalogInfo(theRef, kFSCatInfoNone, NULL,
- &uniFileName, NULL, NULL);
+ } else {
+ if (ofdPtr->fl.numFilters == 0) {
+ return true;
+ } else {
+ if ((theItem->descriptorType == typeFSS)
+ || (theItem->descriptorType = typeFSRef)) {
+ NavFileOrFolderInfo* theInfo = (NavFileOrFolderInfo *) info;
+ char fileName[256];
+ int result;
+
+ if (!theInfo->isFolder) {
+ OSType fileType;
+ StringPtr fileNamePtr;
+ Tcl_DString fileNameDString;
+ int i;
+ FileFilter *filterPtr;
+
+ fileType =
+ theInfo->fileAndFolder.fileInfo.finderInfo.fdType;
+ Tcl_DStringInit (&fileNameDString);
+
+ if (theItem->descriptorType == typeFSS) {
+ int len;
+ fileNamePtr = (((FSSpec *) *theItem->dataHandle)->name);
+ len = fileNamePtr[0];
+ strncpy(fileName, (char*) fileNamePtr + 1, len);
+ fileName[len] = '\0';
+ fileNamePtr = (unsigned char*) fileName;
+
+ } else if ((theItem->descriptorType = typeFSRef)) {
+ OSStatus err;
+ FSRef *theRef = (FSRef *) *theItem->dataHandle;
+ HFSUniStr255 uniFileName;
+ err = FSGetCatalogInfo (theRef, kFSCatInfoNone, NULL,
+ &uniFileName, NULL, NULL);
+
+ if (err == noErr) {
+ Tcl_UniCharToUtfDString (
+ (Tcl_UniChar *) uniFileName.unicode,
+ uniFileName.length,
+ &fileNameDString);
+ fileNamePtr = (unsigned char*) Tcl_DStringValue(&fileNameDString);
+ } else {
+ fileNamePtr = NULL;
+ }
+ }
+ if (ofdPtr->usePopup) {
+ i = ofdPtr->curType;
+ for (filterPtr = ofdPtr->fl.filters;
+ filterPtr && i > 0; i--) {
+ filterPtr = filterPtr->next;
+ }
+ if (filterPtr) {
+ result = MatchOneType(fileNamePtr, fileType,
+ ofdPtr, filterPtr);
+ } else {
+ result = false;
+ }
+ } else {
+ /*
+ * We are not using the popup menu. In this case, the
+ * file is considered matched if it matches any of
+ * the file filters.
+ */
+
+ result = UNMATCHED;
+ for (filterPtr = ofdPtr->fl.filters; filterPtr;
+ filterPtr = filterPtr->next) {
+ if (MatchOneType(fileNamePtr, fileType,
+ ofdPtr, filterPtr) == MATCHED) {
+ result = MATCHED;
+ break;
+ }
+ }
+ }
- if (err == noErr) {
- Tcl_UniCharToUtfDString(
- (Tcl_UniChar *) uniFileName.unicode,
- uniFileName.length, &fileNameDString);
- fileNamePtr = (unsigned char *)
- Tcl_DStringValue(&fileNameDString);
+ Tcl_DStringFree (&fileNameDString);
+ return (result == MATCHED);
} else {
- fileNamePtr = NULL;
+ return true;
}
}
- if (ofdPtr->usePopup) {
- i = ofdPtr->curType;
- for (filterPtr=ofdPtr->fl.filters ; filterPtr && i>0 ; i--) {
- filterPtr = filterPtr->next;
- }
- if (filterPtr) {
- result = MatchOneType(fileNamePtr, fileType, ofdPtr,
- filterPtr);
- } else {
- result = UNMATCHED;
- }
- } else {
- /*
- * We are not using the popup menu. In this case, the file is
- * considered matched if it matches any of the file filters.
- */
-
- result = UNMATCHED;
- for (filterPtr = ofdPtr->fl.filters; filterPtr;
- filterPtr = filterPtr->next) {
- if (MatchOneType(fileNamePtr, fileType,
- ofdPtr, filterPtr) == MATCHED) {
- result = MATCHED;
- break;
- }
- }
- }
-
- Tcl_DStringFree(&fileNameDString);
- return (result == MATCHED);
}
- }
- return true;
+ return true;
+ }
}
-
+
pascal void
OpenEventProc(
NavEventCallbackMessage callBackSelector,
@@ -1053,12 +1097,12 @@ OpenEventProc(
|kNavCBCancel|kNavCBAdjustPreview);
if (callBackSelector == kNavCBPopupMenuSelect) {
- chosenItem = (NavMenuItemSpec *)
- callBackParams->eventData.eventDataParms.param;
+ chosenItem = (NavMenuItemSpec *) callBackParams->eventData.eventDataParms.param;
ofd->curType = chosenItem->menuType;
} else if (callBackSelector == kNavCBAdjustRect
|| (callBackSelector & otherEvent) != 0) {
- while (Tcl_DoOneEvent(TCL_IDLE_EVENTS | TCL_DONT_WAIT
+ while (Tcl_DoOneEvent(TCL_IDLE_EVENTS
+ | TCL_DONT_WAIT
| TCL_WINDOW_EVENTS)) {
/* Empty Body */
}
@@ -1070,52 +1114,51 @@ OpenEventProc(
*
* MatchOneType --
*
- * Match a file with one file type in the list of file types.
+ * Match a file with one file type in the list of file types.
*
* Results:
- * Returns MATCHED if the file matches with the file type; returns
- * UNMATCHED otherwise.
+ * Returns MATCHED if the file matches with the file type; returns
+ * UNMATCHED otherwise.
*
* Side effects:
- * None
+ * None
*
*----------------------------------------------------------------------
*/
static Boolean
MatchOneType(
- StringPtr fileNamePtr, /* Name of the file */
- OSType fileType, /* Type of the file, 0 means there was no
- * specified type. */
- OpenFileData *ofdPtr, /* Information about this file dialog */
- FileFilter *filterPtr) /* Match the file described by pb against this
- * filter */
+ StringPtr fileNamePtr, /* Name of the file */
+ OSType fileType, /* Type of the file, 0 means there was no specified type. */
+ OpenFileData * ofdPtr, /* Information about this file dialog */
+ FileFilter * filterPtr) /* Match the file described by pb against
+ * this filter */
{
- FileFilterClause *clausePtr;
+ FileFilterClause * clausePtr;
/*
- * A file matches with a file type if it matches with at least one clause
- * of the type.
+ * A file matches with a file type if it matches with at least one
+ * clause of the type.
*
- * If the clause has both glob patterns and ostypes, the file must match
- * with at least one pattern AND at least one ostype.
+ * If the clause has both glob patterns and ostypes, the file must
+ * match with at least one pattern AND at least one ostype.
*
* If the clause has glob patterns only, the file must match with at least
* one pattern.
*
- * If the clause has mac types only, the file must match with at least one
- * mac type.
+ * If the clause has mac types only, the file must match with at least
+ * one mac type.
*
- * If the clause has neither glob patterns nor mac types, it's considered
- * an error.
+ * If the clause has neither glob patterns nor mac types, it's
+ * considered an error.
*/
for (clausePtr = filterPtr->clauses; clausePtr;
clausePtr = clausePtr->next) {
- int macMatched = 0;
+ int macMatched = 0;
int globMatched = 0;
- GlobPattern *globPtr;
- MacFileType *mfPtr;
+ GlobPattern * globPtr;
+ MacFileType * mfPtr;
if (clausePtr->patterns == NULL) {
globMatched = 1;
@@ -1153,10 +1196,10 @@ MatchOneType(
goto glob_unmatched;
}
- glob_unmatched:
+ glob_unmatched:
continue;
- glob_matched:
+ glob_matched:
globMatched = 1;
break;
}
@@ -1169,12 +1212,13 @@ MatchOneType(
}
/*
- * On Mac OS X, it is not uncommon for files to have NO file type.
- * But folks with Tcl code on Classic MacOS pretty much assume that a
- * generic file will have type TEXT. So if we were strict about
- * matching types when the source file had NO type set, they would
- * have to add another rule always with no fileType. To avoid that, we
- * pass the macMatch side of the test if no fileType is set.
+ * On Mac OS X, it is not uncommon for files to have NO
+ * file type. But folks with Tcl code on Classic MacOS pretty
+ * much assume that a generic file will have type TEXT. So
+ * if we were strict about matching types when the source file
+ * had NO type set, they would have to add another rule always
+ * with no fileType. To avoid that, we pass the macMatch side
+ * of the test if no fileType is set.
*/
if (globMatched && (macMatched || (fileType == 0))) {
@@ -1184,26 +1228,26 @@ MatchOneType(
return UNMATCHED;
}
-
+
/*
*----------------------------------------------------------------------
*
* TkAboutDlg --
*
- * Displays the default Tk About box. This code uses Macintosh resources
- * to define the content of the About Box.
+ * Displays the default Tk About box. This code uses Macintosh
+ * resources to define the content of the About Box.
*
* Results:
- * None.
+ * None.
*
* Side effects:
- * None.
+ * None.
*
*----------------------------------------------------------------------
*/
void
-TkAboutDlg(void)
+TkAboutDlg()
{
DialogPtr aboutDlog;
WindowRef windowRef;
@@ -1228,83 +1272,95 @@ TkAboutDlg(void)
return;
}
-
+
/*
*----------------------------------------------------------------------
*
* Tk_MessageBoxObjCmd --
*
- * Implements the tk_messageBox in native Mac OS X style.
+ * Implements the tk_messageBox in native Mac OS X style.
*
* Results:
- * A standard Tcl result.
+ * A standard Tcl result.
*
* Side effects:
- * none
+ * none
*
*----------------------------------------------------------------------
*/
int
Tk_MessageBoxObjCmd(
- ClientData clientData, /* Main window associated with interpreter. */
- Tcl_Interp *interp, /* Current interpreter. */
- int objc, /* Number of arguments. */
- Tcl_Obj *CONST objv[]) /* Argument objects. */
+ ClientData clientData, /* Main window associated with interpreter. */
+ Tcl_Interp *interp, /* Current interpreter. */
+ int objc, /* Number of arguments. */
+ Tcl_Obj *CONST objv[]) /* Argument objects. */
{
- Tk_Window tkwin = (Tk_Window) clientData;
+ Tk_Window tkwin = (Tk_Window) clientData;
AlertStdCFStringAlertParamRec paramCFStringRec;
- AlertType alertType;
- DialogRef dialogRef;
- CFStringRef messageTextCF = NULL;
- CFStringRef finemessageTextCF = NULL;
- OSErr osError;
- SInt16 itemHit;
- Boolean haveDefaultOption = false, haveParentOption = false;
- char *str;
- int defaultButtonIndex;
- int defaultNativeButtonIndex; /* 1, 2, 3: right to left. */
- int index, typeIndex, i;
- int indexDefaultOption = 0;
- int result = TCL_OK;
+ AlertType alertType;
+ DialogRef dialogRef;
+ CFStringRef messageTextCF = NULL;
+ CFStringRef finemessageTextCF = NULL;
+ OSErr osError;
+ SInt16 itemHit;
+ Boolean haveDefaultOption = false;
+ Boolean haveParentOption = false;
+ char *str;
+ int index;
+ int defaultButtonIndex;
+ int defaultNativeButtonIndex; /* 1, 2, 3: right to left. */
+ int typeIndex;
+ int i;
+ int indexDefaultOption = 0;
+ int result = TCL_OK;
static CONST char *movableAlertStrings[] = {
- "-default", "-detail", "-icon", "-message", "-parent", "-title",
- "-type", NULL
+ "-default", "-detail", "-icon",
+ "-message", "-parent",
+ "-title", "-type",
+ (char *)NULL
};
static CONST char *movableTypeStrings[] = {
- "abortretryignore", "ok", "okcancel", "retrycancel", "yesno",
- "yesnocancel", NULL
+ "abortretryignore", "ok",
+ "okcancel", "retrycancel",
+ "yesno", "yesnocancel",
+ (char *)NULL
};
static CONST char *movableButtonStrings[] = {
- "abort", "retry", "ignore", "ok", "cancel", "yes", "no", NULL
+ "abort", "retry", "ignore",
+ "ok", "cancel", "yes", "no",
+ (char *)NULL
};
static CONST char *movableIconStrings[] = {
- "error", "info", "question", "warning", NULL
+ "error", "info", "question", "warning",
+ (char *)NULL
};
enum movableAlertOptions {
- ALERT_DEFAULT, ALERT_DETAIL, ALERT_ICON, ALERT_MESSAGE, ALERT_PARENT,
+ ALERT_DEFAULT, ALERT_DETAIL, ALERT_ICON,
+ ALERT_MESSAGE, ALERT_PARENT,
ALERT_TITLE, ALERT_TYPE
};
enum movableTypeOptions {
- TYPE_ABORTRETRYIGNORE, TYPE_OK, TYPE_OKCANCEL, TYPE_RETRYCANCEL,
+ TYPE_ABORTRETRYIGNORE, TYPE_OK,
+ TYPE_OKCANCEL, TYPE_RETRYCANCEL,
TYPE_YESNO, TYPE_YESNOCANCEL
};
enum movableButtonOptions {
- TEXT_ABORT, TEXT_RETRY, TEXT_IGNORE, TEXT_OK, TEXT_CANCEL, TEXT_YES,
- TEXT_NO
+ TEXT_ABORT, TEXT_RETRY, TEXT_IGNORE,
+ TEXT_OK, TEXT_CANCEL, TEXT_YES, TEXT_NO
};
enum movableIconOptions {
ICON_ERROR, ICON_INFO, ICON_QUESTION, ICON_WARNING
};
/*
- * Need to map from 'movableButtonStrings' and its corresponding integer
- * index, to the native button index, which is 1, 2, 3, from right to
- * left. This is necessary to do for each separate '-type' of button sets.
+ * Need to map from 'movableButtonStrings' and its corresponding integer index,
+ * to the native button index, which is 1, 2, 3, from right to left.
+ * This is necessary to do for each separate '-type' of button sets.
*/
- short buttonIndexAndTypeToNativeButtonIndex[][7] = {
+ short buttonIndexAndTypeToNativeButtonIndex[][7] = {
/* abort retry ignore ok cancel yes no */
{1, 2, 3, 0, 0, 0, 0}, /* abortretryignore */
{0, 0, 0, 1, 0, 0, 0}, /* ok */
@@ -1319,7 +1375,7 @@ Tk_MessageBoxObjCmd(
* descriptive button text string index.
*/
- short nativeButtonIndexAndTypeToButtonIndex[][4] = {
+ short nativeButtonIndexAndTypeToButtonIndex[][4] = {
{-1, 0, 1, 2}, /* abortretryignore */
{-1, 3, 0, 0}, /* ok */
{-1, 3, 4, 0}, /* okcancel */
@@ -1331,77 +1387,76 @@ Tk_MessageBoxObjCmd(
alertType = kAlertPlainAlert;
typeIndex = TYPE_OK;
- GetStandardAlertDefaultParams(&paramCFStringRec,
- kStdCFStringAlertVersionOne);
+ GetStandardAlertDefaultParams(&paramCFStringRec, kStdCFStringAlertVersionOne);
paramCFStringRec.movable = true;
paramCFStringRec.helpButton = false;
paramCFStringRec.defaultButton = kAlertStdAlertOKButton;
paramCFStringRec.cancelButton = kAlertStdAlertCancelButton;
for (i = 1; i < objc; i += 2) {
- int iconIndex;
- char *string;
+ int iconIndex;
+ char *string;
if (Tcl_GetIndexFromObj(interp, objv[i], movableAlertStrings, "option",
- TCL_EXACT, &index) != TCL_OK) {
+ TCL_EXACT, &index) != TCL_OK) {
result = TCL_ERROR;
goto end;
}
if (i + 1 == objc) {
string = Tcl_GetStringFromObj(objv[i], NULL);
Tcl_AppendResult(interp, "value for \"", string, "\" missing",
- NULL);
+ (char *) NULL);
result = TCL_ERROR;
goto end;
}
switch (index) {
- case ALERT_DEFAULT:
+
+ case ALERT_DEFAULT:
+
/*
- * Need to postpone processing of this option until we are sure to
- * know the '-type' as well.
+ * Need to postpone processing of this option until we are
+ * sure to know the '-type' as well.
*/
haveDefaultOption = true;
indexDefaultOption = i;
break;
- case ALERT_DETAIL:
+ case ALERT_DETAIL:
str = Tcl_GetStringFromObj(objv[i + 1], NULL);
- finemessageTextCF = CFStringCreateWithCString(NULL, str,
- kCFStringEncodingUTF8);
+ finemessageTextCF = CFStringCreateWithCString(NULL, str, kCFStringEncodingUTF8);
break;
- case ALERT_ICON:
- /* not sure about UTF translation here... */
+ case ALERT_ICON:
+ /* not sure about UTF translation here... */
if (Tcl_GetIndexFromObj(interp, objv[i + 1], movableIconStrings,
- "value", TCL_EXACT, &iconIndex) != TCL_OK) {
+ "value", TCL_EXACT, &iconIndex) != TCL_OK) {
result = TCL_ERROR;
goto end;
}
switch (iconIndex) {
- case ICON_ERROR:
+ case ICON_ERROR:
alertType = kAlertStopAlert;
break;
- case ICON_INFO:
+ case ICON_INFO:
alertType = kAlertNoteAlert;
break;
- case ICON_QUESTION:
+ case ICON_QUESTION:
alertType = kAlertCautionAlert;
break;
- case ICON_WARNING:
+ case ICON_WARNING:
alertType = kAlertCautionAlert;
break;
}
break;
- case ALERT_MESSAGE:
+ case ALERT_MESSAGE:
str = Tcl_GetStringFromObj(objv[i + 1], NULL);
- messageTextCF = CFStringCreateWithCString(NULL, str,
- kCFStringEncodingUTF8);
+ messageTextCF = CFStringCreateWithCString(NULL, str, kCFStringEncodingUTF8);
break;
- case ALERT_PARENT:
+ case ALERT_PARENT:
str = Tcl_GetStringFromObj(objv[i + 1], NULL);
tkwin = Tk_NameToWindow(interp, str, tkwin);
if (tkwin == NULL) {
@@ -1411,39 +1466,39 @@ Tk_MessageBoxObjCmd(
haveParentOption = true;
break;
- case ALERT_TITLE:
+ case ALERT_TITLE:
break;
- case ALERT_TYPE:
- /* not sure about UTF translation here... */
+ case ALERT_TYPE:
+ /* not sure about UTF translation here... */
if (Tcl_GetIndexFromObj(interp, objv[i + 1], movableTypeStrings,
- "value", TCL_EXACT, &typeIndex) != TCL_OK) {
+ "value", TCL_EXACT, &typeIndex) != TCL_OK) {
result = TCL_ERROR;
goto end;
}
switch (typeIndex) {
- case TYPE_ABORTRETRYIGNORE:
+ case TYPE_ABORTRETRYIGNORE:
paramCFStringRec.defaultText = CFSTR("Abort");
paramCFStringRec.cancelText = CFSTR("Retry");
paramCFStringRec.otherText = CFSTR("Ignore");
paramCFStringRec.cancelButton = kAlertStdAlertOtherButton;
break;
- case TYPE_OK:
+ case TYPE_OK:
paramCFStringRec.defaultText = CFSTR("OK");
break;
- case TYPE_OKCANCEL:
+ case TYPE_OKCANCEL:
paramCFStringRec.defaultText = CFSTR("OK");
paramCFStringRec.cancelText = CFSTR("Cancel");
break;
- case TYPE_RETRYCANCEL:
+ case TYPE_RETRYCANCEL:
paramCFStringRec.defaultText = CFSTR("Retry");
paramCFStringRec.cancelText = CFSTR("Cancel");
break;
- case TYPE_YESNO:
+ case TYPE_YESNO:
paramCFStringRec.defaultText = CFSTR("Yes");
paramCFStringRec.cancelText = CFSTR("No");
break;
- case TYPE_YESNOCANCEL:
+ case TYPE_YESNOCANCEL:
paramCFStringRec.defaultText = CFSTR("Yes");
paramCFStringRec.cancelText = CFSTR("No");
paramCFStringRec.otherText = CFSTR("Cancel");
@@ -1457,27 +1512,25 @@ Tk_MessageBoxObjCmd(
if (haveDefaultOption) {
/*
- * Any '-default' option needs to know the '-type' option, which is
- * why we do this here.
+ * Any '-default' option needs to know the '-type' option, which is why
+ * we do this here.
*/
str = Tcl_GetStringFromObj(objv[indexDefaultOption + 1], NULL);
if (Tcl_GetIndexFromObj(interp, objv[indexDefaultOption + 1],
- movableButtonStrings, "value", TCL_EXACT,
- &defaultButtonIndex) != TCL_OK) {
+ movableButtonStrings, "value", TCL_EXACT,
+ &defaultButtonIndex) != TCL_OK) {
result = TCL_ERROR;
goto end;
}
- /*
- * Need to map from "ok" etc. to 1, 2, 3, right to left.
- */
+ /* Need to map from "ok" etc. to 1, 2, 3, right to left. */
defaultNativeButtonIndex =
buttonIndexAndTypeToNativeButtonIndex[typeIndex][defaultButtonIndex];
if (defaultNativeButtonIndex == 0) {
Tcl_SetObjResult(interp,
- Tcl_NewStringObj("Illegal default option", -1));
+ Tcl_NewStringObj("Illegal default option", -1));
result = TCL_ERROR;
goto end;
}
@@ -1489,11 +1542,11 @@ Tk_MessageBoxObjCmd(
SetThemeCursor(kThemeArrowCursor);
if (haveParentOption) {
- TkWindow *winPtr;
- WindowRef windowRef;
- EventTargetRef notifyTarget;
- EventHandlerUPP handler;
- CallbackUserData data;
+ TkWindow *winPtr;
+ WindowRef windowRef;
+ EventTargetRef notifyTarget;
+ EventHandlerUPP handler;
+ CallbackUserData data;
const EventTypeSpec kEvents[] = {
{kEventClassCommand, kEventProcessCommand}
};
@@ -1505,12 +1558,12 @@ Tk_MessageBoxObjCmd(
*/
windowRef = GetWindowFromPort(
- TkMacOSXGetDrawablePort(Tk_WindowId(tkwin)));
+ TkMacOSXGetDrawablePort(Tk_WindowId(tkwin)));
notifyTarget = GetWindowEventTarget(windowRef);
osError = CreateStandardSheet(alertType, messageTextCF,
- finemessageTextCF, &paramCFStringRec, notifyTarget,
- &dialogRef);
- if (osError != noErr) {
+ finemessageTextCF, &paramCFStringRec,
+ notifyTarget, &dialogRef);
+ if(osError != noErr) {
result = TCL_ERROR;
goto end;
}
@@ -1518,7 +1571,8 @@ Tk_MessageBoxObjCmd(
data.buttonIndex = 1;
handler = NewEventHandlerUPP(AlertHandler);
InstallEventHandler(notifyTarget, handler,
- GetEventTypeCount(kEvents), kEvents, &data, NULL);
+ GetEventTypeCount(kEvents),
+ kEvents, &data, NULL);
osError = ShowSheetWindow(GetDialogWindow(dialogRef), windowRef);
if(osError != noErr) {
result = TCL_ERROR;
@@ -1533,8 +1587,8 @@ Tk_MessageBoxObjCmd(
DisposeEventHandlerUPP(handler);
} else {
osError = CreateStandardAlert(alertType, messageTextCF,
- finemessageTextCF, &paramCFStringRec, &dialogRef);
- if (osError != noErr) {
+ finemessageTextCF, &paramCFStringRec, &dialogRef);
+ if(osError != noErr) {
result = TCL_ERROR;
goto end;
}
@@ -1544,8 +1598,8 @@ Tk_MessageBoxObjCmd(
goto end;
}
}
- if (osError == noErr) {
- int ind;
+ if(osError == noErr) {
+ int ind;
/*
* Map 'itemHit' (1, 2, 3) to descriptive text string.
@@ -1553,12 +1607,12 @@ Tk_MessageBoxObjCmd(
ind = nativeButtonIndexAndTypeToButtonIndex[typeIndex][itemHit];
Tcl_SetObjResult(interp,
- Tcl_NewStringObj(movableButtonStrings[ind], -1));
+ Tcl_NewStringObj(movableButtonStrings[ind], -1));
} else {
result = TCL_ERROR;
}
- end:
+ end:
if (finemessageTextCF != NULL) {
CFRelease(finemessageTextCF);
}
@@ -1567,7 +1621,7 @@ Tk_MessageBoxObjCmd(
}
return result;
}
-
+
/*
*----------------------------------------------------------------------
*
@@ -1585,27 +1639,24 @@ Tk_MessageBoxObjCmd(
*/
static OSStatus
-AlertHandler(
- EventHandlerCallRef callRef,
- EventRef eventRef,
- void *userData)
+AlertHandler(EventHandlerCallRef callRef, EventRef eventRef, void *userData)
{
- OSStatus result = eventNotHandledErr;
- HICommand cmd;
- CallbackUserData *dataPtr = (CallbackUserData *) userData;
+ OSStatus result = eventNotHandledErr;
+ HICommand cmd;
+ CallbackUserData *dataPtr = (CallbackUserData *) userData;
GetEventParameter(eventRef, kEventParamDirectObject, typeHICommand,
- NULL, sizeof(cmd), NULL, &cmd);
+ NULL, sizeof(cmd), NULL, &cmd);
switch (cmd.commandID) {
- case kHICommandOK:
+ case kHICommandOK:
dataPtr->buttonIndex = 1;
result = noErr;
break;
- case kHICommandCancel:
+ case kHICommandCancel:
dataPtr->buttonIndex = 2;
result = noErr;
break;
- case kHICommandOther:
+ case kHICommandOther:
dataPtr->buttonIndex = 3;
result = noErr;
break;