frm_status.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // package frm_status -- статусная панель
  2. package frm_status
  3. import (
  4. "time"
  5. tk "modernc.org/tk9.0"
  6. )
  7. type FrmStatus struct {
  8. winMain *tk.Window
  9. lblLive *tk.LabelWidget
  10. strLive string
  11. }
  12. func NewFrmStatus() *FrmStatus {
  13. sf := &FrmStatus{
  14. winMain: tk.App,
  15. }
  16. frmStatus := sf.winMain.Frame(tk.Border(1), tk.Relief(tk.SUNKEN))
  17. tk.Pack(frmStatus, tk.Fill(tk.FILL_X), tk.Side(tk.BOTTOM))
  18. fontLive := tk.Font("Courier")
  19. sf.lblLive = frmStatus.Label(tk.Txt(sf.strLive),
  20. tk.Relief(tk.RAISED),
  21. tk.Background(tk.Yellow),
  22. fontLive,
  23. )
  24. tk.Pack(sf.lblLive, tk.Side(tk.LEFT))
  25. lblSeparator0 := frmStatus.Label(tk.Txt(" "))
  26. tk.Pack(lblSeparator0, tk.Side(tk.LEFT))
  27. sf.strLive = "[|]"
  28. sf.liveUpdate()
  29. return sf
  30. }
  31. func (sf *FrmStatus) liveUpdate() {
  32. switch sf.strLive {
  33. case "[|]":
  34. sf.strLive = "[/]"
  35. case "[/]":
  36. sf.strLive = "[-]"
  37. case "[-]":
  38. sf.strLive = "[\\]"
  39. case "[\\]":
  40. sf.strLive = "[|]"
  41. }
  42. sf.lblLive.Configure(tk.Txt(sf.strLive))
  43. tk.TclAfter(time.Millisecond*250, sf.liveUpdate)
  44. }