Improve debug output options

This commit is contained in:
Tulir Asokan 2018-04-01 10:05:29 +03:00
parent c6e9f498a4
commit dd89fa621d
2 changed files with 46 additions and 10 deletions

View File

@ -43,7 +43,7 @@ type Gomuks struct {
// NewGomuks creates a new Gomuks instance with everything initialized, // NewGomuks creates a new Gomuks instance with everything initialized,
// but does not start it. // but does not start it.
func NewGomuks(enableDebug bool) *Gomuks { func NewGomuks(enableDebug, forceExternalDebug bool) *Gomuks {
configDir := filepath.Join(os.Getenv("HOME"), ".config/gomuks") configDir := filepath.Join(os.Getenv("HOME"), ".config/gomuks")
gmx := &Gomuks{ gmx := &Gomuks{
app: tview.NewApplication(), app: tview.NewApplication(),
@ -70,7 +70,11 @@ func NewGomuks(enableDebug bool) *Gomuks {
main := gmx.ui.InitViews() main := gmx.ui.InitViews()
if enableDebug { if enableDebug {
debug.EnableExternal() debug.EnableExternal()
main = gmx.debug.Wrap(main) if forceExternalDebug {
debug.RedirectAllExt = true
} else {
main = gmx.debug.Wrap(main, debug.Right)
}
gmx.debugMode = true gmx.debugMode = true
} }
gmx.app.SetRoot(main, true) gmx.app.SetRoot(main, true)
@ -166,8 +170,8 @@ func (gmx *Gomuks) UI() ifc.GomuksUI {
} }
func main() { func main() {
enableDebug := len(os.Getenv("DEBUG")) > 0 debugVar := os.Getenv("DEBUG")
NewGomuks(enableDebug).Start() NewGomuks(len(debugVar) > 0, debugVar == "ext").Start()
// We use os.Exit() everywhere, so exiting by returning from Start() shouldn't happen. // We use os.Exit() everywhere, so exiting by returning from Start() shouldn't happen.
time.Sleep(5 * time.Second) time.Sleep(5 * time.Second)

View File

@ -35,10 +35,12 @@ type Printer interface {
type Pane struct { type Pane struct {
*tview.TextView *tview.TextView
Height int Height int
Width int
num int num int
} }
var Default Printer var Default Printer
var RedirectAllExt bool
func NewPane() *Pane { func NewPane() *Pane {
pane := tview.NewTextView() pane := tview.NewTextView()
@ -52,6 +54,7 @@ func NewPane() *Pane {
return &Pane{ return &Pane{
TextView: pane, TextView: pane,
Height: 35, Height: 35,
Width: 80,
num: 0, num: 0,
} }
} }
@ -69,20 +72,49 @@ func (db *Pane) WriteString(text string) {
fmt.Fprintf(db, "[%d] %s", db.num, text) fmt.Fprintf(db, "[%d] %s", db.num, text)
} }
func (db *Pane) Wrap(main tview.Primitive) tview.Primitive { type PaneSide int
return tview.NewGrid().SetRows(0, db.Height).SetColumns(0).
AddItem(main, 0, 0, 1, 1, 1, 1, true). const (
AddItem(db, 1, 0, 1, 1, 1, 1, false) Top PaneSide = iota
Bottom
Left
Right
)
func (db *Pane) Wrap(main tview.Primitive, side PaneSide) tview.Primitive {
rows, columns := []int{0}, []int{0}
mainRow, mainColumn, paneRow, paneColumn := 0, 0, 0, 0
switch side {
case Top:
rows = []int{db.Height, 0}
mainRow = 1
case Bottom:
rows = []int{0, db.Height}
paneRow = 1
case Left:
columns = []int{db.Width, 0}
mainColumn = 1
case Right:
columns = []int{0, db.Width}
paneColumn = 1
}
return tview.NewGrid().SetRows(rows...).SetColumns(columns...).
AddItem(main, mainRow, mainColumn, 1, 1, 1, 1, true).
AddItem(db, paneRow, paneColumn, 1, 1, 1, 1, false)
} }
func Printf(text string, args ...interface{}) { func Printf(text string, args ...interface{}) {
if Default != nil { if RedirectAllExt {
ExtPrintf(text, args...)
} else if Default != nil {
Default.Printf(text, args...) Default.Printf(text, args...)
} }
} }
func Print(text ...interface{}) { func Print(text ...interface{}) {
if Default != nil { if RedirectAllExt {
ExtPrint(text...)
} else if Default != nil {
Default.Print(text...) Default.Print(text...)
} }
} }