2018-12-24 13:41:04 +00:00

119 lines
2.6 KiB
Go

package Emulator
import (
"fmt"
"strings"
"io/ioutil"
"path/filepath"
"github.com/veandco/go-sdl2/ttf"
//"github.com/veandco/go-sdl2/sdl"
//"github.com/cuu/gogame/surface"
//"github.com/cuu/gogame/rect"
"github.com/cuu/gogame/color"
"github.com/cuu/gogame/draw"
"github.com/clockworkpi/LauncherGoDev/sysgo/UI"
)
type EmulatorPageInterface interface {
UI.PageInterface
GetMapIcons() map[string]UI.IconItemInterface
GetEmulatorConfig() *ActionConfig
}
type EmulatorListItem struct {
UI.HierListItem
Parent EmulatorPageInterface
}
func NewEmulatorListItem() *EmulatorListItem {
p := &EmulatorListItem{}
p.Labels = make(map[string]UI.LabelInterface)
p.Icons = make( map[string]UI.IconItemInterface)
p.Fonts = make(map[string]*ttf.Font)
p.MyType = UI.ICON_TYPES["EXE"]
p.Height = 32
p.Width = 0
return p
}
func (self *EmulatorListItem) Init(text string) {
l := UI.NewLabel()
l.PosX = 20
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 UI.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 *EmulatorListItem) 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()
parent_icons := self.Parent.GetMapIcons()
_,h = parent_icons["sys"].Size()
if self.IsDir() == true && self.Path != "[..]" {
parent_icons["sys"].SetIconIndex (0)
parent_icons["sys"].NewCoord(self.PosX+12,self.PosY+(self.Height-h)/2+h/2)
parent_icons["sys"].Draw()
}
if self.IsFile() == true {
parent_icons["sys"].SetIconIndex(1)
parent_icons["sys"].NewCoord(self.PosX+12,self.PosY+(self.Height-h)/2+h/2)
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)
}