Re: discoveries! gtk DOES dim... how can i infinite-loop?

2012-01-21 Thread Gary Kline
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?

2012-01-21 Thread Michael Torrie
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?

2012-01-20 Thread Tristan Van Berkom
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


Re: discoveries! gtk DOES dim... how can i infinite-loop?

2012-01-19 Thread David Nečas
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?

2012-01-19 Thread Gary Kline
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?

2012-01-19 Thread Michael Torrie
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?

2012-01-19 Thread Michael Torrie
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?

2012-01-19 Thread Michael Torrie
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