123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302 |
- package UI
- import (
- "fmt"
- "github.com/veandco/go-sdl2/sdl"
- "github.com/veandco/go-sdl2/ttf"
- "github.com/cuu/gogame/color"
- "github.com/cuu/gogame/draw"
- "github.com/cuu/gogame/image"
- "github.com/cuu/gogame/rect"
- "github.com/cuu/gogame/surface"
- "github.com/cuu/gogame/transform"
- "github.com/cuu/gogame/utils"
- )
- type IconItemInterface interface {
- Init(x, y, w, h, at int)
- Adjust(x, y, w, h, at int)
- GetCmdPath() string
- SetCmdPath(path string)
- SetMyType(thetype int)
- GetMyType() int
- GetIconIndex() int
- SetIconIndex(idx int)
- GetIndex() int
- SetIndex(i int)
- SetParent(p interface{})
- SetLabelColor(col *color.Color)
- SetLabelText(text string)
- GetLabelText() string
- Coord() (int, int)
- NewCoord(x, y int)
- Size() (int, int)
- NewSize(w, h int)
- TotalWidth() int
- AddLabel(text string, fontobj *ttf.Font)
- GetLinkPage() PageInterface
- AdjustLinkPage()
- GetImgSurf() *sdl.Surface
- SetImgSurf(newsurf *sdl.Surface)
- CreateImgSurf()
- ChangeImgSurfColor(col *color.Color)
- Clear()
- GetCmdInvoke() PluginInterface
- GetFileName() string
- Draw()
- DrawTopLeft()
- }
- type IconItem struct {
- Widget
- ImageName string
- ImgSurf *sdl.Surface
- Parent PageInterface
- Index int
- IconIndex int
- MyType int
- CmdPath string
- CmdInvoke PluginInterface
- LinkPage PageInterface
- Label LabelInterface
- Align int
- AnimationTime int
- FileName string
- }
- func NewIconItem() *IconItem {
- i := &IconItem{}
- i.MyType = ICON_TYPES["EXE"]
- i.Align = ALIGN["VCenter"]
- return i
- }
- func (self *IconItem) Init(x, y, w, h, at int) {
- self.PosX = x
- self.PosY = y
- self.Width = w
- self.Height = h
- self.AnimationTime = at
- }
- func (self *IconItem) Adjust(x, y, w, h, at int) {
- self.PosX = x
- self.PosY = y
- self.Width = w
- self.Height = h
- self.AnimationTime = at
- if self.Label != nil {
- self.Label.SetCanvasHWND(self.Parent.GetCanvasHWND())
- }
- self.CreateImgSurf()
- self.AdjustLinkPage()
- }
- func (self *IconItem) GetCmdPath() string {
- return self.CmdPath
- }
- func (self *IconItem) SetCmdPath(path string) {
- self.CmdPath = path
- }
- func (self *IconItem) SetMyType(thetype int) {
- self.MyType = thetype
- }
- func (self *IconItem) GetMyType() int {
- return self.MyType
- }
- func (self *IconItem) GetIconIndex() int {
- return self.IconIndex
- }
- func (self *IconItem) SetIconIndex(idx int) {
- self.IconIndex = idx
- }
- func (self *IconItem) GetIndex() int {
- return self.Index
- }
- func (self *IconItem) SetIndex(i int) {
- self.Index = i
- }
- func (self *IconItem) SetParent(p interface{}) {
- self.Parent = p.(PageInterface)
- }
- func (self *IconItem) SetLabelColor(col *color.Color) {
- self.Label.SetColor(col)
- }
- func (self *IconItem) GetLabelText() string {
- return self.Label.GetText()
- }
- func (self *IconItem) SetLabelText(text string) {
- self.Label.SetText(text)
- }
- func (self *IconItem) Coord() (int, int) {
- return self.PosX, self.PosY
- }
- func (self *IconItem) NewCoord(x, y int) {
- self.PosX = x
- self.PosY = y
- }
- func (self *IconItem) TotalWidth() int {
- return 0
- }
- func (self *IconItem) Size() (int, int) {
- return self.Width, self.Height
- }
- func (self *IconItem) AddLabel(text string, fontobj *ttf.Font) {
- if self.Label == nil {
- l := NewLabel()
- self.Label = l
- }
- self.Label.Init(text, fontobj, nil)
- }
- func (self *IconItem) GetLinkPage() PageInterface {
- return self.LinkPage
- }
- func (self *IconItem) AdjustLinkPage() {
- if self.MyType == ICON_TYPES["DIR"] && self.LinkPage != nil {
- self.LinkPage.SetIndex(0)
- self.LinkPage.SetAlign(ALIGN["SLeft"])
- self.LinkPage.UpdateIconNumbers()
- self.LinkPage.SetScreen(self.Parent.GetScreen())
- self.LinkPage.SetCanvasHWND((self.Parent.GetScreen()).CanvasHWND)
- self.LinkPage.SetFootMsg([5]string{"Nav.", "", "", "Back", "Enter"})
- if self.LinkPage.GetAlign() == ALIGN["HLeft"] {
- self.LinkPage.AdjustHLeftAlign()
- } else if self.LinkPage.GetAlign() == ALIGN["SLeft"] {
- self.LinkPage.AdjustSAutoLeftAlign()
- if self.LinkPage.GetIconNumbers() > 1 {
- self.LinkPage.SetPsIndex(1)
- self.LinkPage.SetIconIndex(1)
- }
- }
- }
- }
- func (self *IconItem) GetImgSurf() *sdl.Surface {
- return self.ImgSurf
- }
- func (self *IconItem) SetImgSurf(newsurf *sdl.Surface) {
- self.ImgSurf = newsurf
- }
- func (self *IconItem) CreateImgSurf() {
- if self.ImgSurf == nil && self.ImageName != "" {
- self.ImgSurf = image.Load(self.ImageName)
- if int(self.ImgSurf.W) > IconWidth || int(self.ImgSurf.H) > IconHeight {
- self.ImgSurf = transform.Scale(self.ImgSurf, IconWidth, IconHeight)
- }
- }
- }
- func (self *IconItem) ChangeImgSurfColor(col *color.Color) {
- utils.ColorSurface(self.ImgSurf, col)
- }
- func (self *IconItem) Clear() {
- }
- func (self *IconItem) GetCmdInvoke() PluginInterface {
- return self.CmdInvoke
- }
- func (self *IconItem) GetFileName() string {
- return self.FileName
- }
- func (self *IconItem) DrawTopLeft() {
- if self.Parent == nil {
- fmt.Println("Error: IconItem Draw Parent nil")
- return
- }
- parent_x, parent_y := self.Parent.Coord()
- if self.Label != nil {
- // lab_x,lab_y := self.Label.Coord()
- lab_w, lab_h := self.Label.Size()
- if self.Align == ALIGN["VCenter"] {
- // fmt.Println("IconItem Draw VCenter:",lab_w,lab_h,self.Label.GetText())
- self.Label.NewCoord(self.PosX-lab_w/2+parent_x, self.PosY+self.Height/2+6+parent_y)
- } else if self.Align == ALIGN["HLeft"] {
- self.Label.NewCoord(self.PosX+self.Width/2+3+parent_x, self.PosY-lab_h/2+parent_y)
- }
- self.Label.Draw()
- }
- if self.ImgSurf != nil {
- rect_ := rect.Rect(self.PosX+parent_x, self.PosY+parent_y, self.Width, self.Height) // DIFF
- surface.Blit(self.Parent.GetCanvasHWND(), self.ImgSurf, &rect_, nil)
- }
- }
- func (self *IconItem) Draw() {
- if self.Parent == nil {
- fmt.Println("Error: IconItem Draw Parent nil")
- return
- }
- parent_x, parent_y := self.Parent.Coord()
- if self.Label != nil {
- // lab_x,lab_y := self.Label.Coord()
- lab_w, lab_h := self.Label.Size()
- if self.Align == ALIGN["VCenter"] {
- // fmt.Println("IconItem Draw VCenter:",lab_w,lab_h,self.Label.GetText())
- self.Label.NewCoord(self.PosX-lab_w/2+parent_x, self.PosY+self.Height/2+6+parent_y)
- } else if self.Align == ALIGN["HLeft"] {
- self.Label.NewCoord(self.PosX+self.Width/2+3+parent_x, self.PosY-lab_h/2+parent_y)
- }
- self.Label.Draw()
- }
- if self.ImgSurf != nil {
- surface.Blit(self.Parent.GetCanvasHWND(), self.ImgSurf, draw.MidRect(self.PosX+parent_x, self.PosY+parent_y,
- self.Width, self.Height, Width, Height), nil)
- }
- }
|