On 13 Jun, 2007, at 17:33, Kevin Walzer wrote:
Ronald Oussoren wrote:The major exception to this is Key-Value Observing (also known as Cocoa bindings). Cocoa bindings requires that objects emit events when they are mutated (append an item, set the value for a key in a dict, ...). Sadly enough Python doesn't have the hooks that are required to emit these events for pure python objects. Adding this support requires some low-level changes to python and I'm not sure if this can be done without adversely affecting the performance of the interpreter.Interesting. Are Cocoa bindings analogous to the updating and binding mechanism in Tk? For instance, in Tkinter, I can assign a value to an object, then update that value later in another function via the StringVar() mechanism. For instance, in in my self.drawGUI function, I can do this:self.status = StringVar() self.status.set('Ready') then in another function, I can call this: self.status.set('Process terminated')and the value of the label widget will be updated. Was this functionality hard to manage or missing in Objective-C/Cocoa before the "Cocoa Binding" stuff was added?
That seems to be simular to Cocoa Bindings, except that arbitrary objects can participate in Cocoa Bindings/KVO. You basicly have to implement an interface for getting and setting attributes (simular to getattr/setattr in Python) and you have to emit events when changing attributes, which is done automaticly by the __setattr__ implementation for NSObject. The framework does the legwork for actually routing the events and making sure that this is done as efficiently as possible.
Bindings are explained here: <http://developer.apple.com/ documentation/Cocoa/Conceptual/CocoaBindings/index.html?http:// developer.apple.com/documentation/Cocoa/Conceptual/CocoaBindings/ CocoaBindings.html>
Bindings are really powerfull when used in NIB files (basically GUI design files), you can connect controls to data in your model entirely in the GUI builder tool without writing a single line of code. There is a risk for creating greatly obfuscated programs, because important parts of your program aren't actually in code.
Ronald
-- Kevin Walzer Code by Kevin http://www.codebykevin.com
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig