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

📄 datefield.itk

📁 windows下的GDB insight前端
💻 ITK
📖 第 1 页 / 共 3 页
字号:
        if {$itk_option(-iq) == "low"} {            $itk_component(date) delete $icursor            $itk_component(date) insert $icursor $char        } else {            set prevdate [get]            if {[$itk_component(date) index insert] == $year_start_pos} {                set yrdgt [lindex [split [lindex \                [split $prevdate "$split_char"] [lsearch $order year]] ""] 0]                if {$char != $yrdgt} {                    if {$char == 1} {                        $itk_component(date) delete $icursor $year_end_pos                        $itk_component(date) insert $icursor 1999                    } elseif {$char == 2} {                        $itk_component(date) delete $icursor $year_end_pos                        $itk_component(date) insert $icursor 2000                    } else {                        bell                        return -code break                    }                }                $itk_component(date) icursor $year_second_pos                return -code break            }                    $itk_component(date) delete $icursor            $itk_component(date) insert $icursor $char            if {[catch {clock scan [get]}] != 0} {                $itk_component(date) delete $year_start_pos $year_end_pos                $itk_component(date) insert $year_start_pos \                [lindex [split $prevdate "$split_char"] [lsearch $order year]]                $itk_component(date) icursor $icursor                bell                return -code break            }            if {$itk_option(-iq) == "high"} {                set splist [split [$itk_component(date) get] "$split_char"]                set year [lindex $splist [lsearch $order year]]                if {$day > [set endday [_lastDay $month $year]]} {                    set icursor [$itk_component(date) index insert]                    $itk_component(date) delete $day_start_pos $day_end_pos                    $itk_component(date) insert $day_start_pos $endday                    $itk_component(date) icursor $icursor                }            }        }        if {$itk_option(-int)} {            if {$icursor == $year_fourth_pos } {                _setField month            }        }        return -code break    }        #    # Process the plus and the up arrow keys.  They both yeild the same    # effect, they increment the day by one.    #    } elseif {($sym == "plus") || ($sym == "Up")} {        if {[catch {show [clock scan "1 day" -base [get -clicks]]}] != 0} {            bell        }        return -code break            #        # Process the minus and the down arrow keys which decrement the day.        #    } elseif {($sym == "minus") || ($sym == "Down")} {        if {[catch {show [clock scan "-1 day" -base [get -clicks]]}] != 0} {            bell        }        return -code break        #        # A tab key moves the day/month/year (or year/month/day) field        # forward by one unless        # the current field is the last field.  In that case we'll let tab        # do what is supposed to and pass the focus onto the next widget.        #    } elseif {($sym == "Tab") && ($state == 0)} {        if {$_cfield != "[lindex $order 2]"} {            _moveField forward            return -code break        } else {            _setField "[lindex $order 0]"            return -code continue        }        #        # A ctrl-tab key moves the day/month/year field backwards by one         # unless the current field is the the first field.  In that case we'll        # let tab take the focus to a previous widget.        #    } elseif {($sym == "Tab") && ($state == 4)} {        if {$_cfield != "[lindex $order 0]"} {            _moveField backward            return -code break        } else {            set _cfield "[lindex $order 0]"            return -code continue        }        #        # A right arrow key moves the insert cursor to the right one.        #    } elseif {$sym == "Right"} {        _forward        return -code break        #        # A left arrow, backspace, or delete key moves the insert cursor         # to the left one.  This is what you expect for the left arrow        # and since the whole widget always operates in overstrike mode,        # it makes the most sense for backspace and delete to do the same.        #    } elseif {$sym == "Left" || $sym == "BackSpace" || $sym == "Delete"} {        _backward        return -code break    } elseif {($sym == "Control_L") || ($sym == "Shift_L") || \            ($sym == "Control_R") || ($sym == "Shift_R")} {        return -code break        #        # A Return key invokes the optionally specified command option.        #    } elseif {$sym == "Return"} {        uplevel #0 $itk_option(-command)        return -code break     } else {        bell        return -code break    }}# ------------------------------------------------------------------# PROTECTED METHOD: _setField field## Internal method which adjusts the field to be that of the # argument, setting the insert cursor appropriately.# ------------------------------------------------------------------itcl::body iwidgets::Datefield::_setField {field} {    set _cfield $field        if {$itk_option(-int)} {        set year_pos 2        set month_pos 5        set day_pos 8    } else {        set month_pos 0        set day_pos 3        set year_pos 8    }                switch $field {        "month" {            $itk_component(date) icursor $month_pos        }        "day" {            $itk_component(date) icursor $day_pos        }        "year" {            $itk_component(date) icursor $year_pos        }        default {            error "bad field: \"$field\", must be month, day or year"        }    }}# ------------------------------------------------------------------# PROTECTED METHOD: _moveField## Internal method for moving the field forward or backward by one.# ------------------------------------------------------------------itcl::body iwidgets::Datefield::_moveField {direction} {    set index [lsearch $_fields $_cfield]    if {$direction == "forward"} {        set newIndex [expr {$index + 1}]    } else {        set newIndex [expr {$index - 1}]    }    if {$newIndex == [llength $_fields]} {        set newIndex 0    }    if {$newIndex < 0} {        set newIndex [expr {[llength $_fields] - 1}]    }    _setField [lindex $_fields $newIndex]    return}# ------------------------------------------------------------------# PROTECTED METHOD: _whichField## Internal method which returns the current field that the cursor# is currently within.# ------------------------------------------------------------------itcl::body iwidgets::Datefield::_whichField {} {    set icursor [$itk_component(date) index insert]    if {$itk_option(-int)} {        switch $icursor {            0 - 1 - 2 - 3 {                set _cfield "year"            }            5 - 6 {                set _cfield "month"            }            8 - 9 {                set _cfield "day"            }        }    } else {        switch $icursor {            0 - 1 {            set _cfield "month"            }            3 - 4 {            set _cfield "day"            }            6 - 7 - 8 - 9 {            set _cfield "year"            }        }    }}# ------------------------------------------------------------------# PROTECTED METHOD: _forward## Internal method which moves the cursor forward by one character# jumping over the slashes and wrapping.# ------------------------------------------------------------------itcl::body iwidgets::Datefield::_forward {} {    set icursor [$itk_component(date) index insert]    if {$itk_option(-int)} {        switch $icursor {            3 {                _setField month            }            6 {            _setField day            }            9 - 10 {            _setField year            }            default {            $itk_component(date) icursor [expr {$icursor + 1}]            }        }    } else {        switch $icursor {            1 {            _setField day            }            4 {            _setField year            }            9 - 10 {            _setField month            }            default {            $itk_component(date) icursor [expr {$icursor + 1}]            }        }    }}# ------------------------------------------------------------------# PROTECTED METHOD: _backward## Internal method which moves the cursor backward by one character# jumping over the slashes and wrapping.# ------------------------------------------------------------------itcl::body iwidgets::Datefield::_backward {} {    set icursor [$itk_component(date) index insert]    if {$itk_option(-int)} {        switch $icursor {            8 {            _setField month            }            5 {            _setField year            }            0 {            _setField day            }            default {            $itk_component(date) icursor [expr {$icursor -1}]            }        }    } else {        switch $icursor {            6 {                _setField day            }            3 {                _setField month            }            0 {                _setField year            }            default {                $itk_component(date) icursor [expr {$icursor -1}]            }        }    }}# ------------------------------------------------------------------# PROTECTED METHOD: _lastDay month year## Internal method which determines the last day of the month for# the given month and year.  We start at 28 and go forward till# we fail.  Crude but effective.# ------------------------------------------------------------------itcl::body iwidgets::Datefield::_lastDay {month year} {    set lastone 28    for {set lastone 28} {$lastone < 32} {incr lastone} {        set nextone [expr $lastone + 1]        if {[catch {clock scan $month/$nextone/$year}] != 0} {            return $lastone        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -