| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package main
- import (
- "log"
- "github.com/gdamore/tcell/v2"
- "github.com/rivo/tview"
- )
- type MainFlex struct {
- *tview.Flex
- }
- func newMainFlex() *MainFlex {
- mf := &MainFlex{
- Flex: tview.NewFlex(),
- }
- // Initialize UI widgets
- guildsTree = newGuildsTree()
- messagesText = newMessagesText()
- messageInput = newMessageInput()
- right := tview.NewFlex()
- right.SetDirection(tview.FlexRow)
- right.AddItem(messagesText, 0, 1, false)
- right.AddItem(messageInput, 3, 1, false)
- // The guilds tree is always focused first at start-up.
- mf.AddItem(guildsTree, 0, 1, true)
- mf.AddItem(right, 0, 4, false)
- mf.SetInputCapture(mainFlex.onInputCapture)
- return mf
- }
- func (mf *MainFlex) onInputCapture(event *tcell.EventKey) *tcell.EventKey {
- log.Println(event.Name())
- switch event.Name() {
- case cfg.Keys.GuildsTree.Focus:
- app.SetFocus(guildsTree)
- return nil
- case cfg.Keys.MessagesText.Focus:
- app.SetFocus(messagesText)
- return nil
- case cfg.Keys.MessageInput.Focus:
- app.SetFocus(messageInput)
- return nil
- }
- return event
- }
|