mirror of
https://github.com/vsariola/sointu.git
synced 2025-05-28 03:10:24 -04:00
feat(tracker): create initial tracker skeleton using Gio
This commit is contained in:
parent
5eb7cef889
commit
64fe28a240
5
go.mod
5
go.mod
@ -2,4 +2,7 @@ module github.com/vsariola/sointu
|
|||||||
|
|
||||||
go 1.15
|
go 1.15
|
||||||
|
|
||||||
require github.com/hajimehoshi/oto v0.6.6
|
require (
|
||||||
|
gioui.org v0.0.0-20201106195654-dbc0796d0207
|
||||||
|
github.com/hajimehoshi/oto v0.6.6
|
||||||
|
)
|
||||||
|
24
go4k/cmd/sointu-tracker/main.go
Normal file
24
go4k/cmd/sointu-tracker/main.go
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"gioui.org/app"
|
||||||
|
"gioui.org/unit"
|
||||||
|
"github.com/vsariola/sointu/go4k/tracker"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
go func() {
|
||||||
|
w := app.NewWindow(
|
||||||
|
app.Size(unit.Dp(800), unit.Dp(600)),
|
||||||
|
app.Title("Sointu Tracker"),
|
||||||
|
)
|
||||||
|
if err := tracker.New().Run(w); err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
os.Exit(0)
|
||||||
|
}()
|
||||||
|
app.Main()
|
||||||
|
}
|
17
go4k/tracker/keyevent.go
Normal file
17
go4k/tracker/keyevent.go
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
package tracker
|
||||||
|
|
||||||
|
import (
|
||||||
|
"gioui.org/io/key"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
// KeyEvent handles incoming key events and returns true if repaint is needed.
|
||||||
|
func (t *Tracker) KeyEvent(e key.Event) bool {
|
||||||
|
if e.State == key.Press {
|
||||||
|
switch e.Name {
|
||||||
|
case key.NameEscape:
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
7
go4k/tracker/layout.go
Normal file
7
go4k/tracker/layout.go
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
package tracker
|
||||||
|
|
||||||
|
import "gioui.org/layout"
|
||||||
|
|
||||||
|
func (t *Tracker) Layout(gtx layout.Context) {
|
||||||
|
t.QuitButton.Layout(gtx)
|
||||||
|
}
|
35
go4k/tracker/run.go
Normal file
35
go4k/tracker/run.go
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
package tracker
|
||||||
|
|
||||||
|
import (
|
||||||
|
"gioui.org/app"
|
||||||
|
"gioui.org/io/key"
|
||||||
|
"gioui.org/io/system"
|
||||||
|
"gioui.org/layout"
|
||||||
|
"gioui.org/op"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (t *Tracker) Run(w *app.Window) error {
|
||||||
|
var ops op.Ops
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case e := <-w.Events():
|
||||||
|
switch e := e.(type) {
|
||||||
|
case system.DestroyEvent:
|
||||||
|
return e.Err
|
||||||
|
case key.Event:
|
||||||
|
if t.KeyEvent(e) {
|
||||||
|
w.Invalidate()
|
||||||
|
}
|
||||||
|
case system.FrameEvent:
|
||||||
|
gtx := layout.NewContext(&ops, e)
|
||||||
|
if t.QuitButton.Clicked() {
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
t.Layout(gtx)
|
||||||
|
e.Frame(gtx.Ops)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
13
go4k/tracker/tracker.go
Normal file
13
go4k/tracker/tracker.go
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
package tracker
|
||||||
|
|
||||||
|
import "gioui.org/widget"
|
||||||
|
|
||||||
|
type Tracker struct {
|
||||||
|
QuitButton *widget.Clickable
|
||||||
|
}
|
||||||
|
|
||||||
|
func New() *Tracker {
|
||||||
|
return &Tracker{
|
||||||
|
QuitButton: new(widget.Clickable),
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user