keys for inputfield

This commit is contained in:
ayn2op 2023-01-06 21:41:07 +05:30
parent 726e7a4f01
commit af07f91f0e
4 changed files with 31 additions and 15 deletions

View file

@ -20,8 +20,14 @@ type (
ReplyMention string `yaml:"reply_mention"`
}
MessageInputKeysConfig struct {
CommonKeysConfig `yaml:",inline"`
Send string `yaml:"send"`
}
KeysConfig struct {
MessagesText MessagesTextKeysConfig `yaml:"messages_text"`
MessageInput MessageInputKeysConfig `yaml:"message_input"`
}
)
@ -91,6 +97,10 @@ func newConfig() (*Config, error) {
Reply: "Rune[r]",
ReplyMention: "Rune[R]",
},
MessageInput: MessageInputKeysConfig{
CommonKeysConfig: commonKeys,
Send: "Enter",
},
},
Theme: ThemeConfig{

View file

@ -28,9 +28,11 @@ func newGuildsTree() *GuildsTree {
gt.SetTopLevel(1)
gt.SetSelectedFunc(gt.onSelected)
gt.SetBorder(cfg.Theme.GuildsTree.Border)
gt.SetTitle("Guilds")
gt.SetTitleAlign(tview.AlignLeft)
padding := cfg.Theme.GuildsTree.BorderPadding
gt.SetBorder(cfg.Theme.GuildsTree.Border)
gt.SetBorderPadding(padding[0], padding[1], padding[2], padding[3])
return gt

View file

@ -1,6 +1,8 @@
package main
import (
"log"
"github.com/gdamore/tcell/v2"
"github.com/rivo/tview"
)
@ -14,35 +16,36 @@ func newMessageInput() *MessageInput {
InputField: tview.NewInputField(),
}
mi.SetDoneFunc(mi.onDone)
mi.SetFieldBackgroundColor(tview.Styles.PrimitiveBackgroundColor)
mi.SetInputCapture(mi.onInputCapture)
mi.SetTitleAlign(tview.AlignLeft)
mi.SetFieldBackgroundColor(tview.Styles.PrimitiveBackgroundColor)
mi.SetBorder(cfg.Theme.MessageInput.Border)
padding := cfg.Theme.MessageInput.BorderPadding
mi.SetBorder(cfg.Theme.MessageInput.Border)
mi.SetBorderPadding(padding[0], padding[1], padding[2], padding[3])
return mi
}
func (mi *MessageInput) onDone(key tcell.Key) {
switch key {
case tcell.KeyEnter:
go mi.sendMessage()
case tcell.KeyEscape:
// Reset the message input.
mi.SetText("")
func (mi *MessageInput) onInputCapture(event *tcell.EventKey) *tcell.EventKey {
switch event.Name() {
case cfg.Keys.MessageInput.Send:
mi.sendAction()
return nil
}
return event
}
func (mi *MessageInput) sendMessage() error {
func (mi *MessageInput) sendAction() {
text := mi.GetText()
_, err := discordState.SendMessage(guildsTree.selectedChannel.ID, text)
if err != nil {
return err
log.Println(err)
return
}
// Reset the message input.
mi.SetText("")
return nil
}

View file

@ -29,10 +29,11 @@ func newMessagesText() *MessagesText {
mt.SetHighlightedFunc(mt.onHighlighted)
mt.SetInputCapture(mt.onInputCapture)
mt.SetTitle("Messages")
mt.SetTitleAlign(tview.AlignLeft)
mt.SetBorder(cfg.Theme.MessagesText.Border)
padding := cfg.Theme.MessagesText.BorderPadding
mt.SetBorder(cfg.Theme.MessagesText.Border)
mt.SetBorderPadding(padding[0], padding[1], padding[2], padding[3])
return mt