From a4152d49280defe79c8c67ceb7c62ded3f6db5db Mon Sep 17 00:00:00 2001 From: ayn2op <119342035+ayn2op@users.noreply.github.com> Date: Wed, 10 May 2023 00:06:27 +0530 Subject: [PATCH] feat: toggle guilds tree using keybinding (#297) Co-authored-by: ayn2op --- internal/config/keys.go | 6 ++++-- main_flex.go | 26 +++++++++++++++++++++++--- man/discordo.1 | 1 + man/discordo.md | 1 + 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/internal/config/keys.go b/internal/config/keys.go index e6106ab..bc9703c 100644 --- a/internal/config/keys.go +++ b/internal/config/keys.go @@ -2,7 +2,8 @@ package config type ( GuildsTreeKeys struct { - Focus string `yaml:"focus"` + Focus string `yaml:"focus"` + Toggle string `yaml:"toggle"` } MessagesTextKeys struct { @@ -44,7 +45,8 @@ func defKeys() Keys { Cancel: "Esc", GuildsTree: GuildsTreeKeys{ - Focus: "Alt+Rune[g]", + Focus: "Alt+Rune[g]", + Toggle: "Alt+Rune[b]", }, MessagesText: MessagesTextKeys{ diff --git a/main_flex.go b/main_flex.go index 4333003..06cb4f6 100644 --- a/main_flex.go +++ b/main_flex.go @@ -23,6 +23,15 @@ func newMainFlex() *MainFlex { messageInput: newMessageInput(), } + mf.init() + mf.SetInputCapture(mf.onInputCapture) + + return mf +} + +func (mf *MainFlex) init() { + mf.Clear() + right := tview.NewFlex() right.SetDirection(tview.FlexRow) right.AddItem(mf.messagesText, 0, 1, false) @@ -30,13 +39,24 @@ func newMainFlex() *MainFlex { // The guilds tree is always focused first at start-up. mf.AddItem(mf.guildsTree, 0, 1, true) mf.AddItem(right, 0, 4, false) - mf.SetInputCapture(mf.onInputCapture) - - return mf } func (mf *MainFlex) onInputCapture(event *tcell.EventKey) *tcell.EventKey { switch event.Name() { + case config.Current.Keys.GuildsTree.Toggle: + // The guilds tree is visible if the numbers of items is two. + if mf.GetItemCount() == 2 { + mf.RemoveItem(mf.guildsTree) + + if mf.guildsTree.HasFocus() { + app.SetFocus(mf) + } + } else { + mf.init() + app.SetFocus(mf.guildsTree) + } + + return nil case config.Current.Keys.GuildsTree.Focus: app.SetFocus(mf.guildsTree) return nil diff --git a/man/discordo.1 b/man/discordo.1 index 5f6fcc7..7015573 100644 --- a/man/discordo.1 +++ b/man/discordo.1 @@ -28,6 +28,7 @@ l l l l . \fB\fCAction\fR \fB\fCKeybinding\fR Focus Alt + g +Toggle Alt + b .TE .SS Messages Text diff --git a/man/discordo.md b/man/discordo.md index ea45f3c..2b22a11 100644 --- a/man/discordo.md +++ b/man/discordo.md @@ -29,6 +29,7 @@ The default keybindings in the app are as follow | Action | Keybinding | | ------ | ---------- | | Focus | Alt + g | +| Toggle | Alt + b | ### Messages Text