[SciPy-dev] gui_thread and chaco under Linux
prabhu at aero.iitm.ernet.in
Wed Oct 8 12:49:05 CDT 2003
>>>>> "PP" == Pearu Peterson <pearu at scipy.org> writes:
>> wrapped_class = gui_thread.register(some_wx_python_class)
>> Then you create wrapped_class instances as you would create
>> some_wx_python_class and it should work (in theory).
PP> This will not work for chaco anymore because chaco executes
PP> wxPython functions during chaco.wxplt import.
>> I can't test this because I cannot run chaco anymore. kiva no
>> longer builds under gcc 2.95.4. :(
PP> Yes. In fact, this triggered me to upgrade gcc on my debian
PP> system. It turned out to be quite painless, now I have
PP> gcc-2.95 gcc-3.2 gcc-3.3
PP> nicely co-existing on my system. You could try the same ^K
Well, I'm running Woody (stable) so all I have is gcc-3.0 which I've
heard has bugs. testing and unstable are too unstable for me at the
>> Admittedly, the gui_thread approach is a hack and has
>> limitations but it used to work pretty OK. Eric was talking
>> about a better approach that IIRC is similar to your approach
>> (1). As you notice its a non-trivial job and AFAIK no one has
>> yet had a stab at it.
PP> I took this challenge and here are intermediate results:
>>>> from parallel_exec import ParallelExec pexec=ParallelExec() #
PP> that is, I can already use chaco from my Linux prompt! And I
PP> have made no changes to chaco for that. The next step is to
Nice. This looks to be similar to the code written for Gtk by
someone. IIRC it was available on ASPN.
>>>> from chaco.wxplt import * plot([1,2])
I'd think you'd need to modify or wrap around wxPython itself to get
this to work that transparently or you'd need to do something similar
Actually it looks like this could be easy to hack into wxPython. Most
of wxPython's work is done inside of a call to apply. So if we
quietly replace apply inside wxPython's namespace with a massaged
apply that calls the real apply in the right thread, I think we should
be all set. This is a hack but if its this easy I guess Robin could
be convinced to add cleaner support for it.
orig_apply = apply
def apply(o, *args, **kwargs):
pexec('orig_apply(o, *args, **kwargs)')
I don't know if this will work with pexec the way its implemented
currently but I think you get what I'm trying to say here.
More information about the Scipy-dev