forked from Elara6331/itd
		
	
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package main
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"image/color"
 | 
						|
 | 
						|
	"fyne.io/fyne/v2"
 | 
						|
	"fyne.io/fyne/v2/canvas"
 | 
						|
	"fyne.io/fyne/v2/container"
 | 
						|
	"fyne.io/fyne/v2/widget"
 | 
						|
)
 | 
						|
 | 
						|
type progress struct {
 | 
						|
	lbl *widget.Label
 | 
						|
	pb  *widget.ProgressBar
 | 
						|
	*widget.PopUp
 | 
						|
}
 | 
						|
 | 
						|
func newProgress(w fyne.Window) progress {
 | 
						|
	out := progress{}
 | 
						|
 | 
						|
	// Create label to show how many bytes transfered and center it
 | 
						|
	out.lbl = widget.NewLabel("0 / 0 B")
 | 
						|
	out.lbl.Alignment = fyne.TextAlignCenter
 | 
						|
 | 
						|
	// Create new progress bar
 | 
						|
	out.pb = widget.NewProgressBar()
 | 
						|
 | 
						|
	// Create new rectangle to set the size of the popup
 | 
						|
	sizeRect := canvas.NewRectangle(color.Transparent)
 | 
						|
	sizeRect.SetMinSize(fyne.NewSize(300, 50))
 | 
						|
 | 
						|
	// Create vbox for label and progress bar
 | 
						|
	l := container.NewVBox(out.lbl, out.pb)
 | 
						|
	// Create popup
 | 
						|
	out.PopUp = widget.NewModalPopUp(container.NewMax(l, sizeRect), w.Canvas())
 | 
						|
 | 
						|
	return out
 | 
						|
}
 | 
						|
 | 
						|
func (p progress) SetTotal(v float64) {
 | 
						|
	p.pb.Max = v
 | 
						|
	p.pb.Refresh()
 | 
						|
	p.lbl.SetText(fmt.Sprintf("%.0f / %.0f B", p.pb.Value, v))
 | 
						|
}
 | 
						|
 | 
						|
func (p progress) SetValue(v float64) {
 | 
						|
	p.pb.SetValue(v)
 | 
						|
	p.lbl.SetText(fmt.Sprintf("%.0f / %.0f B", v, p.pb.Max))
 | 
						|
}
 |