Skip to content

Commit afb87f6

Browse files
committed
Add support for Min, Max (and Step) to ProgressBar and Slider
1 parent eeea81c commit afb87f6

2 files changed

Lines changed: 95 additions & 2 deletions

File tree

go_test.go

Lines changed: 43 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/guidefs/widget.go

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -966,14 +966,34 @@ func initProgressBarWidget() WidgetInfo {
966966
}
967967
onchanged()
968968
}
969+
minval := widget.NewEntry()
970+
minval.SetText(fmt.Sprintf("%f", p.Min))
971+
minval.OnChanged = func(s string) {
972+
if f, err := strconv.ParseFloat(s, 64); err == nil {
973+
p.Min = f
974+
p.Refresh()
975+
}
976+
onchanged()
977+
}
978+
maxval := widget.NewEntry()
979+
maxval.SetText(fmt.Sprintf("%f", p.Max))
980+
maxval.OnChanged = func(s string) {
981+
if f, err := strconv.ParseFloat(s, 64); err == nil {
982+
p.Max = f
983+
p.Refresh()
984+
}
985+
onchanged()
986+
}
969987
return []*widget.FormItem{
988+
widget.NewFormItem("Min", minval),
989+
widget.NewFormItem("Max", maxval),
970990
widget.NewFormItem("Value", value),
971991
}
972992
},
973993
Gostring: func(obj fyne.CanvasObject, c Context, defs map[string]string) string {
974994
p := obj.(*widget.ProgressBar)
975995
return widgetRef(obj, c, defs,
976-
fmt.Sprintf("&widget.ProgressBar{Value: %f}", p.Value))
996+
fmt.Sprintf("&widget.ProgressBar{Min: %f, Max: %f, Value: %f}", p.Min, p.Max, p.Value))
977997
},
978998
}
979999
}
@@ -1158,6 +1178,33 @@ func initSliderWidget() WidgetInfo {
11581178
}
11591179
onchanged()
11601180
}
1181+
minval := widget.NewEntry()
1182+
minval.SetText(fmt.Sprintf("%f", slider.Min))
1183+
minval.OnChanged = func(s string) {
1184+
if f, err := strconv.ParseFloat(s, 64); err == nil {
1185+
slider.Min = f
1186+
slider.Refresh()
1187+
}
1188+
onchanged()
1189+
}
1190+
maxval := widget.NewEntry()
1191+
maxval.SetText(fmt.Sprintf("%f", slider.Max))
1192+
maxval.OnChanged = func(s string) {
1193+
if f, err := strconv.ParseFloat(s, 64); err == nil {
1194+
slider.Max = f
1195+
slider.Refresh()
1196+
}
1197+
onchanged()
1198+
}
1199+
stepval := widget.NewEntry()
1200+
stepval.SetText(fmt.Sprintf("%f", slider.Step))
1201+
stepval.OnChanged = func(s string) {
1202+
if f, err := strconv.ParseFloat(s, 64); err == nil {
1203+
slider.Step = f
1204+
slider.Refresh()
1205+
}
1206+
onchanged()
1207+
}
11611208
vert := widget.NewCheck("", func(on bool) {
11621209
if on {
11631210
slider.Orientation = widget.Vertical
@@ -1169,7 +1216,10 @@ func initSliderWidget() WidgetInfo {
11691216
})
11701217
vert.Checked = slider.Orientation == widget.Vertical
11711218
return []*widget.FormItem{
1219+
widget.NewFormItem("Min", minval),
1220+
widget.NewFormItem("Max", maxval),
11721221
widget.NewFormItem("Value", val),
1222+
widget.NewFormItem("Step", stepval),
11731223
widget.NewFormItem("Vertical", vert),
11741224
}
11751225
},
@@ -1179,7 +1229,7 @@ func initSliderWidget() WidgetInfo {
11791229
if slider.Orientation == widget.Vertical {
11801230
orient = "widget.Vertical"
11811231
}
1182-
return widgetRef(obj, c, defs, fmt.Sprintf("&widget.Slider{Min:0, Max:100, Value:%f, Orientation: %s}", slider.Value, orient))
1232+
return widgetRef(obj, c, defs, fmt.Sprintf("&widget.Slider{Min:%f, Max:%f, Value:%f, Step:%f, Orientation: %s}", slider.Min, slider.Max, slider.Value, slider.Step, orient))
11831233
},
11841234
}
11851235
}

0 commit comments

Comments
 (0)