mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 21:40:52 -05:00 
			
		
		
		
	git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/WSJT/trunk@1 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
		
			
				
	
	
		
			74 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""
 | 
						|
A  basic widget for showing the progress
 | 
						|
being made in a task.
 | 
						|
 | 
						|
"""
 | 
						|
 | 
						|
from Tkinter import *
 | 
						|
 | 
						|
class Smeter:
 | 
						|
    def __init__(self, master=None, orientation="horizontal",
 | 
						|
                 min=0, max=100, width=100, height=18,
 | 
						|
                 doLabel=1, appearance="sunken",
 | 
						|
		 fillColor="blue", background="gray",
 | 
						|
                 labelColor="yellow", labelFont="Verdana",
 | 
						|
                 labelText="", labelFormat="%d%%",
 | 
						|
                 value=50, bd=2):
 | 
						|
	# preserve various values
 | 
						|
	self.master=master
 | 
						|
	self.orientation=orientation
 | 
						|
	self.min=min
 | 
						|
	self.max=max
 | 
						|
	self.width=width
 | 
						|
	self.height=height
 | 
						|
	self.doLabel=doLabel
 | 
						|
	self.fillColor=fillColor
 | 
						|
        self.labelFont= labelFont
 | 
						|
	self.labelColor=labelColor
 | 
						|
	self.background=background
 | 
						|
	self.labelText=labelText
 | 
						|
	self.labelFormat=labelFormat
 | 
						|
	self.value=value
 | 
						|
	self.frame=Frame(master, relief=appearance, bd=bd)
 | 
						|
	self.canvas=Canvas(self.frame, height=height, width=width, bd=0,
 | 
						|
                           highlightthickness=0, background=background)
 | 
						|
	self.scale=self.canvas.create_rectangle(0, 0, width, height,
 | 
						|
						fill=fillColor)
 | 
						|
	self.label=self.canvas.create_text(self.canvas.winfo_reqwidth() / 2,
 | 
						|
					   height / 2, text=labelText,
 | 
						|
					   anchor="c", fill=labelColor,
 | 
						|
					   font=self.labelFont)
 | 
						|
	self.update()
 | 
						|
	self.canvas.pack(side='top', fill='x', expand='no')
 | 
						|
 | 
						|
    def updateProgress(self, newValue, newMax=None):
 | 
						|
        if newMax:
 | 
						|
            self.max = newMax
 | 
						|
        self.value = newValue
 | 
						|
        self.update()
 | 
						|
 | 
						|
    def update(self):
 | 
						|
	# Trim the values to be between min and max
 | 
						|
	value=self.value
 | 
						|
	if value > self.max:
 | 
						|
	    value = self.max
 | 
						|
	if value < self.min:
 | 
						|
	    value = self.min
 | 
						|
	# Adjust the rectangle
 | 
						|
	if self.orientation == "horizontal":
 | 
						|
	    self.canvas.coords(self.scale, 0, 0,
 | 
						|
		     float(value) / self.max * self.width, self.height)
 | 
						|
	else:
 | 
						|
	    self.canvas.coords(self.scale, 0,
 | 
						|
                     self.height - (float(value) / self.max*self.height),
 | 
						|
		     self.width, self.height)
 | 
						|
	# Now update the colors
 | 
						|
	self.canvas.itemconfig(self.scale, fill=self.fillColor)
 | 
						|
	self.canvas.itemconfig(self.label, fill=self.labelColor)
 | 
						|
	# And update the label
 | 
						|
	if self.doLabel:
 | 
						|
            dB=int((value-50.0)/2.5)
 | 
						|
            t='%d dB'%dB
 | 
						|
            self.canvas.itemconfig(self.label, text=t)
 | 
						|
	self.canvas.update_idletasks()
 |