فهرست منبع

keys for inputfield

ayn2op 3 سال پیش
والد
کامیت
af07f91f0e
4فایلهای تغییر یافته به همراه31 افزوده شده و 15 حذف شده
  1. 10 0
      config.go
  2. 3 1
      guilds_tree.go
  3. 16 13
      message_input.go
  4. 2 1
      messages_text.go

+ 10 - 0
config.go

@@ -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{

+ 3 - 1
guilds_tree.go

@@ -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

+ 16 - 13
message_input.go

@@ -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
 }

+ 2 - 1
messages_text.go

@@ -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