func (lb ListBox) Create(parent walk.Container) error { w, err := walk.NewListBox(parent) if err != nil { return err } return InitWidget(lb, w, func() error { w.SetFormat(lb.Format) w.SetPrecision(lb.Precision) if err := w.SetModel(lb.Model); err != nil { return err } if lb.OnCurrentIndexChanged != nil { w.CurrentIndexChanged().Attach(lb.OnCurrentIndexChanged) } if lb.OnItemActivated != nil { w.DblClicked().Attach(lb.OnItemActivated) } if lb.AssignTo != nil { *lb.AssignTo = w } return nil }) }
func (lb ListBox) Create(builder *Builder) error { w, err := walk.NewListBox(builder.Parent()) if err != nil { return err } return builder.InitWidget(lb, w, func() error { w.SetFormat(lb.Format) w.SetPrecision(lb.Precision) w.SetDataMember(lb.DataMember) if err := w.SetModel(lb.Model); err != nil { return err } if lb.OnCurrentIndexChanged != nil { w.CurrentIndexChanged().Attach(lb.OnCurrentIndexChanged) } if lb.OnItemActivated != nil { w.DblClicked().Attach(lb.OnItemActivated) } if lb.AssignTo != nil { *lb.AssignTo = w } return nil }) }
func main() { walk.Initialize(walk.InitParams{PanicOnError: true}) defer walk.Shutdown() myWindow, _ := walk.NewMainWindow() myWindow.SetLayout(walk.NewVBoxLayout()) myWindow.SetTitle("Listbox example") splitter, _ := walk.NewSplitter(myWindow) splitter.SetOrientation(walk.Vertical) lb, _ := walk.NewListBox(splitter) valueEdit, _ := walk.NewTextEdit(splitter) valueEdit.SetReadOnly(true) //env model em := NewEnvModel() for _, env := range os.Environ() { i := strings.Index(env, "=") if i == 0 { continue } varName := env[0:i] value := env[i+1:] envItem := EnvItem{varName, value} em.envItems = append(em.envItems, envItem) } fmt.Println("The len of Model", em.ItemCount()) lb.SetModel(em) lb.CurrentIndexChanged().Attach(func() { if curVar, ok := em.Value(lb.CurrentIndex()).(string); ok { value := em.envItems[lb.CurrentIndex()].value value = strings.Replace(value, ";", "\r\n", -1) valueEdit.SetText(value) fmt.Println("CurrentIndex:", lb.CurrentIndex()) fmt.Println("CurrentEnvVarName:", curVar) } }) lb.DblClicked().Attach(func() { value := em.envItems[lb.CurrentIndex()].value value = strings.Replace(value, ";", "\r\n", -1) valueEdit.SetText(value) walk.MsgBox(myWindow, "About", value, walk.MsgBoxOK|walk.MsgBoxIconInformation) }) myWindow.Show() myWindow.SetMinMaxSize(walk.Size{320, 240}, walk.Size{}) myWindow.SetSize(walk.Size{400, 500}) myWindow.Run() }
func main() { walk.Initialize(walk.InitParams{PanicOnError: true}) defer walk.Shutdown() myWindow, _ := walk.NewMainWindow() myWindow.SetLayout(walk.NewVBoxLayout()) myWindow.SetTitle("Go GUI example") myButton1, _ := walk.NewPushButton(myWindow) myButton1.SetText("XXXX") lb, _ := walk.NewListBox(myWindow) em := NewEnvModel() for _, env := range os.Environ() { i := strings.Index(env, "=") if i == 0 { continue } varName := env[0:i] value := env[i+1:] envItem := EnvItem{varName, value} em.envItems = append(em.envItems, envItem) } fmt.Println("The len of Model", em.ItemCount()) lb.SetModel(em) lb.CurrentIndexChanged().Attach(func() { if curVar, ok := em.Value(lb.CurrentIndex()).(string); ok { myButton1.SetText(curVar) fmt.Println("CurrentIndex:", lb.CurrentIndex()) fmt.Println("CurrentEnvVarName:", curVar) } }) lb.DblClicked().Attach(func() { value := em.envItems[lb.CurrentIndex()].value walk.MsgBox(myWindow, "About", value, walk.MsgBoxOK|walk.MsgBoxIconInformation) }) myWindow.Show() myWindow.SetMinMaxSize(walk.Size{320, 240}, walk.Size{}) myWindow.SetSize(walk.Size{400, 500}) myWindow.Run() }
func (lb ListBox) Create(builder *Builder) error { var w *walk.ListBox var err error if _, ok := lb.Model.([]string); ok && lb.DataMember != "" { return errors.New("ListBox.Create: DataMember must be empty for []string models.") } if lb.MultiSelection { w, err = walk.NewListBoxWithStyle(builder.Parent(), win.LBS_EXTENDEDSEL) } else { w, err = walk.NewListBox(builder.Parent()) } if err != nil { return err } return builder.InitWidget(lb, w, func() error { w.SetFormat(lb.Format) w.SetPrecision(lb.Precision) if err := w.SetDataMember(lb.DataMember); err != nil { return err } if err := w.SetModel(lb.Model); err != nil { return err } if lb.OnCurrentIndexChanged != nil { w.CurrentIndexChanged().Attach(lb.OnCurrentIndexChanged) } if lb.OnSelectedIndexesChanged != nil { w.SelectedIndexesChanged().Attach(lb.OnSelectedIndexesChanged) } if lb.OnItemActivated != nil { w.ItemActivated().Attach(lb.OnItemActivated) } if lb.AssignTo != nil { *lb.AssignTo = w } return nil }) }
func (lb ListBox) Create(builder *Builder) error { if _, ok := lb.Model.([]string); ok && lb.DataMember != "" { return errors.New("ListBox.Create: DataMember must be empty for []string models.") } w, err := walk.NewListBox(builder.Parent()) if err != nil { return err } return builder.InitWidget(lb, w, func() error { w.SetFormat(lb.Format) w.SetPrecision(lb.Precision) if err := w.SetDataMember(lb.DataMember); err != nil { return err } if err := w.SetModel(lb.Model); err != nil { return err } if lb.OnCurrentIndexChanged != nil { w.CurrentIndexChanged().Attach(lb.OnCurrentIndexChanged) } if lb.OnItemActivated != nil { w.ItemActivated().Attach(lb.OnItemActivated) } if lb.AssignTo != nil { *lb.AssignTo = w } return nil }) }
func NewGroupChatWindow(_usr User) { walk.SetPanicOnError(true) myWindow, _ := walk.NewMainWindow() mw := &GroupChatWindow{ MainWindow: myWindow, usr: _usr, usrModel: NewUsrModel(), } mw.SetTitle("简易群聊:" + _usr.Nick) usrList, _ := walk.NewListBox(mw) mw.usrList = usrList mw.usrList.SetModel(mw.usrModel) mw.usrList.SetSize(walk.Size{100, 450}) mw.usrList.SetX(10) mw.usrList.SetY(5) mw.usrList.ItemActivated().Attach(mw.userlist_ItemActivated) mw.usrList.CurrentIndexChanged().Attach(mw.userlist_CurrentIndexChanged) msgEdit, _ := walk.NewTextEdit(mw) mw.msgEdit = msgEdit mw.msgEdit.SetSize(walk.Size{500, 100}) mw.msgEdit.SetX(120) mw.msgEdit.SetY(310) mw.msgEdit.SetReadOnly(false) chatView, _ := NewChatMsgView(mw) mw.chatView = chatView mw.chatView.SetSize(walk.Size{500, 300}) mw.chatView.SetX(120) mw.chatView.SetY(5) sendBtn, _ := walk.NewPushButton(mw) mw.sendBtn = sendBtn mw.sendBtn.SetText("发送") mw.sendBtn.SetX(560) mw.sendBtn.SetY(420) mw.sendBtn.SetSize(walk.Size{60, 30}) mw.sendBtn.Clicked().Attach(mw.sendBtn_OnClick) mw.MainWindow.Show() mw.msgEdit.SetFocus() mw.SetMinMaxSize(walk.Size{645, 500}, walk.Size{645, 500}) mw.SetSize(walk.Size{645, 500}) mw.chatMgr = &ChatMgr{ topic: "imtech", channel: mw.usr.Id, msgChan: make(chan *NsqMsg, 1), } go Receiver.registerMsgHandler(mw.chatMgr) go mw.msgRouter() mw.MainWindow.Run() mw.chatMgr.reader.Stop() Publisher.Stop() pairChatMgr.release() os.Exit(0) }