comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » widget_control from call_external
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
widget_control from call_external [message #24011] Thu, 01 March 2001 06:59 Go to next message
dominic is currently offline  dominic
Messages: 2
Registered: March 2001
Junior Member
Hello all,

anybody have a hint on this?

I have a c/c++ programme that is called from within a
widget hierachy via call_external.

As the computations made take fairly long, I want to update
a status bar with a 'Percentage complete' from the C-routine,
so the user doesn't get upset and thinks the programme died
on him/her.

How do I go about that???



----- 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
Re: widget_control from call_external [message #24062 is a reply to message #24011] Sun, 04 March 2001 23:54 Go to previous message
dominic is currently offline  dominic
Messages: 2
Registered: March 2001
Junior Member
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
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: LINE NUMBERS
Next Topic: Re: Clsuter analysis wiht IDL

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Fri Oct 10 11:16:29 PDT 2025

Total time taken to generate the page: 0.79963 seconds