diff --git a/sysgo/UI/confirm_page.go b/sysgo/UI/confirm_page.go index 122fb78..45ce320 100644 --- a/sysgo/UI/confirm_page.go +++ b/sysgo/UI/confirm_page.go @@ -1,2 +1,165 @@ package UI +import ( + + "github.com/veandco/go-sdl2/ttf" + +// "github.com/cuu/gogame/surface" + "github.com/cuu/gogame/event" + "github.com/cuu/gogame/rect" + "github.com/cuu/gogame/color" +// "github.com/cuu/gogame/font" + "github.com/cuu/gogame/draw" + +) + +type ListPageSelector struct { + PageSelector + BackgroundColor *color.Color +} + +func NewListPageSelector() *ListPageSelector { + p := &ListPageSelector{} + p.Width = Width + p.BackgroundColor = &color.Color{131,199,219,255} + return p +} + +func (self *ListPageSelector) Draw() { + idx := self.Parent.GetPsIndex() + mylist := self.Parent.GetMyList() + if idx > (len(mylist) -1) { + idx = len(mylist) + if idx > 0 { + idx -= 1 + }else if idx == 0 { + return + } + } + + x,y := mylist[idx].Coord() + _,h := mylist[idx].Size() + + self.PosX = x + self.PosY = y + self.Height = h -3 + + canvas_ := self.Parent.GetCanvasHWND() + rect_ := rect.Rect(self.PosX, self.PosY, self.Width-4, self.Height) + draw.AARoundRect(canvas_,&rect_,self.BackgroundColor,4,0,self.BackgroundColor) + + +} + +type ConfirmPage struct { + Page + ListFont *ttf.Font + FileName string + TrashDir string + ConfirmText string + BGPosX int + BGPosY int + BGWidth int + BGHeight int + Icons map[string]IconItemInterface + + MyList []LabelInterface + +} + + +func NewConfirmPage() *ConfirmPage { + p := &ConfirmPage{} + p.ListFont = Fonts["veramono20"] + p.FootMsg = [5]string{"Nav","","","Cancel","Yes"} + p.ConfirmText ="Confirm?" + + return p +} + + +func (self *ConfirmPage) GetMyList() []LabelInterface { + return self.MyList +} + +func (self *ConfirmPage) Reset() { + self.MyList[0].SetText(self.ConfirmText) + + self.MyList[0].PosX = (self.Width - self.MyList[0].Width)/2 + self.MyList[0].PosY = (self.Width - self.MyList[0].Height)/2 + + self.BGPosX = self.MyList[0].PosX - 10 + self.BGPosY = self.MyList[0].PosY - 10 + + self.BGWidth = self.MyList[0].Width + 20 + self.BGHeight = self.MyList[0].Height +20 +} + +func (self *ConfirmPage) SnapMsg(msg string) { + self.MyList[0].SetText(msg) + self.MyList[0].PosX = (self.Width - self.MyList[0].Width)/2 + self.MyList[0].PosY = (self.Width - self.MyList[0].Height)/2 + + self.BGPosX = self.MyList[0].PosX - 10 + self.BGPosY = self.MyList[0].PosY - 10 + + self.BGWidth = self.MyList[0].Width + 20 + self.BGHeight = self.MyList[0].Height +20 + +} + +func (self *ConfirmPage) Init() { + if self.Screen != nil { + + self.PosX = self.Index * self.Screen.Width + self.Width = self.Screen.Width + self.Height = self.Screen.Height + self.CanvasHWND = self.Screen.CanvasHWND + + ps := NewListPageSelector() + ps.Parent = self + self.Ps = ps + self.PsIndex = 0 + + li := NewLabel() + li.SetCanvasHWND(self.CanvasHWND) + li.Init(self.ConfirmText,self.ListFont) + + li.PosX = (self.Width - li.Width)/2 + li.PosY = (self.Height - li.Height)/2 + + self.BGPosX = li.PosX - 10 + self.BGPosY = li.PosY - 10 + self.BGWidth = li.Width + 20 + self.BGHeight = li.Height + 20 + + self.MyList = append(self.MyList,li) + + } +} + + +func (self *ConfirmPage) KeyDown( ev *event.Event ) { + + if ev.Data["Key"] == UI.CurKeys["A"] || ev.Data["Key"] == UI.CurKeys["Menu"] { + self.ReturnToUpLevelPage() + self.Screen.Draw() + self.Screen.SwapAndShow() + } +} + +func (self *ConfirmPage) DrawBG() { + rect_ := rect.Rect(self.BGPosX,self.BGPosY,self.BGWidth,self.BGHeight) + + draw.Rect(self.CanvasHWND,&color.Color{255,255,255,255}, &rect_, 0) // SkinManager().GiveColor('White') + draw.Rect(self.CanvasHWND,&color.Color{83,83,83,255}, &rect_, 1)//SkinManager().GiveColor('Text') +} + + +func (self *ConfirmPage) Draw() { + self.DrawBG() + for _,v := range self.MyList{ + v.Draw() + } + self.Reset() +}