Skip to content

Commit

Permalink
Extract xmlConsole
Browse files Browse the repository at this point in the history
Closes #464
  • Loading branch information
Reinaldo de Souza Junior committed Nov 3, 2017
1 parent 6eaa387 commit f37ceda
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 28 deletions.
36 changes: 9 additions & 27 deletions gui/account.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
type account struct {
menu gtki.MenuItem
currentNotification gtki.InfoBar
xmlConsole gtki.Dialog

//TODO: Should this be a map of roster.Peer and conversationView?
conversations map[string]conversationView
Expand Down Expand Up @@ -327,35 +328,16 @@ func (account *account) createDumpInfoItem(r *roster) gtki.MenuItem {
return dumpInfoItem
}

func (account *account) createXMLConsoleItem(r *roster) gtki.MenuItem {
func (account *account) createXMLConsoleItem(parent gtki.Window) gtki.MenuItem {
if account.xmlConsole == nil {
account.xmlConsole = newXMLConsoleView(account.session.GetInMemoryLog())
account.xmlConsole.SetTransientFor(parent)
account.xmlConsole.SetTitle(strings.Replace(account.xmlConsole.GetTitle(), "ACCOUNT_NAME", account.session.GetConfig().Account, -1))
}

consoleItem, _ := g.gtk.MenuItemNewWithMnemonic(i18n.Local("XML Console"))
consoleItem.Connect("activate", func() {
builder := newBuilder("XMLConsole")
console := builder.getObj("XMLConsole").(gtki.Dialog)
buf := builder.getObj("consoleContent").(gtki.TextBuffer)
console.SetTransientFor(r.ui.window)
console.SetTitle(strings.Replace(console.GetTitle(), "ACCOUNT_NAME", account.session.GetConfig().Account, -1))
log := account.session.GetInMemoryLog()

buf.Delete(buf.GetStartIter(), buf.GetEndIter())
if log != nil {
buf.Insert(buf.GetEndIter(), log.String())
}
consoleItem.Connect("activate", account.xmlConsole.ShowAll)

builder.ConnectSignals(map[string]interface{}{
"on_refresh_signal": func() {
buf.Delete(buf.GetStartIter(), buf.GetEndIter())
if log != nil {
buf.Insert(buf.GetEndIter(), log.String())
}
},
"on_close_signal": func() {
console.Destroy()
},
})

console.ShowAll()
})
return consoleItem
}

Expand Down
2 changes: 1 addition & 1 deletion gui/roster.go
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,7 @@ func (r *roster) createAccountPopup(jid string, account *account, bt gdki.EventB
if *config.DebugFlag {
mn.Append(account.createSeparatorItem())
mn.Append(account.createDumpInfoItem(r))
mn.Append(account.createXMLConsoleItem(r))
mn.Append(account.createXMLConsoleItem(r.ui.window))
}
mn.ShowAll()
mn.PopupAtPointer(bt)
Expand Down
38 changes: 38 additions & 0 deletions gui/xml_console.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package gui

import (
"bytes"

"github.com/coyim/gotk3adapter/gtki"
)

type xmlConsoleView struct {
gtki.Dialog

buf gtki.TextBuffer
log *bytes.Buffer
}

func newXMLConsoleView(log *bytes.Buffer) *xmlConsoleView {
builder := newBuilder("XMLConsole")
d := &xmlConsoleView{
Dialog: builder.getObj("XMLConsole").(gtki.Dialog),
buf: builder.getObj("consoleContent").(gtki.TextBuffer),
log: log,
}

d.refresh()
builder.ConnectSignals(map[string]interface{}{
"on_refresh_signal": d.refresh,
"on_close_signal": d.Destroy,
})

return d
}

func (c *xmlConsoleView) refresh() {
c.buf.Delete(c.buf.GetStartIter(), c.buf.GetEndIter())
if c.log != nil {
c.buf.Insert(c.buf.GetEndIter(), c.log.String())
}
}

0 comments on commit f37ceda

Please sign in to comment.