summaryrefslogtreecommitdiff
path: root/redo/textfield_unix.go
diff options
context:
space:
mode:
Diffstat (limited to 'redo/textfield_unix.go')
-rw-r--r--redo/textfield_unix.go28
1 files changed, 25 insertions, 3 deletions
diff --git a/redo/textfield_unix.go b/redo/textfield_unix.go
index e802947..c4ce8b4 100644
--- a/redo/textfield_unix.go
+++ b/redo/textfield_unix.go
@@ -9,21 +9,28 @@ import (
)
// #include "gtk_unix.h"
-// extern void buttonClicked(GtkButton *, gpointer);
-// extern void checkboxToggled(GtkToggleButton *, gpointer);
+// extern void textfieldChanged(GtkEditable *, gpointer);
import "C"
type textfield struct {
_widget *C.GtkWidget
entry *C.GtkEntry
+ changed *event
}
func startNewTextField() *textfield {
widget := C.gtk_entry_new()
- return &textfield{
+ t := &textfield{
_widget: widget,
entry: (*C.GtkEntry)(unsafe.Pointer(widget)),
+ changed: newEvent(),
}
+ g_signal_connect(
+ C.gpointer(unsafe.Pointer(t._widget)),
+ "changed",
+ C.GCallback(C.textfieldChanged),
+ C.gpointer(unsafe.Pointer(t)))
+ return t
}
func newTextField() *textfield {
@@ -46,6 +53,21 @@ func (t *textfield) SetText(text string) {
C.gtk_entry_set_text(t.entry, ctext)
}
+func (t *textfield) OnChanged(f func()) {
+ t.changed.set(f)
+}
+
+func (t *textfield) Invalid(reason string) {
+ // TODO
+}
+
+//export textfieldChanged
+func textfieldChanged(editable *C.GtkEditable, data C.gpointer) {
+ t := (*textfield)(unsafe.Pointer(data))
+println("changed")
+ t.changed.fire()
+}
+
func (t *textfield) widget() *C.GtkWidget {
return t._widget
}