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

Home » Public Forums » archive » IDLgrLegend broken
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
IDLgrLegend broken [message #22867] Wed, 06 December 2000 00:00 Go to previous message
Pavel A. Romashkin is currently offline  Pavel A. Romashkin
Messages: 531
Registered: November 2000
Senior Member
Hi,
I found out that if an instance of IDLgrLegend object is saved to a .sav
file and then restored, the IDLgrLegend class definition is not restored
correctly (unless IDLgrLegend is already instanced in the current IDL
session). Moreover, attempts to use IDLgrLegend in the same IDL session
fail if an instance of IDLgeLegend was first restored in that session.
Here is a reproducible example (IDL 5.3 PPC), for those who want to try
it, step by step.

temp = junk()

; A window should pop up with some meaningless plots,
; and a Legend in the middle, with lines and diamonds, red and green.
; Save all contents of that window by typing

save, temp, filename='temp.sav'

; Kill the window created by junk.pro
; You should see variable TEMP lose its object content.
; Now, restore the saved data and re-plot it.

restore, 'temp.sav'
tmp = junk(temp)

; You should see the same exact plots with a legend.
; Now, exit IDL and start it again.
; Execute,

restore, 'temp.sav'
tmp=junk(temp)

; The window that pops up has large diamonds that belonged to Legend,
; and is not like the one made by JUNK originally.
; Now, IDLgrLegend is not functioning anymore.

tmp = obj_new('IDLgrLegend')
tmp -> setProperty, gap=1.0
;% Keyword GAP not allowed in call to: IDLGRMODEL::SETPROPERTY
;% Execution halted at: $MAIN$

; Neither will you be able to run "temp = junk()" anymore.
; If you restart IDL, create IDLgrLegend and restore temp.sav,
; it will re-display just fine.

; Restart IDL, and type

tmp = obj_new('IDLgrLegend')
restore, 'temp.sav'
tmp=junk(temp)

; Produces what's expected.

Is this issue known? I run 5.3 on a Mac.
Cheers,
Pavel
; **************************
pro junk_cleanup, id
widget_control, id, get_uvalue=all_objs
obj_destroy, all_objs
end
; **************************
function junk, all_objs

if n_params() ne 0 then begin
top = widget_base()
draw = widget_draw(top, graphics_level=2, xsize=400, ysize=300, retain=2)
widget_control, top, /realize
widget_control, draw, get_value=obj_win
xmanager, 'junk', top, /no_block, cleanup='junk_cleanup'
view = all_objs -> get(position=0)
obj_win -> draw, view
widget_control, top, set_uvalue=all_objs
return, 0
endif

top = widget_base()
draw = widget_draw(top, graphics_level=2, xsize=400, ysize=300, retain=2)
widget_control, top, /realize
widget_control, draw, get_value=obj_win
xmanager, 'junk', top, /no_block, cleanup='junk_cleanup'

all_objs = obj_new('IDL_container')
view = obj_new('IDLgrView')
model = obj_new('IDLgrModel')
view -> add, model
symbol_1 = obj_new('IDLgrSymbol', 4, color=[200,0,0])
symbol_2 = obj_new('IDLgrSymbol', 4, color=[0,200,10])
graph_1 = obj_new('IDLgrPlot', findgen(10), symbol=symbol_1)
graph_2 = obj_new('IDLgrPlot', findgen(10)+1, symbol=symbol_2, linestyle=6)
legend = obj_new('IDLgrLegend', ['Graph 1', 'Graph 2'], gap=0.5, glyph_width=3., $
item_object=[symbol_1, symbol_2], $
item_linestyle=[0, 6])

model -> add, graph_1
model -> add, graph_2
model -> add, legend

obj_win -> draw, view

all_objs -> add, view
all_objs -> add, model
all_objs -> add, obj_win
all_objs -> add, symbol_1
all_objs -> add, symbol_2
all_objs -> add, graph_1
all_objs -> add, graph_2

widget_control, top, set_uvalue=all_objs
return, all_objs

end
; **************************
  • Attachment: junk.pro
    (Size: 1.58KB, Downloaded 82 times)
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Re: generating symmetric array from function?
Next Topic: IDL and external app in concurrent mode

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

Current Time: Wed Oct 08 19:34:22 PDT 2025

Total time taken to generate the page: 0.00592 seconds