Changeset 382

Show
Ignore:
Timestamp:
07/24/08 00:44:25 (4 months ago)
Author:
saurik
Message:

Added backwards compatibility for UICaboodle (mostly due to confusion).

Location:
trunk/data/uicaboodle.py
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/data/uicaboodle.py/_metadata/version

    r74 r382  
    1 1.0.2307 
     11.0.2491 
  • trunk/data/uicaboodle.py/uicaboodle.m

    r209 r382  
    2222 
    2323    PyObject *arga; 
    24     PyObject *_class; 
     24    PyObject *_class = NULL; 
     25 
     26#ifdef __OBJC2__ 
     27    PyObject *principal; 
     28    PyObject *delegate; 
     29#endif 
    2530 
    2631    _assert(PyObjC_API != NULL); 
    2732    _assert(args != NULL); 
    2833 
    29     /* XXX: correctly parse __OBJC2__ condition */ 
    30     if (!PyArg_ParseTuple(args, "OO", &arga, &_class)) { 
    31         PyErr_SetString(PyExc_TypeError, "Invalid Arguments"); 
     34    if (PyArg_ParseTuple(args, "OO", &arga, &_class)) { 
     35        if (_class == NULL) { 
     36            PyErr_SetString(PyExc_TypeError, "UIApplicationMain: null class"); 
     37            return NULL; 
     38        } 
     39    } 
     40#ifdef __OBJC2__ 
     41    else if (!PyArg_ParseTuple(args, "OOO", &arga, &principal, &delegate)) { 
     42    } 
     43#endif 
     44    else { 
     45        PyErr_SetString(PyExc_TypeError, "Invalid Arguments"); 
    3246        return NULL; 
    3347    } 
    3448 
    3549    _assert(arga != NULL); 
    36     _assert(_class != NULL); 
    3750 
    3851    argc = PySequence_Size(arga); 
     
    6578    PyObjC_DURING 
    6679#ifdef __OBJC2__ 
    67         res = UIApplicationMain(argc, argv, nil, [NSString stringWithUTF8String:class_getName(PyObjC_API->cls_get_class(_class))]); 
     80        if (_class == NULL) 
     81            res = UIApplicationMain(argc, argv, 
     82                /* XXX: do I have to do these null checks? */ 
     83                principal == NULL ? nil : PyObjCObject_GetObject(principal), 
     84                delegate == NULL ? nil : PyObjCObject_GetObject(delegate) 
     85            ); 
     86        else { 
     87            NSString *name = [NSString stringWithUTF8String:class_getName(PyObjCClass_GetClass(_class))]; 
     88            res = UIApplicationMain(argc, argv, name, name); 
     89        } 
    6890#else 
    69         res = UIApplicationMain(argc, argv, PyObjC_API->cls_get_class(_class)); 
     91        res = UIApplicationMain(argc, argv, PyObjCClass_GetClass(_class)); 
    7092#endif 
    7193    PyObjC_HANDLER