68 lines
1.2 KiB
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
|
|
}
|