Commit 7fad08d
Changed files (1)
clientVisualization.go
@@ -112,6 +112,7 @@ func initMainView(g *gocui.Gui, maxX int, maxY int) error {
}
v.Title = "Shadow Quiz"
v.Autoscroll = true
+ v.Wrap = true
}
return nil
}
@@ -130,6 +131,7 @@ func initCommandView(g *gocui.Gui, maxX int, maxY int) error {
for _, command := range commandArray {
v.Write([]byte(command.Command + "\n"))
}
+ v.Write([]byte("↑/↓"))
}
return nil
}
@@ -214,22 +216,52 @@ func initUserSession() {
if err = ApplicationView.MainGui.SetKeybinding("", gocui.KeyEnter, gocui.ModNone, handleEnterKeyPress); err != nil {
log.Printf("\nFailed to bind key: %+v", err)
}
+ if err = ApplicationView.MainGui.SetKeybinding("", gocui.KeyArrowUp, gocui.ModNone,
+ func(g *gocui.Gui, v *gocui.View) error {
+ view, _ := ApplicationView.MainGui.View(ApplicationView.MAIN_WINDOW_NAME)
+ scrollView(view, -1)
+ return nil
+ }); err != nil {
+ log.Printf("\nFailed to bind key: %+v", err)
+ }
+ if err = ApplicationView.MainGui.SetKeybinding("", gocui.KeyArrowDown, gocui.ModNone,
+ func(g *gocui.Gui, v *gocui.View) error {
+ view, _ := ApplicationView.MainGui.View(ApplicationView.MAIN_WINDOW_NAME)
+ scrollView(view, 1)
+ return nil
+ }); err != nil {
+ log.Printf("\nFailed to bind key: %+v", err)
+ }
if err = ApplicationView.MainGui.MainLoop(); err != nil && err != gocui.ErrQuit {
log.Printf("Error from CUI: %+v", err)
exitApplication(Command{})
}
}
+// scrollView scrolls the view buffer for the specified view
+// see https://github.com/jroimartin/gocui/blob/master/_examples/stdin.go
+func scrollView(v *gocui.View, dy int) error {
+ if v != nil {
+ v.Autoscroll = false
+ ox, oy := v.Origin()
+ if err := v.SetOrigin(ox, oy+dy); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
// handleEnterKeyPress parses the input supplied by the user after
// pressing 'Enter'
func handleEnterKeyPress(g *gocui.Gui, v *gocui.View) error {
+ view, err := ApplicationView.MainGui.View(ApplicationView.MAIN_WINDOW_NAME)
+ view.Autoscroll = true
if readUserInputSemaphore.Queued() > 0 {
readUserInputSemaphore.V() //taken whenever user input is required
return nil
}
var input string
var command Command
- var err error
setStatusBar("")
input, err = readInputFromMainScreen()
if err != nil {