func main() { gtk.Init(nil) window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window.SetPosition(gtk.WIN_POS_CENTER) window.SetTitle("GTK Go!") window.Connect("destroy", func(ctx *glib.CallbackContext) { gtk.MainQuit() }, "") box := gtk.NewHPaned() palette := gtk.NewToolPalette() group := gtk.NewToolItemGroup("Tools") b := gtk.NewToolButtonFromStock(gtk.STOCK_NEW) b.OnClicked(func() { println("You clicked new!") }) group.Insert(b, -1) b = gtk.NewToolButtonFromStock(gtk.STOCK_CLOSE) group.Insert(b, -1) b = gtk.NewToolButtonFromStock(gtk.STOCK_REDO) group.Insert(b, -1) b = gtk.NewToolButtonFromStock(gtk.STOCK_REFRESH) group.Insert(b, -1) b = gtk.NewToolButtonFromStock(gtk.STOCK_QUIT) group.Insert(b, -1) b = gtk.NewToolButtonFromStock(gtk.STOCK_YES) group.Insert(b, -1) b = gtk.NewToolButtonFromStock(gtk.STOCK_NO) group.Insert(b, -1) b = gtk.NewToolButtonFromStock(gtk.STOCK_PRINT) group.Insert(b, -1) b = gtk.NewToolButtonFromStock(gtk.STOCK_NETWORK) group.Insert(b, -1) b = gtk.NewToolButtonFromStock(gtk.STOCK_INFO) group.Insert(b, -1) b = gtk.NewToolButtonFromStock(gtk.STOCK_HOME) group.Insert(b, -1) b = gtk.NewToolButtonFromStock(gtk.STOCK_INDEX) group.Insert(b, -1) b = gtk.NewToolButtonFromStock(gtk.STOCK_FIND) group.Insert(b, -1) b = gtk.NewToolButtonFromStock(gtk.STOCK_FILE) group.Insert(b, -1) b = gtk.NewToolButtonFromStock(gtk.STOCK_EXECUTE) group.Insert(b, -1) palette.Add(group) bcopy := gtk.NewToolButtonFromStock(gtk.STOCK_COPY) bcut := gtk.NewToolButtonFromStock(gtk.STOCK_CUT) bdelete := gtk.NewToolButtonFromStock(gtk.STOCK_DELETE) group = gtk.NewToolItemGroup("Stuff") group.Insert(bcopy, -1) group.Insert(bcut, -1) group.Insert(bdelete, -1) palette.Add(group) frame := gtk.NewVBox(false, 1) align := gtk.NewAlignment(0, 0, 0, 0) image := gtk.NewImageFromFile("./turkey.jpg") align.Add(image) frame.Add(align) box.Pack1(palette, true, false) box.Pack2(frame, false, false) window.Add(box) window.SetSizeRequest(600, 600) window.ShowAll() gtk.Main() }
func main() { gtk.Init(nil) window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window.SetPosition(gtk.WIN_POS_CENTER) window.SetTitle("GTK Go!") window.Connect("destroy", func(ctx *glib.CallbackContext) { gtk.MainQuit() }, "") vbox := gtk.NewVBox(false, 0) toolbar := gtk.NewToolbar() toolbar.SetStyle(gtk.TOOLBAR_ICONS) vbox.PackStart(toolbar, false, false, 5) btnnew := gtk.NewToolButtonFromStock(gtk.STOCK_NEW) btnclose := gtk.NewToolButtonFromStock(gtk.STOCK_CLOSE) separator := gtk.NewSeparatorToolItem() btncustom := gtk.NewToolButton(nil, "Custom") btnmenu := gtk.NewMenuToolButtonFromStock("gtk.STOCK_CLOSE") btnmenu.SetArrowTooltipText("This is a tool tip") btnnew.OnClicked(onToolButtonClicked) btnclose.OnClicked(onToolButtonClicked) btncustom.OnClicked(onToolButtonClicked) toolmenu := gtk.NewMenu() menuitem := gtk.NewMenuItemWithMnemonic("8") menuitem.Show() toolmenu.Append(menuitem) menuitem = gtk.NewMenuItemWithMnemonic("16") menuitem.Show() toolmenu.Append(menuitem) menuitem = gtk.NewMenuItemWithMnemonic("32") menuitem.Show() toolmenu.Append(menuitem) btnmenu.SetMenu(toolmenu) toolbar.Insert(btnnew, -1) toolbar.Insert(btnclose, -1) toolbar.Insert(separator, -1) toolbar.Insert(btncustom, -1) toolbar.Insert(btnmenu, -1) hbox := gtk.NewHBox(false, 0) vbox.PackStart(hbox, true, true, 0) toolbar2 := gtk.NewToolbar() toolbar2.SetOrientation(gtk.ORIENTATION_VERTICAL) hbox.PackStart(toolbar2, false, false, 5) btnhelp := gtk.NewToolButtonFromStock(gtk.STOCK_HELP) btnhelp.OnClicked(onToolButtonClicked) toolbar2.Insert(btnhelp, -1) btntoggle := gtk.NewToggleToolButton() btntoggle2 := gtk.NewToggleToolButtonFromStock(gtk.STOCK_ITALIC) toolbar2.Insert(btntoggle, -1) toolbar2.Insert(btntoggle2, -1) for i := 0; i < toolbar.GetNItems(); i++ { gti := toolbar.GetNthItem(i) switch gti.(type) { case *gtk.ToolButton: fmt.Printf("toolbar[%d] is a *gtk.ToolButton\n", i) w := gti.(*gtk.ToolButton).GetIconWidget() gti.(*gtk.ToolButton).SetIconWidget(w) case *gtk.ToggleToolButton: fmt.Printf("toolbar[%d] is a *gtk.ToggleToolButton\n", i) gti.(*gtk.ToggleToolButton).SetActive(true) case *gtk.SeparatorToolItem: fmt.Printf("toolbar[%d] is a *gtk.SeparatorToolItem\n", i) default: fmt.Printf("toolbar: Item is of unknown type\n") } } for i := 0; i < toolbar2.GetNItems(); i++ { gti := toolbar2.GetNthItem(i) switch gti.(type) { case *gtk.ToolButton: fmt.Printf("toolbar2[%d] is a *gtk.ToolButton\n", i) case *gtk.ToggleToolButton: fmt.Printf("toolbar2[%d] is a *gtk.ToggleToolButton\n", i) gti.(*gtk.ToggleToolButton).SetActive(true) case *gtk.SeparatorToolItem: fmt.Printf("toolbar2[%d] is a *gtk.SeparatorToolItem\n", i) default: fmt.Printf("toolbar2: Item is of unknown type\n") } } window.Add(vbox) window.SetSizeRequest(600, 600) window.ShowAll() gtk.Main() }