File: builder.go

package info (click to toggle)
go-gir-generator 2.0.2-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,216 kB
  • sloc: ansic: 186; makefile: 44
file content (49 lines) | stat: -rw-r--r-- 1,022 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Builder
//
// Demonstrates an interface loaded from a XML description.
package builder

import "gobject/gtk-3.0"
import "./gogtk-demo/common"

var window *gtk.Window
var builder *gtk.Builder

type dummy struct{}

func (*dummy) QuitActivate(action *gtk.Action) {
	window := gtk.ToWidget(builder.GetObject("window1"))
	window.Destroy()
}

func (*dummy) AboutActivate(action *gtk.Action) {
	about_dlg := gtk.ToDialog(builder.GetObject("aboutdialog1"))
	about_dlg.Run()
	about_dlg.Hide()
}

func Do(mainwin *gtk.Window) *gtk.Window {
	if window == nil {
		builder = gtk.NewBuilder()
		_, err := builder.AddFromFile(common.FindFile("demo.ui"))
		if err != nil {
			println("ERROR: ", err.Error())
			return nil
		}

		builder.ConnectSignals((*dummy)(nil))
		window = gtk.ToWindow(builder.GetObject("window1"))
		window.SetScreen(mainwin.GetScreen())
		window.Connect("destroy", func() {
			window = nil
			builder = nil
		})
	}

	if !window.GetVisible() {
		window.ShowAll()
	} else {
		window.Destroy()
	}
	return window
}