refactor(guildstree): move help keymap to keymap.go
This commit is contained in:
parent
3de72a697d
commit
2b651a1459
2 changed files with 80 additions and 73 deletions
80
internal/ui/chat/guildstree/keymap.go
Normal file
80
internal/ui/chat/guildstree/keymap.go
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
package guildstree
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/ayn2op/arikawa/v3/discord"
|
||||||
|
"github.com/ayn2op/tview/help"
|
||||||
|
"github.com/ayn2op/tview/keybind"
|
||||||
|
"github.com/ayn2op/tview/tree"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ help.KeyMap = Model{}
|
||||||
|
|
||||||
|
func (m *Model) selectCurrentKeybind() keybind.Keybind {
|
||||||
|
selectCurrent := m.cfg.Keybinds.GuildsTree.SelectCurrent.Keybind
|
||||||
|
selectHelp := selectCurrent.Help()
|
||||||
|
selectDesc := selectHelp.Desc
|
||||||
|
if node := m.selectionState.CurrentNode(); node != nil {
|
||||||
|
if len(node.Children()) > 0 {
|
||||||
|
if node.Expanded() {
|
||||||
|
selectDesc = "collapse"
|
||||||
|
} else {
|
||||||
|
selectDesc = "expand"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch node.Reference().(type) {
|
||||||
|
case discord.GuildID, dmNode:
|
||||||
|
selectDesc = "expand"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return selectCurrent.WithHelp(selectHelp.Key, selectDesc)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m Model) ShortHelp() []keybind.Keybind {
|
||||||
|
cfg := m.cfg.Keybinds.GuildsTree
|
||||||
|
shortHelp := []keybind.Keybind{cfg.SelectUp.Keybind, cfg.SelectDown.Keybind, m.selectCurrentKeybind()}
|
||||||
|
if m.canCollapseParent(m.selectionState.CurrentNode()) {
|
||||||
|
shortHelp = append(shortHelp, cfg.CollapseParentNode.Keybind)
|
||||||
|
}
|
||||||
|
return shortHelp
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m Model) FullHelp() [][]keybind.Keybind {
|
||||||
|
cfg := m.cfg.Keybinds.GuildsTree
|
||||||
|
selectGroup := []keybind.Keybind{m.selectCurrentKeybind(), cfg.MoveToParentNode.Keybind}
|
||||||
|
selectGroup = append(selectGroup, m.collapseKeybinds()...)
|
||||||
|
|
||||||
|
return [][]keybind.Keybind{
|
||||||
|
{cfg.SelectUp.Keybind, cfg.SelectDown.Keybind, cfg.SelectTop.Keybind, cfg.SelectBottom.Keybind},
|
||||||
|
selectGroup,
|
||||||
|
{cfg.YankID.Keybind},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Model) collapseKeybinds() []keybind.Keybind {
|
||||||
|
cfg := m.cfg.Keybinds.GuildsTree
|
||||||
|
|
||||||
|
var keybinds []keybind.Keybind
|
||||||
|
if m.canCollapseParent(m.selectionState.CurrentNode()) {
|
||||||
|
keybinds = append(keybinds, cfg.CollapseParentNode.Keybind)
|
||||||
|
}
|
||||||
|
if m.canCollapseAll() {
|
||||||
|
keybinds = append(keybinds, cfg.CollapseAll.Keybind)
|
||||||
|
}
|
||||||
|
return keybinds
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Model) canCollapseParent(node *tree.Node) bool {
|
||||||
|
return node != nil && len(m.root.PathTo(node)) >= 3
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Model) canCollapseAll() bool {
|
||||||
|
var can bool
|
||||||
|
for _, node := range m.root.Children() {
|
||||||
|
if node.Expanded() {
|
||||||
|
can = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return can
|
||||||
|
}
|
||||||
|
|
@ -11,7 +11,6 @@ import (
|
||||||
"github.com/ayn2op/ningen/v3"
|
"github.com/ayn2op/ningen/v3"
|
||||||
"github.com/ayn2op/ningen/v3/states/read"
|
"github.com/ayn2op/ningen/v3/states/read"
|
||||||
"github.com/ayn2op/tview"
|
"github.com/ayn2op/tview"
|
||||||
"github.com/ayn2op/tview/help"
|
|
||||||
"github.com/ayn2op/tview/keybind"
|
"github.com/ayn2op/tview/keybind"
|
||||||
"github.com/ayn2op/tview/tree"
|
"github.com/ayn2op/tview/tree"
|
||||||
"github.com/gdamore/tcell/v3"
|
"github.com/gdamore/tcell/v3"
|
||||||
|
|
@ -433,78 +432,6 @@ func (m *Model) expandPathToNode(node *tree.Node) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ help.KeyMap = Model{}
|
|
||||||
|
|
||||||
func (m *Model) selectCurrentKeybind() keybind.Keybind {
|
|
||||||
selectCurrent := m.cfg.Keybinds.GuildsTree.SelectCurrent.Keybind
|
|
||||||
selectHelp := selectCurrent.Help()
|
|
||||||
selectDesc := selectHelp.Desc
|
|
||||||
if node := m.selectionState.CurrentNode(); node != nil {
|
|
||||||
if len(node.Children()) > 0 {
|
|
||||||
if node.Expanded() {
|
|
||||||
selectDesc = "collapse"
|
|
||||||
} else {
|
|
||||||
selectDesc = "expand"
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
switch node.Reference().(type) {
|
|
||||||
case discord.GuildID, dmNode:
|
|
||||||
selectDesc = "expand"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return selectCurrent.WithHelp(selectHelp.Key, selectDesc)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m Model) ShortHelp() []keybind.Keybind {
|
|
||||||
cfg := m.cfg.Keybinds.GuildsTree
|
|
||||||
shortHelp := []keybind.Keybind{cfg.SelectUp.Keybind, cfg.SelectDown.Keybind, m.selectCurrentKeybind()}
|
|
||||||
if m.canCollapseParent(m.selectionState.CurrentNode()) {
|
|
||||||
shortHelp = append(shortHelp, cfg.CollapseParentNode.Keybind)
|
|
||||||
}
|
|
||||||
return shortHelp
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m Model) FullHelp() [][]keybind.Keybind {
|
|
||||||
cfg := m.cfg.Keybinds.GuildsTree
|
|
||||||
selectGroup := []keybind.Keybind{m.selectCurrentKeybind(), cfg.MoveToParentNode.Keybind}
|
|
||||||
selectGroup = append(selectGroup, m.collapseKeybinds()...)
|
|
||||||
|
|
||||||
return [][]keybind.Keybind{
|
|
||||||
{cfg.SelectUp.Keybind, cfg.SelectDown.Keybind, cfg.SelectTop.Keybind, cfg.SelectBottom.Keybind},
|
|
||||||
selectGroup,
|
|
||||||
{cfg.YankID.Keybind},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *Model) collapseKeybinds() []keybind.Keybind {
|
|
||||||
cfg := m.cfg.Keybinds.GuildsTree
|
|
||||||
|
|
||||||
var keybinds []keybind.Keybind
|
|
||||||
if m.canCollapseParent(m.selectionState.CurrentNode()) {
|
|
||||||
keybinds = append(keybinds, cfg.CollapseParentNode.Keybind)
|
|
||||||
}
|
|
||||||
if m.canCollapseAll() {
|
|
||||||
keybinds = append(keybinds, cfg.CollapseAll.Keybind)
|
|
||||||
}
|
|
||||||
return keybinds
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *Model) canCollapseParent(node *tree.Node) bool {
|
|
||||||
return node != nil && len(m.root.PathTo(node)) >= 3
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *Model) canCollapseAll() bool {
|
|
||||||
var can bool
|
|
||||||
for _, node := range m.root.Children() {
|
|
||||||
if node.Expanded() {
|
|
||||||
can = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return can
|
|
||||||
}
|
|
||||||
|
|
||||||
func unreadStyle(indication ningen.UnreadIndication) tcell.Style {
|
func unreadStyle(indication ningen.UnreadIndication) tcell.Style {
|
||||||
var style tcell.Style
|
var style tcell.Style
|
||||||
switch indication {
|
switch indication {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue