import Carbon.File
import macresource
import os
+import sys
__all__ = ['Message', 'AskString', 'AskPassword', 'AskYesNoCancel',
'GetArgv', 'AskFileForOpen', 'AskFileForSave', 'AskFolder',
if issubclass(tpwanted, Carbon.File.FSSpec):
return tpwanted(rr.selection[0])
if issubclass(tpwanted, str):
- return tpwanted(rr.selection_fsr[0].FSRefMakePath())
+ return tpwanted(rr.selection_fsr[0].as_pathname())
if issubclass(tpwanted, unicode):
- return tpwanted(rr.selection_fsr[0].FSRefMakePath(), 'utf8')
+ return tpwanted(rr.selection_fsr[0].as_pathname(), 'utf8')
raise TypeError, "Unknown value for argument 'wanted': %s" % repr(tpwanted)
def AskFileForSave(
if issubclass(tpwanted, Carbon.File.FSSpec):
return tpwanted(rr.selection[0])
if issubclass(tpwanted, (str, unicode)):
- # This is gross, and probably incorrect too
- vrefnum, dirid, name = rr.selection[0].as_tuple()
- pardir_fss = Carbon.File.FSSpec((vrefnum, dirid, ''))
- pardir_fsr = Carbon.File.FSRef(pardir_fss)
- pardir_path = pardir_fsr.FSRefMakePath() # This is utf-8
- name_utf8 = unicode(name, 'macroman').encode('utf8')
- fullpath = os.path.join(pardir_path, name_utf8)
+ if sys.platform == 'mac':
+ fullpath = rr.selection[0].as_pathname()
+ else:
+ # This is gross, and probably incorrect too
+ vrefnum, dirid, name = rr.selection[0].as_tuple()
+ pardir_fss = Carbon.File.FSSpec((vrefnum, dirid, ''))
+ pardir_fsr = Carbon.File.FSRef(pardir_fss)
+ pardir_path = pardir_fsr.FSRefMakePath() # This is utf-8
+ name_utf8 = unicode(name, 'macroman').encode('utf8')
+ fullpath = os.path.join(pardir_path, name_utf8)
if issubclass(tpwanted, unicode):
return unicode(fullpath, 'utf8')
return tpwanted(fullpath)
if issubclass(tpwanted, Carbon.File.FSSpec):
return tpwanted(rr.selection[0])
if issubclass(tpwanted, str):
- return tpwanted(rr.selection_fsr[0].FSRefMakePath())
+ return tpwanted(rr.selection_fsr[0].as_pathname())
if issubclass(tpwanted, unicode):
- return tpwanted(rr.selection_fsr[0].FSRefMakePath(), 'utf8')
+ return tpwanted(rr.selection_fsr[0].as_pathname(), 'utf8')
raise TypeError, "Unknown value for argument 'wanted': %s" % repr(tpwanted)
def test():
- import time, sys, macfs
+ import time, macfs
Message("Testing EasyDialogs.")
optionlist = (('v', 'Verbose'), ('verbose', 'Verbose as long option'),
{
PyObject *_res = NULL;
+#if TARGET_API_MAC_OSX
+ if (!PyArg_ParseTuple(_args, ""))
+ return NULL;
_res = FSRef_FSRefMakePath(_self, _args);
+#else
+ char strbuf[1024];
+ OSErr err;
+ FSSpec fss;
+
+ if (!PyArg_ParseTuple(_args, ""))
+ return NULL;
+ if ( !PyMac_GetFSSpec((PyObject *)_self, &fss))
+ return NULL;
+ err = PyMac_GetFullPathname(&fss, strbuf, sizeof(strbuf));
+ if ( err ) {
+ PyMac_Error(err);
+ return NULL;
+ }
+ _res = PyString_FromString(strbuf);
+#endif
return _res;
}
PyMac_GetFSRef(PyObject *v, FSRef *fsr)
{
OSStatus err;
+ FSSpec fss;
if (FSRef_Check(v)) {
*fsr = ((FSRefObject *)v)->ob_itself;
/* XXXX Should try unicode here too */
#endif
/* Otherwise we try to go via an FSSpec */
+#if TARGET_API_MAC_OSX
if (FSSpec_Check(v)) {
- if ((err=FSpMakeFSRef(&((FSSpecObject *)v)->ob_itself, fsr)) == 0)
+ fss = ((FSSpecObject *)v)->ob_itself;
+#else
+ if (PyMac_GetFSSpec(v, &fss)) {
+#endif
+ if ((err=FSpMakeFSRef(&fss, fsr)) == 0)
return 1;
PyMac_Error(err);
return 0;
PyMac_GetFSRef(PyObject *v, FSRef *fsr)
{
OSStatus err;
+ FSSpec fss;
if (FSRef_Check(v)) {
*fsr = ((FSRefObject *)v)->ob_itself;
/* XXXX Should try unicode here too */
#endif
/* Otherwise we try to go via an FSSpec */
+#if TARGET_API_MAC_OSX
if (FSSpec_Check(v)) {
- if ((err=FSpMakeFSRef(&((FSSpecObject *)v)->ob_itself, fsr)) == 0)
+ fss = ((FSSpecObject *)v)->ob_itself;
+#else
+ if (PyMac_GetFSSpec(v, &fss)) {
+#endif
+ if ((err=FSpMakeFSRef(&fss, fsr)) == 0)
return 1;
PyMac_Error(err);
return 0;
fsref_methods.append(f)
FSRef_as_pathname_body = """
+#if TARGET_API_MAC_OSX
+if (!PyArg_ParseTuple(_args, ""))
+ return NULL;
_res = FSRef_FSRefMakePath(_self, _args);
+#else
+char strbuf[1024];
+OSErr err;
+FSSpec fss;
+
+if (!PyArg_ParseTuple(_args, ""))
+ return NULL;
+if ( !PyMac_GetFSSpec((PyObject *)_self, &fss))
+ return NULL;
+err = PyMac_GetFullPathname(&fss, strbuf, sizeof(strbuf));
+if ( err ) {
+ PyMac_Error(err);
+ return NULL;
+}
+_res = PyString_FromString(strbuf);
+#endif
return _res;
"""
f = ManualGenerator("as_pathname", FSRef_as_pathname_body)