Thread: [Pyobjc-dev] problem accessing outlet
Brought to you by:
ronaldoussoren
From: Steven D. A. <st...@ne...> - 2002-10-29 06:42:55
|
I appreciate the helpful answers I've gotten so far from Ronald and Bill. I hate to ask so many questions, but I think I'm very close to a working Python/Cocoa application. I've done as I said in a previous post: 1. Start PB, create Cocoa app 2. Open resources, double-click the IB icon 3. Create a subclass of NSObject, in my case HelloWorld 4. Create an outlet called "text" which is the NSTextField intended to display the "Hello World" message 5. Create an action called "sayIt" which is wired to a button on the form 6. Modify main.m to look exactly as described in Ronald's TableModel2 project 7. Create a file Main.py which is in the "Other Sources" in my project. This file looks like this: import sys import os.path sys.path.insert( 0, os.path.join( sys.path[ 0 ], "pyobjc" ) ) import objc import Foundation import AppKit print "foo" class HelloWorld(Foundation.NSObject): __slots__ = ( 'text' ) def __init__( self ): print "hello!" self.text.setStringValue_( "Hello World!" ) def sayIt( self ): self.text.setStringValue_( "Hello World, I am here!" ) sys.exit( AppKit.NSApplicationMain(sys.argv) ) 8. Build the project; if the project was called HelloWorld, you'll have a program called HelloWorld.app. When I build and run the program, the window comes up with the form elements I put in place. I can click the button (which is supposed to make an NSTextField say "hello world"), but nothing happens. In the run window of Project Builder, I see the following messages: foo 2002-10-29 01:36:19.450 pysample[784] Could not connect the action sayIt: to target of class HelloWorld 2002-10-29 01:36:19.672 pysample[784] Can't open input server /Library/InputManagers/Menu Extra Enabler Note that it printed the "foo" that I put in my program, above! However, the "hello" that I print in __init__ never gets displayed. So apparently my file is being processed by no instance of HelloWorld is ever being created -- which may explain why it couldn't connect sayIt to my class. So my question is why am I getting the results I'm getting instead of a correct connection to the sayIt method? steve -- |
From: <bb...@ma...> - 2002-10-29 13:19:47
|
On Tuesday, October 29, 2002, at 01:42 AM, Steven D. Arnold wrote: > I appreciate the helpful answers I've gotten so far from Ronald and > Bill. I > hate to ask so many questions, but I think I'm very close to a working > Python/Cocoa application. This is extremely valuable feedback -- every question helps us to understand where we need to provide better documentation or better examples. > I've done as I said in a previous post: > > 1. Start PB, create Cocoa app > 2. Open resources, double-click the IB icon > 3. Create a subclass of NSObject, in my case HelloWorld > 4. Create an outlet called "text" which is the NSTextField intended to > display the "Hello World" message > 5. Create an action called "sayIt" which is wired to a button on the > form > 6. Modify main.m to look exactly as described in Ronald's TableModel2 > project > 7. Create a file Main.py which is in the "Other Sources" in my project. > This file looks like this: > > import sys > import os.path > > sys.path.insert( 0, os.path.join( sys.path[ 0 ], "pyobjc" ) ) > > import objc > import Foundation > import AppKit > print "foo" > > class HelloWorld(Foundation.NSObject): > __slots__ = ( 'text' ) For an outlet, replace the above line with this: text = objc.IBOutlet('text') I wonder if there is a way to remove this requirement? I'll have to investigate the whole IBConnection stuff -- I just did a boat load of custom IB work (converting NIB files from NS 3.3 -> OS X) and the APIs are still fresh. > def __init__( self ): > print "hello!" > self.text.setStringValue_( "Hello World!" ) This should just be init() and it should return self. However... For initialization from a NIB file, implement awakeFromNib() -- there are cases where the object might be instantiated before the NIB is loaded (NIB loading takes a significant hunk of time -- lazy loading the NIB for a piece of UI that the user may not use can increase perceived performance). From the currency example: def awakeFromNib(self): print "awakeFromNib" # Provide some defaults for the user... self.dollarField.setFloatValue_(2.0) self.rateField.setFloatValue_(3.0) > def sayIt( self ): > self.text.setStringValue_( "Hello World, I am here!" ) An action method takes a single argument, the sender of the action. So, this should be: def sayIt_( self, sender ): self.text.setStringValue_( "Hello World, I am here!" ) b.bum |
From: Steven D. A. <st...@ne...> - 2002-10-29 16:10:14
|
On 10/29/02 8:19 AM, "bb...@ma..." <bb...@ma...> wrote: > This is extremely valuable feedback -- every question helps us to > understand where we need to provide better documentation or better > examples. Your message gave me everything I needed -- HelloWorld works! As thanks for the help, I'll write a guide to creating a Cocoa app in Python, using HelloWorld as an example. I guess I'll put it in HTML format to best support graphics and avoid proprietary formats. I'll contribute it to the project under your license terms. I should have a rough draft in a week or so. If you want any of the above to be different, e.g. text format instead of HTML, let me know ASAP. Thanks again! steve -- |
From: <bb...@ma...> - 2002-10-29 16:16:27
|
Thank you! That would be brilliant -- we can drop it in the Docs directory. At some point, I really want to pull out the web site and stick it in CVS. It would be doubly-brilliant if we could compile the web site and the shipped-with-the-module docs from the same tree of source [Fink does this -- and Fink compiles the content down to HTML, text, and-- I believe-- some other formats all from the same source]. But-- a "getting started writing Cocoa Python" apps would be a HUGE step forward from where we are today! If you want to have a crack at some new content for http://pyobjc.sourceforge.net/, please feel free! b.bum On Tuesday, October 29, 2002, at 11:10 AM, Steven D. Arnold wrote: > On 10/29/02 8:19 AM, "bb...@ma..." <bb...@ma...> wrote: > >> This is extremely valuable feedback -- every question helps us to >> understand where we need to provide better documentation or better >> examples. > > Your message gave me everything I needed -- HelloWorld works! > > As thanks for the help, I'll write a guide to creating a Cocoa app in > Python, using HelloWorld as an example. I guess I'll put it in HTML > format > to best support graphics and avoid proprietary formats. I'll > contribute it > to the project under your license terms. I should have a rough draft > in a > week or so. If you want any of the above to be different, e.g. text > format > instead of HTML, let me know ASAP. > > Thanks again! > > steve > -- > > > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Pyobjc-dev mailing list > Pyo...@li... > https://lists.sourceforge.net/lists/listinfo/pyobjc-dev > b.bum I ride tandem with the random.... .... things don't run the way I planned them. |
From: Jack J. <Jac...@or...> - 2002-10-29 21:31:25
|
On dinsdag, oktober 29, 2002, at 05:16 , bb...@ma... wrote: > Thank you! That would be brilliant -- we can drop it in the > Docs directory. At some point, I really want to pull out the > web site and stick it in CVS. It would be doubly-brilliant if > we could compile the web site and the shipped-with-the-module > docs from the same tree of source [Fink does this -- and Fink > compiles the content down to HTML, text, and-- I believe-- some > other formats all from the same source]. > > But-- a "getting started writing Cocoa Python" apps would be a > HUGE step forward from where we are today! Bill Fancher contributed a script to convert the Python manual from it's HTML form to the form required by Apple Help Viewer (see Mac/OSX/setupDocs.py in the Python CVS tree). Even though help viewer is a [censored] piece of [censored] (although it's slightly better in Jaguar, admitted) it has the advantage of the search engine and of everyone understanding it. And I think it would be good to have all the Python documentation together in one place, which would then have sections for Python Language, IDE, PyObjC and anything else. -- - Jack Jansen <Jac...@or...> http://www.cwi.nl/~jack - - If I can't dance I don't want to be part of your revolution -- Emma Goldman - |
From: Steven D. A. <st...@ne...> - 2002-10-29 22:42:45
|
On 10/29/02 4:31 PM, "Jack Jansen" <Jac...@or...> wrote: > > Bill Fancher contributed a script to convert the Python manual > from it's HTML form to the form required by Apple Help Viewer > (see Mac/OSX/setupDocs.py in the Python CVS tree). > > Even though help viewer is a [censored] piece of [censored] > (although it's slightly better in Jaguar, admitted) it has the > advantage of the search engine and of everyone understanding it. > And I think it would be good to have all the Python > documentation together in one place, which would then have > sections for Python Language, IDE, PyObjC and anything else. That makes a lot of sense. It almost sounds like I should use a version of XML with some tool that can convert to HTML, text, or other formats. I could then hack the script you mentioned so that the same XML source could be converted to Apple Help format. I'll do a search for such tools; if anyone knows of such a tool, please send me a link. In the absence of such a tool, I'll go ahead with HTML for now, and keep my eyes open. steve -- |
From: Donovan P. <ds...@ma...> - 2002-10-29 23:32:34
|
On Tuesday, October 29, 2002, at 02:42 PM, Steven D. Arnold wrote: > On 10/29/02 4:31 PM, "Jack Jansen" <Jac...@or...> wrote: > >> >> Bill Fancher contributed a script to convert the Python manual >> from it's HTML form to the form required by Apple Help Viewer >> (see Mac/OSX/setupDocs.py in the Python CVS tree). >> >> Even though help viewer is a [censored] piece of [censored] >> (although it's slightly better in Jaguar, admitted) it has the >> advantage of the search engine and of everyone understanding it. >> And I think it would be good to have all the Python >> documentation together in one place, which would then have >> sections for Python Language, IDE, PyObjC and anything else. > > That makes a lot of sense. It almost sounds like I should use a > version of > XML with some tool that can convert to HTML, text, or other formats. I > could then hack the script you mentioned so that the same XML source > could > be converted to Apple Help format. > > I'll do a search for such tools; if anyone knows of such a tool, > please send > me a link. In the absence of such a tool, I'll go ahead with HTML for > now, > and keep my eyes open. There's been some work done recently on the documentation tool that Twisted uses (http://www.twistedmatrix.com). It used to be called generate-domdocs and it basically took XHTML and used some special attributes to indicate where function reference, python source files, etc should be placed. Moshe Zadka refactored it recently into a package, twisted.lore, and added LaTeX support (and thus, ps and pdf support) You might want to drop by #twisted on irc.openprojects.net or email the twisted list to get more information. I personally would be interested in adding Apple Help Viewer support to lore. The only question is would I have time to do it :) Donovan |
From: <sp...@al...> - 2002-10-30 12:24:28
|
Le mardi, 29 oct 2002, =E0 23:42 Europe/Paris, Steven D. Arnold a =E9crit = : > That makes a lot of sense. It almost sounds like I should use a=20 > version of > XML with some tool that can convert to HTML, text, or other formats. = I > could then hack the script you mentioned so that the same XML source=20= > could > be converted to Apple Help format. > > I'll do a search for such tools; if anyone knows of such a tool,=20 > please send > me a link. In the absence of such a tool, I'll go ahead with HTML for=20= > now, > and keep my eyes open. Hi! I'm actually writing such a tool: it's called "SimTex", it allows to=20 write a document in simply formatted text, which is then converted to=20 an XML document. This XML document conforms to the "Orchid=E9eNoire" XML=20= application (also by me), which comes with a processing chain that=20 allows to convert the input XML file to various formats including HTML,=20= plain text, PS and PDF. It is rather easy to implement a new backend. You can have a look at <http://projects.type-z.org>. Documentation is=20 included into the source distros, under the Documentation folder. Hope this helps, -- S=E9bastien -- =ABToo old to be alternative, too alternative to be old.=BB <http://www.type-z.org> | Robert Smith, talking about his epitaph. |
From: Ronald O. <ous...@ci...> - 2002-10-30 12:37:03
|
I've used StructuredText for the small bits of documentation that I've=20= written upto now. This is more or less plain text and there are tool=20 available (on the 'net) to convert this to other formats. Using ST was an arbitrary choice, although I'm charmed by the fact that=20= the documents look so much like plain text and can easily be read from=20= a text editor. Ronald On Wednesday, Oct 30, 2002, at 09:53 Europe/Amsterdam, S=E9bastien = Pierre=20 wrote: > > Le mardi, 29 oct 2002, =E0 23:42 Europe/Paris, Steven D. Arnold a = =E9crit : > >> That makes a lot of sense. It almost sounds like I should use a=20 >> version of >> XML with some tool that can convert to HTML, text, or other formats. =20= >> I >> could then hack the script you mentioned so that the same XML source=20= >> could >> be converted to Apple Help format. >> >> I'll do a search for such tools; if anyone knows of such a tool,=20 >> please send >> me a link. In the absence of such a tool, I'll go ahead with HTML=20 >> for now, >> and keep my eyes open. > > Hi! > > I'm actually writing such a tool: it's called "SimTex", it allows to=20= > write a document in simply formatted text, which is then converted to=20= > an XML document. This XML document conforms to the "Orchid=E9eNoire" = XML=20 > application (also by me), which comes with a processing chain that=20 > allows to convert the input XML file to various formats including=20 > HTML, plain text, PS and PDF. It is rather easy to implement a new=20 > backend. > > You can have a look at <http://projects.type-z.org>. Documentation is=20= > included into the source distros, under the Documentation folder. > > Hope this helps, > > -- S=E9bastien > > -- > =ABToo old to be alternative, too alternative to be old.=BB > <http://www.type-z.org> | Robert Smith, talking about his epitaph. > > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Pyobjc-dev mailing list > Pyo...@li... > https://lists.sourceforge.net/lists/listinfo/pyobjc-dev > |
From: <sp...@al...> - 2002-10-30 14:38:00
|
Le mercredi, 30 oct 2002, =E0 13:36 Europe/Paris, Ronald Oussoren a = =E9crit=20 : > I've used StructuredText for the small bits of documentation that I've=20= > written upto now. This is more or less plain text and there are tool=20= > available (on the 'net) to convert this to other formats. > > Using ST was an arbitrary choice, although I'm charmed by the fact=20 > that the documents look so much like plain text and can easily be read=20= > from a text editor. > SimTex is actually a robust evolution of StructuredText - it is more=20 flexible, has a real object model, and can be easily extended. The API=20= is almost completely documented, and of course it is written in Python=20= :) The only drawback yet is that I did not find the time to update the=20 reference manual... -- S=E9bastien -- =ABIl vaut mieux suivre une voix stupide que l'on connait, plut=F4t qu'une intelligente que l'on ne connait pas.=BB <http://www.type-z.org> -- No comment on Jacques C. |
From: Steven D. A. <st...@ne...> - 2002-10-31 08:48:38
|
I looked into the formats suggested by list members as well as consulting Google on the subject of documentation formats. My search was brief and cursory, so I may have missed many different projects. I'm still open to other suggestions should list members have any. My criteria are: (1) Must be in an easily-parseable format that can be compiled to many different formats. (2) Can't be proprietary. (3) Must support graphics. (4) Should be easy to read in native format. XML is better than binary, something analogous to plain text is better than XML. (5) Should be fairly mature, not a lot of bugs. (6) Written in Python is a plus. (7) It would be beneficial if sophisticated editors existed on Mac OS X for writing docs using the protocol/tool. SimTex looks very impressive. It seems to provide for all needed formats except Apple Help Format, for which we could add a Python backend. It appears to be a fairly mature project from my brief look at it. I also took a look at the TwistedMatrix project, as recommended by Donovan, but I wasn't able to find a reference to their twisted.lore. (Not even on Google...I searched for "twisted.lore matrix" getting zero hits; "twisted lore matrix" getting a bunch of unrelated hits, a couple others with similar results...you get the picture. If someone provides me with a specific pointer to this project, I'll take another look.) I looked at DocBook, a widely used XML DTD. There are a number of tools for writing DocBook documentation. I only found one obvious tool for Mac OS X; remember though that my search was cursory and there could be others I don't know about, especially ones written in Java. Overall, I like SimTex best because (1) It's written in Python; (2) Uses an OSI license (GPL); (3) Looks more-or-less like regular text before it's compiled to another format, hence any text editor is a good authoring tool; and (4) The author is right here with us if questions arise. The usage of this tool could influence or create more work for future contributors, including the authors themselves, so if there are any concerns about using SimTex, please let me know as soon as possible. Bear in mind that my search was very much a seat-of-the-pants affair, so one plausible criticism is that we ought to do a more detailed survey of the options, perhaps weighting the criteria above, before committing to one alternative. I'm more in the mindset of "make a reasonable choice quickly and get it out ASAP," which is what I have tried to do in the survey above, but if there's a lot of concern about this I'll rethink that attitude. Thanks again for the feedback, steve -- |
From: <sp...@al...> - 2002-10-31 10:06:42
|
Le jeudi, 31 oct 2002, =E0 09:48 Europe/Paris, Steven D. Arnold a =E9crit = : > SimTex looks very impressive. It seems to provide for all needed=20 > formats > except Apple Help Format, for which we could add a Python backend. It > appears to be a fairly mature project from my brief look at it. Thanks :) SimTex has not been yet publicly released, but it is near a finalised=20 version. The only problem is that documentation is not completed yet,=20 and that some advanced features lack (custom markup, appendices).=20 Orchid=E9eNoire, the SimTex document processor, will also soon support=20= DocBook as an output format, and it might be relatively easy to output=20= Apple Help Format (conversion is made using XSLT) - if someone points=20 me out some doc on Apple Help Format, I would be able write the=20 transformation stylesheet soon! > Overall, I like SimTex best because (1) It's written in Python; (2)=20 > Uses an > OSI license (GPL); (3) Looks more-or-less like regular text before = it's > compiled to another format, hence any text editor is a good authoring=20= > tool; > and (4) The author is right here with us if questions arise. If you use SimTex, you can be assured that I will do my best to make=20 SimTex meet your needs and fix remaining bugs. Same thing for=20 Orchid=E9eNoire. BTW, the difference between SimTex and Orchid=E9eNoire might be unclear,=20= so here is a small explaination: - SimTex is a structured text to XML processor, it allows to produce=20= valid XML without writing XML - Orchid=E9eNoire is an XML application similar to DocBook, but aimed = at=20 simplicity, and also a document processing chain, that uses XSLT as its=20= transformation language. It currently supports HTML, PS, PDF, plain=20 text and Lout. I personally also think that SimTex/Orchid=E9eNoire is one of the most=20= versatile solution and that you will never get stuck with it ;). The=20 API is open and comprehensible, the format is XML and transformations=20 are easily made with XSLT. As I mentioned, apart from a few usability=20 bugs (command line options) and an incomplete reference manual,=20 SimTex/Orchid=E9eNoire would ease the process of editing and producing=20= documentation. If you want to subscribe to the SimTex mailing list, simply send a mail=20= to <sim...@ty...>. If you want to have some help on=20 possible list manager commands, send to <sim...@ty...>. For=20 those having troubles installing 4Suite, I will try to make SimTex work=20= with PyXML only. Thanks for your interest in SimTex, -- S=E9bastien -- =ABAnd never can a man be more disastrously in death than when death itself shall be deathless.=BB <http://www.type-z.org> -- St. Augustine |