That makes some sense. I was actually reading about the "gtk_main_iteration()" function. Just so I make sure that I understand correctly: The GTK-Server calls gtk_main_interation(), which attempts, a single time, to "catch" a callback signal from the GUI. This is why the "gtk_server_callback(WAIT)" function must be embedded in the loop of the client script. We are making repeateded calls to gtk_main_iteration() in the loop of our client script, which, in essence, simulates the GTK main loop. Is that correct? Landon P.S. - I'll check out that link that you forwarded. Thanks. On 12/2/05, Peter van Eerten <administrator@xxxxxxxxxxxxxx> wrote: > > Hi Landon, > > The 'gtk_server_callback'-function actually calls "gtk_main_iteration()", > which > runs through a GTK event loop, and returns to the caller as soon a signal > has > occured. The occured callback signals and widgets are kept in a global > struct, > so as soon 'gtk_server_callback' returns to the client script, the value > of the > widget is returned (also as a string). The function "gtk_main()" however > calls > the GTK library but never returns, and the GTK-server never can pass > information > to the client script. > > FFI stands for "Foreign Function Interface". The original homepage can be > found > at http://sources.redhat.com/libffi/. > > Peter > > Citeren Sunburned Surveyor <sunburned.surveyor@xxxxxxxxx>: > > > Peter, > > > > Thank you for your quick responses! > > > > I will make sure that I forward information about my NewLISP wrapper for > > GTK-Server as work progresses. I also hope to work on parsing glade-xml > > files to generate GTK GUI's in NewLISP. > > > > I had a couple more questions for you: > > > > I was reading this morning that you use the gtk_main (void) function to > > start GTK's main loop, and gtk_main_quit (void) function to terminate > the > > main loop when programming GTK GUI applications in the C programmig > > language. However, I don't see either of these functions in the > GTK-Server > > dmeo for NewLISP. Are these 2 function calls handled automatically by > > GTK-Server? How do indicate to GTK-Server when the main loop should > start > > and stop? Are these two functions somehow embodied in the > > "gtk_server_callback WAIT" function that is called in the "main loop" > > section of the GTK-Server demo for NewLISP? > > > > What is the full name for FFI? I did a Google search but came up > dry...I'd > > like to learn more about it. > > > > > > On 12/1/05, Peter van Eerten <administrator@xxxxxxxxxxxxxx> wrote: > > > > > > Hi Landon, > > > > > > To answer your questions one by one: > > > > > > 1) Indeed this is an internal call of the GTK-server itself. The > purpose > > > of it > > > is to 'wait' for a new event on the created widgets. If such an event > > > occurs > > > (e.g. a mouseclick on a button for example) the call will return the > > > WidgetID to > > > the script. Then the script can use this ID to take further action. > > > > > > The 'wait' argument will always wait for an event, meaning that the > client > > > script will not continue with execution. Instead of the 'wait' > argument, > > > you can > > > also specify 'none' or 'update'. In these cases, the > gtk_server_callback > > > function will check for an event only once, and return immediately. If > and > > > only > > > if an event has happened, the WidgetID is returned, otherwise a '0' is > > > returned. > > > The difference between 'none' and 'update' is, that the 'update' also > will > > > update all changes and visible mutations to the widgets. (So if you > use > > > 'none' > > > then this has to be done within your client script.) > > > > > > 2) Your observation is correct. A client script always has to send a > > > string in > > > S-expression format to the GTK-server. First the GTK library needs to > be > > > opened > > > with 'dlopen'. On a Linux system, just check 'man dlopen' for details. > On > > > Win32 > > > platforms I use a similar function for this called 'LoadLibrary' - see > > > msdn.microsoft.com. Then the GTK-server parses the incoming string and > > > creates a > > > void pointer out of the function call. > > > > > > The problem of course is that GTK functions have arguments of a > certain > > > type > > > (int, char, float etc). But we do not know in advance how many > arguments a > > > GTK > > > function has, and which type. Therefore this has to be configured in a > > > configfile. With the FFI library I can actually realize the GTK > function. > > > FFI > > > was written especially for situations in which interpreted programs > needed > > > to > > > execute compiled functions. FFI is part of GCC 3.x and newer (also > part of > > > MinGW > > > nowadays). > > > > > > 3) I did not create a particular developer document. But as you will > see, > > > the > > > sourcecode is commented very heavily. Also you can ask additional > > > questions to > > > this mailinglist. > > > > > > BTW I am very curious to see your newLisp wrapper! > > > > > > Br, > > > Peter > > > > > > > > > Citeren Sunburned Surveyor <sunburned.surveyor@xxxxxxxxx>: > > > > > > > Peter, > > > > > > > > It's been a few months since I've had a chance to work with > GTK-Server. > > > But > > > > I had the Flu this last weekend, so I was laid up in the house for a > > > couple > > > > of days and I had some time to play around with it and NewLISP. > > > > > > > > Once again, I would like to thank you for your work on this great > tool. > > > > > > > > I've learned quite a bit of C-Programming since I spoke to you last, > and > > > > I've set up a Linux box at home, and at work. (I'm using Debian > though, > > > not > > > > Slackware.) The C Programming language has proved more of a > challenge > > > than I > > > > thought it would be. I'm am picking it up, but a slower pace than I > > > would > > > > like. I really got thrown with the whole subject of pointers, but > I'm > > > > getting a handle on it now. > > > > > > > > At any rate, I've got a couple more questions for you. > > > > > > > > [1] What is the purpose of the "gtk server-callback WAIT" function > that > > > is > > > > included in the main loop portion of the GTK-Server/NewLISP demo? (I > > > > couldn't find any info on this function in the GTK API docs, and I'm > > > > guessing by the name that it is a function internal to GTK-Server.) > > > > > > > > [2] It seems like the GTK-Server simply accepts GTK function calls > and > > > > arguments as a single string from NewLISP. Is this a correct > > > observation? I > > > > am really curious how the GTK-Server works. Do you parse those > strings > > > and > > > > translate them into actual C calls? If so, how does this work? Are > the > > > > function calls in C compiled and executed as they are recieved, or > are > > > you > > > > using some other mechanism? > > > > > > > > [3] I'm interested in taking a look at the code for GTK-Server. I'd > > > still > > > > like to contribute improvements and assist with maintenance as my > > > knowledge > > > > of C programming improves. Is there any documentation on how the > program > > > > works, or should I just take a look at the source code and ask my > > > questions > > > > on this mailing list? > > > > > > > > Thanks Peter, > > > > > > > > Landon > > > > > > > > P.S. - I hope to wrap many of the GTK-Server functions in NewLISP > > > functions. > > > > This will allow NewLISP users to use GTK GUI's without having to > aquire > > > an > > > > extensive knowledge of GTK-Server. I'll keep you posted on how > things > > > work > > > > out. > > > > > > > > > > -- > > > http://www.gtk-server.org > > > > > > > > > > > -- > http://www.gtk-server.org > >