pyobjc-dev Mailing List for PyObjC (Page 234)
Brought to you by:
ronaldoussoren
You can subscribe to this list here.
2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(9) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(1) |
Feb
(2) |
Mar
(3) |
Apr
(30) |
May
(18) |
Jun
|
Jul
(4) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2002 |
Jan
(7) |
Feb
(2) |
Mar
(1) |
Apr
|
May
|
Jun
(3) |
Jul
(13) |
Aug
|
Sep
(23) |
Oct
(180) |
Nov
(291) |
Dec
(95) |
2003 |
Jan
(338) |
Feb
(352) |
Mar
(97) |
Apr
(46) |
May
(226) |
Jun
(184) |
Jul
(145) |
Aug
(141) |
Sep
(69) |
Oct
(161) |
Nov
(96) |
Dec
(90) |
2004 |
Jan
(66) |
Feb
(87) |
Mar
(98) |
Apr
(132) |
May
(115) |
Jun
(68) |
Jul
(150) |
Aug
(92) |
Sep
(59) |
Oct
(52) |
Nov
(17) |
Dec
(75) |
2005 |
Jan
(84) |
Feb
(191) |
Mar
(133) |
Apr
(114) |
May
(158) |
Jun
(185) |
Jul
(62) |
Aug
(28) |
Sep
(36) |
Oct
(88) |
Nov
(65) |
Dec
(43) |
2006 |
Jan
(85) |
Feb
(62) |
Mar
(92) |
Apr
(75) |
May
(68) |
Jun
(101) |
Jul
(73) |
Aug
(37) |
Sep
(91) |
Oct
(65) |
Nov
(30) |
Dec
(39) |
2007 |
Jan
(24) |
Feb
(28) |
Mar
(10) |
Apr
(2) |
May
(18) |
Jun
(16) |
Jul
(21) |
Aug
(6) |
Sep
(30) |
Oct
(31) |
Nov
(153) |
Dec
(31) |
2008 |
Jan
(63) |
Feb
(70) |
Mar
(47) |
Apr
(24) |
May
(59) |
Jun
(22) |
Jul
(12) |
Aug
(7) |
Sep
(14) |
Oct
(26) |
Nov
(5) |
Dec
(5) |
2009 |
Jan
(10) |
Feb
(41) |
Mar
(70) |
Apr
(88) |
May
(49) |
Jun
(62) |
Jul
(34) |
Aug
(15) |
Sep
(55) |
Oct
(40) |
Nov
(67) |
Dec
(21) |
2010 |
Jan
(60) |
Feb
(17) |
Mar
(26) |
Apr
(26) |
May
(29) |
Jun
(4) |
Jul
(21) |
Aug
(21) |
Sep
(10) |
Oct
(12) |
Nov
(3) |
Dec
(19) |
2011 |
Jan
(3) |
Feb
(13) |
Mar
(8) |
Apr
(8) |
May
(17) |
Jun
(20) |
Jul
(21) |
Aug
(7) |
Sep
|
Oct
|
Nov
(9) |
Dec
(11) |
2012 |
Jan
(3) |
Feb
|
Mar
|
Apr
(5) |
May
(4) |
Jun
(14) |
Jul
(5) |
Aug
(2) |
Sep
(15) |
Oct
(2) |
Nov
(23) |
Dec
(1) |
2013 |
Jan
(8) |
Feb
(1) |
Mar
|
Apr
|
May
(5) |
Jun
(1) |
Jul
(5) |
Aug
(4) |
Sep
|
Oct
(12) |
Nov
(10) |
Dec
(3) |
2014 |
Jan
(7) |
Feb
(14) |
Mar
(2) |
Apr
|
May
(2) |
Jun
(11) |
Jul
(10) |
Aug
(4) |
Sep
|
Oct
(8) |
Nov
(1) |
Dec
(2) |
2015 |
Jan
(9) |
Feb
(7) |
Mar
(1) |
Apr
|
May
(7) |
Jun
|
Jul
(5) |
Aug
(6) |
Sep
|
Oct
(1) |
Nov
(4) |
Dec
|
2016 |
Jan
(1) |
Feb
(1) |
Mar
(4) |
Apr
(2) |
May
(1) |
Jun
|
Jul
(6) |
Aug
(8) |
Sep
(21) |
Oct
(17) |
Nov
|
Dec
(36) |
2017 |
Jan
(6) |
Feb
(2) |
Mar
(4) |
Apr
(2) |
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(1) |
Oct
|
Nov
(1) |
Dec
(6) |
2018 |
Jan
(2) |
Feb
(3) |
Mar
(3) |
Apr
(14) |
May
(2) |
Jun
(2) |
Jul
(4) |
Aug
(3) |
Sep
(6) |
Oct
(16) |
Nov
(1) |
Dec
(6) |
2019 |
Jan
(3) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
(6) |
Nov
|
Dec
|
2020 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(2) |
Jun
(1) |
Jul
(7) |
Aug
(1) |
Sep
(1) |
Oct
|
Nov
(2) |
Dec
(1) |
2021 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(2) |
Jul
|
Aug
(5) |
Sep
(1) |
Oct
|
Nov
(1) |
Dec
|
2023 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
|
Dec
|
2025 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Just v. R. <ju...@le...> - 2003-06-11 18:48:34
|
(There was a bug related to sheets in PyObjC 0.9 that is fixed in CVS.) Just |
From: Just v. R. <ju...@le...> - 2003-06-11 18:46:59
|
Ronald Oussoren wrote: > I think we should add a function that allows you to declare that a > method is used as the callback for a sheet, that way uses don't have > to guess the right value of the signature string. > > That brings me to a difficult question: How should we name that > function. > > How about: > > def NSSheetEndMethod(meth): > return selector(meth, signature='v@:@ii') > > Obvious alternatives are: > * NSEndSheetMethod > * NSSheetCallback > > I'm afraid I don't see a way to automaticly detect that a method will > be used as the callback for a sheet. We could create an informal protocol, and use a naming convention for the method. Just |
From: <bb...@ma...> - 2003-06-11 18:33:59
|
On Wednesday, Jun 11, 2003, at 05:43 US/Eastern, Jack Jansen wrote: > If we could somehow deduce the bits that the user is probably > interested in and only present that (at least, by default) that would > help a lot. In the iClass example the author has created one class, > one window with a handful of controls and a small number of > connections. (Or is there a new menu entry too? I don't think so, but > I'm not sure). If we could show just that bit of the dump you'd end up > with around 50 lines of information that show you all the stuff you > need to know. It is just a matter of parsing a bit and printing the report. If you grab the list of Objects, you can then dump the connections in a fashion that indicates source and destination: x = "{%s}" % os.popen("nibtool -8 -a MainMenu.nib").read() dict = NSString.propertyList(x) c = dict['Connections'] for k in c: print c[k] |
From: <bb...@ma...> - 2003-06-11 18:15:46
|
On Wednesday, Jun 11, 2003, at 06:50 US/Eastern, Michael Hudson wrote: > Well, if none of the online currency exchange rate sites let you > scrape the going rate, you could always fake one that returns a random > rate within some range and scrape that. Not as good as the Real > Thing, but it might do. See the demo services at..... http://xmethods.com/ .... as any of them could easily be wrapped by a Cocoa/Python app. |
From: Ronald O. <ous...@ci...> - 2003-06-11 18:11:53
|
I think we should add a function that allows you to declare that a method is used as the callback for a sheet, that way uses don't have to guess the right value of the signature string. That brings me to a difficult question: How should we name that function. How about: def NSSheetEndMethod(meth): return selector(meth, signature='v@:@ii') Obvious alternatives are: * NSEndSheetMethod * NSSheetCallback I'm afraid I don't see a way to automaticly detect that a method will be used as the callback for a sheet. Ronald On Wednesday, Jun 11, 2003, at 18:22 Europe/Amsterdam, Bob Swerdlow wrote: > I'm trying to use > NSApplication.beginSheet_modalForWindows_modalDelegate_didEndSelector_c > ontex > tinfo_ to create a sheet on a window, but I don't seem to be setting > it up > right . When it goes to call the didEndSelector method I get a bus > error :( > > The method that I want called is defined in class MyClass as: > def sheedDidEnd_sheet_returnCode_contextInfo_(self, sheet, > returnCode, > contextInfo): > > I'm trying to invoke the sheet as: > > application.beginSheet_modalForWindow_modalDelegate_didEndSelector_cont > extin > fo( \ > self.panel, self.window, self, > sheedDidEnd_sheet_returnCode_contextInfo_selector, 0) > > where I have set up sheedDidEnd_sheet_returnCode_contextInfo_selector > with: > sheedDidEnd_sheet_returnCode_contextInfo_selector = objc.selector \ > (sheedDidEnd_sheet_returnCode_contextInfo_, signature='v@:@ii') > > I don't see where the signature format is specified, so I took a guess > (!) > How do I define the selector so that method gets called correctly? Is > there > a better way to do this? > > Thanks for your help. > > Bob Swerdlow > COO > Transpose > rsw...@tr... > 207-781-8284 > http://www.transpose.com > > ---------------------------------- > Fight Spam! > Add this link to your signature (as I did): http://wecanstopspam.org > Click through to find out more. > ---------------------------------- > > > > > ------------------------------------------------------- > This SF.NET email is sponsored by: eBay > Great deals on office technology -- on eBay now! Click here: > http://adfarm.mediaplex.com/ad/ck/711-11697-6916-5 > _______________________________________________ > Pyobjc-dev mailing list > Pyo...@li... > https://lists.sourceforge.net/lists/listinfo/pyobjc-dev > |
From: Ronald O. <ous...@ci...> - 2003-06-11 18:07:06
|
On Wednesday, Jun 11, 2003, at 18:22 Europe/Amsterdam, Bob Swerdlow wrote: > I'm trying to use > NSApplication.beginSheet_modalForWindows_modalDelegate_didEndSelector_c > ontex > tinfo_ to create a sheet on a window, but I don't seem to be setting > it up > right . When it goes to call the didEndSelector method I get a bus > error :( I'm having no problems with NSOpenPanel..beginSheetForDirectory_file_types_modalForWindow_modalDeleg ate_didEndSelector_contextInfo_, which uses a simular protocol. > > > The method that I want called is defined in class MyClass as: > def sheedDidEnd_sheet_returnCode_contextInfo_(self, sheet, > returnCode, > contextInfo): > > I'm trying to invoke the sheet as: > > application.beginSheet_modalForWindow_modalDelegate_didEndSelector_cont > extin > fo( \ > self.panel, self.window, self, > sheedDidEnd_sheet_returnCode_contextInfo_selector, 0) > > where I have set up sheedDidEnd_sheet_returnCode_contextInfo_selector > with: sheedDidEnd_sheet_returnCode_contextInfo_selector = objc.selector \ (sheedDidEnd_sheet_returnCode_contextInfo_, signature='v@:@ii') That's the same as I'm using, it must be correct then :-) I don't think we have documentation for the signature strings in our documentation. They are equal to the signature strings used in the Objective-C runtime, and those a described in Apple's Objective-C manual. I think we should add a conviencefunction for this, something like 'NSSheetEndMethod'. Your code would then be something like the assignment below, without an ugly signature string. sheedDidEnd_sheet_returnCode_contextInfo_selector = NSSheetEndMethod( sheedDidEnd_sheet_returnCode_contextInfo_) Ah, now I see the problem: selector should be used like 'classmethod', the assigment in your code should read: sheedDidEnd_sheet_returnCode_contextInfo = objc.selector \ (sheedDidEnd_sheet_returnCode_contextInfo_, signature='v@:@ii') The result of the selector function should be assigned to the same name as the orignal function (e.g. dont add '_selector' to the name!). Ronald |
From: Bob S. <rsw...@tr...> - 2003-06-11 16:22:09
|
I'm trying to use NSApplication.beginSheet_modalForWindows_modalDelegate_didEndSelector_contex tinfo_ to create a sheet on a window, but I don't seem to be setting it up right . When it goes to call the didEndSelector method I get a bus error :( The method that I want called is defined in class MyClass as: def sheedDidEnd_sheet_returnCode_contextInfo_(self, sheet, returnCode, contextInfo): I'm trying to invoke the sheet as: application.beginSheet_modalForWindow_modalDelegate_didEndSelector_contextin fo( \ self.panel, self.window, self, sheedDidEnd_sheet_returnCode_contextInfo_selector, 0) where I have set up sheedDidEnd_sheet_returnCode_contextInfo_selector with: sheedDidEnd_sheet_returnCode_contextInfo_selector = objc.selector \ (sheedDidEnd_sheet_returnCode_contextInfo_, signature='v@:@ii') I don't see where the signature format is specified, so I took a guess (!) How do I define the selector so that method gets called correctly? Is there a better way to do this? Thanks for your help. Bob Swerdlow COO Transpose rsw...@tr... 207-781-8284 http://www.transpose.com ---------------------------------- Fight Spam! Add this link to your signature (as I did): http://wecanstopspam.org Click through to find out more. ---------------------------------- |
From: Michael H. <mw...@py...> - 2003-06-11 10:50:33
|
Jack Jansen <Jac...@cw...> writes: > On Tuesday, Jun 10, 2003, at 22:49 Europe/Amsterdam, Just van Rossum > wrote: >> But I guess I'm getting too far from what Jack is after... > > Yes, sort of:-) > > Note that the list of things that are easier in Python than ObjC is > useful by itself, we should at some point have an "introduction to > PyObjC for ObjC programmers" that could list it, but what I'm after at > the moment is one feature that (a) requires very little Python code > and (b) has a large "WOW!" factor. > > Something along the lines of "map of" in the address book is what I'm > thinking of in terms of wow-factor. And it should somehow integrate > with one of Apple's introductory ObjC examples. Well, if none of the online currency exchange rate sites let you scrape the going rate, you could always fake one that returns a random rate within some range and scrape that. Not as good as the Real Thing, but it might do. Cheers, M. -- QNX... the OS that walks like a duck, quacks like a duck, but is, in fact, a platypus. ... the adventures of porting duck software to the platypus were avoidable this time. -- Chris Klein, alt.sysadmin.recovery |
From: Jack J. <Jac...@cw...> - 2003-06-11 09:48:13
|
On Tuesday, Jun 10, 2003, at 22:49 Europe/Amsterdam, Just van Rossum wrote: > But I guess I'm getting too far from what Jack is after... Yes, sort of:-) Note that the list of things that are easier in Python than ObjC is useful by itself, we should at some point have an "introduction to PyObjC for ObjC programmers" that could list it, but what I'm after at the moment is one feature that (a) requires very little Python code and (b) has a large "WOW!" factor. Something along the lines of "map of" in the address book is what I'm thinking of in terms of wow-factor. And it should somehow integrate with one of Apple's introductory ObjC examples. -- Jack Jansen, <Jac...@cw...>, http://www.cwi.nl/~jack If I can't dance I don't want to be part of your revolution -- Emma Goldman |
From: Jack J. <Jac...@cw...> - 2003-06-11 09:42:12
|
On Tuesday, Jun 10, 2003, at 19:50 Europe/Amsterdam, Just van Rossum wrote: > Ronald Oussoren wrote: > >>> It would be nice if nibclassbuilder would have an option to print >>> an overview of classes/objects/connections, but I doubt it will be >>> better than what IB already offers. >> >> Such a beast might be usefull for examples posted on the web. > > Hm, I just discovered nibtool, a command line app able to print various > overviews of nib files. The output isn't particularly pretty, though. > Try > $ nibtool -a <mynib>.nib This is the sort of info I wanted! But: 1. It isn't very readable, although that could be fixed fairly easily; and 2. There's too much! If we could somehow deduce the bits that the user is probably interested in and only present that (at least, by default) that would help a lot. In the iClass example the author has created one class, one window with a handful of controls and a small number of connections. (Or is there a new menu entry too? I don't think so, but I'm not sure). If we could show just that bit of the dump you'd end up with around 50 lines of information that show you all the stuff you need to know. -- Jack Jansen, <Jac...@cw...>, http://www.cwi.nl/~jack If I can't dance I don't want to be part of your revolution -- Emma Goldman |
From: tmk <li...@ne...> - 2003-06-11 09:20:33
|
Many thanks to all for the helpful (and prompt!) info. I'll update my version of python. = tmk = On Tuesday, Jun 10, 2003, at 22:45 Europe/Brussels, Ronald Oussoren wrote: > Your using a too old version of Python 2.3. Actually, one of the > version tests is wrong because I'm testing some new code in Python 2.3 > CVS and accidently checked in too much. > > You should change Modules/objc/pointer-support.m, the two #if tests > are wrong, they should be for python 2.3b2 instead of 2.3b1. > > Ronald > > On Tuesday, Jun 10, 2003, at 18:29 Europe/Amsterdam, tmk wrote: > >> Yo, >> >> I've just done a fresh checkout from CVS and issued a "python >> setup.py install". >> I'm using the gcc-libffi-snapshot20030119-patched.tar.gz libffi from >> SF and unix Python 2.3b1 >> >> It fails with the following message: >> >> --- cut >> [snip] >> ld: Undefined symbols: >> _CFObj_Convert >> _CFObj_New >> error: command 'gcc' failed with exit status 1 >> >> Any clues as to what's going wrong? >> >> Thanks for any help! >> >> = tmk = >> >> >> >> ------------------------------------------------------- >> This SF.net email is sponsored by: Etnus, makers of TotalView, The >> best >> thread debugger on the planet. Designed with thread debugging features >> you've never dreamed of, try TotalView 6 free at www.etnus.com. >> _______________________________________________ >> Pyobjc-dev mailing list >> Pyo...@li... >> https://lists.sourceforge.net/lists/listinfo/pyobjc-dev >> > |
From: Just v. R. <ju...@le...> - 2003-06-10 20:51:11
|
Bob Ippolito wrote: > >>> Any other ideas for something that is much simpler in Python than > >>> in ObjC? > > > > XML-RPC and similar. > > > > XML processing is often easier in Python. > > > > File parsing/grepping/filtering. > > > > Image manipulation via something like PIL. > > > > Subprocess/task control -- someone ought to wrap pexpect into a > > Cocoa/Python app that would produce droplets or something. > > Networking code. > > Numerical code (Numpy). > > Anything that uses lists (list comprehensions, slices, etc). Regular expressions. Big ints (Python long ints). Handling email (the email package, poplib, smtplib, etc.). AppleEvents (Jack's aetools and the gensuite stuff). Unit testing (unittest). Indeed lists, but also dicts; both are just infinitely more convenient to work with in Python. And recently I noticed what an incredible boon it is that PyObjC automatically converts Python numbers to and from C ints *or* NSNumber objects as needed. ObjC code that uses NSNumbers becomes a *lot* simpler when translated into Python: you simply don't see them. But I guess I'm getting too far from what Jack is after... Just |
From: Ronald O. <ous...@ci...> - 2003-06-10 20:46:51
|
Your using a too old version of Python 2.3. Actually, one of the version tests is wrong because I'm testing some new code in Python 2.3 CVS and accidently checked in too much. You should change Modules/objc/pointer-support.m, the two #if tests are wrong, they should be for python 2.3b2 instead of 2.3b1. Ronald On Tuesday, Jun 10, 2003, at 18:29 Europe/Amsterdam, tmk wrote: > Yo, > > I've just done a fresh checkout from CVS and issued a "python setup.py > install". > I'm using the gcc-libffi-snapshot20030119-patched.tar.gz libffi from > SF and unix Python 2.3b1 > > It fails with the following message: > > --- cut > [snip] > ld: Undefined symbols: > _CFObj_Convert > _CFObj_New > error: command 'gcc' failed with exit status 1 > > Any clues as to what's going wrong? > > Thanks for any help! > > = tmk = > > > > ------------------------------------------------------- > This SF.net email is sponsored by: Etnus, makers of TotalView, The > best > thread debugger on the planet. Designed with thread debugging features > you've never dreamed of, try TotalView 6 free at www.etnus.com. > _______________________________________________ > Pyobjc-dev mailing list > Pyo...@li... > https://lists.sourceforge.net/lists/listinfo/pyobjc-dev > |
From: Just v. R. <ju...@le...> - 2003-06-10 18:11:05
|
Michael Hudson wrote: > > Any clues as to what's going wrong? > > I think you might want to get Python from CVS too. Ronald meant to put a switch in PyObjC so it would correctly work with 2.3b1, but I think something went wrong. Not that there's anything wrong with building PYthon from CVS... Just |
From: Just v. R. <ju...@le...> - 2003-06-10 18:01:33
|
bb...@ma... wrote: > It'd be relatively trivial to augment nibclassbuilder to dump the > connectivity within a NIB file. In particular, see the output of > nibtool -a on a nib (I enclosed the dump of MainMenu.nib from > iClass). If you take that output, and surround it with a set of {}'s, > stuff it into an NSString, and call -propertyList, it'll result in a > hierarchy of NSDictionary, NSArray and strings that describe > everything about the contents of the NIB file. (Alternatively, you > can do multiple passes to dump one of classes, hierarchy, objects, or > connections). > > Once that is done, it is just a matter of intelligently formatting > the output..... Ah, that's very cool! Thanks for the hint. Just |
From: <bb...@ma...> - 2003-06-10 17:51:50
|
On Tuesday, Jun 10, 2003, at 11:34 US/Eastern, Just van Rossum wrote: > It would be nice if nibclassbuilder would have an option to print an > overview of classes/objects/connections, but I doubt it will be better > than what IB already offers. It'd be relatively trivial to augment nibclassbuilder to dump the connectivity within a NIB file. In particular, see the output of nibtool -a on a nib (I enclosed the dump of MainMenu.nib from iClass). If you take that output, and surround it with a set of {}'s, stuff it into an NSString, and call -propertyList, it'll result in a hierarchy of NSDictionary, NSArray and strings that describe everything about the contents of the NIB file. (Alternatively, you can do multiple passes to dump one of classes, hierarchy, objects, or connections). Once that is done, it is just a matter of intelligently formatting the output..... /* Objects */ Objects = { "Object 1" = { Class = "NSCustomObject"; CustomClass = "NSApplication"; Name = "File's Owner"; className = "NSApplication"; }; "Object 2" = { Class = "NSView"; autoresizingMask = "0"; frameRect = "{{1, 9}, {726, 491}}"; groupedIBObjectID = "<null>"; isLockedIBObject = "0"; }; "Object 5" = { Class = "NSMenuItem"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Bring All to Front"; }; "Object 19" = { Class = "NSMenuItem"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Window"; }; "Object 21" = { Class = "NSWindowTemplate"; CustomClass = "NSWindow"; Name = "Window"; autoPositionMask = "5"; backingType = "2"; className = "NSWindow"; contentRect = "{{182, 233}, {726, 491}}"; deferred = "1"; dynamicDepthLimit = "0"; frameAutosaveName = "<null>"; hidesOnDeactivate = "0"; isLockedIBObject = "0"; maxSize = "{3.40282e+38, 3.40282e+38}"; minSize = "{213, 129}"; oneShot = "1"; releasedWhenClosed = "0"; styleMask = "270"; title = "iClass"; visibleAtLaunch = "1"; wantsToBeColor = "0"; }; "Object 23" = { Class = "NSMenuItem"; keyEquivalent = "m"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Minimize"; }; "Object 24" = { Class = "NSMenu"; autoenablesItems = "1"; title = "Window"; }; "Object 29" = { Class = "NSMenu"; Name = "MainMenu"; autoenablesItems = "1"; title = "MainMenu"; }; "Object 56" = { Class = "NSMenuItem"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "NewApplication"; }; "Object 57" = { Class = "NSMenu"; autoenablesItems = "1"; title = "NewApplication"; }; "Object 58" = { Class = "NSMenuItem"; keyEquivalent = ""; keyEquivalentModifierMask = "0"; state = "0"; tag = "0"; title = "About NewApplication"; }; "Object 72" = { Class = "NSMenuItem"; Name = ""; keyEquivalent = "o"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Open..."; }; "Object 73" = { Class = "NSMenuItem"; Name = "1"; keyEquivalent = "w"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Close"; }; "Object 74" = { Class = "NSMenuItem"; Name = "2"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = ""; }; "Object 75" = { Class = "NSMenuItem"; Name = "3"; keyEquivalent = "s"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Save"; }; "Object 77" = { Class = "NSMenuItem"; Name = "5"; keyEquivalent = "P"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Page Setup..."; }; "Object 78" = { Class = "NSMenuItem"; Name = "6"; keyEquivalent = "p"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Print..."; }; "Object 79" = { Class = "NSMenuItem"; Name = "7"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = ""; }; "Object 80" = { Class = "NSMenuItem"; Name = "8"; keyEquivalent = "S"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Save As..."; }; "Object 81" = { Class = "NSMenu"; Name = ""; autoenablesItems = "1"; title = "File"; }; "Object 82" = { Class = "NSMenuItem"; Name = "9"; keyEquivalent = "n"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "New"; }; "Object 83" = { Class = "NSMenuItem"; Name = ""; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "File"; }; "Object 92" = { Class = "NSMenuItem"; Name = ""; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = ""; }; "Object 103" = { Class = "NSMenuItem"; Name = "1"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Help"; }; "Object 106" = { Class = "NSMenu"; Name = "2"; autoenablesItems = "1"; title = "Help"; }; "Object 111" = { Class = "NSMenuItem"; Name = ""; keyEquivalent = "?"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "NewApplication Help"; }; "Object 112" = { Class = "NSMenuItem"; Name = "10"; keyEquivalent = ""; keyEquivalentModifierMask = "0"; state = "0"; tag = "0"; title = "Revert"; }; "Object 124" = { Class = "NSMenuItem"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Open Recent"; }; "Object 125" = { Class = "NSMenu"; autoenablesItems = "1"; title = "Open Recent"; }; "Object 126" = { Class = "NSMenuItem"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Clear Menu"; }; "Object 129" = { Class = "NSMenuItem"; Name = "121"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Preferences..."; }; "Object 130" = { Class = "NSMenu"; autoenablesItems = "1"; title = "Services"; }; "Object 131" = { Class = "NSMenuItem"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Services"; }; "Object 134" = { Class = "NSMenuItem"; keyEquivalent = "h"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Hide NewApplication"; }; "Object 136" = { Class = "NSMenuItem"; Name = "1111"; keyEquivalent = "q"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Quit NewApplication"; }; "Object 143" = { Class = "NSMenuItem"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = ""; }; "Object 144" = { Class = "NSMenuItem"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = ""; }; "Object 145" = { Class = "NSMenuItem"; keyEquivalent = "h"; keyEquivalentModifierMask = "1572864"; state = "0"; tag = "0"; title = "Hide Others"; }; "Object 149" = { Class = "NSMenuItem"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = ""; }; "Object 150" = { Class = "NSMenuItem"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Show All"; }; "Object 195" = { Class = "NSMenuItem"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Stop speaking"; }; "Object 196" = { Class = "NSMenuItem"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Start speaking"; }; "Object 197" = { Class = "NSMenuItem"; keyEquivalent = "c"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Copy"; }; "Object 198" = { Class = "NSMenuItem"; keyEquivalent = "a"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Select All"; }; "Object 199" = { Class = "NSMenuItem"; keyEquivalent = "x"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Cut"; }; "Object 200" = { Class = "NSMenu"; Name = "NSMenu"; autoenablesItems = "1"; title = "Spelling"; }; "Object 201" = { Class = "NSMenuItem"; Name = "NSMenuItem"; keyEquivalent = ";"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Check Spelling"; }; "Object 202" = { Class = "NSMenuItem"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Delete"; }; "Object 203" = { Class = "NSMenuItem"; keyEquivalent = "v"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Paste"; }; "Object 204" = { Class = "NSMenuItem"; Name = "NSMenuItem1"; keyEquivalent = ":"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Spelling..."; }; "Object 205" = { Class = "NSMenu"; autoenablesItems = "1"; title = "Edit"; }; "Object 206" = { Class = "NSMenuItem"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = ""; }; "Object 207" = { Class = "NSMenuItem"; keyEquivalent = "z"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Undo"; }; "Object 208" = { Class = "NSMenuItem"; keyEquivalent = "g"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Find Next"; }; "Object 209" = { Class = "NSMenuItem"; keyEquivalent = "f"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Find..."; }; "Object 210" = { Class = "NSMenuItem"; keyEquivalent = "j"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Scroll to Selection"; }; "Object 211" = { Class = "NSMenuItem"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Speech"; }; "Object 212" = { Class = "NSMenu"; autoenablesItems = "1"; title = "Speech"; }; "Object 213" = { Class = "NSMenuItem"; keyEquivalent = "d"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Find Previous"; }; "Object 214" = { Class = "NSMenuItem"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = ""; }; "Object 215" = { Class = "NSMenuItem"; keyEquivalent = "Z"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Redo"; }; "Object 216" = { Class = "NSMenuItem"; Name = "NSMenuItem"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Spelling"; }; "Object 217" = { Class = "NSMenuItem"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Edit"; }; "Object 218" = { Class = "NSMenuItem"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Find"; }; "Object 219" = { Class = "NSMenuItem"; Name = "NSMenuItem2"; keyEquivalent = ""; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Check Spelling As You Type"; }; "Object 220" = { Class = "NSMenu"; autoenablesItems = "1"; title = "Find"; }; "Object 221" = { Class = "NSMenuItem"; keyEquivalent = "e"; keyEquivalentModifierMask = "1048576"; state = "0"; tag = "0"; title = "Use Selection for Find"; }; "Object 236" = { Class = "NSScrollView"; Name = "NSScrollView3"; autoresizingMask = "20"; backgroundColor = "NSNamedColorSpace System controlBackgroundColor"; borderType = "2"; frameRect = "{{20, 20}, {194, 434}}"; groupedIBObjectID = "<null>"; hasHorizontalRuler = "0"; hasHorizontalScroller = "1"; hasVerticalRuler = "0"; hasVerticalScroller = "1"; horizontalLineScroll = "19"; horizontalScrollerControlSize = "1"; isLockedIBObject = "0"; lineScroll = "19"; pageScroll = "10"; verticalLineScroll = "19"; verticalScrollerControlSize = "1"; }; "Object 237" = { Class = "NSOutlineView"; Name = "NSTableView"; allowsColumnReordering = "1"; allowsColumnResizing = "0"; allowsColumnSelection = "0"; allowsEmptySelection = "1"; allowsMultipleSelection = "0"; autoresizesAllColumnsToFit = "1"; autoresizingMask = "0"; autosaveName = "<null>"; autosaveTableColumns = "0"; backgroundColor = "NSCalibratedWhiteColorSpace 1 1"; continuous = "0"; drawsGrid = "0"; enabled = "1"; font = "<null>"; frameRect = "{{0, 0}, {0, 0}}"; gridColor = "NSNamedColorSpace System gridColor"; groupedIBObjectID = "<null>"; isLockedIBObject = "0"; rowHeight = "17"; tag = "0"; }; "Object 238" = { Class = "NSTableColumn"; Name = "NSTableColumn1"; dataAlignment = "0"; editable = "0"; headerAlignment = "0"; identifier = "<null>"; maxWidth = "1000"; minWidth = "16"; resizable = "0"; stringValue = "Class"; width = "178.08"; }; "Object 240" = { Class = "NSCustomObject"; CustomClass = "ClassesDataSource"; Name = "Model"; className = "ClassesDataSource"; }; "Object 242" = { Class = "NSTableView"; Name = "NSTableView"; allowsColumnReordering = "1"; allowsColumnResizing = "1"; allowsColumnSelection = "0"; allowsEmptySelection = "1"; allowsMultipleSelection = "1"; autoresizesAllColumnsToFit = "1"; autoresizingMask = "0"; autosaveName = "<null>"; autosaveTableColumns = "0"; backgroundColor = "NSCalibratedWhiteColorSpace 1 1"; continuous = "0"; drawsGrid = "1"; enabled = "1"; font = "<null>"; frameRect = "{{0, 0}, {467, 381}}"; gridColor = "NSCalibratedRGBColorSpace 0.799232 0.763899 0.815217 1"; groupedIBObjectID = "<null>"; isLockedIBObject = "0"; rowHeight = "17"; tag = "0"; }; "Object 243" = { Class = "NSTableColumn"; Name = "NSTableColumn"; dataAlignment = "0"; editable = "0"; headerAlignment = "0"; identifier = "objc_method"; maxWidth = "1000"; minWidth = "40"; resizable = "1"; stringValue = "Objective-C Method"; width = "148"; }; "Object 244" = { Class = "NSScrollView"; Name = "NSScrollView1"; autoresizingMask = "18"; backgroundColor = "NSCalibratedRGBColorSpace 0.799232 0.763899 0.815217 1"; borderType = "2"; frameRect = "{{222, 20}, {484, 414}}"; groupedIBObjectID = "<null>"; hasHorizontalRuler = "0"; hasHorizontalScroller = "1"; hasVerticalRuler = "0"; hasVerticalScroller = "1"; horizontalLineScroll = "19"; horizontalScrollerControlSize = "0"; isLockedIBObject = "0"; lineScroll = "19"; pageScroll = "10"; verticalLineScroll = "19"; verticalScrollerControlSize = "0"; }; "Object 245" = { Class = "NSTableColumn"; Name = "NSTableColumn1"; dataAlignment = "0"; editable = "0"; headerAlignment = "0"; identifier = "python_method"; maxWidth = "1000"; minWidth = "40"; resizable = "1"; stringValue = "Python Method"; width = "148"; }; "Object 246" = { Class = "NSTableColumn"; dataAlignment = "0"; editable = "0"; headerAlignment = "0"; identifier = "signature"; maxWidth = "1000"; minWidth = "54.434"; resizable = "1"; stringValue = "Signature"; width = "162.434"; }; "Object 250" = { Class = "NSTextField"; Name = "NSTextField1"; alignment = "0"; autoresizingMask = "12"; backgroundColor = "NSNamedColorSpace System textBackgroundColor"; bezelStyle = "1"; continuous = "0"; drawsBackground = "0"; editable = "1"; enabled = "1"; font = "{name = System Font; pointSize = 13}"; frameRect = "{{20, 464}, {194, 20}}"; groupedIBObjectID = "<null>"; iBBorderType = "2"; isLockedIBObject = "0"; scrollable = "1"; sendsActionOnEndEditing = "1"; stringValue = ""; tag = "0"; textColor = "NSNamedColorSpace System textColor"; wraps = "0"; }; "Object 258" = { Class = "NSTextField"; Name = "NSTextField2"; alignment = "0"; autoresizingMask = "10"; backgroundColor = "NSNamedColorSpace System controlColor"; bezelStyle = "0"; continuous = "0"; drawsBackground = "0"; editable = "0"; enabled = "1"; font = "{name = System Font; pointSize = 13}"; frameRect = "{{219, 452}, {490, 32}}"; groupedIBObjectID = "<null>"; iBBorderType = "0"; isLockedIBObject = "0"; scrollable = "1"; sendsActionOnEndEditing = "1"; stringValue = "\n"; tag = "0"; textColor = "NSNamedColorSpace System controlTextColor"; wraps = "0"; }; "Object 259" = { Class = "NSTextField"; Name = "NSTextField21"; alignment = "0"; autoresizingMask = "8"; backgroundColor = "NSNamedColorSpace System controlColor"; bezelStyle = "0"; continuous = "0"; drawsBackground = "0"; editable = "0"; enabled = "1"; font = "{name = System Font; pointSize = 13}"; frameRect = "{{219, 442}, {85, 17}}"; groupedIBObjectID = "<null>"; iBBorderType = "0"; isLockedIBObject = "0"; scrollable = "0"; sendsActionOnEndEditing = "1"; stringValue = "Framework:"; tag = "0"; textColor = "NSNamedColorSpace System controlTextColor"; wraps = "1"; }; "Object 260" = { Class = "NSTextField"; Name = "NSTextField22"; alignment = "0"; autoresizingMask = "10"; backgroundColor = "NSNamedColorSpace System controlColor"; bezelStyle = "0"; continuous = "0"; drawsBackground = "0"; editable = "0"; enabled = "1"; font = "{name = System Font; pointSize = 13}"; frameRect = "{{306, 442}, {403, 17}}"; groupedIBObjectID = "<null>"; iBBorderType = "0"; isLockedIBObject = "0"; scrollable = "0"; sendsActionOnEndEditing = "1"; stringValue = ""; tag = "0"; textColor = "NSNamedColorSpace System controlTextColor"; wraps = "1"; }; }; /* End Objects */ /* Object Hierarchy */ Hierarchy = { "Object 1 <NSCustomObject> (File's Owner)" = { "Object -1 <IBFirstResponder> (First Responder)"; "Object 21 <NSWindowTemplate> (Window)" = { "Object 2 <NSView>" = { "Object 236 <NSScrollView> (NSScrollView3)" = { "Object 237 <NSOutlineView> (NSTableView)" = { "Object 238 <NSTableColumn> (NSTableColumn1)"; }; }; "Object 244 <NSScrollView> (NSScrollView1)" = { "Object 242 <NSTableView> (NSTableView)" = { "Object 243 <NSTableColumn> (NSTableColumn)"; "Object 245 <NSTableColumn> (NSTableColumn1)"; "Object 246 <NSTableColumn>"; }; }; "Object 250 <NSTextField> (NSTextField1)"; "Object 258 <NSTextField> (NSTextField2)"; "Object 259 <NSTextField> (NSTextField21)"; "Object 260 <NSTextField> (NSTextField22)"; }; }; "Object 29 <NSMenu> (MainMenu)" = { "Object 19 <NSMenuItem>" = { "Object 24 <NSMenu>" = { "Object 5 <NSMenuItem>"; "Object 23 <NSMenuItem>"; "Object 92 <NSMenuItem> ()"; }; }; "Object 56 <NSMenuItem>" = { "Object 57 <NSMenu>" = { "Object 58 <NSMenuItem>"; "Object 129 <NSMenuItem> (121)"; "Object 131 <NSMenuItem>" = { "Object 130 <NSMenu>"; }; "Object 134 <NSMenuItem>"; "Object 136 <NSMenuItem> (1111)"; "Object 143 <NSMenuItem>"; "Object 144 <NSMenuItem>"; "Object 145 <NSMenuItem>"; "Object 149 <NSMenuItem>"; "Object 150 <NSMenuItem>"; }; }; "Object 83 <NSMenuItem> ()" = { "Object 81 <NSMenu> ()" = { "Object 72 <NSMenuItem> ()"; "Object 73 <NSMenuItem> (1)"; "Object 74 <NSMenuItem> (2)"; "Object 75 <NSMenuItem> (3)"; "Object 77 <NSMenuItem> (5)"; "Object 78 <NSMenuItem> (6)"; "Object 79 <NSMenuItem> (7)"; "Object 80 <NSMenuItem> (8)"; "Object 82 <NSMenuItem> (9)"; "Object 112 <NSMenuItem> (10)"; "Object 124 <NSMenuItem>" = { "Object 125 <NSMenu>" = { "Object 126 <NSMenuItem>"; }; }; }; }; "Object 103 <NSMenuItem> (1)" = { "Object 106 <NSMenu> (2)" = { "Object 111 <NSMenuItem> ()"; }; }; "Object 217 <NSMenuItem>" = { "Object 205 <NSMenu>" = { "Object 197 <NSMenuItem>"; "Object 198 <NSMenuItem>"; "Object 199 <NSMenuItem>"; "Object 202 <NSMenuItem>"; "Object 203 <NSMenuItem>"; "Object 206 <NSMenuItem>"; "Object 207 <NSMenuItem>"; "Object 211 <NSMenuItem>" = { "Object 212 <NSMenu>" = { "Object 195 <NSMenuItem>"; "Object 196 <NSMenuItem>"; }; }; "Object 214 <NSMenuItem>"; "Object 215 <NSMenuItem>"; "Object 216 <NSMenuItem> (NSMenuItem)" = { "Object 200 <NSMenu> (NSMenu)" = { "Object 201 <NSMenuItem> (NSMenuItem)"; "Object 204 <NSMenuItem> (NSMenuItem1)"; "Object 219 <NSMenuItem> (NSMenuItem2)"; }; }; "Object 218 <NSMenuItem>" = { "Object 220 <NSMenu>" = { "Object 208 <NSMenuItem>"; "Object 209 <NSMenuItem>"; "Object 210 <NSMenuItem>"; "Object 213 <NSMenuItem>"; "Object 221 <NSMenuItem>"; }; }; }; }; }; "Object 240 <NSCustomObject> (Model)"; }; }; /* End Hierarchy */ /* Connections */ Connections = { "Connection 37" = { Action = "performMiniaturize:"; Class = "NSNibControlConnector"; Source = "23"; }; "Connection 39" = { Action = "arrangeInFront:"; Class = "NSNibControlConnector"; Source = "5"; }; "Connection 86" = { Action = "print:"; Class = "NSNibControlConnector"; Source = "78"; }; "Connection 87" = { Action = "runPageLayout:"; Class = "NSNibControlConnector"; Source = "77"; }; "Connection 122" = { Action = "showHelp:"; Class = "NSNibControlConnector"; Source = "111"; }; "Connection 127" = { Action = "clearRecentDocuments:"; Class = "NSNibControlConnector"; Source = "126"; }; "Connection 139" = { Action = "terminate:"; Class = "NSNibControlConnector"; Destination = "1"; Source = "136"; }; "Connection 142" = { Action = "orderFrontStandardAboutPanel:"; Class = "NSNibControlConnector"; Destination = "1"; Source = "58"; }; "Connection 146" = { Action = "hideOtherApplications:"; Class = "NSNibControlConnector"; Destination = "1"; Source = "145"; }; "Connection 152" = { Action = "hide:"; Class = "NSNibControlConnector"; Destination = "1"; Source = "134"; }; "Connection 153" = { Action = "unhideAllApplications:"; Class = "NSNibControlConnector"; Destination = "1"; Source = "150"; }; "Connection 193" = { Action = "performClose:"; Class = "NSNibControlConnector"; Source = "73"; }; "Connection 222" = { Action = "toggleContinuousSpellChecking:"; Class = "NSNibControlConnector"; Source = "219"; }; "Connection 223" = { Action = "undo:"; Class = "NSNibControlConnector"; Source = "207"; }; "Connection 224" = { Action = "copy:"; Class = "NSNibControlConnector"; Source = "197"; }; "Connection 225" = { Action = "checkSpelling:"; Class = "NSNibControlConnector"; Source = "201"; }; "Connection 226" = { Action = "paste:"; Class = "NSNibControlConnector"; Source = "203"; }; "Connection 227" = { Action = "stopSpeaking:"; Class = "NSNibControlConnector"; Source = "195"; }; "Connection 228" = { Action = "cut:"; Class = "NSNibControlConnector"; Source = "199"; }; "Connection 230" = { Action = "showGuessPanel:"; Class = "NSNibControlConnector"; Source = "204"; }; "Connection 231" = { Action = "redo:"; Class = "NSNibControlConnector"; Source = "215"; }; "Connection 232" = { Action = "selectAll:"; Class = "NSNibControlConnector"; Source = "198"; }; "Connection 233" = { Action = "startSpeaking:"; Class = "NSNibControlConnector"; Source = "196"; }; "Connection 235" = { Action = "delete:"; Class = "NSNibControlConnector"; Source = "202"; }; "Connection 241" = { Class = "NSNibOutletConnector"; Destination = "240"; Outlet = "dataSource"; Source = "237"; }; "Connection 251" = { Class = "NSNibOutletConnector"; Destination = "240"; Outlet = "dataSource"; Source = "242"; }; "Connection 252" = { Class = "NSNibOutletConnector"; Destination = "242"; Outlet = "methodTable"; Source = "240"; }; "Connection 253" = { Class = "NSNibOutletConnector"; Destination = "21"; Outlet = "window"; Source = "240"; }; "Connection 254" = { Class = "NSNibOutletConnector"; Destination = "237"; Outlet = "classTable"; Source = "240"; }; "Connection 255" = { Action = "searchClass:"; Class = "NSNibControlConnector"; Destination = "240"; Source = "250"; }; "Connection 257" = { Class = "NSNibOutletConnector"; Destination = "250"; Outlet = "searchBox"; Source = "240"; }; "Connection 262" = { Class = "NSNibOutletConnector"; Destination = "260"; Outlet = "frameworkLabel"; Source = "240"; }; "Connection 263" = { Class = "NSNibOutletConnector"; Destination = "258"; Outlet = "classLabel"; Source = "240"; }; "Connection 264" = { Class = "NSNibOutletConnector"; Destination = "240"; Outlet = "delegate"; Source = "237"; }; }; /* End Connections */ /* Classes */ Classes = { IBClasses = ( { ACTIONS = {searchClass = id; selectClass = id; }; CLASS = ClassesDataSource; LANGUAGE = ObjC; OUTLETS = { classLabel = id; classTable = id; frameworkLabel = id; methodTable = id; searchBox = id; window = id; }; SUPERCLASS = NSObject; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }; /* End Classes */ |
From: Just v. R. <ju...@le...> - 2003-06-10 17:50:28
|
Ronald Oussoren wrote: > > It would be nice if nibclassbuilder would have an option to print > > an overview of classes/objects/connections, but I doubt it will be > > better than what IB already offers. > > Such a beast might be usefull for examples posted on the web. Hm, I just discovered nibtool, a command line app able to print various overviews of nib files. The output isn't particularly pretty, though. Try $ nibtool -a <mynib>.nib (It has a man page.) Just |
From: Michael H. <mw...@py...> - 2003-06-10 16:49:19
|
tmk <li...@ne...> writes: > Yo, > > I've just done a fresh checkout from CVS and issued a "python setup.py > install". > I'm using the gcc-libffi-snapshot20030119-patched.tar.gz libffi from > SF and unix Python 2.3b1 > > It fails with the following message: > > --- cut > [snip] > ld: Undefined symbols: > _CFObj_Convert > _CFObj_New > error: command 'gcc' failed with exit status 1 > > Any clues as to what's going wrong? I think you might want to get Python from CVS too. Cheers, M. -- > Look I don't know. Thankyou everyone for arguing me round in > circles. No need for thanks, ma'am; that's what we're here for. -- LNR & Michael M Mason, cam.misc |
From: Just v. R. <ju...@le...> - 2003-06-10 16:48:41
|
Ronald Oussoren wrote: > > You get a real good overview if you view the nib in IB itself, in > > the "Instances" tab, but set to "list view" (push the lower one of > > the two tiny buttons above the vertical scroller in the main nib > > window. Click on the funny arrows to find out which connections go > > where). > > I didn't know about this one, this is pretty usefull. Yeah, it's very well hidden... I discovered it by accident, it's a great feature, deserving a menu item. > > [ ... ] Btw, outlets (and delegates, datasources, targets, etc.) > > are always weak references, in the Objective-C sense, meaning it's > > a pointer that's not retained, *shudder*...] > > The reason for this is probably that updating release counts is > expensive. Not a very good reason if you ask me. Updating the release > counts is relatively expensive because there is locking involved: ObjC > has no GIL. I think it's simply to avoid circular references. Just |
From: tmk <li...@ne...> - 2003-06-10 16:29:40
|
Yo, I've just done a fresh checkout from CVS and issued a "python setup.py install". I'm using the gcc-libffi-snapshot20030119-patched.tar.gz libffi from SF and unix Python 2.3b1 It fails with the following message: --- cut [snip] ld: Undefined symbols: _CFObj_Convert _CFObj_New error: command 'gcc' failed with exit status 1 Any clues as to what's going wrong? Thanks for any help! = tmk = |
From: Ronald O. <ous...@ci...> - 2003-06-10 16:12:16
|
On Tuesday, Jun 10, 2003, at 17:34 Europe/Amsterdam, Just van Rossum wrote: > Jack Jansen wrote: > >> As a typical (well, somewhat typical) novice user there's one problem >> that I keep running into with PyObjC: it is very difficult to >> undeerstand code that comes from a third party. >> >> For example, I'm now looking at iClass and Just's two browsers, and >> while the code itself is minimal and pretty understandable it doesn't >> really tell me all that much, because all the high-level "code", the >> stuff that glues the world together, is really in the NIB file. > > The nib is basically three things: > - some class definitions > - some object trees > - a set of connections between various objects within the nib > > The nib file itself is pretty much analogous to a pickled object graph. Extactly. A major difference between a pickle and a NIB file is that the NIB loader will use attribute setter methods when these are available. This might be used to find the connections. > > You get a real good overview if you view the nib in IB itself, in the > "Instances" tab, but set to "list view" (push the lower one of the two > tiny buttons above the vertical scroller in the main nib window. Click > on the funny arrows to find out which connections go where). I didn't know about this one, this is pretty usefull. > >> Running NibClassBuilder from the command line helps a little bit, in >> that it at least tells me what the relevant classes are, but this >> isn't really enough, what I need to know are connections and such. > > It would be nice if nibclassbuilder would have an option to print an > overview of classes/objects/connections, but I doubt it will be better > than what IB already offers. Such a beast might be usefull for examples posted on the web. > >> What then occurred to me is that all the action really occurs when >> awakefromnib is called (at least: I assume this is when it happens, >> correct?), > > awakeFromNib, if defined, is called when the object has been > "unpickled", it's a callback that tells you the object is alive again. > I > think it's called right after the object is unpickled, and not when the > entire object graph is ready, but I'm not entirely sure. It is called when the entire object graph is connected, you get no guarantee on the order in which the various awakeFromNib methods are called. > >> and the info on what occurs is in the nib. So, we should >> be able to create a Python rendition of what will happen when >> awakeformnib happens. This would be only for documentary purposes, >> but the Python rendition would show the objects being created and the >> connections being made, something like (example taken from iClass): >> >> Window = NSWindow() >> # Need code here to show the objects in the window and the names >> # we use for them in this code >> Window.item_NSTextField_0 = NSTextField() # Title: framework >> Window.item_NSTextField_1 = NSTextField() # Pos: (309, 442, 397, 17) > > [You're thinking too much in W terms ;-) Views that can contain > subviews > simply have a list of (anonymous) subviews, accessible with > view.subviews(). You only name things you need to have access to, in > the > form of an connected outlet, which is simply an ivar pointing to the > thing it's connected to. Btw, outlets (and delegates, datasources, > targets, etc.) are always weak references, in the Objective-C sense, > meaning it's a pointer that's not retained, *shudder*...] The reason for this is probably that updating release counts is expensive. Not a very good reason if you ask me. Updating the release counts is relatively expensive because there is locking involved: ObjC has no GIL. > >> # ... >> MainMenu = NSMenu() >> # ... >> Model = ClassesDataSource() >> Model.frameworkLabel = Window.item_NSTextField_1 >> # ... >> >> Is this doable? > > Maybe, but it's not what happens, AFAIK, as unpickling an object from a > nib is not done by instantiating it "as usual" (not at all unlike how > pickle works!). I'm not sure how the connections are made, as part of > the unpickling or as a separate step. It's probably doable, but wouldn't involve awakeFromNib. What happens when you load a nib is that the pickled views are restored after which the connections are restored. If you have setter-methods for your outlets these will be called. The hard part is finding the orginal location/name of the widgets. Ronald |
From: SourceForge.net <no...@so...> - 2003-06-10 16:00:55
|
Bugs item #752002, was opened at 2003-06-10 18:00 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=114534&aid=752002&group_id=14534 Category: None Group: None Status: Open Resolution: None Priority: 5 Submitted By: Just van Rossum (jvr) Assigned to: Nobody/Anonymous (nobody) Summary: "zone" arguments not supported? Initial Comment: >>> o = NSObject.alloc().init() >>> z = o.zone() 2003-06-10 17:57:51.046 python2.3[2733] PyObjCPointer created: at 0x39e010 of type {_NSZone=} >>> z <PyObjCPointer object at 0x3eb128> >>> o2 = NSObject.allocWithZone_(z).init() Traceback (most recent call last): File "<stdin>", line 1, in ? ValueError: depythonifying 'struct', got 'PyObjCPointer' >>> o2 = NSObject.allocWithZone_(None).init() Traceback (most recent call last): File "<stdin>", line 1, in ? ValueError: depythonifying 'struct', got 'NoneType' >>> I wouldn't care a thing about zone's if it wasn't for the fact that I found an API I'd like to experiment with that is not available _without_ a zone: NSBundle.pyobjc_classMethods.loadNibFile_externalNameT able_withZone_() I would be happy if it would simply accept None or 0. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=114534&aid=752002&group_id=14534 |
From: Just v. R. <ju...@le...> - 2003-06-10 15:35:01
|
Jack Jansen wrote: > As a typical (well, somewhat typical) novice user there's one problem > that I keep running into with PyObjC: it is very difficult to > undeerstand code that comes from a third party. > > For example, I'm now looking at iClass and Just's two browsers, and > while the code itself is minimal and pretty understandable it doesn't > really tell me all that much, because all the high-level "code", the > stuff that glues the world together, is really in the NIB file. The nib is basically three things: - some class definitions - some object trees - a set of connections between various objects within the nib The nib file itself is pretty much analogous to a pickled object graph. You get a real good overview if you view the nib in IB itself, in the "Instances" tab, but set to "list view" (push the lower one of the two tiny buttons above the vertical scroller in the main nib window. Click on the funny arrows to find out which connections go where). > Running NibClassBuilder from the command line helps a little bit, in > that it at least tells me what the relevant classes are, but this > isn't really enough, what I need to know are connections and such. It would be nice if nibclassbuilder would have an option to print an overview of classes/objects/connections, but I doubt it will be better than what IB already offers. > What then occurred to me is that all the action really occurs when > awakefromnib is called (at least: I assume this is when it happens, > correct?), awakeFromNib, if defined, is called when the object has been "unpickled", it's a callback that tells you the object is alive again. I think it's called right after the object is unpickled, and not when the entire object graph is ready, but I'm not entirely sure. > and the info on what occurs is in the nib. So, we should > be able to create a Python rendition of what will happen when > awakeformnib happens. This would be only for documentary purposes, > but the Python rendition would show the objects being created and the > connections being made, something like (example taken from iClass): > > Window = NSWindow() > # Need code here to show the objects in the window and the names > # we use for them in this code > Window.item_NSTextField_0 = NSTextField() # Title: framework > Window.item_NSTextField_1 = NSTextField() # Pos: (309, 442, 397, 17) [You're thinking too much in W terms ;-) Views that can contain subviews simply have a list of (anonymous) subviews, accessible with view.subviews(). You only name things you need to have access to, in the form of an connected outlet, which is simply an ivar pointing to the thing it's connected to. Btw, outlets (and delegates, datasources, targets, etc.) are always weak references, in the Objective-C sense, meaning it's a pointer that's not retained, *shudder*...] > # ... > MainMenu = NSMenu() > # ... > Model = ClassesDataSource() > Model.frameworkLabel = Window.item_NSTextField_1 > # ... > > Is this doable? Maybe, but it's not what happens, AFAIK, as unpickling an object from a nib is not done by instantiating it "as usual" (not at all unlike how pickle works!). I'm not sure how the connections are made, as part of the unpickling or as a separate step. Just |
From: Jack J. <Jac...@cw...> - 2003-06-10 14:13:01
|
As a typical (well, somewhat typical) novice user there's one problem that I keep running into with PyObjC: it is very difficult to undeerstand code that comes from a third party. For example, I'm now looking at iClass and Just's two browsers, and while the code itself is minimal and pretty understandable it doesn't really tell me all that much, because all the high-level "code", the stuff that glues the world together, is really in the NIB file. Running NibClassBuilder from the command line helps a little bit, in that it at least tells me what the relevant classes are, but this isn't really enough, what I need to know are connections and such. What then occurred to me is that all the action really occurs when awakefromnib is called (at least: I assume this is when it happens, correct?), and the info on what occurs is in the nib. So, we should be able to create a Python rendition of what will happen when awakeformnib happens. This would be only for documentary purposes, but the Python rendition would show the objects being created and the connections being made, something like (example taken from iClass): Window = NSWindow() # Need code here to show the objects in the window and the names # we use for them in this code Window.item_NSTextField_0 = NSTextField() # Title: framework Window.item_NSTextField_1 = NSTextField() # Pos: (309, 442, 397, 17) # ... MainMenu = NSMenu() # ... Model = ClassesDataSource() Model.frameworkLabel = Window.item_NSTextField_1 # ... Is this doable? Is it a good idea? -- Jack Jansen, <Jac...@cw...>, http://www.cwi.nl/~jack If I can't dance I don't want to be part of your revolution -- Emma Goldman |
From: Bob I. <bo...@re...> - 2003-06-09 21:48:37
|
On Monday, Jun 9, 2003, at 16:44 America/New_York, bb...@ma... wrote: >>> Any other ideas for something that is much simpler in Python than in >>> ObjC? > > XML-RPC and similar. > > XML processing is often easier in Python. > > File parsing/grepping/filtering. > > Image manipulation via something like PIL. > > Subprocess/task control -- someone ought to wrap pexpect into a > Cocoa/Python app that would produce droplets or something. Networking code. Numerical code (Numpy). Anything that uses lists (list comprehensions, slices, etc). |