I have been trying to get an application using PyObjC to display colors in an NSTableView. In my searching around, it seems the consensus is "NSColorWell isn't an NSCell, create your own subclass of NSCell which just shows the color."
So, with no further information, I tried this with an NSCell subclass: class MyColorCell(NSCell): currentColor = objc.ivar('currentColor') def setObjectValue_(self, objectValue): self.currentColor = objectValue def drawInteriorWithFrame_inView_(self, cellFrame, controlView): if self.currentColor is not None: self.currentColor.drawSwatchInRect_(cellFrame) and in my app delegate I have: class ColorCellExampleAppDelegate(NibClassBuilder.AutoBaseClass): colors = objc.ivar('colors') # array containing created model objects colorArrayController = objc.ivar('colorArrayController') # bound so we can use addObject_() newColorWell = objc.ivar('newColorWell') colorTableColumn = objc.ivar('colorTableColumn') # use to set the data cell. def applicationDidFinishLaunching_(self, notification): self.colorCell = MyColorCell.alloc().init() self.colorTableColumn.setDataCell_(self.colorCell) def addNewColor_(self, sender): # bound to add button newColor = MyModelColorValue.alloc().initWithColor_ (self.newColorWell.color()) self.colorArrayController.addObject_(newColor) The model object definition is: class MyModelColorValue(NSObject): color = objc.ivar('color') def initWithColor_(self, color): self.color = color.copy() return self The problem comes once I try to click on the colors in the list, the program just barfs. It looks like an object is getting freed where it shouldn't. I'm getting either objc: FREED(id): message isKindOfClass: sent to freed object=0x11cd510 or just a plain "Bus error" before it dies. Looking at the stack trace, the first few lines are: 0 <<00000000>> 0xfffeff18 objc_msgSend_rtp + 24 1 com.apple.AppKit 0x93905594 -[NSValueBinder displayValueForObjectValue:] + 204 2 com.apple.AppKit 0x93904b7c -[NSValueBinder _adjustObject:mode:observedController:observedKeyPath:context:editableSt ate:adjustState:] + 968 3 com.apple.AppKit 0x9392fd04 -[NSValueBinder updateTableColumnDataCell:forDisplayAtIndex:] + 140 4 com.apple.AppKit 0x939304d0 -[NSTextValueBinder updateTableColumnDataCell:forDisplayAtIndex:] + 88 5 com.apple.AppKit 0x9392fc5c -[_NSBindingAdaptor tableColumn:willDisplayCell:row:] + 108 6 com.apple.AppKit 0x9378d7c4 -[NSTableView _sendDelegateWillDisplayCell:forColumn:row:] + 88 7 com.apple.AppKit 0x9378d204 -[NSTableView _drawContentsAtRow:column:clipRect:] + 396 8 com.apple.AppKit 0x9378cbf8 -[NSTableView drawRow:clipRect:] + 220 I have a sample project demonstrating the error, but I can't attach it for some reason, so if you want it, email me.. I would appreciate it if someone can tell what is going on, or can point me towards getting started in debugging memory errors in PyObjC. Thanks, Josh _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig