/usr/share/gnudatalanguage/lib/xmanager.pro is in libgnudatalanguage0 0.9.7-6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | ;+
; NAME: XMANAGER
;
; PURPOSE: Provides event management for GDL widgets.
;
; CATEGORY: GUI, widgets
;
; CALLING SEQUENCE:
;
; XMANAGER, NAME, ID, /NO_BLOCK, GROUP_LEADER=groupLeader, CLEANUP=Cleanup
;
;
; inputs:
;
; OPTIONAL INPUTS: none
;
; KEYWORD PARAMETERS:
;
; COMMON BLOCKS: "MANAGED"
;
; SIDE EFFECTS: ????
;
; RESTRICTIONS: incomplete, more functionality to be added.
;
;
; MODIFICATION HISTORY:
; - 05/11/2013: inital version
;
;-
; LICENCE:
; Copyright (C) 2013 Marc Schellens
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.
;-
;
pro ValidateManagedWidgets
common managed, ids, names, modalList
catch,falseinfo
; if ids contains only unknown widget ids, remove silently the list
; after catching the error:
if falseinfo ne 0 then begin
ids=0
names=0
catch,/cancel
return
endif
if (n_elements(ids) eq 0) then begin ids=0 & names=0 & endif
if (ids[0] eq 0) then return
keep=where(widget_info(ids,/managed),count)
if ( count gt 0 ) then begin
ids=(temporary(ids))[keep]
names=(temporary(names))[keep]
endif else begin
ids = 0
names = 0
endelse
return
end
pro UNXREGISTER, id
COMPILE_OPT idl2, HIDDEN
common managed, ids, names, modalList
if (n_elements(id) eq 0) then return
if (n_elements(ids) eq 0) then return
if (ids[0] eq 0) then return
occurences=where(ids eq id, count, complement=complement, ncomplement=ncomp)
if (count le 0) then return
if ( ncomp gt 0 ) then begin ; there are others
names=names[complement]
ids=ids[complement]
return
endif else begin ; there are no others, clear lists
names = 0
ids = 0
endelse
end
pro XMANAGER, name, id, NO_BLOCK = noBlock, GROUP_LEADER=groupLeader, EVENT_HANDLER=eventHandler, $
CLEANUP=Cleanup, JUST_REG=just_reg, CATCH=catch, MODAL=modal
common managed, ids, names, modalList
ValidateManagedWidgets
if keyword_set(modal) then message,/informational,"The MODAL keyword to the XMANAGER procedure is obsolete."+$
" It is superseded by the MODAL keyword to the WIDGET_BASE function."
if not keyword_set(eventHandler) then begin
eventHandler = name + '_event'
endif
;if id is not the top base, get the top base:
while (widget_info(id,/parent) ne 0) do id=widget_info(id,/parent)
widget_control, id, event_pro=eventHandler
widget_control, id, /managed
; add to common
if (ids[0] ne 0) then begin
ids = [ids, id]
names = [names, name]
endif else begin
ids = id
names = name
endelse
if keyword_set(groupLeader) then begin
widget_control, id, GROUP_LEADER=groupLeader
endif
; cleanup is implemented now
if n_elements(cleanup) then begin
widget_control, id, KILL_NOTIFY=Cleanup
endif
if keyword_set(noBlock) then begin
widget_control, /XMANAGER_ACTIVE_COMMAND, id
endif else begin
tmp = widget_event(/XMANAGER_BLOCK) ; will block until TLB widget is closed
endelse
end
|