[Pygui] Native wrappers?
Dan Villiom Podlaski Christiansen
danchr at gmail.com
Sun Dec 13 14:55:12 CET 2009
On 12 Dec 2009, at 03:53, Greg Ewing wrote:
> Dan Villiom Podlaski Christiansen wrote:
>
>> Isn't the dependancy of Tkinter on a non-Python library?
> > I can image that Python depending on Python libraries would create
> > all sorts of nasty bootstrapping issues :)
>
> Not sure what you mean by that. My point is that Tkinter is in
> the stdlib despite requiring a library (tcl/tk) that isn't bundled
> with all versions of Python and isn't necessarily available on
> all systems. More recently there's sqlite.
What I was referring to is that Tkinter isn't a Python library and doesn't require Python to compile. PyObjC and the other wrappers, however, do.
>> Or to put it another way; accessing Objective-C using ctypes is possible in theory, but not in practice :)
>
> Hmm. Maybe some of the chores of selecting the right functions
> to call could be taken care of by a wrapper layer?
It could; Objective-C is quite dynamic and reflective. There is the problem of *types*, though: All Objective-C method selectors contain an encoded type signature. It would be necessary to find a way to convert structures, strings, data and whathaveyou to/from the two implementations.
However, such an implementation would likely also to require a rewrite of most of the current implementation. I don't see what the advantage to that would be? From my perspective, writing the wrapper directly in Objective-C doesn't seem that much harder :)
>> I've begun implementing the Events module as an Objective-C extension;
> > although I haven't tested it yet, it seems doable to me.
>
> The Events module is probably one of the easier ones, since the
> Event class is pretty self-contained. Some other parts may be
> trickier -- there are some places where I've made use of the
> ability to subclass an Objective-C class in Python and override
> its methods. You may need to do that as an extension type
> wrapping an Objective-C subclass of the relevant NS class.
‘_PyGui_NSApplication’ is an example of this, right?
> If you're interested, I could look into extending Pyrex with
> some syntax for making Objective-C method calls.
I'm not terribly familiar with Pyrex myself, but I'm sure other people would appreciate such support :)
>> Would it be valid to only
> > support UCS-2 builds, or should both kinds of build be supported?
>> If supported, UCS-4 builds would incur a performance penalty:
>
> I think dropping UCS-4 capability for this reason at this stage
> would be premature optimisation. I can't really see passing strings
> being a performance bottleneck in most situations.
Good point. Fortunately, I figured out how to create an NSString that would refer to the buffer of a PyUnicodeObject in a way that *should* work with both kinds of build.
If you're interested, I put what I have so far here:
<https://bitbucket.org/danchr/pygui/src/tip/GUI/Cocoa/>
--
Dan Villiom Podlaski Christiansen
danchr at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 1943 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/pygui/attachments/20091213/b0f83bfb/attachment.bin>
More information about the Pygui
mailing list