func find_entry_with_history() *gtk.GtkComboBoxEntry { entry := gtk.ComboBoxEntryNewText() entry.SetVisible(true) selection := source_selection() if ("" != selection) && (len(selection) <= MAX_SEL_LEN) { entry.AppendText(selection) } for i := len(search_history) - 1; i >= 0; i-- { entry.AppendText(search_history[i]) } entry.SetActive(0) return entry }
func main() { var menuitem *gtk.GtkMenuItem gtk.Init(nil) window := gtk.Window(gtk.GTK_WINDOW_TOPLEVEL) window.SetPosition(gtk.GTK_WIN_POS_CENTER) window.SetTitle("GTK Go!") window.Connect("destroy", func(ctx *glib.CallbackContext) { println("got destroy!", ctx.Data().(string)) gtk.MainQuit() }, "foo") //-------------------------------------------------------- // GtkVBox //-------------------------------------------------------- vbox := gtk.VBox(false, 1) //-------------------------------------------------------- // GtkMenuBar //-------------------------------------------------------- menubar := gtk.MenuBar() vbox.PackStart(menubar, false, false, 0) //-------------------------------------------------------- // GtkVPaned //-------------------------------------------------------- vpaned := gtk.VPaned() vbox.Add(vpaned) //-------------------------------------------------------- // GtkFrame //-------------------------------------------------------- frame1 := gtk.Frame("Demo") framebox1 := gtk.VBox(false, 1) frame1.Add(framebox1) frame2 := gtk.Frame("Demo") framebox2 := gtk.VBox(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.Label("Go Binding for GTK") label.ModifyFontEasy("DejaVu Serif 15") framebox1.PackStart(label, false, true, 0) //-------------------------------------------------------- // GtkEntry //-------------------------------------------------------- entry := gtk.Entry() entry.SetText("Hello world") framebox1.Add(entry) image := gtk.ImageFromFile(imagefile) framebox1.Add(image) //-------------------------------------------------------- // GtkScale //-------------------------------------------------------- scale := gtk.HScaleWithRange(0, 100, 1) scale.Connect("value-changed", func() { println("scale:", int(scale.GetValue())) }) framebox2.Add(scale) //-------------------------------------------------------- // GtkHBox //-------------------------------------------------------- buttons := gtk.HBox(false, 1) //-------------------------------------------------------- // GtkButton //-------------------------------------------------------- button := gtk.ButtonWithLabel("Button with label") button.Clicked(func() { println("button clicked:", button.GetLabel()) messagedialog := gtk.MessageDialog( button.GetTopLevelAsWindow(), gtk.GTK_DIALOG_MODAL, gtk.GTK_MESSAGE_INFO, gtk.GTK_BUTTONS_OK, entry.GetText()) messagedialog.Response(func() { println("Dialog OK!") //-------------------------------------------------------- // GtkFileChooserDialog //-------------------------------------------------------- filechooserdialog := gtk.FileChooserDialog( "Choose File...", button.GetTopLevelAsWindow(), gtk.GTK_FILE_CHOOSER_ACTION_OPEN, gtk.GTK_STOCK_OK, int(gtk.GTK_RESPONSE_ACCEPT)) filter := gtk.FileFilter() 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.FontButton() 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.HBox(false, 1) //-------------------------------------------------------- // GtkToggleButton //-------------------------------------------------------- togglebutton := gtk.ToggleButtonWithLabel("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.CheckButtonWithLabel("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.VBox(false, 1) radiofirst := gtk.RadioButtonWithLabel(nil, "Radio1") buttonbox.Add(radiofirst) buttonbox.Add(gtk.RadioButtonWithLabel(radiofirst.GetGroup(), "Radio2")) buttonbox.Add(gtk.RadioButtonWithLabel(radiofirst.GetGroup(), "Radio3")) buttons.Add(buttonbox) //radiobutton.SetMode(false); radiofirst.SetActive(true) framebox2.PackStart(buttons, false, false, 0) //-------------------------------------------------------- // GtkVSeparator //-------------------------------------------------------- vsep := gtk.VSeparator() framebox2.PackStart(vsep, false, false, 0) //-------------------------------------------------------- // GtkComboBoxEntry //-------------------------------------------------------- combos := gtk.HBox(false, 1) comboboxentry := gtk.ComboBoxEntryNewText() comboboxentry.AppendText("Monkey") comboboxentry.AppendText("Tiger") comboboxentry.AppendText("Elephant") comboboxentry.Connect("changed", func() { println("value:", comboboxentry.GetActiveText()) }) combos.Add(comboboxentry) //-------------------------------------------------------- // GtkComboBox //-------------------------------------------------------- combobox := gtk.ComboBoxNewText() 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.ScrolledWindow(nil, nil) swin.SetPolicy(gtk.GTK_POLICY_AUTOMATIC, gtk.GTK_POLICY_AUTOMATIC) swin.SetShadowType(gtk.GTK_SHADOW_IN) textview := gtk.TextView() var start, end gtk.GtkTextIter 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.MenuItemWithMnemonic("_File") menubar.Append(cascademenu) submenu := gtk.Menu() cascademenu.SetSubmenu(submenu) menuitem = gtk.MenuItemWithMnemonic("E_xit") menuitem.Connect("activate", func() { gtk.MainQuit() }) submenu.Append(menuitem) cascademenu = gtk.MenuItemWithMnemonic("_View") menubar.Append(cascademenu) submenu = gtk.Menu() cascademenu.SetSubmenu(submenu) checkmenuitem := gtk.CheckMenuItemWithMnemonic("_Disable") checkmenuitem.Connect("activate", func() { vpaned.SetSensitive(!checkmenuitem.GetActive()) }) submenu.Append(checkmenuitem) menuitem = gtk.MenuItemWithMnemonic("_Font") menuitem.Connect("activate", func() { fsd := gtk.FontSelectionDialog("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.MenuItemWithMnemonic("_Help") menubar.Append(cascademenu) submenu = gtk.Menu() cascademenu.SetSubmenu(submenu) menuitem = gtk.MenuItemWithMnemonic("_About") menuitem.Connect("activate", func() { dialog := gtk.AboutDialog() dialog.SetName("Go-Gtk Demo!") dialog.SetProgramName("demo") dialog.SetAuthors([]string{ "Yasuhiro Matsumoto <*****@*****.**>", "David Roundy <*****@*****.**>", "Mark Andrew Gerads", "Tobias Kortkamp", "Mikhail Trushnikov", "Federico Sogaro <*****@*****.**>"}) dir, _ := path.Split(os.Args[0]) imagefile := path.Join(dir, "../../data/mattn-logo.png") pixbuf, _ := gdkpixbuf.PixbufFromFile(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.Statusbar() 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() }
func main() { var prueba int var Actual Juego Actual.Init() var heuristica int heuristica = 1 var r1 [4]int var r2 [8]int Actual.fila1 = Actual.fila1Objetivo Actual.fila2 = Actual.fila2Objetivo r1 = Actual.fila1Objetivo r2 = Actual.fila2Objetivo //fmt.Println(r1,r2) prueba = 100 //var menuitem *gtk.GtkMenuItem gtk.Init(nil) window := gtk.Window(gtk.GTK_WINDOW_TOPLEVEL) window.SetPosition(gtk.GTK_WIN_POS_CENTER) window.SetTitle(" A star") window.Connect("destroy", func(ctx *glib.CallbackContext) { println("got destory!\n", ctx.Data().(string)) gtk.MainQuit() }, "foo") vbox := gtk.HBox(false, 14) //menubar:=gtk.MenuBar() //vbox.PackStart(menubar,false,false,0) vpaned := gtk.VPaned() vbox.Add(vpaned) frame := gtk.Frame("Profundiad") framebox := gtk.HBox(false, 14) framebox1 := gtk.VBox(true, 0) frame1 := gtk.Frame("Rompecabezas ") frame.Add(framebox) frame1.Add(framebox1) drawingarea := gtk.DrawingArea() vpaned.Add(frame) vpaned.Add(frame1) button := gtk.ButtonWithLabel("Resolver") button2 := gtk.ButtonWithLabel("Desordenar") button3 := gtk.ButtonWithLabel(" Nivel de Desorden") //TxtPasos:=gtk.Entry() frameHu := gtk.VBox(true, 2) lheuristica := gtk.Label("Heuristica") comboBox := gtk.ComboBoxEntryNewText() comboBox.AppendText("Piezas Desordenadas") comboBox.AppendText("Distancia entre Piezas") comboBox.Connect("changed", func() { if strings.EqualFold(comboBox.GetActiveText(), "Piezas Desordenadas") { heuristica = 2 } else { heuristica = 1 } }) frameHu.Add(lheuristica) frameHu.Add(comboBox) entry := gtk.Entry() framebox.Add(entry) framebox.Add(button) framebox.Add(frameHu) framebox.Add(button2) framebox.Add(button3) //framebox1.Add(TxtPasos) //var gdkwin *gdk.GdkWindow var pixmap *gdk.GdkPixmap var gc *gdk.GdkGC drawingarea.Connect("configure-event", func() { if pixmap != nil { pixmap.Unref() } var allocation gtk.GtkAllocation drawingarea.GetAllocation(&allocation) pixmap = gdk.Pixmap(drawingarea.GetWindow().GetDrawable(), allocation.Width, allocation.Height, 24) gc = gdk.GC(pixmap.GetDrawable()) gc.SetRgbFgColor(gdk.Color("white")) pixmap.GetDrawable().DrawRectangle(gc, true, 0, 0, -1, -1) gc.SetRgbFgColor(gdk.Color("blue")) gc.SetRgbBgColor(gdk.Color("white")) pixmap.GetDrawable().DrawArc(gc, false, 100, 100, 200, 200, 0, 30000) pixmap.GetDrawable().DrawArc(gc, false, 150, 150, 100, 100, 0, 30000) pixmap.GetDrawable().DrawLine(gc, 200, 100, 200, 300) pixmap.GetDrawable().DrawLine(gc, 100, 200, 300, 200) pixmap.GetDrawable().DrawLine(gc, 130, 130, 165, 165) pixmap.GetDrawable().DrawLine(gc, 235, 235, 270, 270) pixmap.GetDrawable().DrawLine(gc, 271, 129, 235, 165) pixmap.GetDrawable().DrawLine(gc, 165, 235, 129, 271) pixmap.GetDrawable().DrawString(gdk.FontsetLoad("-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1"), gc, 200, 200, strconv.Itoa(prueba)) pixmap.GetDrawable().DrawString(gdk.FontsetLoad("-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1"), gc, 100, 200, strconv.Itoa(prueba)) pixmap.GetDrawable().DrawString(gdk.FontsetLoad("-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1"), gc, 100, 300, strconv.Itoa(prueba)) pixmap.GetDrawable().DrawString(gdk.FontsetLoad("-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1"), gc, 200, 300, strconv.Itoa(prueba)) }) drawingarea.Connect("expose-event", func() { if pixmap != nil { drawingarea.GetWindow().GetDrawable().DrawDrawable(gc, pixmap.GetDrawable(), 0, 0, 0, 0, -1, -1) gc.SetRgbFgColor(gdk.Color("white")) pixmap.GetDrawable().DrawRectangle(gc, true, 0, 0, -1, -1) gc.SetRgbFgColor(gdk.Color("blue")) gc.SetRgbBgColor(gdk.Color("white")) pixmap.GetDrawable().DrawArc(gc, false, 100, 100, 200, 200, 0, 30000) pixmap.GetDrawable().DrawArc(gc, false, 150, 150, 100, 100, 0, 30000) pixmap.GetDrawable().DrawLine(gc, 200, 100, 200, 300) pixmap.GetDrawable().DrawLine(gc, 100, 200, 300, 200) pixmap.GetDrawable().DrawLine(gc, 130, 130, 165, 165) pixmap.GetDrawable().DrawLine(gc, 235, 235, 270, 270) pixmap.GetDrawable().DrawLine(gc, 271, 129, 235, 165) pixmap.GetDrawable().DrawLine(gc, 165, 235, 129, 271) pixmap.GetDrawable().DrawString(gdk.FontsetLoad("-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1"), gc, 210, 190, strconv.Itoa(r1[0])) pixmap.GetDrawable().DrawString(gdk.FontsetLoad("-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1"), gc, 210, 140, strconv.Itoa(r2[0])) pixmap.GetDrawable().DrawString(gdk.FontsetLoad("-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1"), gc, 260, 190, strconv.Itoa(r2[1])) pixmap.GetDrawable().DrawString(gdk.FontsetLoad("-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1"), gc, 210, 230, strconv.Itoa(r1[1])) pixmap.GetDrawable().DrawString(gdk.FontsetLoad("-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1"), gc, 260, 230, strconv.Itoa(r2[2])) pixmap.GetDrawable().DrawString(gdk.FontsetLoad("-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1"), gc, 210, 280, strconv.Itoa(r2[3])) pixmap.GetDrawable().DrawString(gdk.FontsetLoad("-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1"), gc, 170, 230, strconv.Itoa(r1[2])) pixmap.GetDrawable().DrawString(gdk.FontsetLoad("-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1"), gc, 170, 280, strconv.Itoa(r2[4])) pixmap.GetDrawable().DrawString(gdk.FontsetLoad("-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1"), gc, 120, 230, strconv.Itoa(r2[5])) pixmap.GetDrawable().DrawString(gdk.FontsetLoad("-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1"), gc, 170, 190, strconv.Itoa(r1[3])) pixmap.GetDrawable().DrawString(gdk.FontsetLoad("-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1"), gc, 120, 190, strconv.Itoa(r2[6])) pixmap.GetDrawable().DrawString(gdk.FontsetLoad("-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1"), gc, 170, 140, strconv.Itoa(r2[7])) drawingarea.GetWindow().Invalidate(nil, false) } }) button.Clicked(func() { //prueba=prueba+1 vdeep := entry.GetText() fo, err := os.Create("Pasos") if err != nil { panic(err) } defer fo.Close() Actual.tipoHeuristica = heuristica Actual.HeuristicaJuego() deep, err := strconv.Atoi(vdeep) if err == nil { fmt.Println("", deep) b, camino := AStar(Actual, deep) if b { for i := 0; i < len(camino); i++ { r1 = camino[i].fila1 r2 = camino[i].fila2 var Valores string Valores = "[" for j := 0; j < len(r1); j++ { Valores = Valores + " " + strconv.Itoa(r1[j]) } Valores = Valores + "][" for j := 0; j < len(r2); j++ { Valores = Valores + " " + strconv.Itoa(r2[j]) } Valores = Valores + "] " + strconv.Itoa(camino[i].heuristica) + "\n" if _, err := fo.WriteString(Valores); err != nil { panic(err) } } } else { fmt.Println("No encontro la solución") } } }) button2.Clicked(func() { Actual.Init() Actual.tipoHeuristica = heuristica Actual.HeuristicaJuego() r1 = Actual.fila1 r2 = Actual.fila2 //prueba=prueba+1 //fmt.Println("->",prueba) }) button3.Clicked(func() { Actual.fila1 = r1 Actual.fila2 = r2 Actual.Init2() Actual.tipoHeuristica = heuristica Actual.HeuristicaJuego() r1 = Actual.fila1 r2 = Actual.fila2 }) drawingarea.SetEvents(int(gdk.GDK_POINTER_MOTION_MASK | gdk.GDK_POINTER_MOTION_HINT_MASK | gdk.GDK_BUTTON_PRESS_MASK)) framebox1.Add(drawingarea) window.Add(vbox) window.SetSizeRequest(600, 600) window.ShowAll() gtk.Main() }