LauncherGoDev/sysgo/UI/hier_list_item.go
2018-12-24 14:18:32 +08:00

162 lines
3.1 KiB
Go

package UI
import(
"fmt"
"path/filepath"
"strings"
"io/ioutil"
"github.com/veandco/go-sdl2/ttf"
"github.com/cuu/gogame/rect"
"github.com/cuu/gogame/surface"
"github.com/cuu/gogame/draw"
"github.com/cuu/gogame/color"
)
type ListItemIcon struct {
IconItem
}
func NewListItemIcon() *ListItemIcon {
p := &ListItemIcon{}
p.MyType = ICON_TYPES["EXE"]
p.Align = ALIGN["VCenter"]
p.Width = 18
p.Height = 18
return p
}
func (self *ListItemIcon) Draw() {
_,h := self.Parent.Size()
rect_ := rect.Rect(self.PosX,self.PosY+(h-self.Height)/2,self.Width,self.Height)
surface.Blit(self.Parent.GetCanvasHWND(), self.ImgSurf,&rect_,nil)
}
/// [..] [.]
type HierListItem struct {
ListItem
MyType int
Path string
Active bool
Playing bool
}
var HierListItemDefaultHeight = 32
func NewHierListItem() *HierListItem {
p := &HierListItem{}
p.Labels = make(map[string]LabelInterface)
p.Icons = make( map[string]IconItemInterface)
p.Fonts = make(map[string]*ttf.Font)
p.MyType = ICON_TYPES["EXE"]
p.Height = HierListItemDefaultHeight
p.Width = 0
return p
}
func (self *HierListItem) IsFile() bool {
if self.MyType == ICON_TYPES["FILE"] {
return true
}
return false
}
func (self *HierListItem) IsDir() bool {
if self.MyType == ICON_TYPES["DIR"] {
return true
}
return false
}
func (self *HierListItem) Init(text string) {
l := NewLabel()
l.PosX = 20
if self.Parent == nil {
fmt.Println("Parent nil")
return
}
l.SetCanvasHWND(self.Parent.GetCanvasHWND())
if self.IsDir() == true || self.IsFile() == true {
self.Path = text
}
label_text := filepath.Base(text)
ext:= filepath.Ext(text)
if ext != "" {
alias_file := strings.Replace(text,ext,"",-1) + ".alias"
if FileExists(alias_file) == true {
b, err := ioutil.ReadFile(alias_file)
if err != nil {
fmt.Print(err)
}else {
label_text = string(b)
}
}
}
if self.IsDir() == true {
l.Init(label_text, self.Fonts["normal"],nil)
}else {
l.Init(label_text,self.Fonts["normal"],nil)
}
self.Labels["Text"] = l
}
func (self *HierListItem) Draw() {
x,y := self.Labels["Text"].Coord()
_,h := self.Labels["Text"].Size()
if self.Path != "[..]" {
self.Labels["Text"].NewCoord(23,y)
}else {
self.Labels["Text"].NewCoord(3,y)
}
x,y = self.Labels["Text"].Coord()
self.Labels["Text"].NewCoord(x, self.PosY + (self.Height-h)/2)
self.Labels["Text"].Draw()
/*
w,h := self.Parent.Icons["sys"].Size()
if self.IsDir() == true && self.Path != "[..]" {
self.Parent.Icons["sys"].IconIndex = 0
self.Parent.Icons["sys"].NewCoord(self.PosX+12,self.PosY+(self.Height-h)/2+h/2)
self.Parent.Icons["sys"].Draw()
}
if self.IsFile() == true {
self.Parent.Icons["sys"].IconIndex = 1
self.Parent.Icons["sys"].NewCoord(self.PosX+12,self.PosY+(self.Height-h)/2+h/2)
self.Parent.Icons["sys"].Draw()
}
*/
draw.Line(self.Parent.GetCanvasHWND(),&color.Color{169,169,169,255},
self.PosX,self.PosY+self.Height-1,self.PosX+self.Width,self.PosY+self.Height-1,1)
}