⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 apreferences__define.pro

📁 DICOM viewer - this software is used to view a set of DICOM images.
💻 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 + -