func main() { walk.Initialize(walk.InitParams{PanicOnError: true}) defer walk.Shutdown() mainWnd, _ := walk.NewMainWindow() mw := &MainWindow{MainWindow: mainWnd} mw.SetTitle("Walk WebView Example") mw.SetLayout(walk.NewVBoxLayout()) mw.urlLineEdit, _ = walk.NewLineEdit(mw) mw.urlLineEdit.ReturnPressed().Attach(func() { mw.webView.SetURL(mw.urlLineEdit.Text()) }) mw.webView, _ = walk.NewWebView(mw) mw.webView.SetURL("http://golang.org") mw.SetMinMaxSize(walk.Size{600, 400}, walk.Size{}) mw.SetSize(walk.Size{800, 600}) mw.Show() mw.Run() }
func (wv WebView) Create(builder *Builder) error { w, err := walk.NewWebView(builder.Parent()) if err != nil { return err } return builder.InitWidget(wv, w, func() error { if wv.OnURLChanged != nil { w.URLChanged().Attach(wv.OnURLChanged) } if wv.AssignTo != nil { *wv.AssignTo = w } return nil }) }
func (wv WebView) Create(parent walk.Container) error { w, err := walk.NewWebView(parent) if err != nil { return err } return InitWidget(wv, w, func() error { if err := w.SetURL(wv.URL); err != nil { return err } if wv.AssignTo != nil { *wv.AssignTo = w } return nil }) }
func main() { walk.Initialize(walk.InitParams{PanicOnError: true}) defer walk.Shutdown() mainWnd, _ := walk.NewMainWindow() mw := &MainWindow{ MainWindow: mainWnd, fileInfoModel: &FileInfoModel{}, } mw.SetTitle("Walk File Browser Example") mw.SetLayout(walk.NewHBoxLayout()) fileMenu, _ := walk.NewMenu() fileMenuAction, _ := mw.Menu().Actions().AddMenu(fileMenu) fileMenuAction.SetText("&File") exitAction := walk.NewAction() exitAction.SetText("E&xit") exitAction.Triggered().Attach(func() { walk.App().Exit(0) }) fileMenu.Actions().Add(exitAction) helpMenu, _ := walk.NewMenu() helpMenuAction, _ := mw.Menu().Actions().AddMenu(helpMenu) helpMenuAction.SetText("&Help") aboutAction := walk.NewAction() aboutAction.SetText("&About") aboutAction.Triggered().Attach(func() { walk.MsgBox(mw, "About", "Walk File Browser Example", walk.MsgBoxOK|walk.MsgBoxIconInformation) }) helpMenu.Actions().Add(aboutAction) splitter, _ := walk.NewSplitter(mw) mw.treeView, _ = walk.NewTreeView(splitter) mw.treeView.ItemExpanded().Attach(func(item *walk.TreeViewItem) { children := item.Children() if children.Len() == 1 && children.At(0).Text() == "" { mw.populateTreeViewItem(item) } }) mw.treeView.SelectionChanged().Attach(func(old, new *walk.TreeViewItem) { mw.selTvwItem = new mw.showError(mw.fileInfoModel.ResetRows(pathForTreeViewItem(new))) }) drives, _ := walk.DriveNames() mw.treeView.SetSuspended(true) for _, drive := range drives { driveItem := newTreeViewItem(drive[:2]) mw.treeView.Items().Add(driveItem) } mw.treeView.SetSuspended(false) mw.tableView, _ = walk.NewTableView(splitter) mw.tableView.SetModel(mw.fileInfoModel) mw.tableView.SetSingleItemSelection(true) mw.tableView.CurrentIndexChanged().Attach(func() { var url string index := mw.tableView.CurrentIndex() if index > -1 { name := mw.fileInfoModel.items[index].Name url = path.Join(pathForTreeViewItem(mw.selTvwItem), name) } mw.preview.SetURL(url) }) mw.preview, _ = walk.NewWebView(splitter) mw.SetMinMaxSize(walk.Size{600, 400}, walk.Size{}) mw.SetSize(walk.Size{800, 600}) mw.Show() mw.Run() }