From: Frédéric Péters Date: Sat, 21 Mar 2020 13:04:57 +0000 (+0100) Subject: remove UI stuff, turn into CLI X-Git-Url: https://git.0d.be/?p=barnard.git;a=commitdiff_plain;h=4f08e3ebfb20788e3fc39d6901af2d474510c10f;ds=sidebyside remove UI stuff, turn into CLI --- diff --git a/client.go b/client.go index 060e059..420aae2 100644 --- a/client.go +++ b/client.go @@ -36,10 +36,6 @@ func (b *Barnard) start() { func (b *Barnard) OnConnect(e *gumble.ConnectEvent) { b.Client = e.Client - b.Ui.SetActive(uiViewInput) - b.UiTree.Rebuild() - b.Ui.Refresh() - b.UpdateInputStatus(fmt.Sprintf("To: %s", e.Client.Self.Channel.Name)) b.AddOutputLine(fmt.Sprintf("Connected to %s", b.Client.Conn.RemoteAddr())) if e.WelcomeMessage != nil { diff --git a/main.go b/main.go index bbe84fa..dbdc209 100644 --- a/main.go +++ b/main.go @@ -6,8 +6,8 @@ import ( "fmt" "os" - "layeh.com/barnard/uiterm" "layeh.com/gumble/gumble" + "layeh.com/gumble/gumbleutil" _ "layeh.com/gumble/opus" ) @@ -44,6 +44,14 @@ func main() { b.TLSConfig.Certificates = append(b.TLSConfig.Certificates, cert) } - b.Ui = uiterm.New(&b) - b.Ui.Run() + keepAlive := make(chan bool) + + b.Config.Attach(gumbleutil.Listener{ + Disconnect: func(e *gumble.DisconnectEvent) { + keepAlive <- true + }, + }) + + b.start() + <-keepAlive } diff --git a/ui.go b/ui.go index 98b7b7b..803b478 100644 --- a/ui.go +++ b/ui.go @@ -2,37 +2,25 @@ package main import ( "fmt" + "os" "strings" "time" "github.com/kennygrant/sanitize" - "layeh.com/barnard/uiterm" "layeh.com/gumble/gumble" ) -const ( - uiViewLogo = "logo" - uiViewTop = "top" - uiViewStatus = "status" - uiViewInput = "input" - uiViewInputStatus = "inputstatus" - uiViewOutput = "output" - uiViewTree = "tree" -) - func esc(str string) string { return sanitize.HTML(str) } func (b *Barnard) UpdateInputStatus(status string) { - b.UiInputStatus.Text = status - b.UiTree.Rebuild() - b.Ui.Refresh() + fmt.Fprintf(os.Stdout, "input status: %s\n", status) } func (b *Barnard) AddOutputLine(line string) { now := time.Now() - b.UiOutput.AddLine(fmt.Sprintf("[%02d:%02d:%02d] %s", now.Hour(), now.Minute(), now.Second(), line)) + fmt.Fprintf(os.Stdout, "[%02d:%02d:%02d] %s\n", now.Hour(), now.Minute(), now.Second(), line) } func (b *Barnard) AddOutputMessage(sender *gumble.User, message string) { @@ -42,130 +30,3 @@ func (b *Barnard) AddOutputMessage(sender *gumble.User, message string) { b.AddOutputLine(fmt.Sprintf("%s: %s", sender.Name, strings.TrimSpace(esc(message)))) } } - -func (b *Barnard) OnVoiceToggle(ui *uiterm.Ui, key uiterm.Key) { - if b.UiStatus.Text == " Tx " { - b.UiStatus.Text = " Idle " - b.UiStatus.Fg = uiterm.ColorBlack - b.UiStatus.Bg = uiterm.ColorWhite - b.Stream.StopSource() - } else { - b.UiStatus.Fg = uiterm.ColorWhite | uiterm.AttrBold - b.UiStatus.Bg = uiterm.ColorRed - b.UiStatus.Text = " Tx " - b.Stream.StartSource() - } - ui.Refresh() -} - -func (b *Barnard) OnQuitPress(ui *uiterm.Ui, key uiterm.Key) { - b.Client.Disconnect() - b.Ui.Close() -} - -func (b *Barnard) OnClearPress(ui *uiterm.Ui, key uiterm.Key) { - b.UiOutput.Clear() -} - -func (b *Barnard) OnScrollOutputUp(ui *uiterm.Ui, key uiterm.Key) { - b.UiOutput.ScrollUp() -} - -func (b *Barnard) OnScrollOutputDown(ui *uiterm.Ui, key uiterm.Key) { - b.UiOutput.ScrollDown() -} - -func (b *Barnard) OnScrollOutputTop(ui *uiterm.Ui, key uiterm.Key) { - b.UiOutput.ScrollTop() -} - -func (b *Barnard) OnScrollOutputBottom(ui *uiterm.Ui, key uiterm.Key) { - b.UiOutput.ScrollBottom() -} - -func (b *Barnard) OnFocusPress(ui *uiterm.Ui, key uiterm.Key) { - active := b.Ui.Active() - if active == uiViewInput { - b.Ui.SetActive(uiViewTree) - } else if active == uiViewTree { - b.Ui.SetActive(uiViewInput) - } -} - -func (b *Barnard) OnTextInput(ui *uiterm.Ui, textbox *uiterm.Textbox, text string) { - if text == "" { - return - } - if b.Client != nil && b.Client.Self != nil { - b.Client.Self.Channel.Send(text, false) - b.AddOutputMessage(b.Client.Self, text) - } -} - -func (b *Barnard) OnUiInitialize(ui *uiterm.Ui) { - ui.Add(uiViewLogo, &uiterm.Label{ - Text: " barnard ", - Fg: uiterm.ColorWhite | uiterm.AttrBold, - Bg: uiterm.ColorMagenta, - }) - - ui.Add(uiViewTop, &uiterm.Label{ - Fg: uiterm.ColorWhite, - Bg: uiterm.ColorBlue, - }) - - b.UiStatus = uiterm.Label{ - Text: " Idle ", - Fg: uiterm.ColorBlack, - Bg: uiterm.ColorWhite, - } - ui.Add(uiViewStatus, &b.UiStatus) - - b.UiInput = uiterm.Textbox{ - Fg: uiterm.ColorWhite, - Bg: uiterm.ColorBlack, - Input: b.OnTextInput, - } - ui.Add(uiViewInput, &b.UiInput) - - b.UiInputStatus = uiterm.Label{ - Fg: uiterm.ColorBlack, - Bg: uiterm.ColorWhite, - } - ui.Add(uiViewInputStatus, &b.UiInputStatus) - - b.UiOutput = uiterm.Textview{ - Fg: uiterm.ColorWhite, - Bg: uiterm.ColorBlack, - } - ui.Add(uiViewOutput, &b.UiOutput) - - b.UiTree = uiterm.Tree{ - Generator: b.TreeItem, - Listener: b.TreeItemSelect, - Fg: uiterm.ColorWhite, - Bg: uiterm.ColorBlack, - } - ui.Add(uiViewTree, &b.UiTree) - - b.Ui.AddKeyListener(b.OnFocusPress, uiterm.KeyTab) - b.Ui.AddKeyListener(b.OnVoiceToggle, uiterm.KeyF1) - b.Ui.AddKeyListener(b.OnQuitPress, uiterm.KeyF10) - b.Ui.AddKeyListener(b.OnClearPress, uiterm.KeyCtrlL) - b.Ui.AddKeyListener(b.OnScrollOutputUp, uiterm.KeyPgup) - b.Ui.AddKeyListener(b.OnScrollOutputDown, uiterm.KeyPgdn) - b.Ui.AddKeyListener(b.OnScrollOutputTop, uiterm.KeyHome) - b.Ui.AddKeyListener(b.OnScrollOutputBottom, uiterm.KeyEnd) - - b.start() -} - -func (b *Barnard) OnUiResize(ui *uiterm.Ui, width, height int) { - ui.SetBounds(uiViewLogo, 0, 0, 9, 1) - ui.SetBounds(uiViewTop, 9, 0, width-6, 1) - ui.SetBounds(uiViewStatus, width-6, 0, width, 1) - ui.SetBounds(uiViewInput, 0, height-1, width, height) - ui.SetBounds(uiViewInputStatus, 0, height-2, width, height-1) - ui.SetBounds(uiViewOutput, 0, 1, width-20, height-2) - ui.SetBounds(uiViewTree, width-20, 1, width, height-2) -}