📄 apreferences__define.pro
字号:
;*********************************************************************
pro apreferences::apply_preferences, $
save_preferences = sp
self.wizard -> set_anonymizer_values, /nowrite
self.anonymizer -> getproperty, attribute_values = av
for i = 0, n_elements((*self.text))-1 do begin
widget_control, (*self.text)[i], get_value = val
if strlowcase(strtrim(val,2)) eq 'nan' then $
av.(i) = !values.f_nan $
else $
av.(i) = fix(val, type = size(av.(i), /type))
endfor
widget_control, self.outdir, get_value = value
widget_control, self.extension, get_value = ext
widget_control, self.prefix, get_value = pre
self.anonymizer -> setproperty, attribute_values = av, $
output = value, $
outfile_extension = ext, $
outfile_prefix = pre
self.wizard -> update_values
if keyword_set(sp) then begin
self.user_preferences = 1
self.wizard -> save_preferences
widget_control, self.ex_buttons[1], /set_button
endif else $
self.user_preferences = -1
self.orig_up = self.user_preferences
end
;*********************************************************************
pro apreferences::cleanup
ptr_free, self.text
if self.tlb ge 0 then widget_control, self.tlb, /destroy
end
;*********************************************************************
pro apreferences::close_dialog
if self.tlb ne -1 then $
widget_control, self.tlb, /destroy
self.user_preferences = self.orig_up
self.tlb = -1
end
;*********************************************************************
pro apreferences::getproperty, $
user_preferences = up
if arg_present(up) gt 0 then $
up = self.user_preferences
end
;*********************************************************************
function apreferences::init, anonymizer, wizard, $
user_preferences = up
self.user_preferences = keyword_set(up)
self.orig_up = self.user_preferences
if n_elements(anonymizer) eq 0 then $
return, 0
if ~obj_valid(anonymizer[0]) then $
return, 0
if ~obj_valid(wizard[0]) then $
return, 0
self.anonymizer = anonymizer[0]
self.wizard = wizard[0]
self.text = ptr_new(/allocate)
resolve_routine, 'pref_event'
self.tlb = -1
self.ex_buttons = [-1,-1]
self.outdir = -1
self.extension = -1
self.prefix = -1
return, 1
end
;*********************************************************************
pro apreferences::launch_dialog
if self.tlb ne -1 then $
return
self.tlb = widget_base(col = 1, $
title = 'Anonymizer Preferences...', $
mbar = menu)
attstr = ['Application Entity', $
'Age String', $
'Attribute Tag', $
'Code String', $
'Date', $
'Decimal String', $
'Date Time', $
'Single Floating Point', $
'Double Floating Point', $
'Integer String', $
'Long String', $
'Long Text', $
'Other Byte String', $
'Other Float String', $
'Other Word String', $
'Person Name', $
'Short String', $
'Signed Long', $
; 'Sequence Of Items', $
'Signed Short', $
'Short Text', $
'Time', $
; 'Unique Identifier', $
'Unsigned Long', $
'Unknown', $
'Unsigned Short', $
'Unlimited Text']
self.anonymizer -> getproperty, $
attribute_values = av, $
outdir = outdir, $
outfile_extension = extension, $
outfile_prefix = prefix
n = n_elements(attstr)
tn = tag_names(av)
xs = strlen(outdir)
ys = 20
base = widget_base(self.tlb, row = 1)
l = widget_label(base, value = 'Outfile Prefix : ')
self.prefix = widget_text(base, /edit, value = prefix, xs = 10, $
/all_events, event_pro = 'text_event')
l = widget_label(base, value = 'Outfile Extension : ')
self.extension = widget_text(base, /edit, value = extension, xs = 10, $
/all_events, event_pro = 'text_event')
b = widget_button(base, value = 'Network Services OutDir', $
uvalue = 'net', tooltip = 'Set Output Directory to ' + $
'DICOM Network Services Output Directory')
base = widget_base(self.tlb, row = 1)
b = widget_button(base, value = 'Output Directory : ', $
xs = 130, ys = ys, uvalue = 'outdir')
self.outdir = widget_text(base, value = outdir, $
xs = xs, scr_ys = ys)
base = widget_base(self.tlb, col = 2)
for i = 0, n-1 do $
l = widget_label(base, value = attstr[i] + ' : ', $
xs = 130, ys = ys)
*self.text = lonarr(n)
for i = 0, n-1 do $
(*self.text)[i] = widget_text(base, value = string(av.(i)), $
scr_ys = ys, /edit, /all_events, event_pro = 'text_event', $
xs = 25)
base = widget_base(self.tlb, row = 1)
b = widget_button(base, value = 'Save', uvalue = 'save', $
tooltip = 'Save default preferences for later sessions.')
b = widget_button(base, value = 'Accept', uvalue = 'accept', $
tooltip = 'Save defaults for this session only')
b = widget_button(base, value = 'Close', $
uvalue = 'cancel', tooltip = 'Colse this dialog')
ex_base = widget_base(base, row = 1, /exclusive)
self.ex_buttons = lonarr(2)
self.ex_buttons[0] = widget_button(ex_base, value = 'Anonymizer Defaults', $
uvalue = 'anon_pref', tooltip = 'Switch to Anonymizer defaults')
self.ex_buttons[1] = widget_button(ex_base, value = 'User Defaults', $
uvalue = 'user_pref', tooltip = 'Switch to User Defaults')
if self.user_preferences ge 0 then $
widget_control, self.ex_buttons[self.user_preferences], /set_button
widget_control, self.tlb, /realize, set_uvalue = self
xmanager, 'pref', self.tlb, cleanup = 'pref_cleanup'
end
;*********************************************************************
pro apreferences::reset, pref
if keyword_set(pref) then begin
; User Defaults
void = self.anonymizer -> restore_preferences()
self.orig_up = (self.user_preferences = 1)
endif else begin
; Anonymizer Defaults
self.anonymizer -> reset, /all
self.orig_up = (self.user_preferences = 0)
endelse
; Update preferences in text widgets
self.anonymizer -> getproperty, attribute_values = av, $
outfile_prefix = prefix, $
outfile_extension = extension, $
outdir = outdir
for i = 0, n_elements(*self.text)-1 do $
widget_control, (*self.text)[i], set_value = string(av.(i))
widget_control, self.extension, set_value = extension
widget_control, self.prefix, set_value = prefix
widget_control, self.outdir, set_value = outdir
self.wizard -> update_values
end
;*********************************************************************
pro apreferences::set_output_dir, od, $
network_services = ns
if keyword_set(ns) then begin
err = 0
catch, err
if err ne 0 then begin
help, /last
catch, /cancel
return
end
outdir = dicomex_getstorscpdir()
endif
if n_elements(od) gt 0 then begin
if ~file_test(od[0], /dir) then $
return
outdir = od[0]
endif
widget_control, self.outdir, set_value = outdir
end
;*********************************************************************
pro apreferences::setproperty, $
user_preferences = up
if n_elements(up) gt 0 then $
self.user_preferences = up
end
pro apreferences::update, $
no_select = ns
if keyword_set(ns) then $
for i = 0, 1 do $
widget_control, self.ex_buttons[i], set_button=0
end
;*********************************************************************
pro apreferences__define
void = {apreferences, $
tlb:0l, $
outdir:0l, $
extension:0l, $
prefix:0l, $
ex_buttons:lonarr(2), $
text:ptr_new(), $
anonymizer:obj_new(), $
user_preferences:0, $
orig_up:0, $
wizard:obj_new()}
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -