|
// main.wren
|
|
import "gtk" for Gtk, Window, Box, Button, Entry, Label
|
|
|
|
// Optional: your host can still expose this to quit if needed, but not required here
|
|
// foreign class Host { foreign static signalDone() }
|
|
|
|
var ui = Fiber.new {
|
|
Gtk.init()
|
|
|
|
var win = Window.new("Wren + GTK", 420, 200)
|
|
var root = Box.vbox(8)
|
|
var info = Label.new("Type something and click the button:")
|
|
var entry = Entry.new()
|
|
var btn = Button.new("Say hi")
|
|
|
|
root.packStart(info, false, false, 0)
|
|
root.packStart(entry, false, false, 0)
|
|
root.packStart(btn, false, false, 0)
|
|
|
|
win.add(root)
|
|
|
|
// Quit the app when the window is closed
|
|
win.onDestroy { Gtk.quit() }
|
|
|
|
// Update the label with the current entry text
|
|
btn.onClicked {
|
|
info.setText("You typed: " + entry.text)
|
|
}
|
|
|
|
// Also submit on Enter key in the entry
|
|
entry.onActivate {
|
|
info.setText("Enter pressed: " + entry.text)
|
|
}
|
|
|
|
win.showAll()
|
|
Gtk.run()
|
|
// Host.signalDone() // if you want to tell your C host to exit
|
|
}
|
|
|
|
ui.call()
|