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

📄 spinint.itk

📁 windows下的GDB insight前端
💻 ITK
字号:
# Spinint # ----------------------------------------------------------------------# Implements an integer spinner widget.  It inherits basic spinner# functionality from Spinner and adds specific features to create # an integer-only spinner. # Arrows may be placed horizontally or vertically.# User may specify an integer range and step value.# Spinner may be configured to wrap when min or max value is reached.## NOTE:# Spinint integer values should not exceed the size of a long integer.# For a 32 bit long the integer range is -2147483648 to 2147483647.## ----------------------------------------------------------------------#   AUTHOR:  Sue Yockey               Phone: (214) 519-2517#                                     E-mail: syockey@spd.dsccc.com#                                             yockey@acm.org##   @(#) $Id: spinint.itk,v 1.3 2001/08/07 19:56:48 smithc Exp $# ----------------------------------------------------------------------#            Copyright (c) 1995 DSC Technologies Corporation# ======================================================================# Permission to use, copy, modify, distribute and license this software # and its documentation for any purpose, and without fee or written # agreement with DSC, is hereby granted, provided that the above copyright # notice appears in all copies and that both the copyright notice and # warranty disclaimer below appear in supporting documentation, and that # the names of DSC Technologies Corporation or DSC Communications # Corporation not be used in advertising or publicity pertaining to the # software without specific, written prior permission.# # DSC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING # ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, AND NON-# INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND THE# AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. IN NO EVENT SHALL # DSC BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR # ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION,# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS # SOFTWARE.# ======================================================================## Usual options.#itk::usual Spinint {    keep -background -borderwidth -cursor -foreground -highlightcolor \	 -highlightthickness -insertbackground  -insertborderwidth \	 -insertofftime -insertontime -insertwidth -labelfont \	 -selectbackground -selectborderwidth -selectforeground \	 -textbackground -textfont}# ------------------------------------------------------------------#                            SPININT# ------------------------------------------------------------------itcl::class iwidgets::Spinint {    inherit iwidgets::Spinner     constructor {args} {	Spinner::constructor -validate numeric     } {}    itk_option define -range range Range ""     itk_option define -step step Step 1     itk_option define -wrap wrap Wrap true     public method up {}    public method down {}}## Provide a lowercased access method for the Spinint class.# proc ::iwidgets::spinint {pathName args} {    uplevel ::iwidgets::Spinint $pathName $args}# ------------------------------------------------------------------#                        CONSTRUCTOR# ------------------------------------------------------------------itcl::body iwidgets::Spinint::constructor {args} {    eval itk_initialize $args        $itk_component(entry) delete 0 end        if {[lindex $itk_option(-range) 0] == ""} {	$itk_component(entry) insert 0 "0"    } else { 	$itk_component(entry) insert 0 [lindex $itk_option(-range) 0]     }}# ------------------------------------------------------------------#                             OPTIONS# ------------------------------------------------------------------# ------------------------------------------------------------------# OPTION: -range## Set min and max values for spinner.# ------------------------------------------------------------------itcl::configbody iwidgets::Spinint::range {    if {$itk_option(-range) != ""} {	if {[llength $itk_option(-range)] != 2} {	    error "wrong # args: should be\		    \"$itk_component(hull) configure -range {begin end}\""    	}    	set min [lindex $itk_option(-range) 0]    	set max [lindex $itk_option(-range) 1]    	if {![regexp {^-?[0-9]+$} $min]} {    	    error "bad range option \"$min\": begin value must be\		    an integer"    	}    	if {![regexp {^-?[0-9]+$} $max]} {    	    error "bad range option \"$max\": end value must be\		    an integer"    	}    	if {$min > $max} {    	    error "bad option starting range \"$min\": must be less\		    than ending: \"$max\""    	}    } }# ------------------------------------------------------------------# OPTION: -step## Increment spinner by step value.# ------------------------------------------------------------------itcl::configbody iwidgets::Spinint::step {}# ------------------------------------------------------------------# OPTION: -wrap## Specify whether spinner should wrap value if at min or max.# ------------------------------------------------------------------itcl::configbody iwidgets::Spinint::wrap {}# ------------------------------------------------------------------#                            METHODS# ------------------------------------------------------------------# ------------------------------------------------------------------# METHOD: up## Up arrow button press event.  Increment value in entry.# ------------------------------------------------------------------itcl::body iwidgets::Spinint::up {} {    set min_range [lindex $itk_option(-range) 0]    set max_range [lindex $itk_option(-range) 1]        set val [$itk_component(entry) get]    if {[lindex $itk_option(-range) 0] != ""} {		#	# Check boundaries.	#	if {$val >= $min_range && $val < $max_range} {	    incr val $itk_option(-step)	    $itk_component(entry) delete 0 end	    $itk_component(entry) insert 0 $val	} else {	    if {$itk_option(-wrap)} {		if {$val >= $max_range} {		    $itk_component(entry) delete 0 end		    $itk_component(entry) insert 0 $min_range 		} elseif {$val < $min_range} {		    $itk_component(entry) delete 0 end		    $itk_component(entry) insert 0 $min_range 		} else {		    uplevel #0 $itk_option(-invalid)		}	    } else {		uplevel #0 $itk_option(-invalid)	    }	}    } else {		#	# No boundaries.	#	incr val $itk_option(-step)	$itk_component(entry) delete 0 end	$itk_component(entry) insert 0 $val    }}# ------------------------------------------------------------------# METHOD: down ## Down arrow button press event.  Decrement value in entry.# ------------------------------------------------------------------itcl::body iwidgets::Spinint::down {} {    set min_range [lindex $itk_option(-range) 0]    set max_range [lindex $itk_option(-range) 1]        set val [$itk_component(entry) get]    if {[lindex $itk_option(-range) 0] != ""} {		#	# Check boundaries.	#	if {$val > $min_range && $val <= $max_range} {	    incr val -$itk_option(-step)	    $itk_component(entry) delete 0 end	    $itk_component(entry) insert 0 $val	} else {	    if {$itk_option(-wrap)} {		if {$val <= $min_range} {		    $itk_component(entry) delete 0 end		    $itk_component(entry) insert 0 $max_range		} elseif {$val > $max_range} {		    $itk_component(entry) delete 0 end		    $itk_component(entry) insert 0 $max_range		} else {		    uplevel #0 $itk_option(-invalid)		}	    } else {		uplevel #0 $itk_option(-invalid)	    }	}    } else {		#	# No boundaries.	#	incr val -$itk_option(-step)	$itk_component(entry) delete 0 end	$itk_component(entry) insert 0 $val    }}

⌨️ 快捷键说明

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