[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: widget_control from call_external
- Subject: Re: widget_control from call_external
- From: dominic(at)work.com
- Date: 5 Mar 2001 07:54:24 GMT
- Followup-To: comp.lang.idl-pvwave
- Newsgroups: comp.lang.idl-pvwave
- Organization: NewsOne.Net - Free Usenet News via the Web - http://newsone.net/
- References: <97lo4q$q6t$1@news.netmar.com>
- Xref: news.doit.wisc.edu comp.lang.idl-pvwave:23837
davidf@dfanning.com (David Fanning) writes:
> Well, this will be difficult unless your can call your
> C program in "chunks", or in some other way interrupt
> it. It might be easier if you just know, in general,
> how long it takes. Then you can set a "kitchen timer"
> sort of progress indicator. As long as the cake is
> baked by the time the timer goes off, no one seems
> to care. :-)
That sounds like a great idea.
I tried to implement that, but the timer stops ticking!
Seems like xmanager doesn't accept events until the
call_external returns... There's a t_test.pro for illustration.
Oh yes, the other thing I tried is to fire up a status line
from within the C-code with IDL_ExecuteStr(). Works just fine
EXCEPT for the annoying messages:
% Temporary variables are still checked out - cleaning up...
for every IDL_ExecuteStr().
Did I miss something?
pro t_test_event, ev
widget_control, ev.id, get_uvalue=uval
widget_control, ev.top, get_uvalue=struct
stat = struct.status
curr = struct.current
evno = struct.t_evno
case uval of
'Done' : widget_control, ev.top, /destroy
'Run' : begin
widget_control,stat,timer=1
JUNK = call_external('t_test.so','t_test', curr,/unload)
end
'Timer' : begin
evno = evno +1
print,'Timer event no ', evno
widget_control,stat,timer=1
widget_control, ev.top, $
set_uvalue={status:stat, current:curr, t_evno:evno}
end
else : begin ; should never happen
widget_control, ev.id, get_value=val
print,'unknown event with value ',val
widget_control, ev.top, /destroy
end
end
end
pro t_test
old = 0L
current = 0L
t_evno = 0
a = widget_base(/col)
b = widget_button(a,value='Run',uval='Run',/frame)
status = widget_label(a,value= $
string(format='(A8,I3,1x,A1)','Status: ',0,'%'),uvalue='Timer')
c= widget_button(a,value='Done',uval='Done',/frame)
widget_control, a, /realize
widget_control,status,timer=1
widget_control, a, $
set_uvalue={status:status, current:current, t_evno:t_evno}
xmanager, 't_test',a
end
----- Posted via NewsOne.Net: Free (anonymous) Usenet News via the Web -----
http://newsone.net/ -- Free reading and anonymous posting to 60,000+ groups
NewsOne.Net prohibits users from posting spam. If this or other posts
made through NewsOne.Net violate posting guidelines, email abuse@newsone.net