@@ -980,33 +980,24 @@ -(void)save_figure:(id)sender { gil_call_method(toolbar, "save_figure"); }
980980{
981981 int result;
982982 const char * title;
983+ const char * directory;
983984 const char * default_filename;
984- if (!PyArg_ParseTuple (args, " ss " , &title, &default_filename)) {
985+ if (!PyArg_ParseTuple (args, " sss " , &title, &directory , &default_filename)) {
985986 return NULL ;
986987 }
987988 NSSavePanel * panel = [NSSavePanel savePanel ];
988- [panel setTitle: [NSString stringWithCString: title
989- encoding: NSASCIIStringEncoding]];
990- NSString * ns_default_filename =
991- [[NSString alloc ]
992- initWithCString: default_filename
993- encoding: NSUTF8StringEncoding];
994- [panel setNameFieldStringValue: ns_default_filename];
989+ [panel setTitle: [NSString stringWithUTF8String: title]];
990+ [panel setDirectoryURL: [NSURL fileURLWithPath: [NSString stringWithUTF8String: directory]
991+ isDirectory: YES ]];
992+ [panel setNameFieldStringValue: [NSString stringWithUTF8String: default_filename]];
995993 result = [panel runModal ];
996- [ns_default_filename release ];
997994 if (result == NSModalResponseOK ) {
998- NSURL * url = [panel URL ];
999- NSString * filename = [url path ];
995+ NSString *filename = [[panel URL ] path ];
1000996 if (!filename) {
1001997 PyErr_SetString (PyExc_RuntimeError, " Failed to obtain filename" );
1002998 return 0 ;
1003999 }
1004- unsigned int n = [filename length ];
1005- unichar * buffer = malloc (n*sizeof (unichar ));
1006- [filename getCharacters: buffer];
1007- PyObject* string = PyUnicode_FromKindAndData (PyUnicode_2BYTE_KIND, buffer, n);
1008- free (buffer);
1009- return string;
1000+ return PyUnicode_FromString ([filename UTF8String ]);
10101001 }
10111002 Py_RETURN_NONE;
10121003}
0 commit comments