pyobjc-dev Mailing List for PyObjC (Page 283)
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
(1) |
Nov
|
Dec
(2) |
|
From: <bb...@ma...> - 2002-11-26 03:16:22
|
On Monday, November 25, 2002, at 08:56 PM, Peter Montagner wrote: > On Tuesday, November 26, 2002, at 01:24 AM, Ronald Oussoren wrote: >> On Monday, Nov 25, 2002, at 14:37 Europe/Amsterdam, bb...@ma... >> wrote: >>> Key challenge: The classes that are subsequently subclassed by the >>> loaded module must have instance variables that look/feel/act >>> exactly like the iVars in the original parent class.... >> That should be no problem, PyObjC can already to that. For me the key >> challenge is finding a way to initialize an embedded python >> interpreter and run a python script when the plugin bundle is loaded >> (and for bonus points: Initialize exactly 1 interpreter, even when >> loading more than 1 python-based plugin) > Will this work with Apple's python? Or are you planning on shipping a > full python distro with the plugin? Otherwise it'd be a nice hack but > it wouldn't be distributable. It would only work with a distribution of python that has an embeddable library.... i.e. not the Apple build. >>>> Finding a way to automaticly execute a function when 'our' shared >>>> library is loaded will probably the most problematic part of this. >>>> That is: Whenever the 'pyobjcextension' shared libary is loaded >>>> 'initPyObjCExtension' in that library should run. I haven't looked >>>> into this yet and this may well be either trivial or impossible. >>> Assuming that the target application is ObjC, simply creating a >>> +(void)load in a class/category within the dylib should be enough to >>> cause a hunk of code to be executing that can call >>> -initPyObjCExtension. There is also a similar mechanism in the >>> pure C++ world. >> I hadn't though of using a (dummy) class to do this. Thanks for the >> tip. > There are problems with +(void)load. Namely, you can't guarantee the > order of +(void)load methods, so you can't rely on any other classes. > Well, certainly not those in the same bundle. This doesn't sound like > a problem in this case but it is something to be wary of. Not really a problem; in any given hunk o' dynamically loadable code, provide a single +load or ensure that your initialization code is only executed once. Alternatively, the code invoked as a part of the static initializer (which +load really is) should *only* initialize the class in question, never touching anything else. If the initialization code *must* be executed at a point in time when the rest of the framework has been loaded/initialized, then one can typically use something like NSNotificationCenter to cause a notif to be sent (exact mechanism varies according to environment). [In all my experience as a developer, I find it surprising the number of times folks have been tripped up by the undefined order of execution inflicted upon really early initialization code... The NS 3.3 and OS 4.2 AppKit's both suffered from really nasty bugs if you touched classes in the wrong order, thereby causing +initialize to b executed in an "unexpected" order, very bad things would happen. I'm surprised at the number of times I have tripped over this and I should *really* know better by now! In any case, unless explicitly defined... don't assume anything prior to main() or at dyna-load time.] b.bum |
|
From: Peter M. <zig...@po...> - 2002-11-26 03:01:39
|
On Tuesday, November 26, 2002, at 12:28 AM, Peter Montagner wrote: > > On Tuesday, November 26, 2002, at 12:02 AM, Ronald Oussoren wrote: > >> On Monday, Nov 25, 2002, at 13:01 Europe/Amsterdam, Peter Montagner >> wrote: >> >>> On Monday, November 25, 2002, at 10:24 PM, Ronald Oussoren wrote: >>> >>>> That might be usefull for PyObjC as well. I have something like >>>> this on my private wishlist: I'd like to be able to write (system) >>>> prefpanes in Python. >>> >>> Interesting. Well, if you want to take a crack at it, F-Script >>> Anywhere uses libPatch to force itself into a running application. >>> libPatch seems to be a very hard to get bit of code. >>> http://www.phasic.com/~arwyn/libPatch-1.2.tgz >> >> Some time in the future I will probably try to write whatever is >> needed to get prefpanes to work. That is probably simular to what is >> needed to write plugins for programs that use Objective-C classes as >> plugins (e.g. which is basicly what the system preferences >> application is doing). I probably won't work on forcing this onto >> unwilling applications. >> >> Finding a way to automaticly execute a function when 'our' shared >> library is loaded will probably the most problematic part of this. >> That is: Whenever the 'pyobjcextension' shared libary is loaded >> 'initPyObjCExtension' in that library should run. I haven't looked >> into this yet and this may well be either trivial or impossible. > > Well, you could override +alloc on the Principal Class and when the > plugin is loaded you could do what ever is needed to do the python > stuff. I'm not sure how you are going to get a python interpreter into > a running third party app (ie, SysPrefs). One solution would be to use > Distributed Objects. The bundle loaded could launch a python > interpreter and start listening for a DO connection. The python > interpreter would then connect to the loaded bundle. When the > connection is made, the loaded module would return the DO proxy (from > the +alloc method). Returning from +alloc before a connection is made > would be pretty pointless. The Principal Class would never really > exist as an instance because a remote object would take its place. > > I haven't exactly thought this through but it seems possible. It is a > bit of a kludge but I don't see any other way to do it, especially > with Apple's non-embeddable python. It would be fun if someone killed > the python interpreter while System Preferences was still open! Also, > this method relies on DO working in PyObjC which it currently doesn't > seem to. OK, I can answer my own question. This is basically impossible. You can't pass an NSView across an NSConnection and expect it to work in the new application. The reason is very obvious: It will try to do its GUI stuff locally instead of on the other side of the connection. This is entirely reasonable. Ignore the above message. Peter |
|
From: Peter M. <zig...@po...> - 2002-11-26 01:57:04
|
On Tuesday, November 26, 2002, at 01:24 AM, Ronald Oussoren wrote: > On Monday, Nov 25, 2002, at 14:37 Europe/Amsterdam, bb...@ma... wrote: > >> Key challenge: The classes that are subsequently subclassed by the >> loaded module must have instance variables that look/feel/act exactly >> like the iVars in the original parent class.... > > That should be no problem, PyObjC can already to that. For me the key > challenge is finding a way to initialize an embedded python > interpreter and run a python script when the plugin bundle is loaded > (and for bonus points: Initialize exactly 1 interpreter, even when > loading more than 1 python-based plugin) Will this work with Apple's python? Or are you planning on shipping a full python distro with the plugin? Otherwise it'd be a nice hack but it wouldn't be distributable. >>> Finding a way to automaticly execute a function when 'our' shared >>> library is loaded will probably the most problematic part of this. >>> That is: Whenever the 'pyobjcextension' shared libary is loaded >>> 'initPyObjCExtension' in that library should run. I haven't looked >>> into this yet and this may well be either trivial or impossible. >> >> Assuming that the target application is ObjC, simply creating a >> +(void)load in a class/category within the dylib should be enough to >> cause a hunk of code to be executing that can call >> -initPyObjCExtension. There is also a similar mechanism in the pure >> C++ world. > > I hadn't though of using a (dummy) class to do this. Thanks for the > tip. There are problems with +(void)load. Namely, you can't guarantee the order of +(void)load methods, so you can't rely on any other classes. Well, certainly not those in the same bundle. This doesn't sound like a problem in this case but it is something to be wary of. Peter |
|
From: Just v. R. <ju...@le...> - 2002-11-26 00:46:43
|
Folks, I've added support for building standalone apps to bundlebuilder.py. (I've checked it in into the Python CVS tree, I'm sure someone will do a new import into the pyobjc project, I'm going to bed now...) I've tested it with Examples/CurrencyConverter and Examples/TableModel. Requirement #1: it needs freeze's modulefinder.py to be on sys.path. (Work is in progress to add it to the standard lib for 2.3, so maybe this is also a candidate for the MPCompat directory.) Requirement #2: a *static* build of Python. It currently does *not* work for Python.framework. Making this work might not be trivial. To build a standalone app: % python buildapp.py --standalone build To strip all binaries from debugging info: % python buildapp.py --standalone --strip build (This makes the app shrink to more than half the size.) There are some additional options, check --help. Just |
|
From: <bb...@ma...> - 2002-11-25 15:49:40
|
On Monday, November 25, 2002, at 05:54 AM, Peter Montagner wrote:
> On another note, has anyone here looked at CamelBones? I'm not really
> a Perl person but has anyone looked at how it does the Perl-ObjC
> bridge? Could be interesting.
The author of CamelBones and I exchanged a few messages a bit ago.
CamelBones doesn't currently do subclassing. It hopefully will in the
next version, but that won't be due out for a while. The author sends
his thanks-- he has been using the PyObjC module's source to solve some
of the issues he has faces.
According to...
man PerlObjCBridge
... the PerlObjC bridge is bidirectional but does not yet support
subclassing(?) ...
Objective-C objects from Perl programs, allowing Cocoa
objects in Apple Computer's Mac OS X to be directly manip-
ulated from Perl. In addition, Perl objects can be mes-
saged from Objective-C, making it possible for Perl
objects to function as Cocoa delegates and as targets of
notifications and other Cocoa call-back messages. Perl
programs can take advantage of Cocoa's Distributed Objects
mechanism to support messaging between Perl objects and
Objective-C objects (or other Perl objects) in different
address spaces, possibly on different machines.
It also uses the same name mangling as pyobjc. Clearly, the author
had some challenges in wrapping the NSProxy class [perfectly
understandable] because the man page has a huge section on using the
PerlObjC bridge with DO -- something that should "just work" once the
bridge is working correctly.
This is interesting...
When an Objective-C method declares a signed char or
signed short argument, if a negative value is passed the
actual value received by the method is coerced to an
unsigned char or unsigned short, respectively. For exam-
ple, if a method declares a signed char argument and -100
is passed the actual value received by the method will be
156. This is due to bug 2545453 in the Foundation frame-
work.
... either the bug is fixed or our implementation doesn't suffer from
it:
>>> from Foundation import NSNumber
>>> x = NSNumber.numberWithShort_(-100)
>>> x
-100
>>> x.intValue() + 2
-98
The PerlObjC bridge does not support all of the various #defines,
typedef enums, and C Functions found in the Foundation or AppKit. The
author indicates that support is left to the developer.
|
|
From: Jack J. <Jac...@cw...> - 2002-11-25 14:39:20
|
On Monday, Nov 25, 2002, at 14:37 Europe/Amsterdam, bb...@ma... wrote: > In any case, embedding Python as an extension to existing applications > would require a build of Python other than Apple's. Bill, this sort of thing is exactly why I still moderately favor a framework Python over a static python. With framework Python, a plugin would be a couple of lines of C code (call Py_Initialize(), call one python function to set the rest up), and it would be linked against Python.framework. The other options (static Python, python-with-a-dylib) are much more cumbersome to get to work. -- - 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: Ronald O. <ous...@ci...> - 2002-11-25 14:25:35
|
On Monday, Nov 25, 2002, at 14:37 Europe/Amsterdam, bb...@ma... wrote: > On Monday, November 25, 2002, at 08:02 AM, Ronald Oussoren wrote: >> Some time in the future I will probably try to write whatever is >> needed to get prefpanes to work. That is probably simular to what is >> needed to write plugins for programs that use Objective-C classes as >> plugins (e.g. which is basicly what the system preferences >> application is doing). I probably won't work on forcing this onto >> unwilling applications. > > I.e. implement an application that implements enough of the various > classes in Python that are required to make a loaded preferences panel > work in some place other than System Preferences? Or create a plugin > type architecture for new apps? The former, mostly because it would be a neat trick but adding a System Preference is IMHO better than adding lots of small applications when you want to write 'customize-some-unix-tool' applications. > > Key challenge: The classes that are subsequently subclassed by the > loaded module must have instance variables that look/feel/act exactly > like the iVars in the original parent class.... That should be no problem, PyObjC can already to that. For me the key challenge is finding a way to initialize an embedded python interpreter and run a python script when the plugin bundle is loaded (and for bonus points: Initialize exactly 1 interpreter, even when loading more than 1 python-based plugin) > >> Finding a way to automaticly execute a function when 'our' shared >> library is loaded will probably the most problematic part of this. >> That is: Whenever the 'pyobjcextension' shared libary is loaded >> 'initPyObjCExtension' in that library should run. I haven't looked >> into this yet and this may well be either trivial or impossible. > > Assuming that the target application is ObjC, simply creating a > +(void)load in a class/category within the dylib should be enough to > cause a hunk of code to be executing that can call > -initPyObjCExtension. There is also a similar mechanism in the pure > C++ world. I hadn't though of using a (dummy) class to do this. Thanks for the tip. Ronald |
|
From: <bb...@ma...> - 2002-11-25 13:41:53
|
On Monday, November 25, 2002, at 07:01 AM, Peter Montagner wrote: > There is also Unsanity's Application Enhancer: > http://www.unsanity.com/haxies/ape/ As much as some of Unsanity's Haxies are very cool, I would avoid using this as a mechanism for embedding the python interpreter. APE has been a constant source-- directly and indirectly-- of system instability, app crashes, and other problems. Mostly, this has been the result of module developers exercising various APIs incorrectly and not the fault of APE directly. The end result is that APE is synonymous with the Extensions mechanism found in Mac OS 9 and prior. They both provide a way to modify the system in just about anyway desired at the cost of stability and consistency of operation. APE is a hell of a technical achievement, but has caused a boatload of problems within the user community. b.bum |
|
From: <bb...@ma...> - 2002-11-25 13:37:54
|
On Monday, November 25, 2002, at 08:02 AM, Ronald Oussoren wrote: > Some time in the future I will probably try to write whatever is > needed to get prefpanes to work. That is probably simular to what is > needed to write plugins for programs that use Objective-C classes as > plugins (e.g. which is basicly what the system preferences application > is doing). I probably won't work on forcing this onto unwilling > applications. I.e. implement an application that implements enough of the various classes in Python that are required to make a loaded preferences panel work in some place other than System Preferences? Or create a plugin type architecture for new apps? In the first case, Outside of it being an excellent test of the bridge, is the goal to provide the user with standalone prefs apps? Neat idea. Key challenge: The classes that are subsequently subclassed by the loaded module must have instance variables that look/feel/act exactly like the iVars in the original parent class.... In the second case, there isn't really anything to do -- it already "just works" (and is analogous to what a couple of my apps are doing when they mixin ObjC code as frameworks within the app wrapper). You will need to create ObjC headers that declare the classes that are defined in Python that will be subclassed in the bundle (mostly for the iVars, but also just to compile a subclass). To compile the bundle will likely require an '-undefined suppress' option.... > Finding a way to automaticly execute a function when 'our' shared > library is loaded will probably the most problematic part of this. > That is: Whenever the 'pyobjcextension' shared libary is loaded > 'initPyObjCExtension' in that library should run. I haven't looked > into this yet and this may well be either trivial or impossible. Assuming that the target application is ObjC, simply creating a +(void)load in a class/category within the dylib should be enough to cause a hunk of code to be executing that can call -initPyObjCExtension. There is also a similar mechanism in the pure C++ world. In any case, embedding Python as an extension to existing applications would require a build of Python other than Apple's. Not really a big deal -- completely different situation than creating a standalone python App (though it would be nice to have an app extension that doesn't require a multi-MB download because it includes a python distribution). b.bum |
|
From: Peter M. <zig...@po...> - 2002-11-25 13:29:22
|
On Tuesday, November 26, 2002, at 12:02 AM, Ronald Oussoren wrote: > On Monday, Nov 25, 2002, at 13:01 Europe/Amsterdam, Peter Montagner > wrote: > >> On Monday, November 25, 2002, at 10:24 PM, Ronald Oussoren wrote: >> >>> That might be usefull for PyObjC as well. I have something like this >>> on my private wishlist: I'd like to be able to write (system) >>> prefpanes in Python. >> >> Interesting. Well, if you want to take a crack at it, F-Script >> Anywhere uses libPatch to force itself into a running application. >> libPatch seems to be a very hard to get bit of code. >> http://www.phasic.com/~arwyn/libPatch-1.2.tgz > > Some time in the future I will probably try to write whatever is > needed to get prefpanes to work. That is probably simular to what is > needed to write plugins for programs that use Objective-C classes as > plugins (e.g. which is basicly what the system preferences application > is doing). I probably won't work on forcing this onto unwilling > applications. > > Finding a way to automaticly execute a function when 'our' shared > library is loaded will probably the most problematic part of this. > That is: Whenever the 'pyobjcextension' shared libary is loaded > 'initPyObjCExtension' in that library should run. I haven't looked > into this yet and this may well be either trivial or impossible. Well, you could override +alloc on the Principal Class and when the plugin is loaded you could do what ever is needed to do the python stuff. I'm not sure how you are going to get a python interpreter into a running third party app (ie, SysPrefs). One solution would be to use Distributed Objects. The bundle loaded could launch a python interpreter and start listening for a DO connection. The python interpreter would then connect to the loaded bundle. When the connection is made, the loaded module would return the DO proxy (from the +alloc method). Returning from +alloc before a connection is made would be pretty pointless. The Principal Class would never really exist as an instance because a remote object would take its place. I haven't exactly thought this through but it seems possible. It is a bit of a kludge but I don't see any other way to do it, especially with Apple's non-embeddable python. It would be fun if someone killed the python interpreter while System Preferences was still open! Also, this method relies on DO working in PyObjC which it currently doesn't seem to. Peter |
|
From: Ronald O. <ous...@ci...> - 2002-11-25 13:03:41
|
On Monday, Nov 25, 2002, at 13:01 Europe/Amsterdam, Peter Montagner wrote: > > On Monday, November 25, 2002, at 10:24 PM, Ronald Oussoren wrote: >> >> That might be usefull for PyObjC as well. I have something like this >> on my private wishlist: I'd like to be able to write (system) >> prefpanes in Python. > > Interesting. Well, if you want to take a crack at it, F-Script > Anywhere uses libPatch to force itself into a running application. > libPatch seems to be a very hard to get bit of code. > http://www.phasic.com/~arwyn/libPatch-1.2.tgz Some time in the future I will probably try to write whatever is needed to get prefpanes to work. That is probably simular to what is needed to write plugins for programs that use Objective-C classes as plugins (e.g. which is basicly what the system preferences application is doing). I probably won't work on forcing this onto unwilling applications. Finding a way to automaticly execute a function when 'our' shared library is loaded will probably the most problematic part of this. That is: Whenever the 'pyobjcextension' shared libary is loaded 'initPyObjCExtension' in that library should run. I haven't looked into this yet and this may well be either trivial or impossible. Ronald |
|
From: Peter M. <zig...@po...> - 2002-11-25 12:03:36
|
On Monday, November 25, 2002, at 10:24 PM, Ronald Oussoren wrote: > > On Monday, Nov 25, 2002, at 11:54 Europe/Amsterdam, Peter Montagner > wrote: > >> >> On Saturday, November 23, 2002, at 10:10 AM, Jack Jansen wrote: >> >>> I just had a quick look at F-Script (www.fscript.org). It's a >>> smalltalk lookalike that includes access to all of Cocoa, and it >>> comes with a class browser and such niceties. >> >> Yep. I haven't looked at it since Jaguar came out. There is an >> F-Script add-on called F-Script Anywhere that lets you load an >> F-Script interpreter into any running Cocoa application. This is >> useful for exploring a third party app to see what classes it is >> using. Anyway, that's kind of OT. > > That might be usefull for PyObjC as well. I have something like this > on my private wishlist: I'd like to be able to write (system) > prefpanes in Python. Interesting. Well, if you want to take a crack at it, F-Script Anywhere uses libPatch to force itself into a running application. libPatch seems to be a very hard to get bit of code. http://www.phasic.com/~arwyn/libPatch-1.2.tgz Note: This may be old and may not work on Jaguar. I haven't looked at it closely. Don't even know if the link still works. There is also Unsanity's Application Enhancer: http://www.unsanity.com/haxies/ape/ Peter |
|
From: Ronald O. <ous...@ci...> - 2002-11-25 11:25:52
|
On Monday, Nov 25, 2002, at 11:54 Europe/Amsterdam, Peter Montagner wrote: > > On Saturday, November 23, 2002, at 10:10 AM, Jack Jansen wrote: > >> I just had a quick look at F-Script (www.fscript.org). It's a >> smalltalk lookalike that includes access to all of Cocoa, and it >> comes with a class browser and such niceties. > > Yep. I haven't looked at it since Jaguar came out. There is an > F-Script add-on called F-Script Anywhere that lets you load an > F-Script interpreter into any running Cocoa application. This is > useful for exploring a third party app to see what classes it is > using. Anyway, that's kind of OT. That might be usefull for PyObjC as well. I have something like this on my private wishlist: I'd like to be able to write (system) prefpanes in Python. > > >> It comes with source, so there might be some ideas about solutions to >> problems we have(or have had in the past:-). Although: it may be that >> you can send messages from fscript to ObjC but not the other way. I >> haven't looked long enough to be sore. > [... interesting description of f-script removed) Ronald |
|
From: Peter M. <zig...@po...> - 2002-11-25 10:55:02
|
On Saturday, November 23, 2002, at 10:10 AM, Jack Jansen wrote: > I just had a quick look at F-Script (www.fscript.org). It's a > smalltalk lookalike that includes access to all of Cocoa, and it comes > with a class browser and such niceties. Yep. I haven't looked at it since Jaguar came out. There is an F-Script add-on called F-Script Anywhere that lets you load an F-Script interpreter into any running Cocoa application. This is useful for exploring a third party app to see what classes it is using. Anyway, that's kind of OT. > It comes with source, so there might be some ideas about solutions to > problems we have(or have had in the past:-). Although: it may be that > you can send messages from fscript to ObjC but not the other way. I > haven't looked long enough to be sore. It *does* work the other way but AFAIK you can't really create a new class in F-Script or subclass a Cocoa class. It has a mechanism called a block which lets you wrap up a bit of F-Script code in an object. This object (IIRC) responses to the value: selector. For example, you can create a block and set it as the target of an NSButton and set the action to the selector #value. This works but it is nowhere near as elegant or as powerful as what PyObjC can currently do. It may still be interesting to look at because there is a lot of common ground and, as Jack mentioned, it is open source. On another note, has anyone here looked at CamelBones? I'm not really a Perl person but has anyone looked at how it does the Perl-ObjC bridge? Could be interesting. Peter |
|
From: Ronald O. <ous...@ci...> - 2002-11-25 08:07:50
|
On Saturday, Nov 23, 2002, at 18:34 Europe/Amsterdam, Jack Jansen wrote: > > On zaterdag, nov 23, 2002, at 14:47 Europe/Amsterdam, Just van Rossum > wrote: >> Speaking of bundlebuilder and plistlib: I saw that Ronald checked >> them in into >> the pyobjc project, which made me wonder whether repository symlinks >> are >> possible across sf projects. Shall I just open a support request and >> ask? > > I think it would be a major can of worms. I think I would designate > one as the main copy, and use "cvs import" in the other tree. I completely forgot about 'cvs import'. The version in the Python tree should be leading and it was my intention to copy that once in a while. Ronald |
|
From: Bill B. <bb...@co...> - 2002-11-24 04:31:01
|
I moved the autoloading framework bootstrap to __init__.py in Foundation -- it doesn't do anything unless the PYOBJCFRAMEWORKS environment variable is defined. That variable is now defined by the main.m in the Web Services Tool example. I also fixed a couple of bugs in the handling of PYTHONPATH. This reduces the __main__.py to just the lines to import the various modules, define the classes necessary to start the app, and invoke NSApplicationMain(). b.bum |
|
From: <bb...@ma...> - 2002-11-23 20:08:46
|
Ronald [et.al.],
I cleaned up the Web Services Tool example, including cleaning up
the main file and integrating your [Ronald's] changes to support
PYTHONPATH. The main file in Web Services Tool will migrate to the
project templates and should be used for all of the other examples that
use a compiled main.
Please review the code -- I think it is correct [gdb indicates that
it is], but I had to restructure a bunch of stuff and fix a few bugs in
the PYTHONPATH code.
thanks -- gotta run -- will try to do more later today,
b.bum
|
|
From: Just v. R. <ju...@le...> - 2002-11-23 18:52:22
|
Jack Jansen wrote: > On zaterdag, nov 23, 2002, at 14:47 Europe/Amsterdam, Just van Rossum > wrote: > > Go right ahead, but I don't care one single bit for 10.1, so I > > think it's a waste of time (although it would probably be faster to > > do it with /usr/bin/sh. > > Forgot to reply to this bit. What makes 10.1.5 interesting is that it's > the last release that runs on 603 and 604 hardware, 10.2 is G3/G4-only. The only person I know that runs 10.1.5 for that reason (on an old 8500) uses it as a headless server. The only app on that machine that matters is Apache... I don't think this an interesting platform for (standalone) Python/PyObjC GUI apps at *all*. > And I haven't seen any numbers yet on how many people are sticking with > 10.1 because of the price of the upgrade... On the other hand: Python is free ;-) I'm not suggesting we should always demand the latest version (not at all) but I'm all for taking full advantage of the fact that 10.2 ships with Python. I'm convinced it will save us a lot of time. > > Speaking of bundlebuilder and plistlib: I saw that Ronald checked > > them in into the pyobjc project, which made me wonder whether > > repository symlinks are possible across sf projects. Shall I just > > open a support request and ask? > > I think it would be a major can of worms. I think I would designate > one as the main copy, and use "cvs import" in the other tree. And manually update everytime the main copy has been upgraded? I'm not looking forward to do _two_ checkins for each change to each of these files. Why would it be a can of worms? I maintain those modules, and it's my excplicit goal to stay compatible with Python 2.2. Just |
|
From: Jack J. <Jac...@or...> - 2002-11-23 17:36:14
|
On zaterdag, nov 23, 2002, at 14:47 Europe/Amsterdam, Just van Rossum wrote: > Go right ahead, but I don't care one single bit for 10.1, so I think > it's a > waste of time (although it would probably be faster to do it with > /usr/bin/sh. Forgot to reply to this bit. What makes 10.1.5 interesting is that it's the last release that runs on 603 and 604 hardware, 10.2 is G3/G4-only. And I haven't seen any numbers yet on how many people are sticking with 10.1 because of the price of the upgrade... -- - 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: Jack J. <Jac...@or...> - 2002-11-23 17:34:43
|
On zaterdag, nov 23, 2002, at 14:47 Europe/Amsterdam, Just van Rossum wrote: > Speaking of bundlebuilder and plistlib: I saw that Ronald checked them > in into > the pyobjc project, which made me wonder whether repository symlinks > are > possible across sf projects. Shall I just open a support request and > ask? I think it would be a major can of worms. I think I would designate one as the main copy, and use "cvs import" in the other tree. -- - 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: Just v. R. <ju...@le...> - 2002-11-23 13:48:34
|
Jack Jansen wrote: > Hmm, there is something to be said for that too, as it'll work > pre-jaguar too. So now we have three stubs: one in Python, one in ObjC, > one in sh (although I would use /bin/sh, bash wasn't available on > 10.1), and each one has a specific advantage. Go right ahead, but I don't care one single bit for 10.1, so I think it's a waste of time (although it would probably be faster to do it with /usr/bin/sh. We're targeting developers mostly, and by the time Python 2.3 and a new PyObjC get decent exposure, supporting 10.1 will be even less of an issue. But: I'm about to embarge on a major refactoring of bundlebuilder.py: I'll try to make it possible to use different templates. Speaking of bundlebuilder and plistlib: I saw that Ronald checked them in into the pyobjc project, which made me wonder whether repository symlinks are possible across sf projects. Shall I just open a support request and ask? Just |
|
From: Jack J. <Jac...@or...> - 2002-11-23 12:56:27
|
On zaterdag, nov 23, 2002, at 07:07 Europe/Amsterdam, Ronald Oussoren wrote: >> What we would need is a standard unix tool that we can give 1 >> argument and that would execute a mangled version of argv[0]. I don't >> think such a tool exists:-) > > sh? Hmm, there is something to be said for that too, as it'll work pre-jaguar too. So now we have three stubs: one in Python, one in ObjC, one in sh (although I would use /bin/sh, bash wasn't available on 10.1), and each one has a specific advantage. How about using the Python stub as the default, but make it easy to use the other stubs, and in the documentation explain about that? [Incidentally, what I was originally really after was a #! line that would immediately execute the *correct* python, so we wouldn't need the execve(). This, I think, is impossible in the general case. But the execve() doesn't seem to be such a big deal anyway on current hardware]. -- - 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: Ronald O. <ous...@ci...> - 2002-11-23 06:10:11
|
On Saturday, Nov 23, 2002, at 00:10 Europe/Amsterdam, Just van Rossum wrote: > Jack Jansen wrote: > >> On vrijdag, nov 22, 2002, at 22:05 Europe/Amsterdam, Ronald Oussoren >> wrote: >>> Sounds good, but how are you going to deal with moving the .app >>> bundle >>> when not using /usr/bin/python? '#!../Resources/python-interpreter' >>> probably won't work. >> >> Don't even bother trying it: I did, and it doesn't:-) >> >> What we would need is a standard unix tool that we can give 1 argument >> and that would execute a mangled version of argv[0]. I don't think >> such >> a tool exists:-) > > What are you guys on about? The execve wrapper is run as > #!/usr/bin/env python > (which will usually be /usr/bin/python) and the rest is taken from > there. Am I > missing something? MacOSX 10.1 isn't shipped with a python interpreter. Not that this should keep us from using a python-based main by default. Ronald |
|
From: Ronald O. <ous...@ci...> - 2002-11-23 06:08:34
|
On Friday, Nov 22, 2002, at 23:49 Europe/Amsterdam, Jack Jansen wrote:
>
> On vrijdag, nov 22, 2002, at 22:05 Europe/Amsterdam, Ronald Oussoren
> wrote:
>> Sounds good, but how are you going to deal with moving the .app
>> bundle when not using /usr/bin/python?
>> '#!../Resources/python-interpreter' probably won't work.
>
> Don't even bother trying it: I did, and it doesn't:-)
>
> What we would need is a standard unix tool that we can give 1 argument
> and that would execute a mangled version of argv[0]. I don't think
> such a tool exists:-)
sh?
#!/bin/bash
res=$(dirname $(dirname ${0}))/Resources
main=${res}/main.py
export PYTHONPATH
PYTHONPATH=$res
exec /usr/local/bin/python ${main}
# end of file
The above code is completely untested and doesn't like whitespace in
argv[0].
Ronald
> --
> - 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: <bb...@ma...> - 2002-11-22 23:24:05
|
On Friday, November 22, 2002, at 06:08 PM, Just van Rossum wrote: > But you haven't answered our (Jack and me) question how that is even > relevant if > you wipe the process away with execve()? Or did you, and I missed it? > Sorry if > that's the case, but I still don't understand a word of what you're > saying... I did and you missed it. :-) It is in that long winded message that I posted a few days ago... b.bum |