Merge branch 'v0.2.3'

* v0.2.3:
  Update termbox handlers
  Fix insert key
  Update version number
  Update vendor package versions
  Return terminal to normal when config file can't be found
This commit is contained in:
erroneousboat 2017-09-23 13:18:00 +02:00
commit 4a4fb6b576
5 changed files with 60 additions and 32 deletions

View File

@ -74,8 +74,11 @@ func (i *Input) SendMessage(svc *service.SlackService, channel string, message s
func (i *Input) Insert(key rune) { func (i *Input) Insert(key rune) {
if len(i.Text) < i.Par.InnerBounds().Dx()-1 { if len(i.Text) < i.Par.InnerBounds().Dx()-1 {
first := append(i.Text[0:i.CursorPosition], key) left := make([]rune, len(i.Text[0:i.CursorPosition]))
i.Text = append(first, i.Text[i.CursorPosition:]...) copy(left, i.Text[0:i.CursorPosition])
left = append(left, key)
i.Text = append(left, i.Text[i.CursorPosition:]...)
i.Par.Text = string(i.Text) i.Par.Text = string(i.Text)
i.MoveCursorRight() i.MoveCursorRight()

View File

@ -1,8 +1,6 @@
package context package context
import ( import (
"log"
"github.com/gizak/termui" "github.com/gizak/termui"
termbox "github.com/nsf/termbox-go" termbox "github.com/nsf/termbox-go"
@ -28,11 +26,11 @@ type AppContext struct {
// CreateAppContext creates an application context which can be passed // CreateAppContext creates an application context which can be passed
// and referenced througout the application // and referenced througout the application
func CreateAppContext(flgConfig string) *AppContext { func CreateAppContext(flgConfig string) (*AppContext, error) {
// Load config // Load config
config, err := config.NewConfig(flgConfig) config, err := config.NewConfig(flgConfig)
if err != nil { if err != nil {
log.Fatalf("ERROR: not able to load config file (%s): %s", flgConfig, err) return nil, err
} }
// Create Service // Create Service
@ -47,5 +45,5 @@ func CreateAppContext(flgConfig string) *AppContext {
View: view, View: view,
Config: config, Config: config,
Mode: CommandMode, Mode: CommandMode,
} }, nil
} }

View File

@ -41,7 +41,7 @@ var actionMap = map[string]func(*context.AppContext){
func RegisterEventHandlers(ctx *context.AppContext) { func RegisterEventHandlers(ctx *context.AppContext) {
eventHandler(ctx) eventHandler(ctx)
incomingMessageHandler(ctx) messageHandler(ctx)
} }
func eventHandler(ctx *context.AppContext) { func eventHandler(ctx *context.AppContext) {
@ -54,18 +54,38 @@ func eventHandler(ctx *context.AppContext) {
go func() { go func() {
for { for {
ev := <-ctx.EventQueue ev := <-ctx.EventQueue
handleTermboxEvents(ctx, ev)
handleMoreTermboxEvents(ctx, ev)
}
}()
}
func handleTermboxEvents(ctx *context.AppContext, ev termbox.Event) bool {
switch ev.Type { switch ev.Type {
case termbox.EventKey: case termbox.EventKey:
actionKeyEvent(ctx, ev) actionKeyEvent(ctx, ev)
case termbox.EventResize: case termbox.EventResize:
actionResizeEvent(ctx, ev) actionResizeEvent(ctx, ev)
} }
}
}() return true
} }
func incomingMessageHandler(ctx *context.AppContext) { func handleMoreTermboxEvents(ctx *context.AppContext, ev termbox.Event) bool {
for {
select {
case ev := <- ctx.EventQueue:
ok := handleTermboxEvents(ctx, ev)
if !ok {
return false
}
default:
return true
}
}
}
func messageHandler(ctx *context.AppContext) {
go func() { go func() {
for { for {
select { select {

11
main.go
View File

@ -4,17 +4,19 @@ import (
"flag" "flag"
"fmt" "fmt"
"log" "log"
"os"
"os/user" "os/user"
"path" "path"
"github.com/erroneousboat/slack-term/context" "github.com/erroneousboat/slack-term/context"
"github.com/erroneousboat/slack-term/handlers" "github.com/erroneousboat/slack-term/handlers"
termbox "github.com/nsf/termbox-go"
"github.com/gizak/termui" "github.com/gizak/termui"
) )
const ( const (
VERSION = "v0.2.2" VERSION = "v0.2.3"
USAGE = `NAME: USAGE = `NAME:
slack-term - slack client for your terminal slack-term - slack client for your terminal
@ -74,7 +76,12 @@ func main() {
termui.DefaultEvtStream = customEvtStream termui.DefaultEvtStream = customEvtStream
// Create context // Create context
ctx := context.CreateAppContext(flgConfig) ctx, err := context.CreateAppContext(flgConfig)
if err != nil {
termbox.Close()
log.Println(err)
os.Exit(0)
}
// Setup body // Setup body
termui.Body.AddRows( termui.Body.AddRows(

28
vendor/vendor.json vendored
View File

@ -5,20 +5,20 @@
{ {
"checksumSHA1": "0orwvPL96wFckVJyPl39fz2QsgA=", "checksumSHA1": "0orwvPL96wFckVJyPl39fz2QsgA=",
"path": "github.com/gizak/termui", "path": "github.com/gizak/termui",
"revision": "991cd3d3809135dc24daf6188dc6edcaf3d7d2d9", "revision": "72304ddb9b4e9838426a021aad64a5a860e98324",
"revisionTime": "2017-01-17T22:23:42Z" "revisionTime": "2017-05-02T14:12:00Z"
}, },
{ {
"checksumSHA1": "7hln62oZPZmyqEmgXaybf9WxQ7A=", "checksumSHA1": "7hln62oZPZmyqEmgXaybf9WxQ7A=",
"path": "github.com/maruel/panicparse/stack", "path": "github.com/maruel/panicparse/stack",
"revision": "25bcac0d793cf4109483505a0d66e066a3a90a80", "revision": "868abbf1ebac0fb2760cd9a410a5bd2f5afb2f76",
"revisionTime": "2017-02-27T22:23:42Z" "revisionTime": "2017-07-16T23:31:26Z"
}, },
{ {
"checksumSHA1": "MNkKJyk2TazKMJYbal5wFHybpyA=", "checksumSHA1": "cJE7dphDlam/i7PhnsyosNWtbd4=",
"path": "github.com/mattn/go-runewidth", "path": "github.com/mattn/go-runewidth",
"revision": "14207d285c6c197daabb5c9793d63e7af9ab2d50", "revision": "97311d9f7767e3d6f422ea06661bc2c7a19e8a5d",
"revisionTime": "2017-02-01T02:35:40Z" "revisionTime": "2017-05-10T07:48:58Z"
}, },
{ {
"checksumSHA1": "L3leymg2RT8hFl5uL+5KP/LpBkg=", "checksumSHA1": "L3leymg2RT8hFl5uL+5KP/LpBkg=",
@ -27,22 +27,22 @@
"revisionTime": "2015-03-14T17:03:34Z" "revisionTime": "2015-03-14T17:03:34Z"
}, },
{ {
"checksumSHA1": "oNrSJkPTYsPtwH9/pUXOTIjVuks=", "checksumSHA1": "HYgTWn4FgVbvSBYVO4DxUPWfCz0=",
"path": "github.com/nlopes/slack", "path": "github.com/nlopes/slack",
"revision": "6519657c021b7add19c4ef48220140cca0b1657b", "revision": "5cde21b8b96a43fc3435a1f514123d14fd7eabdc",
"revisionTime": "2017-02-11T11:26:27Z" "revisionTime": "2017-07-25T12:17:30Z"
}, },
{ {
"checksumSHA1": "2si62NpJ4Rw8vVb7+LOfnKJ3y2Q=", "checksumSHA1": "2si62NpJ4Rw8vVb7+LOfnKJ3y2Q=",
"path": "github.com/nsf/termbox-go", "path": "github.com/nsf/termbox-go",
"revision": "91bae1bb5fa9ee504905ecbe7043fa30e92feaa3", "revision": "4ed959e0540971545eddb8c75514973d670cf739",
"revisionTime": "2017-03-01T01:43:43Z" "revisionTime": "2017-07-10T10:34:07Z"
}, },
{ {
"checksumSHA1": "7EZyXN0EmZLgGxZxK01IJua4c8o=", "checksumSHA1": "7EZyXN0EmZLgGxZxK01IJua4c8o=",
"path": "golang.org/x/net/websocket", "path": "golang.org/x/net/websocket",
"revision": "906cda9512f77671ab44f8c8563b13a8e707b230", "revision": "f5079bd7f6f74e23c4d65efa0f4ce14cbd6a3c0f",
"revisionTime": "2017-02-18T20:36:51Z" "revisionTime": "2017-07-19T21:11:51Z"
} }
], ],
"rootPath": "github.com/erroneousboat/slack-term" "rootPath": "github.com/erroneousboat/slack-term"