gocui/eventKeyboard.go

91 lines
2.4 KiB
Go

// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
// Use of this source code is (now) governed by the GPL 3.0
package main
import (
"github.com/awesome-gocui/gocui"
)
// tells 'gocui' what to call based on what key was pressed
func registerHandlers(g *gocui.Gui) {
g.SetKeybinding("", '?', gocui.ModNone, theHelp) // 'h' toggles on and off the help menu
g.SetKeybinding("", 'r', gocui.ModNone, widgetRefresh) // screen refresh
g.SetKeybinding("", 'w', gocui.ModNone, doWindow) // close all windows
g.SetKeybinding("", 'q', gocui.ModNone, doExit) // exit
g.SetKeybinding("", gocui.KeyCtrlC, gocui.ModNone, doExit) // exit
g.SetKeybinding("", gocui.KeyCtrlV, gocui.ModNone, doPanic) // forced panic
// debugging
g.SetKeybinding("", 'd', gocui.ModNone, theLetterD) // 'd' toggles on and off debugging buttons
g.SetKeybinding("", gocui.KeyCtrlD, gocui.ModNone, openDebuggger) // open the debugger
g.SetKeybinding("", 'L', gocui.ModNone, dumpWidgets) // list all widgets
g.SetKeybinding("", 'M', gocui.ModNone, dumpWidgetPlacement) // list all widgets with positions
}
func doExit(g *gocui.Gui, v *gocui.View) error {
return nil
}
func doPanic(g *gocui.Gui, v *gocui.View) error {
return nil
}
func dumpWidgets(g *gocui.Gui, v *gocui.View) error {
return nil
}
func dumpWidgetPlacement(g *gocui.Gui, v *gocui.View) error {
return nil
}
func openDebuggger(g *gocui.Gui, v *gocui.View) error {
return nil
}
// is run whenever anyone hits 'd' (in an open space)
func theLetterD(g *gocui.Gui, v *gocui.View) error {
// widgets that don't have physical existance in
// a display toolkit are hidden. In the case
// of gocui, they are set as not 'visible' and put offscreen
// or have the size set to zero
// (hopefully anyway) lots of things with the toolkit
// still don't work
fakeStartWidth = me.FakeW
fakeStartHeight = me.TabH + me.FramePadH
if showDebug {
showFake()
showDebug = false
} else {
hideFake()
showDebug = true
}
return nil
}
func theHelp(g *gocui.Gui, v *gocui.View) error {
if showHelp {
helplayout()
showHelp = false
if me.dropdownV == nil {
me.dropdownV = makeDropdownView("addWidget() ddview")
}
me.dropdownV.Show()
} else {
me.baseGui.DeleteView("help")
showHelp = true
me.dropdownV.Hide()
}
return nil
}
func widgetRefresh(g *gocui.Gui, v *gocui.View) error {
return nil
}
func doWindow(g *gocui.Gui, v *gocui.View) error {
return nil
}