Skip to content

Commit

Permalink
Create key press event
Browse files Browse the repository at this point in the history
  • Loading branch information
fabiocolacio committed Dec 8, 2018
1 parent c806dea commit 4b2df8c
Showing 1 changed file with 46 additions and 3 deletions.
49 changes: 46 additions & 3 deletions gui/ui.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,23 @@ package gui

import(
"github.com/gotk3/gotk3/gtk"
"github.com/gotk3/gotk3/gdk"
"fmt"
"log"
)

type UI struct {
Window *gtk.Window
Callback func(msg string)

buffer *gtk.TextBuffer
outText *gtk.TextView
inText *gtk.TextView
}

func UINew() (*UI, error) {
ui := new(UI)

win, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
if err != nil {
return nil, err
Expand Down Expand Up @@ -57,6 +64,7 @@ func UINew() (*UI, error) {
outgoing.SetSizeRequest(0, 20)
outgoing.SetAcceptsTab(false)
outgoing.SetWrapMode(gtk.WRAP_NONE)
outgoing.Connect("key-press-event", keyPressed, ui)

botScroll, err := gtk.ScrolledWindowNew(nil, nil)
if err != nil {
Expand All @@ -67,9 +75,44 @@ func UINew() (*UI, error) {
botScroll.Add(outgoing)
vbox.PackStart(botScroll, false, false, 0)

ui := &UI{
Window: win,
}
win.ShowAll()

ui.Window = win
ui.buffer = txtBuffer
ui.outText = outgoing
ui.inText = incoming

return ui, err
}

func (ui *UI) ShowMessage(text, author, time string) {
iter := ui.buffer.GetEndIter()
txt := fmt.Sprintf("[%s] %s: %s\n", time, author, text)
ui.buffer.Insert(iter, txt)
}

func keyPressed(textView *gtk.TextView, event *gdk.Event, ui *UI) bool {
keyEvent := gdk.EventKeyNewFromEvent(event)
if keyEvent.KeyVal() == gdk.KEY_Return {
buf, err := textView.GetBuffer()
if err != nil {
log.Fatal(err)
}

start := buf.GetStartIter()
end := buf.GetEndIter()
txt, err := buf.GetText(start, end, false)
if err != nil {
log.Fatal(err)
}

if ui.Callback != nil {
ui.Callback(txt)
}

buf.SetText("")

return true
}
return false
}

0 comments on commit 4b2df8c

Please sign in to comment.