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))
 | |
| }
 |