Hey all,
The tclpd API/loader has gotten me thinking about making a pure Tcl API for writing GUIs. I was thinking a bit about how to handle the Tcl code for the separate pd and pd-gui processes. Is there a way in Tcl to get the contents of a procedure and stick it into a variable?
I was thinking that it would be nice if the person writing the GUI object didn't have to think about the separate processes and sys_vgui. Instead, the tclpd API would take the functions that run on pd-gui, and handle sending them over to pd-gui via sys_vgui. So in the API, it would just look like one thing.
Make sense? Any thoughts, idea, suggestions?
.hc
------------------------------------------------------------------------ ----
'You people have such restrictive dress for women,’ she said, hobbling away in three inch heels and panty hose to finish out another pink-collar temp pool day. - “Hijab Scene #2", by Mohja Kahf
On Sun, 28 Oct 2007, Hans-Christoph Steiner wrote:
The tclpd API/loader has gotten me thinking about making a pure Tcl API for writing GUIs. I was thinking a bit about how to handle the Tcl code for the separate pd and pd-gui processes. Is there a way in Tcl to get the contents of a procedure and stick it into a variable?
You need to redefine proc proc in a way that calls the older proc proc and does something else with the arguments. e.g.:
rename proc oldproc oldproc proc {name arglist body} { ... oldproc $name $arglist $body }
I was thinking that it would be nice if the person writing the GUI object didn't have to think about the separate processes and sys_vgui.
I think it's good to not have to think about encoding and decoding values for the other side, which is why I introduced abstraction layers such as sys_mgui and pd_upload and proc netsend.
I think that inter-process synchronisation, doing things in the right order and at the right moment is such, is a lot harder to do and a lot harder to abstract. Basically, you never can fully abstract a remote procedure call in a non-blocking way, and you don't want to use the blocking way because this is a realtime app.
Instead, the tclpd API would take the functions that run on pd-gui, and handle sending them over to pd-gui via sys_vgui. So in the API, it would just look like one thing.
If you just want to upload code over the gui socket, have a wrapped sys_gui that you'd use as a block of code:
sys_gui { proc blah {} { ... } proc stuff {a b} { ... } ... }
and it'll just do what it wants to do.
_ _ __ ___ _____ ________ _____________ _____________________ ... | Mathieu Bouchard - tél:+1.514.383.3801, Montréal QC Canada