There is a bug in the shader demo.  When you launch 2 instances only the window 
with mousefocus gets timer events.


Thanks to Joe, here is a class that allows "formless timers".  It can be 
coinserted into another locale (renaming new if name conflict).  kill works 
without needing stop.  the stop,resume,kill verbs can be copied into a " real 
form" locale, as long as it holds/sets a form variable, and probably provide 
more reliable way to stop/resume timers from multiple form instances.

cocurrent 'timer' 
create =: 3 : 0 
 form=:  'a', (> 18!:5 '') 
 wd 'pc ' , form 
 resume y 

) 
stop =: 3 : 0 

 wd 'psel '  , form 
 wd 'ptimer 0' 
) 
resume =: 3 : 0 
 wd 'psel '  , form 
 wd 'ptimer ', ": y 
) 
kill =: 3 : 0 
 wd 'psel '  , form 
 wd 'pclose' 
 codestroy '' 
) 
timerexample =: 3 : 'smoutput (> 18!:5 '''') ,'': '', ": (6!:0) ''''' 
loc_z_=: (,&'_'@[ ,&'_'@, ":@>@])"1 0 

new =: 3 : 0 
'' new y 
: 
o =. y conew  (> 18!:5 '') 
if. 0=#x do. x =.'timerexample' loc o end. 
('a', (> o), '_timer__o') =: 3 : (x , ' ''''') 
o 
) 

  a =. 'smoutput (> 18!:5 '''') ,'': '', ": (6!:0)' new_timer_ 5000 
  b =. new_timer_ 6000                  NB. uses locale's timerexample 
(overridable) as callback


kill__a ''
stop__b ''
resume__b 3000
kill__b ''
________________________________
From: Joe Bogner <[email protected]>
To: Pascal Jasmin <[email protected]> 
Cc: "[email protected]" <[email protected]> 
Sent: Saturday, May 31, 2014 5:46:51 AM
Subject: Re: [Jprogramming] opportunity to show off jhs or qt



You can use 'wd psel' to set the current form instance which is then used by 
'wd ptimer 0'

NB. run two timers
NB. works on j802 beta from 5/28
wd 'pc c'
wd 'ptimer 1000'

c_timer =: 3 : 'smoutput@:<''c'';(6!:0) '''''

wd 'pc d'
wd 'ptimer 1000'

d_timer =: 3 : 'smoutput@:<''d'';(6!:0) '''''

wd 'psel c'

wd 'ptimer 0' NB. stop c

wd 'psel d'

wd 'ptimer 0' NB. stop d

wd 'psel c'
wd 'ptimer 1000' NB. resume c


determined from source: 
http://www.jsoftware.com/download/j802/qtide/jqt-source.tar.gz

A tip I used while testing is to use f8 to paste from keyboard. This keeps the 
output from interfering with the input





On Sat, May 31, 2014 at 12:26 AM, Pascal Jasmin <[email protected]> wrote:


>
>skipping the pshow command,
>
>I can get both of your timers to run, but can only get one of them to stop.  
>It appears as though
>wd 'ptimer xx' affects the most recent wd 'pc X' command, so for instance, 
>this sequence of commands:
>
>
>c_timer =: 3 : 'smoutput@:<''c'';(6!:0) '''''
>
>d_timer =: 3 : 'smoutput@:<''d'';(6!:0) '''''
> wd 'pc c'
>wd 'ptimer 6000'
>NB. runs as expected
>  wd 'ptimer 0' NB. stops as expected.
> wd 'pc d'
>wd 'ptimer 6000'  NB. runs only d
> wd 'pc c'
>NB. still runs only d
>wd 'ptimer 6000' NB. will run both on independent timers
>
>wd 'timer 0' NB.only stops C
> wd 'pc d'
>wd 'timer 0' NB. still d won't stop.
>
>erase 'd_timer'  NB. stops d
>
>using pshow and pclose doesn't change the result.
>
>it turns out that I can get my object instance timers to also run, but have 
>the same problems stopping them... except its worse due to difficulty setting 
>timer off.
>
>a =. 6000 conew't'
>b =. 7000 conew't'
>runs both ok.
>stop__a ''  NB. stops b... the last pc command.
>kill__b '' NB. runs ok apparently.  But does not stop a timer
>
>cannot run stop__a '' or kill__a '' effectively.  erase 'a' does nothing.  
>Quitting J is easiest, even this direct command fails
>
>  kill_0_''
>|pclose : no parent selected: wd
>
>though this works: (where 0 is first locale...one part of smoutput)
>  erase 'a0_timer_0_'
>
>_________________________
>From: Joe Bogner <[email protected]>
>To: Pascal J <[email protected]>
>Sent: Friday, May 30, 2014 11:20:26 PM
>
>Subject: Re: [Jprogramming] opportunity to show off jhs or qt
>
>
>
>[off list]
>
>Hey Pascal, did you try the code that I posted with multiple timers? That 
>worked for me... I didn't run yours but perhaps it's something with the 
>locales... Just wanted to check first to see if you were successful with a 
>more basic implementation of multiple timers
>
>
>
>
>
>On Fri, May 30, 2014 at 11:00 PM, 'Pascal Jasmin' via Programming 
><[email protected]> wrote:
>
>thank you Bill and Joe, with new version it works.  Also wd 'pshow' is not 
>necessary.
>>
>>multiple timers may not work though.
>>
>>cocurrent 't'
>>create =: 3 : 0
>>('a', (> 18!:5 ''), '_timer') =: 3 : 'smoutput (> 18!:5 '''') ,'': '', ": 
>>(6!:0) '''''
>>wd 'pc ' , 'a', (> 18!:5 '')
>>resume y
>>)
>>NB. a_timer =: 3 : 'smoutput (> 18!:5 '''') ,'': '', ": (6!:0) '''''
>>stop =: 3 : 0
>>wd 'ptimer 0'
>>)
>>resume =: 3 : 0
>>wd 'ptimer ', ": y
>>)
>>kill =: 3 : 0
>>wd 'pclose'
>>codestroy ''
>>)
>>
>>  a =. 4000 conew 't'  NB. will start timer
>>
>>stop__a '' NB. will stop timer
>>
>>   a
>>┌─┐
>>│1│
>>└─┘
>>
>>  ] b =. 4000 conew 't'  NB. will start new timer ... replacing old.
>>┌─┐
>>│2│
>>└─┘
>> NB. you will see that only timer from b runs.   resume__a 2000 will run the 
>>timer from b.  This error will repeat if you create a 3rd instance.  Only 
>>timer from last instance runs, even though they all have different "forms" a1 
>>and a2.  stop__a '' will stop the timer even if only b is running.
>>
>>  a1_timer__a ''  NB. a1 comes from using the locale number for variable a
>>1: 2014 5 30 22 28 48.138
>>
>>   a2_timer__b ''  NB. a2 comes from using the locale number for variable b
>>2: 2014 5 30 22 29 17.594
>>
>>If you kill either a or b, then resume__a 3000 will fail, as both "forms" are 
>>killed.
>>
>>   resume__a 3000
>>|ptimer : no parent selected: wd
>>
>>
>>Perhaps this is related to my poor understanding of how to run multiple 
>>copies of a form?
>>
>>
>>
>>----- Original Message -----
>>From: Joe Bogner <[email protected]>
>>To: [email protected]
>>Cc:
>>
>>Sent: Friday, May 30, 2014 9:21:00 PM
>>Subject: Re: [Jprogramming] opportunity to show off jhs or qt
>>
>>Pascal, you need to update to the latest.
>>
>>Engine: j701/2011-01-10/11:25
>>
>>Library: 8.02.06
>>
>>Qt IDE: 1.1.2/5.3.0
>>
>>Platform: Win 32
>>
>>Installer: J802 install
>>
>>InstallPath: c:/users/joe/j802
>>
>>
>>
>>This works on the latest
>>
>>
>>NB. run two timers
>>
>>NB. works on j802 beta from 5/28
>>
>>wd 'pc c'
>>
>>wd 'pshow'  NB. shows empty form
>>
>>wd :: empty 'ptimer 1000'
>>
>>
>>c_timer =: 3 : 'smoutput@:<''c'';(6!:0) '''''
>>
>>
>>wd 'pc d'
>>
>>wd 'pshow'  NB. shows empty form
>>
>>wd :: empty 'ptimer 1000'
>>
>>
>>d_timer =: 3 : 'smoutput@:<''d'';(6!:0) '''''
>>
>>
>>
>>This worked on the previous
>>
>>
>>
>>NB. worked previous j802 beta
>>
>>wd 'pc a'
>>
>>wd 'cc g opengl version 2.0 flush'
>>
>>wd 'pshow'  NB. shows empty form
>>
>>wd 'set g timer 1000'
>>
>>a_g_timer =: 3 : 'smoutput@:<''a'';(6!:0) '''''
>>
>>
>>wd 'pc b'
>>
>>wd 'cc g opengl version 2.0 flush'
>>
>>wd 'pshow'  NB. shows empty form
>>
>>wd 'set g timer 1000'
>>
>>b_g_timer =: 3 : 'smoutput@:<''b'';(6!:0) '''''
>>
>>
>>
>>
>>I was stuck on it too
>>
>>
>>
>>On Fri, May 30, 2014 at 9:12 PM, 'Pascal Jasmin' via Programming <
>>[email protected]> wrote:
>>
>>> Engine: j701/2011-01-10/11:25
>>> Library: 8.02.06
>>> Qt IDE: 1.1.1/5.3.0
>>> Platform: Win 64
>>>
>>>
>>> ----- Original Message -----
>>> From: bill lam <[email protected]>
>>> To: "[email protected]" <[email protected]>
>>> Cc:
>>> Sent: Friday, May 30, 2014 8:12:21 PM
>>> Subject: Re: [Jprogramming] opportunity to show off jhs or qt
>>>
>>> what is your JVERSION ?
>>>
>>> 31.05.2014, в 8:03, "'Pascal Jasmin' via Programming" <
>>> [email protected]> написал(а):
>>>
>>> > the shader demo works.  cube rotates, etc...
>>> >
>>> > when I try those 3 lines from the base locale (jqt802 console session),
>>> the error shown occurs.
>>> >
>>> >
>>> > ----- Original Message -----
>>> > From: bill lam <[email protected]>
>>> > To: "[email protected]" <[email protected]>
>>> > Cc:
>>> > Sent: Friday, May 30, 2014 8:00:24 PM
>>> > Subject: Re: [Jprogramming] opportunity to show off jhs or qt
>>> >
>>> > did the cube rotate? did you test on the latest j802/jqt beta?
>>> >
>>> > 31.05.2014, в 7:48, "'Pascal Jasmin' via Programming" <
>>> [email protected]> написал(а):
>>> >
>>> >> from base,
>>> >>
>>> >>    wd 'pc a;'  NB. or 'pc a'
>>> >>     wd 'pshow'  NB. shows empty form
>>> >>     wd 'ptimer 2000'
>>> >> |ptimer : parent command not found: ptimer: wd
>>> >>
>>> >>
>>> >>     a_timer_base_
>>> >> 3 : 'smoutput@:(6!:0) '''''
>>> >>
>>> >> is this something related to base locale?
>>> >>
>>> >> shader demo works ok.
>>> >>
>>> >>
>>> >> ----- Original Message -----
>>> >> From: bill lam <[email protected]>
>>> >> To: "[email protected]" <[email protected]>
>>> >> Cc:
>>> >> Sent: Friday, May 30, 2014 6:40:53 PM
>>> >> Subject: Re: [Jprogramming] opportunity to show off jhs or qt
>>> >>
>>> >> You didn't even create a form. To recap, a form is created using wd cmd
>>> eg
>>> >>
>>> >> wd'pc  foo'
>>> >>
>>> >> the locale of a form is the current locale when that wd'pc foo' is
>>> executed.
>>> >>
>>> >> 31.05.2014, в 0:49, "'Pascal Jasmin' via Programming" <
>>> [email protected]> написал(а):
>>> >>
>>> >>> sorry for previous message, was running timer and not ptimer.
>>> >>>
>>> >>> It does not appear as though you can get a timer into an arbitrary
>>> locale by just doing wd 'pc a' there.  The form has to be visible, or needs
>>> an initial show?
>>> >>>
>>> >>>
>>> >>>
>>> >>>
>>> >>> ----- Original Message -----
>>> >>> From: 'Pascal Jasmin' via Programming <[email protected]>
>>> >>> To: "[email protected]" <[email protected]>
>>> >>> Cc:
>>> >>> Sent: Friday, May 30, 2014 12:23:37 PM
>>> >>> Subject: Re: [Jprogramming] opportunity to show off jhs or qt
>>> >>>
>>> >>> Nice, thank you.
>>> >>>
>>> >>> You can also use a timer in any arbitrary locale (I think)
>>> >>>
>>> >>>      a_timer_ =: show_base_
>>> >>>      wd_a_ 'timer 2000'
>>> >>>
>>> >>> or
>>> >>>
>>> >>>    aa =. conew 'a'
>>> >>>    wd__aa 'timer 2000'
>>> >>>
>>> >>> acts a little weird with just one plot window, but that might be plot
>>> related?
>>> >>>
>>> >>>
>>> >>> ----- Original Message -----
>>> >>> From: bill lam <[email protected]>
>>> >>> To: 'Pascal Jasmin' via Programming <[email protected]>
>>> >>> Cc:
>>> >>> Sent: Friday, May 30, 2014 11:19:17 AM
>>> >>> Subject: Re: [Jprogramming] opportunity to show off jhs or qt
>>> >>>
>>> >>> Oh sorry!  I thought ptimer was documented but not yet. Basically
>>> >>> it is very simple, if your form id is 'foo' then the name of the
>>> >>> timer callback verb is 'foo_timer' in the form's locale.  Each form
>>> >>> has its own timer. wd'ptimer xx' will start or stop timer attached
>>> >>> to the current form.  Unlike the old wd timer, form timers will not
>>> >>> break existing code. In qt shader demo, the cube is rotated by a
>>> >>> form timer.
>>> >>>
>>> >>> Пт, 30 май 2014, jprogramming написал(а):
>>> >>>> good news about wd 'timer' for forms.  A wishlist would include a way
>>> for minimal library load for jconsole support.
>>> >>>>
>>> >>>> I don't see it mentioned here though
>>> http://www.jsoftware.com/jwiki/System/ReleaseNotes/J802
>>> >>>>
>>> >>>> I did see that the timer qt demo app has been updated, but its hard
>>> to understand without a "qtdemo form"
>>> >>>>
>>> >>>> there is no mention of wd 'ptimer' here:
>>> http://www.jsoftware.com/jwiki/Guides/Window%20Driver/Command%20Reference
>>> >>>>
>>> >>>>
>>> >>>> ----- Original Message -----
>>> >>>> From: bill lam <[email protected]>
>>> >>>> To: [email protected]
>>> >>>> Cc:
>>> >>>> Sent: Friday, May 30, 2014 10:08:14 AM
>>> >>>> Subject: Re: [Jprogramming] opportunity to show off jhs or qt
>>> >>>>
>>> >>>> sleep will halt current thread, not a feature of jqt.  One can
>>> >>>> use wd'timer' to fire event.  Furthermore J802 introduce form timer
>>> >>>> for each form, see high-lights.
>>> >>>>
>>> >>>> Пт, 30 май 2014, Raul Miller написал(а):
>>> >>>>> I made the hour hand be a 24 hour hour-hand. To make it the more
>>> typical 12
>>> >>>>> hour hour-hand, change 2r24p1 2r60p1 2r60p1 to 2r12p1 2r60p1 2r60p1.
>>> >>>>>
>>> >>>>> And the window freezing issue is a "feature" of jqt. To avoid that
>>> issue
>>> >>>>> with current versions of jqt, always close (or position) the plot
>>> window
>>> >>>>> before starting the clock.
>>> >>>>>
>>> >>>>> Thanks,
>>> >>>>>
>>> >>>>> --
>>> >>>>> Raul
>>> >>>>>
>>> >>>>>
>>> >>>>>
>>> >>>>> On Fri, May 30, 2014 at 4:43 AM, Jan-Pieter Jacobs <
>>> >>>>> [email protected]> wrote:
>>> >>>>>
>>> >>>>>> Nice!
>>> >>>>>> I tried your code in JQT (on windows 8), some remarks:
>>> >>>>>>
>>> >>>>>> The hour hand is pointing about the exact oposite direction it
>>> should.
>>> >>>>>> Somehow, switching windows also causes the plot window to freeze,
>>> and J to
>>> >>>>>> become unresponsive
>>> >>>>>>
>>> >>>>>>
>>> >>>>>> Jan-Pieter
>>> >>>>>>
>>> >>>>>>
>>> >>>>>> 2014-05-30 3:18 GMT+02:00 Raul Miller <[email protected]>:
>>> >>>>>>
>>> >>>>>>> Here's another approach (beware of email induced line wrap in
>>> definition
>>> >>>>>> of
>>> >>>>>>> show):
>>> >>>>>>>
>>> >>>>>>> N=:0.01*i.629
>>> >>>>>>> O=: [: j./ 1 2 o./ ]
>>> >>>>>>> delay=:6!:3    NB. "sleep"
>>> >>>>>>>
>>> >>>>>>> show=: [: plot (O N),N*/~0.07 0.11 0.15(*O) 2r24p1 2r60p1
>>> 2r60p1*_3{.6!:0
>>> >>>>>>> bind ''
>>> >>>>>>>
>>> >>>>>>> show@delay@1:^:9e9''
>>> >>>>>>>
>>> >>>>>>> I think this should work with both jqt and the j602 ide.
>>> >>>>>>>
>>> >>>>>>> Thanks,
>>> >>>>>>>
>>> >>>>>>> --
>>> >>>>>>> Raul
>>> >>>>>>>
>>> >>>>>>>
>>> >>>>>>>
>>> >>>>>>> On Thu, May 29, 2014 at 1:39 PM, David Lambert <
>>> [email protected]>
>>> >>>>>>> wrote:
>>> >>>>>>>
>>> >>>>>>>> http://rosettacode.org/wiki/Draw_a_clock#J
>>> >>>>>>>>
>>> >>>>>>>> The next author need only replace the draw dyad, or rewrite the
>>> >>>>>>>> contribution.
>>> >>>>>>>> x is the current session time, y is the session time when the verb
>>> >>>>>>> starts.
>>> >>>>>>>>
>>> >>>>>>>> round=: [: <. 0.5&+
>>> >>>>>>>> PICTURES=: u:16b2190+i.4      NB. arrows
>>> >>>>>>>> draw=: [: smoutput PICTURES ((|~ #)~ { [) [: round -
>>> >>>>>>>>
>>> >>>>>>>>
>>> ----------------------------------------------------------------------
>>> >>>>>>>> For information about J forums see
>>> http://www.jsoftware.com/forums.htm
>>> >>>>>>>>
>>> >>>>>>>
>>> ----------------------------------------------------------------------
>>> >>>>>>> For information about J forums see
>>> http://www.jsoftware.com/forums.htm
>>> >>>>>>>
>>> >>>>>>
>>> ----------------------------------------------------------------------
>>> >>>>>> For information about J forums see
>>> http://www.jsoftware.com/forums.htm
>>> >>>>>>
>>> >>>>>
>>> ----------------------------------------------------------------------
>>> >>>>> For information about J forums see
>>> http://www.jsoftware.com/forums.htm
>>> >>>>
>>> >>>> --
>>> >>>> regards,
>>> >>>> ====================================================
>>> >>>> GPG key 1024D/4434BAB3 2008-08-24
>>> >>>> gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
>>> >>>> gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3
>>
>>
>>
>>>
>>>
>>>
>>> >
>>> >
>>> >
>>> >>
>>> >>
>>> >>
>>> >>>
>>> >>>
>>> >>>
>>> >>>
>>> >>>
>>> >>>
>>> >>>>
>>> >>>>
>>> >>>>
>>> >>>> ----------------------------------------------------------------------
>>> >>>> For information about J forums see
>>> http://www.jsoftware.com/forums.htm
>>> >>>> ----------------------------------------------------------------------
>>> >>>> For information about J forums see
>>> http://www.jsoftware.com/forums.htm
>>> >>>
>>> >>> --
>>> >>> regards,
>>> >>> ====================================================
>>> >>> GPG key 1024D/4434BAB3 2008-08-24
>>> >>> gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
>>> >>> gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3
>>> >>> ----------------------------------------------------------------------
>>> >>> For information about J forums see http://www.jsoftware.com/forums.htm
>>> >>> ----------------------------------------------------------------------
>>> >>> For information about J forums see http://www.jsoftware.com/forums.htm
>>> >>> ----------------------------------------------------------------------
>>> >>> For information about J forums see http://www.jsoftware.com/forums.htm
>>> >> ----------------------------------------------------------------------
>>> >> For information about J forums see http://www.jsoftware.com/forums.htm
>>> >> ----------------------------------------------------------------------
>>> >> For information about J forums see http://www.jsoftware.com/forums.htm
>>> > ----------------------------------------------------------------------
>>> > For information about J forums see http://www.jsoftware.com/forums.htm
>>> > ----------------------------------------------------------------------
>>> > For information about J forums see http://www.jsoftware.com/forums.htm
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>
>>----------------------------------------------------------------------
>>For information about J forums see http://www.jsoftware.com/forums.htm
>>----------------------------------------------------------------------
>>For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to