info_page_list_item.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package UI
  2. import (
  3. "github.com/veandco/go-sdl2/ttf"
  4. "github.com/cuu/gogame/color"
  5. "github.com/cuu/gogame/draw"
  6. )
  7. var DefaultInfoPageListItemHeight = 30
  8. type InfoPageListItem struct {
  9. ListItem
  10. Flag string
  11. ReadOnly bool
  12. }
  13. func NewInfoPageListItem() *InfoPageListItem {
  14. p := &InfoPageListItem{}
  15. p.Height = DefaultInfoPageListItemHeight
  16. p.ReadOnly = false
  17. p.Labels = make(map[string]LabelInterface)
  18. p.Icons = make(map[string]IconItemInterface)
  19. p.Fonts = make(map[string]*ttf.Font)
  20. return p
  21. }
  22. func (self *InfoPageListItem) SetSmallText(text string) {
  23. l := NewLabel()
  24. l.PosX = 40
  25. l.SetCanvasHWND(self.Parent.GetCanvasHWND())
  26. l.Init(text, self.Fonts["small"], nil)
  27. self.Labels["Small"] = l
  28. }
  29. func (self *InfoPageListItem) Init(text string) {
  30. l := NewLabel()
  31. l.PosX = 10
  32. l.SetCanvasHWND(self.Parent.GetCanvasHWND())
  33. l.Init(text, self.Fonts["normal"], nil)
  34. self.Labels["Text"] = l
  35. }
  36. func (self *InfoPageListItem) Draw() {
  37. if self.ReadOnly == true {
  38. self.Labels["Text"].SetColor(&color.Color{130, 130, 130, 255}) //SkinManager().GiveColor("ReadOnlyText")
  39. } else {
  40. self.Labels["Text"].SetColor(&color.Color{83, 83, 83, 255}) // SkinManager().GiveColor("Text")
  41. }
  42. x, _ := self.Labels["Text"].Coord()
  43. w, h := self.Labels["Text"].Size()
  44. self.Labels["Text"].NewCoord(x+self.PosX, self.PosY+(self.Height-h)/2)
  45. self.Labels["Text"].Draw()
  46. self.Labels["Text"].NewCoord(x, self.PosY+(self.Height-h)/2)
  47. if _, ok := self.Labels["Small"]; ok {
  48. x, _ = self.Labels["Small"].Coord()
  49. w, h = self.Labels["Small"].Size()
  50. self.Labels["Small"].NewCoord(self.Width-w-5, self.PosY+(self.Height-h)/2)
  51. self.Labels["Small"].Draw()
  52. }
  53. canvas_ := self.Parent.GetCanvasHWND()
  54. draw.Line(canvas_, &color.Color{169, 169, 169, 255}, self.PosX, self.PosY+self.Height-1, self.PosX+self.Width, self.PosY+self.Height-1, 1)
  55. }