;+ ; ; @file_comments ; ; @categories ; ; @param EVENT ; ; @returns ; ; @uses ; ; @restrictions ; ; @examples ; ; @history ; ; @version ; $Id$ ; ; @todo ; seb ; ;- FUNCTION identifyclick, event ; compile_opt idl2, strictarrsubs ; widget_control, event.id, get_uvalue=uval, /no_copy thisEvent = TAG_NAMES(event, /Structure) if thisEvent EQ 'WIDGET_TIMER' then press = 0 ELSE press = event.press ; ; d/0/>1 -------->t/1/0--------->**d/2/0** long click ; -------->d/1/0--------->**t/2/0** normal click ; --------->**d/2/>1**-------->d/3/0----->t/0/0 double click ; -------->t/3/0----->d/0/0 double click type = 'inutile' case 1 OF ; d/0/0 1er reascending thisEvent EQ 'WIDGET_DRAW' AND uval.click EQ 0 AND press EQ 0: ; d/0/>1 1er click of the series thisEvent EQ 'WIDGET_DRAW' AND uval.click EQ 0 AND press ge 1:BEGIN uval.x = [event.x, 0] uval.y = [event.y, 0] uval.press = press uval.click = 1 widget_control, event.id, timer = .3 END ; d/1/0 1er reascending thisEvent EQ 'WIDGET_DRAW' AND uval.click EQ 1 AND press EQ 0:uval.click = 2 ; d/2/0 End of the long click thisEvent EQ 'WIDGET_DRAW' AND uval.click EQ 2 AND press EQ 0:BEGIN type = 'long' uval.x = [uval.x[0],event.x] & uval.x = uval.x[sort(uval.x)] uval.y = [uval.y[0],event.y] & uval.y = uval.y[sort(uval.y)] uval.click = 0 uval.press = event.release END ; d/2/>1 thisEvent EQ 'WIDGET_DRAW' AND uval.click EQ 2 AND press ge 1:BEGIN type = 'double' uval.press = press uval.click = 3 END ; d/3/0 reascending and end of the double click thisEvent EQ 'WIDGET_DRAW' AND uval.click EQ 3 AND press EQ 0:uval.click = 0 ; t/0/0 End of the double click thisEvent EQ 'WIDGET_TIMER' AND uval.click EQ 0 AND press EQ 0: ; t/1/0 long click thisEvent EQ 'WIDGET_TIMER' AND uval.click EQ 1 AND press EQ 0:uval.click = 2 ; t/2/0 normal click thisEvent EQ 'WIDGET_TIMER' AND uval.click EQ 2 AND press EQ 0:BEGIN type = 'single' press = uval.press uval.click = 0 END ; t/3/0 End of the double click thisEvent EQ 'WIDGET_TIMER' AND uval.click EQ 3 AND press EQ 0:uval.click = 0 ; Impossible case in theory: ELSE:BEGIN print, thisEvent, uval.click, press print, 'Probleme, cas normalement impossible!' END endcase widget_control, event.id, set_uvalue=uval, /no_copy return, {type:type} end