本文整理汇总了Golang中github.com/runningwild/glop/gui.WidgetParent类的典型用法代码示例。如果您正苦于以下问题:Golang WidgetParent类的具体用法?Golang WidgetParent怎么用?Golang WidgetParent使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了WidgetParent类的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: InsertVersusMenu
func InsertVersusMenu(ui gui.WidgetParent, replace func(gui.WidgetParent) error) error {
// return doChooserMenu(ui, makeChooseVersusMetaMenu, replace, inserter(insertGoalMenu))
chooser, done, err := makeChooseVersusMetaMenu()
if err != nil {
return err
}
ui.AddChild(chooser)
go func() {
m := <-done
ui.RemoveChild(chooser)
if m != nil && len(m) == 1 {
base.Log().Printf("Chose: %v", m)
switch m[0] {
case "Select House":
ui.AddChild(MakeGamePanel("versus/basic.lua", nil, map[string]string{"map": "select"}, ""))
case "Random House":
ui.AddChild(MakeGamePanel("versus/basic.lua", nil, map[string]string{"map": "random"}, ""))
case "Continue":
ui.AddChild(MakeGamePanel("versus/basic.lua", nil, map[string]string{"map": "continue"}, ""))
default:
base.Error().Printf("Unknown meta choice '%s'", m[0])
return
}
} else {
err := replace(ui)
if err != nil {
base.Error().Printf("Error replacing menu: %v", err)
}
}
}()
return nil
}
示例2: InsertCreditsMenu
func InsertCreditsMenu(ui gui.WidgetParent) error {
var cm CreditsMenu
datadir := base.GetDataDir()
err := base.LoadAndProcessObject(filepath.Join(datadir, "ui", "start", "credits", "layout.json"), "json", &cm.layout)
if err != nil {
return err
}
cm.buttons = []ButtonLike{
&cm.layout.Back,
&cm.layout.Up,
&cm.layout.Down,
}
cm.layout.Back.f = func(interface{}) {
ui.RemoveChild(&cm)
InsertStartMenu(ui)
}
d := base.GetDictionary(cm.layout.Credits.Size)
cm.layout.Credits.Scroll.Height = len(cm.layout.Credits.Lines) * int(d.MaxHeight())
cm.layout.Down.valid_func = func() bool {
return cm.layout.Credits.Scroll.Height > cm.layout.Credits.Scroll.Dy
}
cm.layout.Up.valid_func = cm.layout.Down.valid_func
cm.layout.Down.f = func(interface{}) {
cm.layout.Credits.Scroll.Down()
}
cm.layout.Up.f = func(interface{}) {
cm.layout.Credits.Scroll.Up()
}
cm.ui = ui
ui.AddChild(&cm)
return nil
}
示例3: InsertStartMenu
func InsertStartMenu(ui gui.WidgetParent) error {
var sm StartMenu
datadir := base.GetDataDir()
err := base.LoadAndProcessObject(filepath.Join(datadir, "ui", "start", "layout.json"), "json", &sm.layout)
if err != nil {
return err
}
sm.buttons = []ButtonLike{
&sm.layout.Menu.Continue,
&sm.layout.Menu.Versus,
&sm.layout.Menu.Online,
&sm.layout.Menu.Settings,
}
sm.layout.Menu.Continue.f = func(interface{}) {}
sm.layout.Menu.Versus.f = func(interface{}) {
ui.RemoveChild(&sm)
ui.AddChild(MakeGamePanel("versus/basic.lua", nil, nil))
}
sm.layout.Menu.Settings.f = func(interface{}) {}
sm.layout.Menu.Online.f = func(interface{}) {
ui.RemoveChild(&sm)
err := InsertOnlineMenu(ui)
if err != nil {
base.Error().Printf("Unable to make Online Menu: %v", err)
return
}
}
ui.AddChild(&sm)
return nil
}
示例4: insertGoalMenu
func insertGoalMenu(ui gui.WidgetParent, replace replacer) error {
chooser, done, err := makeChooseGoalMenu()
if err != nil {
return err
}
ui.AddChild(chooser)
go func() {
m := <-done
ui.RemoveChild(chooser)
if m != nil {
base.Log().Printf("Chose: %v", m)
err = insertGoalMenu(ui, replace)
if err != nil {
base.Error().Printf("Error making goal menu: %v", err)
}
} else {
err := replace(ui)
if err != nil {
base.Error().Printf("Error replacing menu: %v", err)
}
}
}()
return nil
}
示例5: doChooserMenu
func doChooserMenu(ui gui.WidgetParent, cm chooserMaker, r replacer, i inserter) error {
chooser, done, err := cm()
if err != nil {
return err
}
ui.AddChild(chooser)
go func() {
m := <-done
ui.RemoveChild(chooser)
if m != nil {
base.Log().Printf("Chose: %v", m)
err = i(ui, r)
if err != nil {
base.Error().Printf("Error making menu: %v", err)
}
} else {
err := r(ui)
if err != nil {
base.Error().Printf("Error replacing menu: %v", err)
}
}
}()
return nil
}
示例6: InsertOnlineMenu
func InsertOnlineMenu(ui gui.WidgetParent) error {
var sm OnlineMenu
datadir := base.GetDataDir()
err := base.LoadAndProcessObject(filepath.Join(datadir, "ui", "start", "online", "layout.json"), "json", &sm.layout)
if err != nil {
return err
}
sm.buttons = []ButtonLike{
&sm.layout.Back,
&sm.layout.Unstarted.Up,
&sm.layout.Unstarted.Down,
&sm.layout.Active.Up,
&sm.layout.Active.Down,
&sm.layout.User,
&sm.layout.NewGame,
}
sm.control.in = make(chan struct{})
sm.control.out = make(chan struct{})
sm.layout.Back.f = func(interface{}) {
ui.RemoveChild(&sm)
InsertStartMenu(ui)
}
sm.ui = ui
var net_id mrgnet.NetId
fmt.Sscanf(base.GetStoreVal("netid"), "%d", &net_id)
if net_id == 0 {
net_id = mrgnet.NetId(mrgnet.RandomId())
base.SetStoreVal("netid", fmt.Sprintf("%d", net_id))
}
in_newgame := false
sm.layout.NewGame.f = func(interface{}) {
if in_newgame {
return
}
in_newgame = true
go func() {
var req mrgnet.NewGameRequest
req.Id = net_id
var resp mrgnet.NewGameResponse
done := make(chan bool, 1)
go func() {
mrgnet.DoAction("new", req, &resp)
done <- true
}()
select {
case <-done:
case <-time.After(10 * time.Second):
resp.Err = "Couldn't connect to server."
}
<-sm.control.in
defer func() {
in_newgame = false
sm.control.out <- struct{}{}
}()
if resp.Err != "" {
sm.layout.Error.err = resp.Err
base.Error().Printf("Couldn't make new game: %v", resp.Err)
return
}
ui.RemoveChild(&sm)
err := InsertMapChooser(
ui,
func(name string) {
ui.AddChild(MakeGamePanel(name, nil, nil, resp.Game_key))
},
InsertOnlineMenu,
)
if err != nil {
base.Error().Printf("Error making Map Chooser: %v", err)
}
}()
}
for _, _glb := range []*gameListBox{&sm.layout.Active, &sm.layout.Unstarted} {
glb := _glb
glb.Up.f = func(interface{}) {
glb.Scroll.Up()
}
glb.Down.f = func(interface{}) {
glb.Scroll.Down()
}
glb.update = make(chan mrgnet.ListGamesResponse)
}
go func() {
var resp mrgnet.ListGamesResponse
mrgnet.DoAction("list", mrgnet.ListGamesRequest{Id: net_id, Unstarted: true}, &resp)
sm.layout.Unstarted.update <- resp
}()
go func() {
var resp mrgnet.ListGamesResponse
mrgnet.DoAction("list", mrgnet.ListGamesRequest{Id: net_id, Unstarted: false}, &resp)
sm.layout.Active.update <- resp
}()
sm.layout.User.Button.f = func(interface{}) {
var req mrgnet.UpdateUserRequest
req.Name = sm.layout.User.Entry.text
//.........这里部分代码省略.........
示例7: InsertMapChooser
func InsertMapChooser(ui gui.WidgetParent, chosen func(string), resert func(ui gui.WidgetParent) error) error {
var bops []OptionBasic
datadir := base.GetDataDir()
err := base.LoadAndProcessObject(filepath.Join(datadir, "ui", "start", "versus", "map_select.json"), "json", &bops)
if err != nil {
base.Error().Printf("Unable to insert MapChooser: %v", err)
return err
}
var opts []Option
algorithm.Map2(bops, &opts, func(ob OptionBasic) Option { return &ob })
for _, opt := range opts {
base.Log().Printf(opt.String())
}
var ch Chooser
err = base.LoadAndProcessObject(filepath.Join(datadir, "ui", "chooser", "layout.json"), "json", &ch.layout)
if err != nil {
base.Error().Printf("Unable to insert MapChooser: %v", err)
return err
}
ch.options = opts
ch.buttons = []*Button{
&ch.layout.Up,
&ch.layout.Down,
&ch.layout.Back,
&ch.layout.Next,
}
ch.non_scroll_buttons = []*Button{
&ch.layout.Back,
&ch.layout.Next,
}
ch.layout.Up.f = func(interface{}) {
ch.layout.Options.Up()
}
ch.layout.Down.f = func(interface{}) {
ch.layout.Options.Down()
}
ch.selected = make(map[int]bool)
ch.layout.Back.f = func(interface{}) {
ui.RemoveChild(&ch)
err := resert(ui)
if err != nil {
base.Error().Printf("Unable to make Start Menu: %v", err)
return
}
}
ch.layout.Next.f = func(interface{}) {
for i := range ch.options {
if ch.selected[i] {
ui.RemoveChild(&ch)
chosen(ch.options[i].String())
}
}
}
ch.layout.Next.valid_func = func() bool {
return ch.selector(-1, ch.selected, false)
}
ch.min, ch.max = 1, 1
if ch.min == 1 && ch.max == 1 {
ch.selector = SelectExactlyOne
} else {
ch.selector = SelectInRange(ch.min, ch.max)
}
ch.info_region = gui.Region{
gui.Point{ch.layout.Info.X, ch.layout.Info.Y},
gui.Dims{ch.layout.Info.Dx, ch.layout.Info.Dy},
}
ui.AddChild(&ch)
return nil
}
示例8: InsertOnlineMenu
func InsertOnlineMenu(ui gui.WidgetParent) error {
var sm OnlineMenu
datadir := base.GetDataDir()
err := base.LoadAndProcessObject(filepath.Join(datadir, "ui", "start", "online", "layout.json"), "json", &sm.layout)
if err != nil {
return err
}
sm.buttons = []ButtonLike{
&sm.layout.Back,
&sm.layout.Unstarted.Up,
&sm.layout.Unstarted.Down,
&sm.layout.Active.Up,
&sm.layout.Active.Down,
&sm.layout.User,
}
sm.layout.Back.f = func(interface{}) {
ui.RemoveChild(&sm)
InsertStartMenu(ui)
}
var net_id mrgnet.NetId
fmt.Sscanf(base.GetStoreVal("netid"), "%d", &net_id)
if net_id == 0 {
net_id = mrgnet.NetId(mrgnet.RandomId())
base.SetStoreVal("netid", fmt.Sprintf("%d", net_id))
}
for _, _glb := range []*gameListBox{&sm.layout.Active, &sm.layout.Unstarted} {
glb := _glb
glb.Up.f = func(interface{}) {
glb.Scroll.Up()
}
glb.Down.f = func(interface{}) {
glb.Scroll.Down()
}
glb.update = make(chan mrgnet.ListGamesResponse)
}
go func() {
var resp mrgnet.ListGamesResponse
mrgnet.DoAction("list", mrgnet.ListGamesRequest{Id: net_id, Unstarted: true}, &resp)
sm.layout.Unstarted.update <- resp
}()
go func() {
var resp mrgnet.ListGamesResponse
mrgnet.DoAction("list", mrgnet.ListGamesRequest{Id: net_id, Unstarted: false}, &resp)
sm.layout.Active.update <- resp
}()
sm.update_user = make(chan mrgnet.UpdateUserResponse)
sm.layout.User.Button.f = func(interface{}) {
var req mrgnet.UpdateUserRequest
req.Name = sm.layout.User.Entry.text
req.Id = net_id
var resp mrgnet.UpdateUserResponse
go func() {
mrgnet.DoAction("user", req, &resp)
sm.update_user <- resp
}()
}
go func() {
var resp mrgnet.UpdateUserResponse
mrgnet.DoAction("user", mrgnet.UpdateUserRequest{Id: net_id}, &resp)
sm.update_user <- resp
}()
ui.AddChild(&sm)
return nil
}