diff --git a/color.go b/color.go index d72d017..05dea07 100644 --- a/color.go +++ b/color.go @@ -139,8 +139,20 @@ func NewBeadColor(mw *MyMainWindow, name string, id int, red byte, green byte, b } } val := mw.addBeads(name, data, color.ColorID, color.backgroundColor, ret) + log.Println("Color ID: ", color.ColorID) if val == 1 { - log.Println("Accepted") + for _, b := range mw.beads { + log.Println("Bead Color ID: ", b.ColorID) + if b.ColorID == color.ColorID { + for _, s := range b.Series { + if s.Name == mw.serie_combo.Text() { + s.onHand += ret.Number + log.Println("Added ", ret.Number, " beads of ", name, " to ", mw.serie_combo.Text(), " (", s.onHand, " on hand)") + } + } + } + } + ShowBeads(mw, mw.serie_combo.Text()) } else if val == 2 { log.Println("Canceled") } else { diff --git a/dialog.go b/dialog.go index 05991b6..991945f 100644 --- a/dialog.go +++ b/dialog.go @@ -3,12 +3,28 @@ package main import ( "log" "strconv" + "time" "github.com/lxn/walk" ) +func delay(edit *walk.NumberEdit, val string, ret *Retval) { + delay := time.NewTimer(time.Second * 1) + + <-delay.C + switch val { + case "grams": + edit.SetValue(float64(ret.Grams)) + case "number": + edit.SetValue(float64(ret.Number)) + } +} + func (mv *MyMainWindow) addBeads(name string, data Serie, id int, bg walk.Brush, ret *Retval) int { - log.Println("Adding beads...") + var ( + grams_edit *walk.NumberEdit + number_edit *walk.NumberEdit + ) dlg, err := walk.NewDialog(mv.MainWindow) if err != nil { log.Println(err) @@ -40,18 +56,44 @@ func (mv *MyMainWindow) addBeads(name string, data Serie, id int, bg walk.Brush, lbl.SetText("Grams:") lbl.SetAlignment(walk.AlignHCenterVNear) walk.NewHSpacer(bgr) - le, _ := walk.NewNumberEdit(bgr) - le.SetDecimals(0) - le.SetRange(0, 1000) + grams_edit, _ = walk.NewNumberEdit(bgr) + grams_edit.SetMinMaxSize(walk.Size{Width: 50, Height: 0}, walk.Size{Width: 100, Height: 0}) + grams_edit.SetDecimals(0) + grams_edit.SetRange(0, 1000) + grams_edit.ValueChanged().Attach(func() { + ret.Grams = int(grams_edit.Value()) + switch data.Name { + case "Mini": + ret.Number = ret.Grams * 1000 / 30 + case "Midi": + ret.Number = ret.Grams * 1000 / 60 + case "Maxi": + ret.Number = ret.Grams * 1000 / 120 + } + go delay(number_edit, "number", ret) + }) bnr, _ := walk.NewComposite(fm) bnr.SetLayout(walk.NewHBoxLayout()) lbl, _ = walk.NewTextLabel(bnr) lbl.SetText("Number:") lbl.SetAlignment(walk.AlignHCenterVNear) walk.NewHSpacer(bnr) - ne, _ := walk.NewNumberEdit(bnr) - ne.SetDecimals(0) - ne.SetRange(0, 100000) + number_edit, _ = walk.NewNumberEdit(bnr) + number_edit.SetMinMaxSize(walk.Size{Width: 50, Height: 0}, walk.Size{Width: 100, Height: 0}) + number_edit.SetDecimals(0) + number_edit.SetRange(0, 100000) + number_edit.ValueChanged().Attach(func() { + ret.Number = int(number_edit.Value()) + switch data.Name { + case "Mini": + ret.Grams = ret.Number * 30 / 1000 + case "Midi": + ret.Grams = ret.Number * 60 / 1000 + case "Maxi": + ret.Grams = ret.Number * 120 / 1000 + } + go delay(grams_edit, "grams", ret) + }) bc, _ := walk.NewComposite(dlg) bc.SetLayout(walk.NewHBoxLayout()) bc.Layout().SetMargins(walk.Margins{0, 0, 0, 0}) @@ -59,8 +101,8 @@ func (mv *MyMainWindow) addBeads(name string, data Serie, id int, bg walk.Brush, ab.SetText("Add") dlg.SetDefaultButton(ab) ab.Clicked().Attach(func() { - ret.Grams = int(le.Value()) - ret.Number = int(ne.Value()) + //ret.Grams = int(grams_edit.Value()) + //ret.Number = int(number_edit.Value()) log.Println("grams:", ret.Grams) log.Println("number:", ret.Number) dlg.Accept() diff --git a/main.go b/main.go index a07e320..db5cb5f 100644 --- a/main.go +++ b/main.go @@ -30,7 +30,7 @@ type MyMainWindow struct { const ( AppName string = "BeadImager" - Version string = "0.3.8" + Version string = "0.3.9" CopyRight string = "©2022 Jan Lerking" STD_MESS string = "Ready" LogFile string = "BeadImager.log"