feat: add navigation keys configuration for guilds tree and messages text widget

This commit is contained in:
ayn2op 2024-12-21 21:11:53 -05:00
parent e372cf4bc0
commit 9f15a63424
3 changed files with 30 additions and 25 deletions

View file

@ -224,14 +224,14 @@ func (gt *GuildsTree) onSelected(n *tview.TreeNode) {
func (gt *GuildsTree) onInputCapture(event *tcell.EventKey) *tcell.EventKey {
switch event.Name() {
case gt.cfg.Keys.SelectPrevious:
case gt.cfg.Keys.GuildsTree.SelectPrevious:
return tcell.NewEventKey(tcell.KeyUp, 0, tcell.ModNone)
case gt.cfg.Keys.SelectNext:
case gt.cfg.Keys.GuildsTree.SelectNext:
return tcell.NewEventKey(tcell.KeyDown, 0, tcell.ModNone)
case gt.cfg.Keys.SelectFirst:
case gt.cfg.Keys.GuildsTree.SelectFirst:
gt.Move(gt.GetRowCount() * -1)
// return tcell.NewEventKey(tcell.KeyHome, 0, tcell.ModNone)
case gt.cfg.Keys.SelectLast:
case gt.cfg.Keys.GuildsTree.SelectLast:
gt.Move(gt.GetRowCount())
// return tcell.NewEventKey(tcell.KeyEnd, 0, tcell.ModNone)

View file

@ -197,24 +197,18 @@ func (mt *MessagesText) getSelectedMessageIndex() (int, error) {
func (mt *MessagesText) onInputCapture(event *tcell.EventKey) *tcell.EventKey {
switch event.Name() {
case mt.cfg.Keys.SelectPrevious, mt.cfg.Keys.SelectNext, mt.cfg.Keys.SelectFirst, mt.cfg.Keys.SelectLast, mt.cfg.Keys.MessagesText.SelectReply, mt.cfg.Keys.MessagesText.SelectPin:
case mt.cfg.Keys.MessagesText.SelectPrevious, mt.cfg.Keys.MessagesText.SelectNext, mt.cfg.Keys.MessagesText.SelectFirst, mt.cfg.Keys.MessagesText.SelectLast, mt.cfg.Keys.MessagesText.SelectReply, mt.cfg.Keys.MessagesText.SelectPin:
mt._select(event.Name())
return nil
case mt.cfg.Keys.MessagesText.Yank:
mt.yank()
return nil
case mt.cfg.Keys.MessagesText.Open:
mt.open()
return nil
case mt.cfg.Keys.MessagesText.Reply:
mt.reply(false)
return nil
case mt.cfg.Keys.MessagesText.ReplyMention:
mt.reply(true)
return nil
case mt.cfg.Keys.MessagesText.Delete:
mt.delete()
return nil
}
return nil
@ -234,7 +228,7 @@ func (mt *MessagesText) _select(name string) {
}
switch name {
case mt.cfg.Keys.SelectPrevious:
case mt.cfg.Keys.MessagesText.SelectPrevious:
// If no message is currently selected, select the latest message.
if len(mt.GetHighlights()) == 0 {
mt.selectedMessageID = ms[0].ID
@ -245,7 +239,7 @@ func (mt *MessagesText) _select(name string) {
return
}
}
case mt.cfg.Keys.SelectNext:
case mt.cfg.Keys.MessagesText.SelectNext:
// If no message is currently selected, select the latest message.
if len(mt.GetHighlights()) == 0 {
mt.selectedMessageID = ms[0].ID
@ -256,9 +250,9 @@ func (mt *MessagesText) _select(name string) {
return
}
}
case mt.cfg.Keys.SelectFirst:
case mt.cfg.Keys.MessagesText.SelectFirst:
mt.selectedMessageID = ms[len(ms)-1].ID
case mt.cfg.Keys.SelectLast:
case mt.cfg.Keys.MessagesText.SelectLast:
mt.selectedMessageID = ms[0].ID
case mt.cfg.Keys.MessagesText.SelectReply:
if mt.selectedMessageID == 0 {

View file

@ -1,17 +1,19 @@
package config
type (
NavigationKeys struct {
SelectPrevious string `toml:"select_previous"`
SelectNext string `toml:"select_next"`
SelectFirst string `toml:"select_first"`
SelectLast string `toml:"select_last"`
}
Keys struct {
FocusGuildsTree string `toml:"focus_guilds_tree"`
FocusMessagesText string `toml:"focus_messages_text"`
FocusMessageInput string `toml:"focus_message_input"`
ToggleGuildsTree string `toml:"toggle_guilds_tree"`
SelectPrevious string `toml:"select_previous"`
SelectNext string `toml:"select_next"`
SelectFirst string `toml:"select_first"`
SelectLast string `toml:"select_last"`
GuildsTree GuildsTreeKeys `toml:"guilds_tree"`
MessagesText MessagesTextKeys `toml:"messages_text"`
MessageInput MessageInputKeys `toml:"message_input"`
@ -21,10 +23,12 @@ type (
}
GuildsTreeKeys struct {
NavigationKeys
SelectCurrent string `toml:"select_current"`
}
MessagesTextKeys struct {
NavigationKeys
SelectReply string `toml:"select_reply"`
SelectPin string `toml:"select_pin"`
Reply string `toml:"reply"`
@ -52,16 +56,23 @@ func defaultKeys() Keys {
Logout: "Ctrl+D",
Quit: "Ctrl+C",
SelectPrevious: "Rune[k]",
SelectNext: "Rune[j]",
SelectFirst: "Rune[g]",
SelectLast: "Rune[G]",
GuildsTree: GuildsTreeKeys{
NavigationKeys: NavigationKeys{
SelectPrevious: "Rune[k]",
SelectNext: "Rune[j]",
SelectFirst: "Rune[g]",
SelectLast: "Rune[G]",
},
SelectCurrent: "Enter",
},
MessagesText: MessagesTextKeys{
NavigationKeys: NavigationKeys{
SelectPrevious: "Rune[k]",
SelectNext: "Rune[j]",
SelectFirst: "Rune[g]",
SelectLast: "Rune[G]",
},
SelectReply: "Rune[s]",
SelectPin: "Rune[p]",