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

Home » Public Forums » archive » setting widget " EVENT_PRO='myClass::myCallback' " ???? Is it possible?
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
setting widget " EVENT_PRO='myClass::myCallback' " ???? Is it possible? [message #83980] Mon, 15 April 2013 10:39
justin.mikell is currently offline  justin.mikell
Messages: 5
Registered: May 2009
Junior Member
Hi all,

I have been unable to set EVENT_PRO to a class method. My current work around is to create a dummy 'global' standalone function at the top of the *__DEFINE.pro file that pulls the object data and then calls the method on the object.

I was curious if it is even possible to set a widget event handler to a class method. What is the rationale behind not letting an event handler be a class method? Perhaps it doesn't make sense to do it...


For example,
below is a window/level class that ends up modifying the window/level on a display object that I create. I've been using it for medical imaging.

------------------------------------------------------------ --------
PRO jkcm_window_level_widget_wwEventHandler, event
widget_control, event.top, get_uvalue=obj
obj->wwEventHandler, event
END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;
PRO jkcm_window_level_widget_wlEventHandler, event
widget_control, event.top, get_uvalue=obj
obj->wlEventHandler, event
END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;
PRO jkcm_window_level_widget::CREATE_WIDGETS, PARENT_WIDGET = inp_PARENT_WIDGET


self.parent_widget = (N_ELEMENTS(inp_PARENT_WIDGET) NE 0) ? inp_PARENT_WIDGET : WIDGET_BASE(COLUMN=2, YSIZE=512, TLB_FRAME_ATTR=2)

;I would like to be able to say:
; EVENT_PRO='jkcm_window_level_widget::wwEventHandler'
self.wwSlider = WIDGET_SLIDER(self.parent_widget, UNAME='WW_widget', YSIZE=512,$
TITLE='WW', /VERTICAL, EVENT_PRO='jkcm_window_level_widget_wwEventHandler', $
MINIMUM=0, MAXIMUM=4095, /DRAG)

self.wlSlider = WIDGET_SLIDER(self.parent_widget, UNAME='WL_widget',YSIZE=512,$
TITLE='WL', /VERTICAL, EVENT_PRO='jkcm_window_level_widget_wlEventHandler', $
MINIMUM=-1024, MAXIMUM=4095, /DRAG)

END ;jkcm_window_level_widget::CREATE_WIDGETS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;
...

PRO jkcm_window_level_widget::wwEventHandler, event

val=''
widget_control, self.wwSlider, GET_VALUE=val
self.svo->SET_WINDOW_LEVEL, WIDTH=val

END ;jkcm_window_level_widget::wwEventHandler
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;

PRO jkcm_window_level_widget::wlEventHandler, event

val=''
widget_control, self.wlSlider, GET_VALUE=val
self.svo->SET_WINDOW_LEVEL, LEVEL=val

END ;jkcm_window_level_widget::wlEventHandler
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;
FUNCTION jkcm_window_level_widget::INIT, SVO=inp_SVO

self.svo = (N_ELEMENTS(inp_svo) NE 0) ? inp_svo : !NULL

self->CREATE_WIDGETS
RETURN, 1
END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;
PRO jkcm_window_level_widget::CLEANUP

widget_control, self.parent_widget, /destroy

END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;
PRO jkcm_window_level_widget__DEFINE


struct = { jkcm_window_level_widget , $
parent_widget:0L,$ ;'top' level widget
wwSlider:0L, $; widget slider for window width
wlSlider:0L, $; widget slider for window level

svo:OBJ_NEW(), $;reference to single_view_obj_graphics object (dont delete)

ww: double(1), $ ;window width
wl: double(1) $ ;window length
}
END ;END jkcm_window_level_widget__DEFINE
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: maximum likelihood fitting with prior
Next Topic: Re: setting widget " EVENT_PRO='myClass::myCallback' " ???? Is it possible?

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

Current Time: Wed Oct 08 19:02:10 PDT 2025

Total time taken to generate the page: 0.00404 seconds