@@ -1022,33 +1022,24 @@ -(void)save_figure:(id)sender { gil_call_method(toolbar, "save_figure"); }
10221022{
10231023 int result;
10241024 const char * title;
1025+ const char * directory;
10251026 const char * default_filename;
1026- if (!PyArg_ParseTuple (args, " ss " , &title, &default_filename)) {
1027+ if (!PyArg_ParseTuple (args, " sss " , &title, &directory , &default_filename)) {
10271028 return NULL ;
10281029 }
10291030 NSSavePanel * panel = [NSSavePanel savePanel ];
1030- [panel setTitle: [NSString stringWithCString: title
1031- encoding: NSASCIIStringEncoding]];
1032- NSString * ns_default_filename =
1033- [[NSString alloc ]
1034- initWithCString: default_filename
1035- encoding: NSUTF8StringEncoding];
1036- [panel setNameFieldStringValue: ns_default_filename];
1031+ [panel setTitle: [NSString stringWithUTF8String: title]];
1032+ [panel setDirectoryURL: [NSURL fileURLWithPath: [NSString stringWithUTF8String: directory]
1033+ isDirectory: YES ]];
1034+ [panel setNameFieldStringValue: [NSString stringWithUTF8String: default_filename]];
10371035 result = [panel runModal ];
1038- [ns_default_filename release ];
10391036 if (result == NSModalResponseOK ) {
1040- NSURL * url = [panel URL ];
1041- NSString * filename = [url path ];
1037+ NSString *filename = [[panel URL ] path ];
10421038 if (!filename) {
10431039 PyErr_SetString (PyExc_RuntimeError, " Failed to obtain filename" );
10441040 return 0 ;
10451041 }
1046- unsigned int n = [filename length ];
1047- unichar * buffer = malloc (n*sizeof (unichar ));
1048- [filename getCharacters: buffer];
1049- PyObject* string = PyUnicode_FromKindAndData (PyUnicode_2BYTE_KIND, buffer, n);
1050- free (buffer);
1051- return string;
1042+ return PyUnicode_FromString ([filename UTF8String ]);
10521043 }
10531044 Py_RETURN_NONE;
10541045}
0 commit comments