101 lines
2.6 KiB
Go
101 lines
2.6 KiB
Go
package main
|
|
|
|
import (
|
|
"github.com/gotk3/gotk3/gtk"
|
|
"log"
|
|
"time"
|
|
)
|
|
|
|
func check(err error, msg string) {
|
|
if err != nil {
|
|
log.Fatal(msg, err)
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
gtk.Init(nil)
|
|
|
|
window, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
|
|
check(err, "Unable to create window:")
|
|
window.SetResizable(true)
|
|
window.SetTitle("Window management")
|
|
window.SetBorderWidth(5)
|
|
window.Connect("destroy", func() {
|
|
gtk.MainQuit()
|
|
})
|
|
|
|
stackbox, err := gtk.BoxNew(gtk.ORIENTATION_VERTICAL, 10)
|
|
check(err, "Unable to create stack box:")
|
|
|
|
bmax, err := gtk.ButtonNewWithLabel("Maximize")
|
|
check(err, "Unable to create maximize button:")
|
|
bmax.Connect("clicked", func() {
|
|
window.Maximize()
|
|
})
|
|
|
|
bunmax, err := gtk.ButtonNewWithLabel("Unmaximize")
|
|
check(err, "Unable to create unmaximize button:")
|
|
bunmax.Connect("clicked", func() {
|
|
window.Unmaximize()
|
|
})
|
|
|
|
bicon, err := gtk.ButtonNewWithLabel("Iconize")
|
|
check(err, "Unable to create iconize button:")
|
|
bicon.Connect("clicked", func() {
|
|
window.Iconify()
|
|
})
|
|
|
|
bdeicon, err := gtk.ButtonNewWithLabel("Deiconize")
|
|
check(err, "Unable to create deiconize button:")
|
|
bdeicon.Connect("clicked", func() {
|
|
window.Deiconify()
|
|
})
|
|
|
|
bhide, err := gtk.ButtonNewWithLabel("Hide")
|
|
check(err, "Unable to create hide button:")
|
|
bhide.Connect("clicked", func() {
|
|
// not working on Ubuntu 16.04 but window 'dims' after a few seconds
|
|
window.Hide()
|
|
time.Sleep(10 * time.Second)
|
|
window.Show()
|
|
})
|
|
|
|
bshow, err := gtk.ButtonNewWithLabel("Show")
|
|
check(err, "Unable to create show button:")
|
|
bshow.Connect("clicked", func() {
|
|
window.Show()
|
|
})
|
|
|
|
bmove, err := gtk.ButtonNewWithLabel("Move")
|
|
check(err, "Unable to create move button:")
|
|
isShifted := false
|
|
bmove.Connect("clicked", func() {
|
|
w, h := window.GetSize()
|
|
if isShifted {
|
|
window.Move(w-10, h-10)
|
|
} else {
|
|
window.Move(w+10, h+10)
|
|
}
|
|
isShifted = !isShifted
|
|
})
|
|
|
|
bquit, err := gtk.ButtonNewWithLabel("Quit")
|
|
check(err, "Unable to create quit button:")
|
|
bquit.Connect("clicked", func() {
|
|
window.Destroy()
|
|
})
|
|
|
|
stackbox.PackStart(bmax, true, true, 0)
|
|
stackbox.PackStart(bunmax, true, true, 0)
|
|
stackbox.PackStart(bicon, true, true, 0)
|
|
stackbox.PackStart(bdeicon, true, true, 0)
|
|
stackbox.PackStart(bhide, true, true, 0)
|
|
stackbox.PackStart(bshow, true, true, 0)
|
|
stackbox.PackStart(bmove, true, true, 0)
|
|
stackbox.PackStart(bquit, true, true, 0)
|
|
|
|
window.Add(stackbox)
|
|
window.ShowAll()
|
|
gtk.Main()
|
|
}
|