📄 feedback.itk
字号:
## Feedback# ----------------------------------------------------------------------# Implements a Feedback widget, to display feedback on the status of an # process to the user. Display is given as a percentage and as a # thermometer type bar. Options exist for adding a label and controlling its# position.## ----------------------------------------------------------------------# AUTHOR: Kris Raney EMAIL: kraney@spd.dsccc.com## @(#) $Id: feedback.itk,v 1.5 2001/08/15 18:32:18 smithc Exp $# ----------------------------------------------------------------------# Copyright (c) 1996 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.# ======================================================================# Acknowledgements:## Special thanks go to Sam Shen(SLShen@lbl.gov), as this code is based on his # feedback.tcl code from tk inspect. The original code is copyright 1995# Lawrence Berkeley Laboratory.## This software is copyright (C) 1994 by the Lawrence Berkeley Laboratory.# # Redistribution and use in source and binary forms, with or without# modification, are permitted provided that: (1) source code distributions# retain the above copyright notice and this paragraph in its entirety, (2)# distributions including binary code include the above copyright notice and# this paragraph in its entirety in the documentation or other materials# provided with the distribution, and (3) all advertising materials mentioning# features or use of this software display the following acknowledgement:# ``This product includes software developed by the University of California,# Lawrence Berkeley Laboratory and its contributors.'' Neither the name of# the University nor the names of its contributors may be used to endorse# or promote products derived from this software without specific prior# written permission.# # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.## Default resources.#option add *Feedback.borderWidth 2 widgetDefaultoption add *Feedback.labelPos n widgetDefaultoption add *Feedback.barHeight 20 widgetDefaultoption add *Feedback.troughColor White widgetDefaultoption add *Feedback.barColor Blue widgetDefault## Usual options.#itk::usual Feedback { keep -background -cursor -foreground}# ------------------------------------------------------------------# FEEDBACK# ------------------------------------------------------------------itcl::class iwidgets::Feedback { inherit iwidgets::Labeledwidget constructor {args} {} destructor {} itk_option define -steps steps Steps 10 public { method reset {} method step {{inc 1}} } private { method _display variable _barwidth 0 variable _stepval 0 }}## Provide a lowercased access method for the Dialogshell class.# proc ::iwidgets::feedback {pathName args} { uplevel ::iwidgets::Feedback $pathName $args}# ------------------------------------------------------------------# CONSTRUCTOR# ------------------------------------------------------------------itcl::body iwidgets::Feedback::constructor {args} { itk_component add trough { frame $itk_interior.trough -relief sunken } { usual keep -borderwidth rename -background -troughcolor troughColor TroughColor rename -height -barheight barHeight Height } itk_component add bar { frame $itk_component(trough).bar -relief raised } { usual keep -borderwidth rename -background -barcolor barColor BarColor rename -height -barheight barHeight Height } pack $itk_component(bar) -side left -fill y -anchor w itk_component add percentage { label $itk_interior.percentage -text "0%" } grid $itk_component(trough) -row 1 -column 0 -sticky sew -padx 2 -pady 2 grid $itk_component(percentage) -row 2 -column 0 -sticky nsew -padx 2 -pady 2 grid rowconfigure $itk_interior 0 -weight 1 grid rowconfigure $itk_interior 1 -weight 1 grid columnconfigure $itk_interior 0 -weight 1 bind $itk_component(hull) <Configure> [itcl::code $this _display] eval itk_initialize $args}# ------------------------------------------------------------------# DESTRUCTOR# ------------------------------------------------------------------itcl::body iwidgets::Feedback::destructor {} {}# ------------------------------------------------------------------# OPTIONS# ------------------------------------------------------------------# ------------------------------------------------------------------# OPTION: -steps## Set the total number of steps.# ------------------------------------------------------------------itcl::configbody iwidgets::Feedback::steps { step 0}# ------------------------------------------------------------------# METHODS# ------------------------------------------------------------------# -----------------------------------------------------------------------------# PROTECTED METHOD: _display ## Displays the bar in the trough with the width set using the current number# of steps.# -----------------------------------------------------------------------------itcl::body iwidgets::Feedback::_display {} { update idletasks set troughwidth [winfo width $itk_component(trough)] set _barwidth [expr { (1.0*$troughwidth-(2.0*[$itk_component(trough) cget -borderwidth])) / $itk_option(-steps)}] set fraction [expr {int((1.0*$_stepval)/$itk_option(-steps)*100.0)}] $itk_component(percentage) config -text "$fraction%" $itk_component(bar) config -width [expr {$_barwidth*$_stepval}] update}# ------------------------------------------------------------------# METHOD: reset## Resets the status bar to 0# ------------------------------------------------------------------itcl::body iwidgets::Feedback::reset {} { set _stepval 0 _display }# ------------------------------------------------------------------# METHOD: step ?inc?## Increase the value of the status bar by inc. Default to 1# ------------------------------------------------------------------itcl::body iwidgets::Feedback::step {{inc 1}} { if {$_stepval >= $itk_option(-steps)} { return } incr _stepval $inc _display }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -