Much Work
- Definable KeyMaps - Change 'Tabbable' to just use 'Focusable'
This commit is contained in:
@@ -40,9 +40,10 @@ type DebugWidget struct {
|
||||
drawRulers bool
|
||||
active bool
|
||||
visible bool
|
||||
tabbable bool
|
||||
focusable bool
|
||||
mTL, mBR Coord // Margins (Top-Right & Bottom Left)
|
||||
|
||||
keyMap KeyMap
|
||||
logger func(string, ...any)
|
||||
}
|
||||
|
||||
@@ -60,9 +61,10 @@ func (w *DebugWidget) Init(id string, s tcell.Style) {
|
||||
w.id = id
|
||||
w.style = s
|
||||
w.visible = true
|
||||
w.tabbable = true
|
||||
w.focusable = true
|
||||
w.drawRulers = true
|
||||
w.setW, w.setH = -1, -1
|
||||
w.keyMap = BlankKeyMap()
|
||||
}
|
||||
|
||||
func (w *DebugWidget) SetLogger(l func(string, ...any)) { w.logger = l }
|
||||
@@ -104,8 +106,24 @@ func (w *DebugWidget) HandleResize(ev *tcell.EventResize) {
|
||||
w.widget.HandleResize(tcell.NewEventResize(w.w-w.mTL.X-w.mBR.X, w.h-w.mTL.Y-w.mBR.Y))
|
||||
}
|
||||
|
||||
func (w *DebugWidget) HandleKey(ev *tcell.EventKey) bool { return w.widget.HandleKey(ev) }
|
||||
func (w *DebugWidget) HandleTime(ev *tcell.EventTime) { w.widget.HandleTime(ev) }
|
||||
func (w *DebugWidget) SetKeyMap(km KeyMap) { w.keyMap = km }
|
||||
func (w *DebugWidget) AddToKeyMap(km KeyMap) { w.keyMap.Merge(km) }
|
||||
func (w *DebugWidget) RemoveFromKeyMap(km KeyMap) {
|
||||
for k := range km.Keys {
|
||||
w.keyMap.Remove(k)
|
||||
}
|
||||
for r := range km.Runes {
|
||||
w.keyMap.RemoveRune(r)
|
||||
}
|
||||
}
|
||||
|
||||
func (w *DebugWidget) HandleKey(ev *tcell.EventKey) bool {
|
||||
if ok := w.keyMap.Handle(ev); ok {
|
||||
return true
|
||||
}
|
||||
return w.widget.HandleKey(ev)
|
||||
}
|
||||
func (w *DebugWidget) HandleTime(ev *tcell.EventTime) { w.widget.HandleTime(ev) }
|
||||
|
||||
func (w *DebugWidget) Draw(screen tcell.Screen) {
|
||||
if !w.visible {
|
||||
@@ -160,19 +178,18 @@ func (w *DebugWidget) SetActive(a bool) {
|
||||
w.active = a
|
||||
w.widget.SetActive(a)
|
||||
}
|
||||
func (w *DebugWidget) Visible() bool { return w.visible }
|
||||
func (w *DebugWidget) SetVisible(a bool) { w.visible = a }
|
||||
func (w *DebugWidget) Focusable() bool { return true }
|
||||
func (w *DebugWidget) SetTabbable(b bool) { w.tabbable = b }
|
||||
func (w *DebugWidget) Tabbable() bool { return w.tabbable }
|
||||
func (w *DebugWidget) SetX(x int) { w.x = x }
|
||||
func (w *DebugWidget) SetY(y int) { w.y = y }
|
||||
func (w *DebugWidget) GetX() int { return w.x }
|
||||
func (w *DebugWidget) GetY() int { return w.y }
|
||||
func (w *DebugWidget) GetPos() Coord { return Coord{X: w.x, Y: w.y} }
|
||||
func (w *DebugWidget) SetPos(c Coord) { w.x, w.y = c.X, c.Y }
|
||||
func (w *DebugWidget) GetW() int { return w.w }
|
||||
func (w *DebugWidget) GetH() int { return w.h }
|
||||
func (w *DebugWidget) Visible() bool { return w.visible }
|
||||
func (w *DebugWidget) SetVisible(a bool) { w.visible = a }
|
||||
func (w *DebugWidget) Focusable() bool { return w.focusable }
|
||||
func (w *DebugWidget) SetFocusable(b bool) { w.focusable = b }
|
||||
func (w *DebugWidget) SetX(x int) { w.x = x }
|
||||
func (w *DebugWidget) SetY(y int) { w.y = y }
|
||||
func (w *DebugWidget) GetX() int { return w.x }
|
||||
func (w *DebugWidget) GetY() int { return w.y }
|
||||
func (w *DebugWidget) GetPos() Coord { return Coord{X: w.x, Y: w.y} }
|
||||
func (w *DebugWidget) SetPos(c Coord) { w.x, w.y = c.X, c.Y }
|
||||
func (w *DebugWidget) GetW() int { return w.w }
|
||||
func (w *DebugWidget) GetH() int { return w.h }
|
||||
func (w *DebugWidget) SetW(wd int) {
|
||||
w.setW = wd
|
||||
w.w = wd
|
||||
|
||||
Reference in New Issue
Block a user