func initPage(title string, uri string, size_x int, size_y int) { gtk.Init(nil) window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window.SetTitle(title) window.Connect("destroy", gtk.MainQuit) vbox := gtk.NewVBox(false, 1) swin := gtk.NewScrolledWindow(nil, nil) swin.SetPolicy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) swin.SetShadowType(gtk.SHADOW_IN) webview := webkit.NewWebView() webview.LoadUri(uri) swin.Add(webview) vbox.Add(swin) window.Add(vbox) window.SetSizeRequest(size_x, size_y) window.ShowAll() proxy := os.Getenv("HTTP_PROXY") if len(proxy) > 0 { soup_uri := webkit.SoupUri(proxy) webkit.GetDefaultSession().Set("proxy-uri", soup_uri) soup_uri.Free() } gtk.Main() }
// Frame - Calculation // This frame contains radix(16,10,8) and result labels // ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- func (this *UI) init_Calc() { // In this function, the designated frame is Calc_Frame _Frame := this.Calc_Frame if _Frame == nil { panic("UI::init_Calc() : nil Frame received") } // (inner) Box of Calculation fm_calc_box := gtk.NewHBox(false, 1) if fm_calc_box == nil { panic("UI::init_Calc() : HBox allocation Failed") } _Frame.Add(fm_calc_box) // Box for Radix Buttons. box_rdx := gtk.NewVBox(false, 1) if box_rdx == nil { panic("UI::init_Calc() : VBox allocation Failed") } btn_hex := button("Hex") // [Hex] : Hexadecimal btn_dec := button("Dec") // [Dec] : Decimal btn_oct := button("Oct") // [Oct] : Octal box_rdx.Add(btn_hex) box_rdx.Add(btn_dec) box_rdx.Add(btn_oct) // Insert radix buttons into the map this.Btn_map["Hex"] = btn_hex this.Btn_map["Dec"] = btn_dec this.Btn_map["Oct"] = btn_oct // Box for Result Labels box_labels := gtk.NewVBox(false, 1) if box_labels == nil { panic("UI::init_Calc() : VBox allocation Failed") } // Place previous result box_labels.Add(this.Lbl_prev) // Place left and right operand box_LnR := gtk.NewHBox(false, 3) if box_LnR == nil { panic("UI::init_Calc() : HBox allocation Failed") } box_LnR.Add(this.Lbl_lhs) box_LnR.Add(this.Lbl_rhs) box_labels.Add(box_LnR) // Add both Boxes (Radix & Result) to frame box fm_calc_box.Add(box_rdx) fm_calc_box.Add(box_labels) fmt.Println("UI::init_Calc() done.") }
func (g *GUI) mkSidebar() *gtk.ScrolledWindow { sbVBox := gtk.NewVBox(false, 0) sbVBox.PackStart(labelCustomFont("Tools", "Sans Bold 14"), false, false, 3) g.showbiomes = gtk.NewCheckButtonWithLabel("Show Biomes") g.showbiomes.SetActive(true) g.showbiomes.Connect("toggled", g.showbiomesToggled) sbVBox.PackStart(g.showbiomes, false, false, 3) g.fixSnowIce = gtk.NewCheckButtonWithLabel("Fix Snow/Ice") g.fixSnowIce.SetTooltipText("Add Snow/Ice for Taiga/Ice Plains. Remove Snow/Ice for other biomes.") g.fixSnowIce.Connect("toggled", g.fixSnowIceToggled) sbVBox.PackStart(g.fixSnowIce, false, false, 3) fill := gtk.NewRadioButtonWithLabel(nil, "Fill") fill.SetActive(true) fill.Connect("toggled", g.mkUpdateToolFx(fill, NewFillTool())) draw := gtk.NewRadioButtonWithLabel(fill.GetGroup(), "Draw") drawRadius := gtk.NewSpinButtonWithRange(1, 20, 1) drawHBox := gtk.NewHBox(false, 0) drawHBox.PackStart(draw, true, true, 0) drawHBox.PackStart(gtk.NewLabel("Radius:"), false, false, 3) drawHBox.PackEnd(drawRadius, false, false, 3) draw.Connect("toggled", g.mkUpdateToolFx(draw, NewDrawTool(func() int { return drawRadius.GetValueAsInt() }))) sbVBox.PackStart(fill, false, false, 3) sbVBox.PackStart(drawHBox, false, false, 3) sbVBox.PackStart(gtk.NewHSeparator(), false, false, 3) bioHeaderHBox := gtk.NewHBox(false, 0) bioHeaderHBox.PackStart(labelCustomFont("Biomes", "Sans Bold 14"), true, false, 0) editBiomesBtn := gtk.NewButton() editBiomesBtn.Add(gtk.NewImageFromStock(gtk.STOCK_EDIT, gtk.ICON_SIZE_SMALL_TOOLBAR)) editBiomesBtn.Connect("clicked", g.biomeEditor) editBiomesBtn.SetTooltipText("Configure Biomes") bioHeaderHBox.PackStart(editBiomesBtn, false, false, 0) sbVBox.PackStart(bioHeaderHBox, false, false, 3) g.bioVBoxWrap = gtk.NewVBox(false, 0) g.bioVBox = gtk.NewVBox(false, 0) g.bioVBoxWrap.PackStart(g.bioVBox, false, false, 0) sbVBox.PackStart(g.bioVBoxWrap, false, false, 3) g.updateBiomeInfo() scrolled := gtk.NewScrolledWindow(nil, nil) scrolled.SetPolicy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) scrolled.AddWithViewPort(sbVBox) return scrolled }
func (g *GUI) Init() { g.biomes = ReadDefaultBiomes() g.window = gtk.NewWindow(gtk.WINDOW_TOPLEVEL) g.window.SetTitle("biomed") g.accel = gtk.NewAccelGroup() g.window.AddAccelGroup(g.accel) menubar := g.mkMenuBar() vbox := gtk.NewVBox(false, 0) vbox.PackStart(menubar, false, false, 0) hbox := gtk.NewHBox(false, 0) g.mapw = NewMapWidget(GUICallbacks{g.reportError, g.updateInfo, g.setBusy}, MkBiomeLookup(g.biomes)) hbox.PackStart(g.mapw.DArea(), true, true, 3) sidebar := g.mkSidebar() hbox.PackEnd(sidebar, false, false, 3) vbox.PackStart(hbox, true, true, 0) g.statusbar = gtk.NewStatusbar() g.statusContext = g.statusbar.GetContextId("mapinfo") vbox.PackEnd(g.statusbar, false, false, 0) g.window.Add(vbox) g.window.SetDefaultSize(800, 600) g.window.Connect("destroy", g.exitApp) g.setTool(NewFillTool()) }
func main() { gtk.Init(nil) window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window.SetTitle("Clock") vbox := gtk.NewVBox(false, 1) label := gtk.NewLabel("") vbox.Add(label) window.Add(vbox) window.SetDefaultSize(300, 20) window.ShowAll() timer, _ := uv.TimerInit(nil) timer.Start(func(h *uv.Handle, status int) { label.SetLabel(fmt.Sprintf("%v", time.Now())) }, 1000, 1000) idle, _ := uv.IdleInit(nil) idle.Start(func(h *uv.Handle, status int) { gtk.MainIterationDo(false) }) window.Connect("destroy", func() { timer.Close(nil) idle.Close(nil) }) uv.DefaultLoop().Run() }
// NewBrowser returns a new browser component func NewBrowser(uri string) *Browser { vbox := gtk.NewVBox(false, 1) urlBarEntry := gtk.NewEntry() urlBarEntry.SetText(uri) urlBarEntry.GrabFocus() vbox.PackStart(urlBarEntry, false, false, 0) swin := gtk.NewScrolledWindow(nil, nil) swin.SetPolicy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) swin.SetShadowType(gtk.SHADOW_IN) webview := webkit.NewWebView() swin.Add(webview) vbox.Add(swin) // urlBarEntry.Connect("activate", func() { // webview.LoadUri(urlBarEntry.GetText()) // }) //return vbox browser := &Browser{ VBox: vbox, WebView: webview, URLEntry: urlBarEntry, Link: "", } browser.connectSignals() urlBarEntry.Emit("activate") return browser }
func main() { gtk.Init(nil) window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window.SetPosition(gtk.WIN_POS_CENTER) window.SetTitle("Hello GTK+Go world!") window.SetIconName("gtk-dialog-info") window.Connect("destroy", func(ctx *glib.CallbackContext) { gtk.MainQuit() }, "foo") vbox := gtk.NewVBox(false, 1) button := gtk.NewButtonWithLabel("Hello world!") button.SetTooltipMarkup("Say Hello World to everybody!") button.Clicked(func() { messagedialog := gtk.NewMessageDialog( button.GetTopLevelAsWindow(), gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, "Hello!") messagedialog.Response(func() { messagedialog.Destroy() }) messagedialog.Run() }) vbox.PackStart(button, false, false, 0) window.Add(vbox) window.SetSizeRequest(300, 50) window.ShowAll() gtk.Main() }
// Locate frames on the window // ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- func (this *UI) put_frames() { box_win := gtk.NewVBox(Homogeneous, Default_Spacing) if box_win == nil { panic("UI::put_frames() : VBox allocation Failed") } vpan1 := gtk.NewVPaned() if vpan1 == nil { panic("UI::put_frames() : VPaned allocation failed") } vpan1.Pack1(this.Calc_Frame, No_Resize, No_Shrink) // Calc : Top half hpan1 := gtk.NewHPaned() if hpan1 == nil { panic("UI::put_frames() : HPaned allocation failed") } hpan1.Pack1(this.Nums_Frame, No_Resize, No_Shrink) // Nums : Bottom-Left hpan1.Pack2(this.Oper_Frame, No_Resize, No_Shrink) // Oper : Bottom-Right vpan1.Pack2(hpan1, No_Resize, No_Shrink) box_win.Add(vpan1) if this.Win == nil { panic("UI::put_frames() : nil Window received") } // Place all Layout this.Win.Add(box_win) fmt.Println("UI::put_frames() done.") }
func board_display() { gtk.Init(&os.Args) window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window.SetPosition(gtk.WIN_POS_CENTER) window.SetTitle("Gomoku") window.SetResizable(false) window.Connect("destroy", gtk.MainQuit) player = 1 game = Gomoku{make([]int, 361), true, false, false, 1, [2]int{10, 10}, 0} vbox := gtk.NewVBox(false, 1) menu_bar(vbox) configure_board(vbox) status_bar(vbox) hintx, hinty, lastx, lasty = -1, -1, -1, -1 go calc_hint() window.Add(vbox) window.SetSizeRequest(WIDTH+40, HEIGHT+50) window.ShowAll() gtk.Main() }
func main() { mc := memcache.New("127.0.0.1:11211") gtk.Init(nil) window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window.SetTitle("memcachedclient") window.Connect("destroy", gtk.MainQuit) vbox := gtk.NewVBox(false, 1) swin := gtk.NewScrolledWindow(nil, nil) textview := gtk.NewTextView() textview.SetEditable(false) textview.SetCursorVisible(false) textview.ModifyFontEasy("monospace 12") swin.Add(textview) vbox.Add(swin) buffer := textview.GetBuffer() input := gtk.NewEntry() input.SetEditable(true) vbox.PackEnd(input, false, false, 0) tag := buffer.CreateTag("red", map[string]string{"foreground": "#FF0000"}) input.Connect("activate", func() { var iter gtk.TextIter tokens := strings.SplitN(input.GetText(), " ", 3) if len(tokens) == 2 && strings.ToUpper(tokens[0]) == "GET" { if t, err := mc.Get(tokens[1]); err == nil { buffer.GetEndIter(&iter) buffer.Insert(&iter, string(t.Value)+"\n") } else { buffer.InsertWithTag(&iter, err.Error()+"\n", tag) } input.SetText("") } else if len(tokens) == 3 && strings.ToUpper(tokens[0]) == "SET" { if err := mc.Set( &memcache.Item{ Key: tokens[1], Value: []byte(tokens[2]), }); err == nil { buffer.GetEndIter(&iter) buffer.InsertWithTag(&iter, "OK\n", tag) } else { buffer.InsertWithTag(&iter, err.Error()+"\n", tag) } input.SetText("") } }) input.GrabFocus() window.Add(vbox) window.SetSizeRequest(300, 500) window.ShowAll() gtk.Main() }
func main() { gtk.Init(nil) window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window.SetTitle("webkit") window.Connect("destroy", gtk.MainQuit) vbox := gtk.NewVBox(false, 1) entry := gtk.NewEntry() entry.SetText("http://golang.org/") vbox.PackStart(entry, false, false, 0) swin := gtk.NewScrolledWindow(nil, nil) swin.SetPolicy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) swin.SetShadowType(gtk.SHADOW_IN) webview := webkit.NewWebView() webview.Connect("load-committed", func() { entry.SetText(webview.GetUri()) }) swin.Add(webview) vbox.Add(swin) entry.Connect("activate", func() { webview.LoadUri(entry.GetText()) }) button := gtk.NewButtonWithLabel("load String") button.Clicked(func() { webview.LoadString("hello Go GTK!", "text/plain", "utf-8", ".") }) vbox.PackStart(button, false, false, 0) button = gtk.NewButtonWithLabel("load HTML String") button.Clicked(func() { webview.LoadHtmlString(HTML_STRING, ".") }) vbox.PackStart(button, false, false, 0) button = gtk.NewButtonWithLabel("Google Maps") button.Clicked(func() { webview.LoadHtmlString(MAP_EMBED, ".") }) vbox.PackStart(button, false, false, 0) window.Add(vbox) window.SetSizeRequest(600, 600) window.ShowAll() proxy := os.Getenv("HTTP_PROXY") if len(proxy) > 0 { soup_uri := webkit.SoupUri(proxy) webkit.GetDefaultSession().Set("proxy-uri", soup_uri) soup_uri.Free() } entry.Emit("activate") gtk.Main() }
func accountWindow() { // window settings window_account := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window_account.SetPosition(gtk.WIN_POS_CENTER) window_account.SetTitle("Add Account") // main container container_main := gtk.NewVBox(false, 10) container_user := gtk.NewHBox(false, 0) container_pass := gtk.NewHBox(false, 0) container_buttons := gtk.NewHBox(false, 5) container_main.SetBorderWidth(10) // username user_label := gtk.NewLabel("Username") user_entry := gtk.NewEntry() // password pass_label := gtk.NewLabel("Password") pass_entry := gtk.NewEntry() pass_entry.SetVisibility(false) // login and cancel buttons button_login := gtk.NewButtonWithLabel("Add") button_cancel := gtk.NewButtonWithLabel("Cancel") // login button_login.Clicked(func() { username := user_entry.GetText() password := pass_entry.GetText() profile, err := CreateProfile(username, password) if err == nil && profile != nil { println("[*] Login successful") window_account.Destroy() } }) // cancel button_cancel.Clicked(func() { window_account.Destroy() }) // add elements to containers container_buttons.Add(button_login) container_buttons.Add(button_cancel) container_user.PackStart(user_label, false, false, 20) container_user.PackEnd(user_entry, true, true, 1) container_pass.PackStart(pass_label, false, false, 20) container_pass.PackEnd(pass_entry, true, true, 1) container_main.PackStart(container_user, false, false, 1) container_main.PackStart(container_pass, false, false, 1) container_main.PackStart(container_buttons, false, false, 1) window_account.Add(container_main) window_account.SetSizeRequest(350, 150) window_account.SetResizable(false) window_account.ShowAll() }
func CreateWindow() *gtk.Window { window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window.SetDefaultSize(700, 300) vbox := gtk.NewVBox(false, 1) CreateMenuAndToolbar(window, vbox) CreateActivatableDemo(vbox) window.Add(vbox) return window }
func main() { FreeConsole() gtk.Init(nil) screenHeight := gdk.ScreenHeight() screenWidth := gdk.ScreenWidth() window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window.SetTitle("mgc") window.SetIconName("gtk-about") window.Connect("destroy", func() { gtk.MainQuit() }) vbox := gtk.NewVBox(false, 0) menubar := gtk.NewMenuBar() vbox.PackStart(menubar, false, false, 0) menu := gtk.NewMenuItemWithMnemonic("_File") menubar.Append(menu) submenu := gtk.NewMenu() menu.SetSubmenu(submenu) menuitem := gtk.NewMenuItemWithMnemonic("E_xit") menuitem.Connect("activate", func() { gtk.MainQuit() }) submenu.Append(menuitem) hpaned := gtk.NewHPaned() leftFrame := gtk.NewFrame("") rightFrame := gtk.NewFrame("") leftLabel := gtk.NewLabel("Left") rightLabel := gtk.NewLabel("Right") leftFrame.Add(leftLabel) rightFrame.Add(rightLabel) hpaned.Pack1(leftFrame, true, false) hpaned.Pack2(rightFrame, true, false) vbox.Add(hpaned) window.Add(vbox) window.SetSizeRequest(screenWidth/4*3, screenHeight/4*3) window.ShowAll() gtk.Main() }
func main() { gtk.Init(&os.Args) window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window.SetTitle("GTK DrawingArea") window.Connect("destroy", gtk.MainQuit) vbox := gtk.NewVBox(true, 0) vbox.SetBorderWidth(5) targets := []gtk.TargetEntry{ {"text/uri-list", 0, 0}, {"STRING", 0, 1}, {"text/plain", 0, 2}, } dest := gtk.NewLabel("drop me file") dest.DragDestSet( gtk.DEST_DEFAULT_MOTION| gtk.DEST_DEFAULT_HIGHLIGHT| gtk.DEST_DEFAULT_DROP, targets, gdk.ACTION_COPY) dest.DragDestAddUriTargets() dest.Connect("drag-data-received", func(ctx *glib.CallbackContext) { sdata := gtk.SelectionDataFromNative(unsafe.Pointer(ctx.Args(3))) if sdata != nil { a := (*[2000]uint8)(sdata.GetData()) files := strings.Split(string(a[0:sdata.GetLength()-1]), "\n") for i := range files { filename, _, _ := glib.FilenameFromUri(files[i]) files[i] = filename } dialog := gtk.NewMessageDialog( window, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, strings.Join(files, "\n")) dialog.SetTitle("D&D") dialog.Response(func() { dialog.Destroy() }) dialog.Run() } }) vbox.Add(dest) window.Add(vbox) window.SetSizeRequest(300, 100) window.ShowAll() gtk.Main() }
func (g *Gui) buildGUI() { g.MainWindow = gtk.NewWindow(gtk.WINDOW_TOPLEVEL) g.MainWindow.SetPosition(gtk.WIN_POS_CENTER) g.MainWindow.SetTitle("Gunnify") g.MainWindow.SetIconName("gtk-dialog-info") g.MainWindow.Connect("destroy", func(ctx *glib.CallbackContext) { println("got destroy!", ctx.Data().(string)) gtk.MainQuit() }, "foo") g.MainWindow.SetSizeRequest(600, 300) vbox := gtk.NewVBox(false, 0) g.buildList(vbox) g.MainWindow.Add(vbox) }
func newBiomeList() *biomeList { bl := &biomeList{ HBox: gtk.NewHBox(false, 0), treeview: gtk.NewTreeView(), lStore: gtk.NewListStore(glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING, glib.G_TYPE_STRING), addBtn: gtk.NewButton(), delBtn: gtk.NewButton(), upBtn: gtk.NewButton(), downBtn: gtk.NewButton(), } scroll := gtk.NewScrolledWindow(nil, nil) scroll.SetPolicy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) scroll.Add(bl.treeview) bl.PackStart(scroll, true, true, 3) bl.treeview.SetModel(bl.lStore) bl.treeview.AppendColumn(gtk.NewTreeViewColumnWithAttributes("Color", gtk.NewCellRendererText(), "background", 0)) bl.treeview.AppendColumn(gtk.NewTreeViewColumnWithAttributes("ID", gtk.NewCellRendererText(), "text", 1)) bl.treeview.AppendColumn(gtk.NewTreeViewColumnWithAttributes("Snowline", gtk.NewCellRendererText(), "text", 2)) bl.treeview.AppendColumn(gtk.NewTreeViewColumnWithAttributes("Name", gtk.NewCellRendererText(), "text", 3)) bl.treeview.GetSelection().SetMode(gtk.SELECTION_SINGLE) bl.treeview.Connect("cursor-changed", bl.onCursorChanged) vbox := gtk.NewVBox(false, 0) bl.addBtn.Add(gtk.NewImageFromStock(gtk.STOCK_ADD, gtk.ICON_SIZE_SMALL_TOOLBAR)) bl.delBtn.Add(gtk.NewImageFromStock(gtk.STOCK_DELETE, gtk.ICON_SIZE_SMALL_TOOLBAR)) bl.upBtn.Add(gtk.NewImageFromStock(gtk.STOCK_GO_UP, gtk.ICON_SIZE_SMALL_TOOLBAR)) bl.downBtn.Add(gtk.NewImageFromStock(gtk.STOCK_GO_DOWN, gtk.ICON_SIZE_SMALL_TOOLBAR)) bl.addBtn.Connect("clicked", bl.onAdd) bl.delBtn.Connect("clicked", bl.onDel) bl.upBtn.Connect("clicked", bl.onUp) bl.downBtn.Connect("clicked", bl.onDown) bl.delBtn.SetSensitive(false) bl.upBtn.SetSensitive(false) bl.downBtn.SetSensitive(false) vbox.PackStart(bl.addBtn, false, false, 3) vbox.PackStart(bl.delBtn, false, false, 3) vbox.PackStart(bl.upBtn, false, false, 3) vbox.PackStart(bl.downBtn, false, false, 3) bl.PackStart(vbox, false, false, 0) return bl }
func main() { gtk.Init(&os.Args) window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window.SetTitle("We love Expander") window.Connect("destroy", gtk.MainQuit) vbox := gtk.NewVBox(true, 0) vbox.SetBorderWidth(5) expander := gtk.NewExpander("dan the ...") expander.Add(gtk.NewLabel("404 contents not found")) vbox.PackStart(expander, false, false, 0) window.Add(vbox) window.ShowAll() gtk.Main() }
func main() { gtk.Init(&os.Args) window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window.SetTitle("DSP Playground") window.Connect("delete-event", deleteEvent) window.Connect("destroy", destroyEvent) vbox := gtk.NewVBox(true, 0) vbox.SetBorderWidth(5) vbox.Add(dsp_gtk.NewGraph()) window.Add(vbox) window.SetSizeRequest(1010, 300) window.ShowAll() gtk.Main() }
func guiMain(ch <-chan Accounts) { glib.ThreadInit(nil) gdk.ThreadsInit() gdk.ThreadsEnter() gtk.Init(&os.Args) window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window.SetPosition(gtk.WIN_POS_CENTER) window.SetTitle("password") window.Connect("destroy", gtk.MainQuit) entry := gtk.NewEntry() store := gtk.NewListStore(glib.G_TYPE_STRING) treeview := gtk.NewTreeView() treeview.SetModel(store) // treeview.AppendColumn(gtk.NewTreeViewColumnWithAttributes("icon", gtk.NewCellRendererPixbuf(), "pixbuf", 0)) treeview.AppendColumn(gtk.NewTreeViewColumnWithAttributes("name", gtk.NewCellRendererText(), "text", 0)) go func() { for accounts := range ch { gthread(func() { store.Clear() for _, a := range accounts { var iter gtk.TreeIter store.Append(&iter) store.Set(&iter, 0, a.Name) } }) } }() swin := gtk.NewScrolledWindow(nil, nil) swin.Add(treeview) vbox := gtk.NewVBox(false, 0) vbox.PackStart(entry, false, false, 1) vbox.PackStart(swin, true, true, 0) window.Add(vbox) window.SetSizeRequest(460, 640) window.SetResizable(false) window.ShowAll() }
// ShortTime creates a GTK fullscreen window for the shorttime clients. // No username/password required, only click 'start' button to log in func ShortTime(client string, minutes int) (user string) { // Inital window configuration window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) defer window.Destroy() window.Fullscreen() window.SetKeepAbove(true) window.SetTitle("Mycel Login") // Build GUI frame := gtk.NewFrame("Logg deg på " + client) frame.SetLabelAlign(0.5, 0.5) var imageLoader *gdkpixbuf.Loader imageLoader, _ = gdkpixbuf.NewLoaderWithMimeType("image/png") imageLoader.Write(logo_png()) imageLoader.Close() logo := gtk.NewImageFromPixbuf(imageLoader.GetPixbuf()) info := gtk.NewLabel("") info.SetMarkup("<span foreground='red'>Dette er en korttidsmaskin\nMaks " + strconv.Itoa(minutes) + " minutter!</span>") button := gtk.NewButtonWithLabel("\nStart\n") vbox := gtk.NewVBox(false, 20) vbox.SetBorderWidth(20) vbox.Add(logo) vbox.Add(info) vbox.Add(button) frame.Add(vbox) center := gtk.NewAlignment(0.5, 0.5, 0, 0) center.Add(frame) window.Add(center) // Connect GUI event signals to function callbacks button.Connect("clicked", func() { gtk.MainQuit() }) window.Connect("delete-event", func() bool { return true }) window.ShowAll() gtk.Main() return "Anonym" }
func (g *Gui) buildList(vbox *gtk.VBox) { frame := gtk.NewFrame("Device List") framebox := gtk.NewVBox(false, 1) frame.Add(framebox) vbox.Add(frame) g.Status = gtk.NewStatusbar() vbox.PackStart(g.Status, false, false, 0) g.Store = gtk.NewListStore(glib.G_TYPE_STRING, glib.G_TYPE_STRING) treeview := gtk.NewTreeView() framebox.Add(treeview) treeview.SetModel(g.Store) treeview.AppendColumn(gtk.NewTreeViewColumnWithAttributes("Device", gtk.NewCellRendererText(), "text", 0)) treeview.AppendColumn(gtk.NewTreeViewColumnWithAttributes("Name", gtk.NewCellRendererText(), "text", 1)) treeview.GetSelection().SetMode(gtk.SELECTION_SINGLE) controls := gtk.NewHBox(true, 0) g.Start = gtk.NewButtonWithLabel("Start Sync") g.Start.Clicked(func() { var iter gtk.TreeIter var device glib.GValue selection := treeview.GetSelection() if selection.CountSelectedRows() > 0 { selection.GetSelected(&iter) g.Store.GetValue(&iter, 0, &device) MainGui.notify("Start Writing On: " + device.GetString()) doWrite(device.GetString()) } else { MainGui.notify("No Active Selection") } }) controls.Add(g.Start) g.Recheck = gtk.NewButtonWithLabel("Rescan") g.Recheck.Clicked(func() { devices := SearchValid() MainGui.Store.Clear() for _, x := range devices { MainGui.appendItem("/dev/hidraw"+strconv.FormatUint(x.SeqNum(), 10), x.SysAttrValue("product")) } MainGui.notify("Scanning Done") }) controls.Add(g.Recheck) framebox.PackStart(controls, false, false, 0) }
func newBiomeEditFrame() *biomeEditFrame { frm := &biomeEditFrame{ Frame: gtk.NewFrame("Edit Biome"), applyBtn: gtk.NewButtonWithLabel("Apply"), idInput: gtk.NewEntry(), snowLineInput: gtk.NewEntry(), nameInput: gtk.NewEntry(), colorInput: gtk.NewColorButton(), } frm.idInput.SetSizeRequest(40, -1) frm.snowLineInput.SetSizeRequest(40, -1) frm.idInput.Connect("changed", frm.unlockApply) frm.nameInput.Connect("changed", frm.unlockApply) frm.snowLineInput.Connect("changed", frm.unlockApply) frm.applyBtn.SetSensitive(false) vbox := gtk.NewVBox(false, 0) hbox := gtk.NewHBox(false, 0) frm.idInput.SetTooltipText("The data value of the Biome [0-255]") frm.snowLineInput.SetTooltipText(fmt.Sprintf("Height (Y coordinate) at which snowfall starts (-1 or %d for no snowfall, 0 for always snowy)", mcmap.ChunkSizeY)) hbox.PackStart(gtk.NewLabel("Color:"), false, false, 0) hbox.PackStart(frm.colorInput, false, false, 3) hbox.PackStart(gtk.NewLabel("ID:"), false, false, 0) hbox.PackStart(frm.idInput, false, false, 3) hbox.PackStart(gtk.NewLabel("Snowline:"), false, false, 0) hbox.PackStart(frm.snowLineInput, false, false, 3) hbox.PackStart(gtk.NewLabel("Name:"), false, false, 0) hbox.PackStart(frm.nameInput, true, true, 3) vbox.PackStart(hbox, false, false, 0) vbox.PackStart(frm.applyBtn, false, false, 3) frm.Add(vbox) frm.applyBtn.Connect("clicked", frm.doApply) return frm }
func main() { gtk.Init(&os.Args) window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window.SetTitle("µemacs/pp") window.Connect("destroy", gtk.MainQuit) window.Connect("key-press-event", handleKeyPress) SetKeyReturn(kh.GTKKeyPressEvent{gdk.KEY_Return, 0}) swin := gtk.NewScrolledWindow(nil, nil) sourcebuffer := gsv.NewSourceBufferWithLanguage(gsv.SourceLanguageManagerGetDefault().GetLanguage("cpp")) sourceview = gsv.NewSourceViewWithBuffer(sourcebuffer) var start gtk.TextIter sourcebuffer.GetStartIter(&start) sourcebuffer.Insert(&start, `writing stuff, awww yea!`) textview = gtk.NewTextView() textbuffer = textview.GetBuffer() var bufiter gtk.TextIter sourcebuffer.GetStartIter(&bufiter) bufWrapper := ed.GtkTextBufferReadWriter{&sourceview.TextView.Container.Widget, bufiter, &sourcebuffer.TextBuffer} var comiter gtk.TextIter textbuffer.GetStartIter(&comiter) comWrapper := ed.GtkTextBufferReadWriter{&textview.Container.Widget, comiter, textbuffer} microemacs = editor.Editor{"", &bufWrapper, &comWrapper} vbox := gtk.NewVBox(false, 0) vbox.PackStart(swin, true, true, 0) vbox.PackEnd(textview, false, true, 0) swin.Add(sourceview) window.Add(vbox) window.SetSizeRequest(300, 300) window.ShowAll() gtk.Main() }
// Init acts as a constructor for the Status window struct func (v *Status) Init(client, user string, minutes int) { // Initialize variables v.client = client v.user = user v.minutes = minutes v.warned = false v.window = gtk.NewWindow(gtk.WINDOW_TOPLEVEL) // Inital Window configuration v.window.SetKeepAbove(true) v.window.SetTitle(client) v.window.SetTypeHint(gdk.WINDOW_TYPE_HINT_MENU) v.window.SetSizeRequest(200, 180) v.window.SetResizable(false) // Build GUI userLabel := gtk.NewLabel(user) v.timeLabel = gtk.NewLabel("") v.timeLabel.SetMarkup("<span size='xx-large'>" + strconv.Itoa(v.minutes) + " min igjen</span>") button := gtk.NewButtonWithLabel("Logg ut") vbox := gtk.NewVBox(false, 20) vbox.SetBorderWidth(5) vbox.Add(userLabel) vbox.Add(v.timeLabel) vbox.Add(button) v.window.Add(vbox) // Connect GUI event signals to function callbacks v.window.Connect("delete-event", func() bool { // Don't allow user to quit by closing the window return true }) button.Connect("clicked", func() { gtk.MainQuit() }) return }
func main() { runtime.GOMAXPROCS(10) glib.ThreadInit(nil) gdk.ThreadsInit() gdk.ThreadsEnter() gtk.Init(nil) window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window.Connect("destroy", gtk.MainQuit) vbox := gtk.NewVBox(false, 1) label1 := gtk.NewLabel("") vbox.Add(label1) label2 := gtk.NewLabel("") vbox.Add(label2) window.Add(vbox) window.SetSizeRequest(100, 100) window.ShowAll() time.Sleep(1000 * 1000 * 100) go (func() { for i := 0; i < 300000; i++ { gdk.ThreadsEnter() label1.SetLabel(strconv.Itoa(i)) gdk.ThreadsLeave() } gtk.MainQuit() })() go (func() { for i := 300000; i >= 0; i-- { gdk.ThreadsEnter() label2.SetLabel(strconv.Itoa(i)) gdk.ThreadsLeave() } gtk.MainQuit() })() gtk.Main() }
func (g *GUI) updateBiomeInfo() { vbox := gtk.NewVBox(false, 0) var grp *glib.SList for _, biome := range g.biomes { biohbox := gtk.NewHBox(false, 0) cbox := colorBox(gdk.NewColor(biome.Color)) cbox.SetSizeRequest(20, 20) biohbox.PackStart(cbox, false, false, 3) rbutton := gtk.NewRadioButtonWithLabel(grp, biome.Name) grp = rbutton.GetGroup() rbutton.Connect("toggled", g.mkUpdateBiomeFx(rbutton, biome.ID)) biohbox.PackEnd(rbutton, true, true, 3) vbox.PackStart(biohbox, false, false, 3) } g.bioVBoxWrap.Remove(g.bioVBox) g.bioVBoxWrap.PackStart(vbox, false, false, 3) vbox.ShowAll() g.bioVBox = vbox g.mapw.updateBioLookup(MkBiomeLookup(g.biomes)) }
func main() { gtk.Init(&os.Args) gdk.ThreadsInit() window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window.SetTitle("Twitter!") window.Connect("destroy", gtk.MainQuit) vbox := gtk.NewVBox(false, 1) scrolledwin := gtk.NewScrolledWindow(nil, nil) textview := gtk.NewTextView() textview.SetEditable(false) textview.SetCursorVisible(false) scrolledwin.Add(textview) vbox.Add(scrolledwin) buffer := textview.GetBuffer() tag := buffer.CreateTag("blue", map[string]string{ "foreground": "#0000FF", "weight": "700"}) button := gtk.NewButtonWithLabel("Update Timeline") button.SetTooltipMarkup("update <b>public timeline</b>") button.Clicked(func() { go func() { gdk.ThreadsEnter() button.SetSensitive(false) gdk.ThreadsLeave() r, err := http.Get("https://api.twitter.com/1/statuses/user_timeline.json?screen_name=go_nuts") if err == nil { var b []byte if r.ContentLength == -1 { b, err = ioutil.ReadAll(r.Body) } else { b = make([]byte, r.ContentLength) _, err = io.ReadFull(r.Body, b) } if err != nil { fmt.Println(err) return } var j interface{} err = json.NewDecoder(bytes.NewBuffer(b)).Decode(&j) if err != nil { fmt.Println(err) return } arr := j.([]interface{}) for i := 0; i < len(arr); i++ { data := arr[i].(map[string]interface{}) icon := data["user"].(map[string]interface{})["profile_image_url"].(string) var iter gtk.TextIter pixbufbytes, resp := readURL(icon) gdk.ThreadsEnter() buffer.GetEndIter(&iter) if resp != nil { buffer.InsertPixbuf(&iter, bytes2pixbuf(pixbufbytes, resp.Header.Get("Content-Type"))) } gdk.ThreadsLeave() name := data["user"].(map[string]interface{})["screen_name"].(string) text := data["text"].(string) gdk.ThreadsEnter() buffer.Insert(&iter, " ") buffer.InsertWithTag(&iter, name, tag) buffer.Insert(&iter, ":"+text+"\n") gtk.MainIterationDo(false) gdk.ThreadsLeave() } } else { fmt.Println(err) } button.SetSensitive(true) }() }) vbox.PackEnd(button, false, false, 0) window.Add(vbox) window.SetSizeRequest(800, 500) window.ShowAll() gdk.ThreadsEnter() gtk.Main() gdk.ThreadsLeave() }
func main() { gtk.Init(&os.Args) gdk.ThreadsInit() window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window.SetTitle("Twitter!") window.Connect("destroy", gtk.MainQuit) vbox := gtk.NewVBox(false, 1) scrolledwin := gtk.NewScrolledWindow(nil, nil) textview := gtk.NewTextView() textview.SetEditable(false) textview.SetCursorVisible(false) scrolledwin.Add(textview) vbox.Add(scrolledwin) buffer := textview.GetBuffer() tag := buffer.CreateTag("blue", map[string]string{ "foreground": "#0000FF", "weight": "700"}) button := gtk.NewButtonWithLabel("Update Timeline") button.SetTooltipMarkup("update <b>public timeline</b>") button.Clicked(func() { b, err := ioutil.ReadFile("settings.json") if err != nil { fmt.Println(`"settings.json" not found: `, err) return } var config map[string]string err = json.Unmarshal(b, &config) if err != nil { fmt.Println(`can't read "settings.json": `, err) return } client := &oauth.Client{ Credentials: oauth.Credentials{ config["ClientToken"], config["ClientSecret"]}} cred := &oauth.Credentials{ config["AccessToken"], config["AccessSecret"]} gdk.ThreadsEnter() button.SetSensitive(false) gdk.ThreadsLeave() go func() { ts, err := twitterstream.Open(client, cred, "https://stream.twitter.com/1/statuses/filter.json", url.Values{"track": {"picplz,instagr"}}) if err != nil { println(err.Error()) return } for ts.Err() == nil { t := tweet{} if err := ts.UnmarshalNext(&t); err != nil { fmt.Println("error reading tweet: ", err) continue } var iter gtk.TextIter pixbufbytes, resp := readURL(t.User.ProfileImageUrl) gdk.ThreadsEnter() buffer.GetStartIter(&iter) if resp != nil { buffer.InsertPixbuf(&iter, bytes2pixbuf(pixbufbytes, resp.Header.Get("Content-Type"))) } gdk.ThreadsLeave() gdk.ThreadsEnter() buffer.Insert(&iter, " ") buffer.InsertWithTag(&iter, t.User.ScreenName, tag) buffer.Insert(&iter, ":"+t.Text+"\n") gtk.MainIterationDo(false) gdk.ThreadsLeave() } }() }) vbox.PackEnd(button, false, false, 0) window.Add(vbox) window.SetSizeRequest(800, 500) window.ShowAll() gdk.ThreadsEnter() gtk.Main() gdk.ThreadsLeave() }
func main() { var menuitem *gtk.MenuItem gtk.Init(nil) window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window.SetPosition(gtk.WIN_POS_CENTER) window.SetTitle("GTK Go!") window.SetIconName("gtk-dialog-info") window.Connect("destroy", func(ctx *glib.CallbackContext) { println("got destroy!", ctx.Data().(string)) gtk.MainQuit() }, "foo") //-------------------------------------------------------- // GtkVBox //-------------------------------------------------------- vbox := gtk.NewVBox(false, 1) //-------------------------------------------------------- // GtkMenuBar //-------------------------------------------------------- menubar := gtk.NewMenuBar() vbox.PackStart(menubar, false, false, 0) //-------------------------------------------------------- // GtkVPaned //-------------------------------------------------------- vpaned := gtk.NewVPaned() vbox.Add(vpaned) //-------------------------------------------------------- // GtkFrame //-------------------------------------------------------- frame1 := gtk.NewFrame("Demo") framebox1 := gtk.NewVBox(false, 1) frame1.Add(framebox1) frame2 := gtk.NewFrame("Demo") framebox2 := gtk.NewVBox(false, 1) frame2.Add(framebox2) vpaned.Pack1(frame1, false, false) vpaned.Pack2(frame2, false, false) //-------------------------------------------------------- // GtkImage //-------------------------------------------------------- dir, _ := path.Split(os.Args[0]) imagefile := path.Join(dir, "../../data/go-gtk-logo.png") label := gtk.NewLabel("Go Binding for GTK") label.ModifyFontEasy("DejaVu Serif 15") framebox1.PackStart(label, false, true, 0) //-------------------------------------------------------- // GtkEntry //-------------------------------------------------------- entry := gtk.NewEntry() entry.SetText("Hello world") framebox1.Add(entry) image := gtk.NewImageFromFile(imagefile) framebox1.Add(image) //-------------------------------------------------------- // GtkScale //-------------------------------------------------------- scale := gtk.NewHScaleWithRange(0, 100, 1) scale.Connect("value-changed", func() { println("scale:", int(scale.GetValue())) }) framebox2.Add(scale) //-------------------------------------------------------- // GtkHBox //-------------------------------------------------------- buttons := gtk.NewHBox(false, 1) //-------------------------------------------------------- // GtkButton //-------------------------------------------------------- button := gtk.NewButtonWithLabel("Button with label") button.Clicked(func() { println("button clicked:", button.GetLabel()) messagedialog := gtk.NewMessageDialog( button.GetTopLevelAsWindow(), gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, entry.GetText()) messagedialog.Response(func() { println("Dialog OK!") //-------------------------------------------------------- // GtkFileChooserDialog //-------------------------------------------------------- filechooserdialog := gtk.NewFileChooserDialog( "Choose File...", button.GetTopLevelAsWindow(), gtk.FILE_CHOOSER_ACTION_OPEN, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT) filter := gtk.NewFileFilter() filter.AddPattern("*.go") filechooserdialog.AddFilter(filter) filechooserdialog.Response(func() { println(filechooserdialog.GetFilename()) filechooserdialog.Destroy() }) filechooserdialog.Run() messagedialog.Destroy() }) messagedialog.Run() }) buttons.Add(button) //-------------------------------------------------------- // GtkFontButton //-------------------------------------------------------- fontbutton := gtk.NewFontButton() fontbutton.Connect("font-set", func() { println("title:", fontbutton.GetTitle()) println("fontname:", fontbutton.GetFontName()) println("use_size:", fontbutton.GetUseSize()) println("show_size:", fontbutton.GetShowSize()) }) buttons.Add(fontbutton) framebox2.PackStart(buttons, false, false, 0) buttons = gtk.NewHBox(false, 1) //-------------------------------------------------------- // GtkToggleButton //-------------------------------------------------------- togglebutton := gtk.NewToggleButtonWithLabel("ToggleButton with label") togglebutton.Connect("toggled", func() { if togglebutton.GetActive() { togglebutton.SetLabel("ToggleButton ON!") } else { togglebutton.SetLabel("ToggleButton OFF!") } }) buttons.Add(togglebutton) //-------------------------------------------------------- // GtkCheckButton //-------------------------------------------------------- checkbutton := gtk.NewCheckButtonWithLabel("CheckButton with label") checkbutton.Connect("toggled", func() { if checkbutton.GetActive() { checkbutton.SetLabel("CheckButton CHECKED!") } else { checkbutton.SetLabel("CheckButton UNCHECKED!") } }) buttons.Add(checkbutton) //-------------------------------------------------------- // GtkRadioButton //-------------------------------------------------------- buttonbox := gtk.NewVBox(false, 1) radiofirst := gtk.NewRadioButtonWithLabel(nil, "Radio1") buttonbox.Add(radiofirst) buttonbox.Add(gtk.NewRadioButtonWithLabel(radiofirst.GetGroup(), "Radio2")) buttonbox.Add(gtk.NewRadioButtonWithLabel(radiofirst.GetGroup(), "Radio3")) buttons.Add(buttonbox) //radiobutton.SetMode(false); radiofirst.SetActive(true) framebox2.PackStart(buttons, false, false, 0) //-------------------------------------------------------- // GtkVSeparator //-------------------------------------------------------- vsep := gtk.NewVSeparator() framebox2.PackStart(vsep, false, false, 0) //-------------------------------------------------------- // GtkComboBoxEntry //-------------------------------------------------------- combos := gtk.NewHBox(false, 1) comboboxentry := gtk.NewComboBoxEntryNewText() comboboxentry.AppendText("Monkey") comboboxentry.AppendText("Tiger") comboboxentry.AppendText("Elephant") comboboxentry.Connect("changed", func() { println("value:", comboboxentry.GetActiveText()) }) combos.Add(comboboxentry) //-------------------------------------------------------- // GtkComboBox //-------------------------------------------------------- combobox := gtk.NewComboBoxNewText() combobox.AppendText("Peach") combobox.AppendText("Banana") combobox.AppendText("Apple") combobox.SetActive(1) combobox.Connect("changed", func() { println("value:", combobox.GetActiveText()) }) combos.Add(combobox) framebox2.PackStart(combos, false, false, 0) //-------------------------------------------------------- // GtkTextView //-------------------------------------------------------- swin := gtk.NewScrolledWindow(nil, nil) swin.SetPolicy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) swin.SetShadowType(gtk.SHADOW_IN) textview := gtk.NewTextView() var start, end gtk.TextIter buffer := textview.GetBuffer() buffer.GetStartIter(&start) buffer.Insert(&start, "Hello ") buffer.GetEndIter(&end) buffer.Insert(&end, "World!") tag := buffer.CreateTag("bold", map[string]string{ "background": "#FF0000", "weight": "700"}) buffer.GetStartIter(&start) buffer.GetEndIter(&end) buffer.ApplyTag(tag, &start, &end) swin.Add(textview) framebox2.Add(swin) buffer.Connect("changed", func() { println("changed") }) //-------------------------------------------------------- // GtkMenuItem //-------------------------------------------------------- cascademenu := gtk.NewMenuItemWithMnemonic("_File") menubar.Append(cascademenu) submenu := gtk.NewMenu() cascademenu.SetSubmenu(submenu) menuitem = gtk.NewMenuItemWithMnemonic("E_xit") menuitem.Connect("activate", func() { gtk.MainQuit() }) submenu.Append(menuitem) cascademenu = gtk.NewMenuItemWithMnemonic("_View") menubar.Append(cascademenu) submenu = gtk.NewMenu() cascademenu.SetSubmenu(submenu) checkmenuitem := gtk.NewCheckMenuItemWithMnemonic("_Disable") checkmenuitem.Connect("activate", func() { vpaned.SetSensitive(!checkmenuitem.GetActive()) }) submenu.Append(checkmenuitem) menuitem = gtk.NewMenuItemWithMnemonic("_Font") menuitem.Connect("activate", func() { fsd := gtk.NewFontSelectionDialog("Font") fsd.SetFontName(fontbutton.GetFontName()) fsd.Response(func() { println(fsd.GetFontName()) fontbutton.SetFontName(fsd.GetFontName()) fsd.Destroy() }) fsd.SetTransientFor(window) fsd.Run() }) submenu.Append(menuitem) cascademenu = gtk.NewMenuItemWithMnemonic("_Help") menubar.Append(cascademenu) submenu = gtk.NewMenu() cascademenu.SetSubmenu(submenu) menuitem = gtk.NewMenuItemWithMnemonic("_About") menuitem.Connect("activate", func() { dialog := gtk.NewAboutDialog() dialog.SetName("Go-Gtk Demo!") dialog.SetProgramName("demo") dialog.SetAuthors(authors()) dir, _ := path.Split(os.Args[0]) imagefile := path.Join(dir, "../../data/mattn-logo.png") pixbuf, _ := gdkpixbuf.NewFromFile(imagefile) dialog.SetLogo(pixbuf) dialog.SetLicense("The library is available under the same terms and conditions as the Go, the BSD style license, and the LGPL (Lesser GNU Public License). The idea is that if you can use Go (and Gtk) in a project, you should also be able to use go-gtk.") dialog.SetWrapLicense(true) dialog.Run() dialog.Destroy() }) submenu.Append(menuitem) //-------------------------------------------------------- // GtkStatusbar //-------------------------------------------------------- statusbar := gtk.NewStatusbar() context_id := statusbar.GetContextId("go-gtk") statusbar.Push(context_id, "GTK binding for Go!") framebox2.PackStart(statusbar, false, false, 0) //-------------------------------------------------------- // Event //-------------------------------------------------------- window.Add(vbox) window.SetSizeRequest(600, 600) window.ShowAll() gtk.Main() }