diff options
author | Tulir Asokan <tulir@maunium.net> | 2018-04-09 23:45:54 +0300 |
---|---|---|
committer | Tulir Asokan <tulir@maunium.net> | 2018-04-09 23:45:54 +0300 |
commit | eda2b575f06e72040ebf82d24a7ec1ac84b7948c (patch) | |
tree | fe02378ebd00443cb675675ddade335ceab25cd1 /ui/debug | |
parent | 2ba2fde3966211845b1117c85b27e3c947b6307f (diff) |
Refactor UI to use interfaces everywhere
Diffstat (limited to 'ui/debug')
-rw-r--r-- | ui/debug/debug.go | 158 | ||||
-rw-r--r-- | ui/debug/doc.go | 2 | ||||
-rw-r--r-- | ui/debug/external.go | 45 |
3 files changed, 0 insertions, 205 deletions
diff --git a/ui/debug/debug.go b/ui/debug/debug.go deleted file mode 100644 index 3f47980..0000000 --- a/ui/debug/debug.go +++ /dev/null @@ -1,158 +0,0 @@ -// gomuks - A terminal Matrix client written in Go. -// Copyright (C) 2018 Tulir Asokan -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - -package debug - -import ( - "fmt" - "io/ioutil" - "os" - "time" - - "runtime/debug" - - "maunium.net/go/tview" -) - -type Printer interface { - Printf(text string, args ...interface{}) - Print(text ...interface{}) -} - -type Pane struct { - *tview.TextView - Height int - Width int - num int -} - -var Default Printer -var RedirectAllExt bool - -func NewPane() *Pane { - pane := tview.NewTextView() - pane. - SetScrollable(true). - SetWrap(true). - SetBorder(true). - SetTitle("Debug output") - fmt.Fprintln(pane, "[0] Debug pane initialized") - - return &Pane{ - TextView: pane, - Height: 35, - Width: 80, - num: 0, - } -} - -func (db *Pane) Printf(text string, args ...interface{}) { - db.WriteString(fmt.Sprintf(text, args...) + "\n") -} - -func (db *Pane) Print(text ...interface{}) { - db.WriteString(fmt.Sprintln(text...)) -} - -func (db *Pane) WriteString(text string) { - db.num++ - fmt.Fprintf(db, "[%d] %s", db.num, text) -} - -type PaneSide int - -const ( - 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{}) { - if RedirectAllExt { - ExtPrintf(text, args...) - } else if Default != nil { - Default.Printf(text, args...) - } -} - -func Print(text ...interface{}) { - if RedirectAllExt { - ExtPrint(text...) - } else if Default != nil { - Default.Print(text...) - } -} - -const Oops = ` __________ -< Oh noes! > - ‾‾‾\‾‾‾‾‾‾ - \ ^__^ - \ (XX)\_______ - (__)\ )\/\ - U ||----W | - || ||` - -func PrettyPanic() { - fmt.Println(Oops) - fmt.Println("") - fmt.Println("A fatal error has occurred.") - fmt.Println("") - traceFile := fmt.Sprintf("/tmp/gomuks-panic-%s.txt", time.Now().Format("2006-01-02--15-04-05")) - data := debug.Stack() - err := ioutil.WriteFile(traceFile, data, 0644) - if err != nil { - fmt.Println("Saving the stack trace to", traceFile, "failed:") - fmt.Println("--------------------------------------------------------------------------------") - fmt.Println(err) - fmt.Println("--------------------------------------------------------------------------------") - fmt.Println("") - fmt.Println("You can file an issue at https://github.com/tulir/gomuks/issues.") - fmt.Println("Please provide the file save error (above) and the stack trace of the original error (below) when filing an issue.") - fmt.Println("") - fmt.Println("--------------------------------------------------------------------------------") - debug.PrintStack() - fmt.Println("--------------------------------------------------------------------------------") - } else { - fmt.Println("The stack trace has been saved to", traceFile) - fmt.Println("") - fmt.Println("You can file an issue at https://github.com/tulir/gomuks/issues.") - fmt.Println("Please provide the contents of that file when filing an issue.") - } - os.Exit(1) -} diff --git a/ui/debug/doc.go b/ui/debug/doc.go deleted file mode 100644 index a321689..0000000 --- a/ui/debug/doc.go +++ /dev/null @@ -1,2 +0,0 @@ -// Package debug contains utilities to display debug messages while running an interactive tview program. -package debug diff --git a/ui/debug/external.go b/ui/debug/external.go deleted file mode 100644 index faabbcc..0000000 --- a/ui/debug/external.go +++ /dev/null @@ -1,45 +0,0 @@ -// gomuks - A terminal Matrix client written in Go. -// Copyright (C) 2018 Tulir Asokan -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - -package debug - -import ( - "fmt" - "io" - "os" -) - -var writer io.Writer - -func EnableExternal() { - var err error - writer, err = os.OpenFile("/tmp/gomuks-debug.log", os.O_WRONLY|os.O_APPEND, 0644) - if err != nil { - writer = nil - } -} - -func ExtPrintf(text string, args ...interface{}) { - if writer != nil { - fmt.Fprintf(writer, text+"\n", args...) - } -} - -func ExtPrint(text ...interface{}) { - if writer != nil { - fmt.Fprintln(writer, text...) - } -} |