gmenu/cmd/gtkmenu/gui.go

68 lines
1.2 KiB
Go

package main
import (
"log"
"os"
"github.com/diamondburned/gotk4/pkg/gdk/v4"
"github.com/diamondburned/gotk4/pkg/gtk/v4"
)
func initWindow(app *gtk.Application) *gtk.ApplicationWindow {
w := gtk.NewApplicationWindow(app)
w.ConnectDestroy(func() {
os.Exit(0)
})
w.SetTitle("gmenu")
w.SetDecorated(false)
if !config.Fullscreen {
w.SetResizable(config.Resizable)
w.SetDefaultSize(config.Width, config.Height)
} else {
w.Fullscreen()
}
return w
}
func handleKeybinding(keyval, keycode uint, state gdk.ModifierType) bool {
switch keyval {
case gdk.KEY_Up, gdk.KEY_Down:
offset := -1
if keyval == gdk.KEY_Down {
offset = 1
}
index := 0
row := listBox.SelectedRow()
if row != nil {
index = row.Index()
}
row = listBox.RowAtIndex(index + offset)
if row != nil {
listBox.SelectRow(row)
row.GrabFocus()
inputView.GrabFocus()
}
return true
case gdk.KEY_Return, gdk.KEY_KP_Enter, gdk.KEY_ISO_Enter, gdk.KEY_3270_Enter:
runInTerminal := state&gdk.MODIFIER_MASK > 0
err := listSelect(inputView, runInTerminal)
if err != nil {
log.Fatal(err)
}
return true
case gdk.KEY_Escape:
os.Exit(0)
}
return false
}