summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2011-10-24 19:50:44 (GMT)
committerdgp <dgp@users.sourceforge.net>2011-10-24 19:50:44 (GMT)
commit2ad1d6bb19a2879aa59d1bde7ecc6a5737e593a8 (patch)
tree08724d7e32bb68bffd3ad30d4b25a04b2d7b461e
parent01401e184830a82f44b4befbf48e2c28eab2e5d5 (diff)
downloadtk-2ad1d6bb19a2879aa59d1bde7ecc6a5737e593a8.zip
tk-2ad1d6bb19a2879aa59d1bde7ecc6a5737e593a8.tar.gz
tk-2ad1d6bb19a2879aa59d1bde7ecc6a5737e593a8.tar.bz2
Merge Carbon TIP 382 implementation to Tk trunk.
-rw-r--r--carbon/tkMacOSXDialog.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/carbon/tkMacOSXDialog.c b/carbon/tkMacOSXDialog.c
index c5d1ae1..8097f2c 100644
--- a/carbon/tkMacOSXDialog.c
+++ b/carbon/tkMacOSXDialog.c
@@ -84,7 +84,8 @@ static int NavServicesGetFile(Tcl_Interp *interp,
OpenFileData *ofd, AEDesc *initialDescPtr,
char *initialFile, AEDescList *selectDescPtr,
CFStringRef title, CFStringRef message,
- const char *initialType, int multiple, int isOpen,
+ const char *initialType, int multiple,
+ int confirmOverwrite, int isOpen,
Tk_Window parent);
static int HandleInitialDirectory(Tcl_Interp *interp,
char *initialFile, char *initialDir, FSRef *dirRef,
@@ -364,7 +365,7 @@ Tk_GetOpenFileObjCmd(
initialtype = Tcl_GetVar(interp, Tcl_GetString(typeVariablePtr), 0);
}
result = NavServicesGetFile(interp, &ofd, initialPtr, NULL, &selectDesc,
- title, message, initialtype, multiple, OPEN_FILE, parent);
+ title, message, initialtype, multiple, false, OPEN_FILE, parent);
if (typeVariablePtr) {
FileFilter *filterPtr = ofd.fl.filters;
@@ -417,6 +418,7 @@ Tk_GetSaveFileObjCmd(
Tcl_Obj *const objv[]) /* Argument objects. */
{
int i, result = TCL_ERROR;
+ int confirmOverwrite = 1;
char *initialFile = NULL;
Tk_Window parent = NULL;
AEDesc initialDesc = {typeNull, NULL};
@@ -426,11 +428,13 @@ Tk_GetSaveFileObjCmd(
OpenFileData ofd;
static const char *const saveOptionStrings[] = {
"-defaultextension", "-filetypes", "-initialdir", "-initialfile",
- "-message", "-parent", "-title", "-typevariable", NULL
+ "-message", "-parent", "-title", "-typevariable",
+ "-confirmoverwrite", NULL
};
enum saveOptions {
SAVE_DEFAULT, SAVE_FILETYPES, SAVE_INITDIR, SAVE_INITFILE,
SAVE_MESSAGE, SAVE_PARENT, SAVE_TITLE, SAVE_TYPEVARIABLE,
+ SAVE_CONFIRMOW
};
if (!fileDlgInited) {
@@ -503,6 +507,11 @@ Tk_GetSaveFileObjCmd(
title = CFStringCreateWithBytes(NULL, (unsigned char *) choice,
choiceLen, kCFStringEncodingUTF8, false);
break;
+ case SAVE_CONFIRMOW:
+ if (Tcl_GetBooleanFromObj(interp, objv[i + 1], &confirmOverwrite)
+ != TCL_OK) {
+ return TCL_ERROR;
+ }
}
}
@@ -510,7 +519,7 @@ Tk_GetSaveFileObjCmd(
initialPtr = &initialDesc;
}
result = NavServicesGetFile(interp, &ofd, initialPtr, initialFile, NULL,
- title, message, NULL, false, SAVE_FILE, parent);
+ title, message, NULL, false, confirmOverwrite, SAVE_FILE, parent);
TkFreeFileFilters(&ofd.fl);
end:
if (initialDesc.dataHandle) {
@@ -622,7 +631,7 @@ Tk_ChooseDirectoryObjCmd(
initialPtr = &initialDesc;
}
result = NavServicesGetFile(interp, &ofd, initialPtr, NULL, NULL, title,
- message, NULL, false, CHOOSE_FOLDER, parent);
+ message, NULL, false, false, CHOOSE_FOLDER, parent);
TkFreeFileFilters(&ofd.fl);
end:
if (initialDesc.dataHandle) {
@@ -773,6 +782,7 @@ NavServicesGetFile(
CFStringRef message,
const char *initialtype,
int multiple,
+ int confirmOverwrite,
int isOpen,
Tk_Window parent)
{
@@ -794,6 +804,9 @@ NavServicesGetFile(
if (multiple) {
options.optionFlags |= kNavAllowMultipleFiles;
}
+ if (!confirmOverwrite) {
+ options.optionFlags |= kNavDontConfirmReplacement;
+ }
options.modality = kWindowModalityAppModal;
if (parent && ((TkWindow *) parent)->window != None &&
TkMacOSXHostToplevelExists(parent)) {