new-gui/area.go

117 lines
2.8 KiB
Go

package gui
import "log"
import "time"
import "github.com/andlabs/ui"
import _ "github.com/andlabs/ui/winmanifest"
import "github.com/davecgh/go-spew/spew"
func findFB(button *ButtonMap) *ButtonMap {
var a *ButtonMap
for key, foo := range Data.AllButtons {
log.Println("defaultButtonClick() Data.AllButtons =", key, foo)
// if Data.AllButtons[key] == *button {
if &foo == button {
a = &foo
}
}
return a
}
func makeSplashArea() *AreaHandler {
// make this button just to get the default font (but don't display the button)
// There should be another way to do this (?)
newB := CreateFontButton("AREA")
time.Sleep(200 * time.Millisecond)
tmp := findFB(newB)
log.Println("makeSplashArea() newB =", newB)
log.Println("makeSplashArea() newB.AH =", newB.AH)
log.Println("makeSplashArea() newB =", newB)
newB.AH = &myAH
// log.Println("makeSplashArea() newB.AH =", newB.AH)
log.Println("makeSplashArea() newB =", newB)
time.Sleep(200 * time.Millisecond)
tmp = findFB(newB)
log.Println("makeSplashArea() tmp =", tmp, "newB", newB)
myAH.Attrstr = makeAttributedString()
myAH.Area = ui.NewArea(myAH)
newB.A = myAH.Area
myAH.FontButton = newB.FB
myAH.Button = newB
if (Data.Debug) {
spew.Dump(myAH.Area)
log.Println("DEBUGGING", Data.Debug)
} else {
log.Println("NOT DEBUGGING AREA mhAH.Button =", myAH.Button)
}
return &myAH
}
func appendWithAttributes(newText *ui.AttributedString, what string, attrs ...ui.Attribute) {
start := len(newText.String())
end := start + len(what)
newText.AppendUnattributed(what)
for _, a := range attrs {
newText.SetAttribute(a, start, end)
}
}
func (ah AreaHandler) Draw(a *ui.Area, p *ui.AreaDrawParams) {
tl := ui.DrawNewTextLayout(&ui.DrawTextLayoutParams{
String: ah.Attrstr,
DefaultFont: ah.FontButton.Font(),
Width: p.AreaWidth,
Align: ui.DrawTextAlign(1),
})
p.Context.Text(tl, 0, 0)
defer tl.Free()
}
func (ah AreaHandler) MouseEvent(a *ui.Area, me *ui.AreaMouseEvent) {
if (Data.Debug) {
log.Println("GOT MouseEvent()")
spew.Dump(me)
}
if (me.Down == 1) {
log.Println("GOT MOUSE DOWN")
}
if (me.Up == 1) {
log.Println("GOT MOUSE UP")
log.Println("GOT MOUSE UP")
log.Println("GOT MOUSE UP")
mouseClick(ah.Button)
}
}
func (ah AreaHandler) MouseCrossed(a *ui.Area, left bool) {
log.Println("GOT MouseCrossed()")
}
func (ah AreaHandler) DragBroken(a *ui.Area) {
log.Println("GOT DragBroken()")
}
func (ah AreaHandler) KeyEvent(a *ui.Area, ke *ui.AreaKeyEvent) (handled bool) {
log.Println("GOT KeyEvent()")
if (ke.Key == 10) {
log.Println("GOT ENTER")
log.Println("GOT ENTER")
log.Println("GOT ENTER")
}
if (ke.Key == 32) {
log.Println("GOT ENTER")
log.Println("GOT ENTER")
log.Println("GOT ENTER")
}
spew.Dump(ke)
// splashWin.Destroy()
// ui.Quit()
return false
}