diff --git a/actions.go b/actions.go index 3692b41..65ba1a6 100644 --- a/actions.go +++ b/actions.go @@ -2,7 +2,25 @@ package main import "github.com/jroimartin/gocui" +var DEBUG_DISPLAYED bool = false + // Global action: Quit func actionGlobalQuit(g *gocui.Gui, v *gocui.View) error { return gocui.ErrQuit } + +// Global action: Toggle debug +func actionGlobalToggleDebug(g *gocui.Gui, v *gocui.View) error { + if !DEBUG_DISPLAYED { + debug(g, "Action: Toggle debug display (show)") + g.SetViewOnTop("debug") + } else { + debug(g, "Action: Toggle debug display (hide)") + g.SetViewOnBottom("debug") + // TODO g.SetCurrentView("pods") + } + + DEBUG_DISPLAYED = !DEBUG_DISPLAYED + + return nil +} diff --git a/keys.go b/keys.go index 8da072c..de5a015 100644 --- a/keys.go +++ b/keys.go @@ -11,6 +11,7 @@ type Key struct { // Configure globale keys var globalKeys []Key = []Key{ Key{"", gocui.KeyCtrlC, actionGlobalQuit}, + Key{"", gocui.KeyCtrlD, actionGlobalToggleDebug}, } // Define UI key bindings diff --git a/main.go b/main.go index ced2d15..621dec7 100644 --- a/main.go +++ b/main.go @@ -1,7 +1,9 @@ package main import ( + "fmt" "log" + "time" "github.com/jroimartin/gocui" ) @@ -30,7 +32,19 @@ func main() { func uiLayout(g *gocui.Gui) error { maxX, maxY := g.Size() + viewDebug(g, maxX, maxY) + viewOverlay(g, maxX, maxY) viewTitle(g, maxX, maxY) return nil } + +func debug(g *gocui.Gui, output interface{}) { + v, err := g.View("debug") + if err == nil { + t := time.Now() + tf := t.Format("2006-01-02 15:04:05") + output = tf + " > " + output.(string) + fmt.Fprintln(v, output) + } +} diff --git a/views.go b/views.go index 8cf73b6..6af6816 100644 --- a/views.go +++ b/views.go @@ -6,7 +6,21 @@ import ( "github.com/jroimartin/gocui" ) -// Define the title bar view +// View: Overlay +func viewOverlay(g *gocui.Gui, lMaxX int, lMaxY int) error { + if v, err := g.SetView("overlay", 0, 0, lMaxX, lMaxY); err != nil { + if err != gocui.ErrUnknownView { + return err + } + + // Settings + v.Frame = false + } + + return nil +} + +// View: Title bar func viewTitle(g *gocui.Gui, lMaxX int, lMaxY int) error { if v, err := g.SetView("title", -1, -1, lMaxX, 1); err != nil { if err != gocui.ErrUnknownView { @@ -24,3 +38,25 @@ func viewTitle(g *gocui.Gui, lMaxX int, lMaxY int) error { return nil } + +// View: Debug +func viewDebug(g *gocui.Gui, lMaxX int, lMaxY int) error { + // Main view + minX := 2 + maxX := lMaxX - 4 + minY := 2 + maxY := lMaxY - 2 + if v, err := g.SetView("debug", minX, minY, maxX, maxY); err != nil { + if err != gocui.ErrUnknownView { + return err + } + + // Configure view + v.Title = " Debug " + v.Autoscroll = true + g.SetViewOnTop(v.Name()) + g.SetCurrentView(v.Name()) + } + + return nil +}