Re: discoveries! gtk DOES dim... how can i infinite-loop?
On Thu, Jan 19, 2012 at 09:05:47PM -0700, Michael Torrie wrote: Date: Thu, 19 Jan 2012 21:05:47 -0700 From: Michael Torrie torr...@gmail.com Subject: Re: discoveries! gtk DOES dim... how can i infinite-loop? To: Gary Kline kl...@thought.org CC: GTK Devel List gtk-app-devel-list@gnome.org Gary, based on conversations in the past about what you are trying to do, I whipped up a little program that just might approach what you are trying to do. If I understand you correctly, you wish to do the following: - type text in an editor where abbreviations are expanded (by macros in gvim or some other mechanism in another editor) to full words or phrases, so that you can compose text faster, even with disabilities. - speak the written text with espeak the text - save what was spoken so you can load it back up and re-speak it, or edit it and speak it again. Seems like the big requirement is the ability to use abbreviations. I'm not clear on how gvim does it for you, but the GtkSourceView2 widget (not part of GTK, but all distros have it and it's fully integrated with GTK) supports what are called Completions. They are intended for use with programming, but they also can function as an abbreviation mechanism. As you type, when an abbreviation is detected it can pop up a suggestion that pressing enter will accept, or keep typing and the suggestion will change or go away. Multiple suggestions can be made as well. So, here's my program. It's written in Python, since python is one of the absolute best languages for rapid prototyping. This app did not take much time to write, and it gave me a chance to refresh my skills and learn how to use some more advanced GTK widgets like the TreeView. Anyway, my program does not save what was spoken to disk, though that can be added very easily. It does save what was spoken during one session of running the program. As well, currently abbreviations are hard-coded in completion.py, but again that could be saved to disk easily. There's already a dialog for editing the abbreviations within the program. I believe it does most of what you require, and could be expanded very rapidly. It is written in Python, but now that the prototype is made, it could be converted to C easily, though there is no advantage in doing that really. The GUI itself was made in Glade-3, so the actual widgets and the magic behind the TreeView is hidden somewhat. Glade has the advantage of making it very easy to rapidly develop the GUI. Anyway, the source code is here: git repo: http://www.torriefamily.org/~torriem/tts_assist.git tarball: http://www.torriefamily.org/~torriem/tts_assist.tar.gz You will need to install pygtk2 and gtksourceview2. On Fedora those are the exact package names. I think it would be fun to develop this further (perhaps porting to GTK3), but I thought I'd post what I had. If it's not useful, that's fine. Python makes coding fun and very fast! Michael this sound very much worth looking into and i will ... just as soon as i figure out what is causing my gtk app to dim. {by the way, two+ days without power up here in metro seattle in what cause the delay in responding. i was getting ready to google up the async call the first time the power went South... .} i am still resty with gtk and thursday night it occurred to me that sinced i was beginning with the Run button, that *that* might be where i should jump into a loop. rather than from my voice_edit recursive function. gary -- Gary Kline kl...@thought.org http://www.thought.org Public Service Unix Journey Toward the Dawn, E-Book: http://www.thought.org The 8.57a release of Jottings: http://jottings.thought.org Twenty-five years of service to the Unix community. ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
Re: discoveries! gtk DOES dim... how can i infinite-loop?
On 01/21/2012 09:49 PM, Gary Kline wrote: this sound very much worth looking into and i will ... just as soon as i figure out what is causing my gtk app to dim. I did give you the key to keeping GTK from dimming in my other post. It's pretty easy to iterate the main loop while you are looping in your own while loop. Anyway my code is complete and, except for saving the text and abbreviations to disk, it does everything you want with no need to try to drive gvim or anything. You could add the save to disk stuff quite quickly (even having to learn python!) And of course my secret wish is for you to learn python as you really will be able to code up these sorts of things 2-3 times faster than C. It's really quite something. My error rate per lines of code drops by a factor of 2 more compared to C. I would like some feedback on its operation. I want to know if the mechanism for doing abbreviations is as usable as your gvim method. The tarball I posted is already out of date. use the git repository url I posted instead. (git clone http://www.torriefamily.org/~torriem/tts_assist.git). cheers, Michael ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
Re: discoveries! gtk DOES dim... how can i infinite-loop?
On Fri, Jan 20, 2012 at 8:12 AM, Gary Kline kl...@thought.org wrote: On Thu, Jan 19, 2012 at 11:18:22AM +0100, David Ne??as wrote: Date: Thu, 19 Jan 2012 11:18:22 +0100 From: David Ne??as y...@physics.muni.cz Subject: Re: discoveries! gtk DOES dim... how can i infinite-loop? To: Gary Kline kl...@thought.org Cc: GTK Devel List gtk-app-devel-list@gnome.org On Thu, Jan 19, 2012 at 12:58:09AM -0800, Gary Kline wrote: i've spent the last many days tryoing [on ubuntu] anf tonight on my EEE-900A netbook [debian]. both dim when i go into a recursive loop. 1. edit with gvim 2. have espeak voice gvim when it is written 3 goto 1; tonight i did everything absolutedly write in chercking various things, but the app still dimd if i have the function call itselg. i should have asked this list whether there there is a gtk call that let's things go into either an infinite loop, or, would a for() loop work for 300-500 loops? if not, i need to rethink my algorithm. That is probably what you have to do. If I understand what your code does (and how) then while gvim is running your app is *not*. Your app is blocked and waits until gvim terminates. The same for espeak. i think you have it nailed! [g]vim creates a .SWAP file in the pwd; so since gvim creates .talk.N.txt.swp while the textfile is being types into, i do a while(!done) check on the .swap file. then i do a second while loop while talk.N.txt exists. finally, espeak [flags] | aplay speaks the words in the text file. [ i tee the output of espeak and hand it off to aplay because of strange driver bugs here on my desktop.] You need to use a function such as g_spawn_async() to execute it. Then it depends how you communicate with the programs. If you just want to know when it terminates use waitpid(). thanks much. i'll check g_spawn_async() to see how it is used. i hadn't thought of any of the flavors of wait; everything has worked: gvim//write-quit/espeak a dozen times. but the gtk app is greyed and the quit button doesn't work! FWIW, we have g_child_watch_add() which is generally easier to use than calling waitpid() directly (usually you don't want to block on waitpid(), so you would have to handle the SIGCHLD unix signal and then call waitpid() from the unix signal, which has effectively pre-empted your process... since doing all of this is much more complex than it needs to be, I highly recommend using g_child_watch_add() to do this safely for you). Cheers, -Tristan gary Yeti -- Gary Kline kl...@thought.org http://www.thought.org Public Service Unix Journey Toward the Dawn, E-Book: http://www.thought.org The 8.57a release of Jottings: http://jottings.thought.org Twenty-five years of service to the Unix community. ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
discoveries! gtk DOES dim... how can i infinite-loop?
i've spent the last many days tryoing [on ubuntu] anf tonight on my EEE-900A netbook [debian]. both dim when i go into a recursive loop. 1. edit with gvim 2. have espeak voice gvim when it is written 3 goto 1; tonight i did everything absolutedly write in chercking various things, but the app still dimd if i have the function call itselg. i should have asked this list whether there there is a gtk call that let's things go into either an infinite loop, or, would a for() loop work for 300-500 loops? if not, i need to rethink my algorithm. syggestions welcome! gary -- Gary Kline kl...@thought.org http://www.thought.org Public Service Unix Journey Toward the Dawn, E-Book: http://www.thought.org The 8.57a release of Jottings: http://jottings.thought.org Twenty-five years of service to the Unix community. ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
Re: discoveries! gtk DOES dim... how can i infinite-loop?
On Thu, Jan 19, 2012 at 12:58:09AM -0800, Gary Kline wrote: i've spent the last many days tryoing [on ubuntu] anf tonight on my EEE-900A netbook [debian]. both dim when i go into a recursive loop. 1. edit with gvim 2. have espeak voice gvim when it is written 3 goto 1; tonight i did everything absolutedly write in chercking various things, but the app still dimd if i have the function call itselg. i should have asked this list whether there there is a gtk call that let's things go into either an infinite loop, or, would a for() loop work for 300-500 loops? if not, i need to rethink my algorithm. That is probably what you have to do. If I understand what your code does (and how) then while gvim is running your app is *not*. Your app is blocked and waits until gvim terminates. The same for espeak. You need to use a function such as g_spawn_async() to execute it. Then it depends how you communicate with the programs. If you just want to know when it terminates use waitpid(). Yeti ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
Re: discoveries! gtk DOES dim... how can i infinite-loop?
On Thu, Jan 19, 2012 at 11:18:22AM +0100, David Ne??as wrote: Date: Thu, 19 Jan 2012 11:18:22 +0100 From: David Ne??as y...@physics.muni.cz Subject: Re: discoveries! gtk DOES dim... how can i infinite-loop? To: Gary Kline kl...@thought.org Cc: GTK Devel List gtk-app-devel-list@gnome.org On Thu, Jan 19, 2012 at 12:58:09AM -0800, Gary Kline wrote: i've spent the last many days tryoing [on ubuntu] anf tonight on my EEE-900A netbook [debian]. both dim when i go into a recursive loop. 1. edit with gvim 2. have espeak voice gvim when it is written 3 goto 1; tonight i did everything absolutedly write in chercking various things, but the app still dimd if i have the function call itselg. i should have asked this list whether there there is a gtk call that let's things go into either an infinite loop, or, would a for() loop work for 300-500 loops? if not, i need to rethink my algorithm. That is probably what you have to do. If I understand what your code does (and how) then while gvim is running your app is *not*. Your app is blocked and waits until gvim terminates. The same for espeak. i think you have it nailed! [g]vim creates a .SWAP file in the pwd; so since gvim creates .talk.N.txt.swp while the textfile is being types into, i do a while(!done) check on the .swap file. then i do a second while loop while talk.N.txt exists. finally, espeak [flags] | aplay speaks the words in the text file. [ i tee the output of espeak and hand it off to aplay because of strange driver bugs here on my desktop.] You need to use a function such as g_spawn_async() to execute it. Then it depends how you communicate with the programs. If you just want to know when it terminates use waitpid(). thanks much. i'll check g_spawn_async() to see how it is used. i hadn't thought of any of the flavors of wait; everything has worked: gvim//write-quit/espeak a dozen times. but the gtk app is greyed and the quit button doesn't work! gary Yeti -- Gary Kline kl...@thought.org http://www.thought.org Public Service Unix Journey Toward the Dawn, E-Book: http://www.thought.org The 8.57a release of Jottings: http://jottings.thought.org Twenty-five years of service to the Unix community. ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
Re: discoveries! gtk DOES dim... how can i infinite-loop?
Gary, based on conversations in the past about what you are trying to do, I whipped up a little program that just might approach what you are trying to do. If I understand you correctly, you wish to do the following: - type text in an editor where abbreviations are expanded (by macros in gvim or some other mechanism in another editor) to full words or phrases, so that you can compose text faster, even with disabilities. - speak the written text with espeak the text - save what was spoken so you can load it back up and re-speak it, or edit it and speak it again. Seems like the big requirement is the ability to use abbreviations. I'm not clear on how gvim does it for you, but the GtkSourceView2 widget (not part of GTK, but all distros have it and it's fully integrated with GTK) supports what are called Completions. They are intended for use with programming, but they also can function as an abbreviation mechanism. As you type, when an abbreviation is detected it can pop up a suggestion that pressing enter will accept, or keep typing and the suggestion will change or go away. Multiple suggestions can be made as well. So, here's my program. It's written in Python, since python is one of the absolute best languages for rapid prototyping. This app did not take much time to write, and it gave me a chance to refresh my skills and learn how to use some more advanced GTK widgets like the TreeView. Anyway, my program does not save what was spoken to disk, though that can be added very easily. It does save what was spoken during one session of running the program. As well, currently abbreviations are hard-coded in completion.py, but again that could be saved to disk easily. There's already a dialog for editing the abbreviations within the program. I believe it does most of what you require, and could be expanded very rapidly. It is written in Python, but now that the prototype is made, it could be converted to C easily, though there is no advantage in doing that really. The GUI itself was made in Glade-3, so the actual widgets and the magic behind the TreeView is hidden somewhat. Glade has the advantage of making it very easy to rapidly develop the GUI. Anyway, the source code is here: git repo: http://www.torriefamily.org/~torriem/tts_assist.git tarball: http://www.torriefamily.org/~torriem/tts_assist.tar.gz You will need to install pygtk2 and gtksourceview2. On Fedora those are the exact package names. I think it would be fun to develop this further (perhaps porting to GTK3), but I thought I'd post what I had. If it's not useful, that's fine. Python makes coding fun and very fast! Michael ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
Re: discoveries! gtk DOES dim... how can i infinite-loop?
On 01/19/2012 09:05 PM, Michael Torrie wrote: You will need to install pygtk2 and gtksourceview2. On Fedora those are the exact package names. Apparently on Ubuntu, the packages are: python-gtk2 python-gtksourceview2 ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
Re: discoveries! gtk DOES dim... how can i infinite-loop?
On 01/19/2012 01:58 AM, Gary Kline wrote: i've spent the last many days tryoing [on ubuntu] anf tonight on my EEE-900A netbook [debian]. both dim when i go into a recursive loop. 1. edit with gvim 2. have espeak voice gvim when it is written 3 goto 1; tonight i did everything absolutedly write in chercking various things, but the app still dimd if i have the function call itselg. i should have asked this list whether there there is a gtk call that let's things go into either an infinite loop, or, would a for() loop work for 300-500 loops? I already gave you the answer to this. While you are looping in your callback you have to iterate the GTK main loop: while (some long-running thing) { while (gtk_events_pending ()) { gtk_main_iteration (); } //do something } ___ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list