代码拉取完成,页面将自动刷新
同步操作将从 arao/walk 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
// Copyright 2010 The Walk Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
import (
"log"
"path"
"strings"
)
import (
"github.com/lxn/walk"
. "github.com/lxn/walk/declarative"
)
func main() {
mw := new(MyMainWindow)
var openAction *walk.Action
if _, err := (MainWindow{
AssignTo: &mw.MainWindow,
Title: "Walk Image Viewer Example",
MenuItems: []MenuItem{
Menu{
Text: "&File",
Items: []MenuItem{
Action{
AssignTo: &openAction,
Text: "&Open",
Image: "../img/open.png",
OnTriggered: mw.openAction_Triggered,
},
Separator{},
Action{
Text: "Exit",
OnTriggered: func() { mw.Close() },
},
},
},
Menu{
Text: "&Help",
Items: []MenuItem{
Action{
Text: "About",
OnTriggered: mw.aboutAction_Triggered,
},
},
},
},
ToolBarItems: []MenuItem{
ActionRef{&openAction},
},
MinSize: Size{320, 240},
Size: Size{800, 600},
Layout: VBox{MarginsZero: true},
Children: []Widget{
TabWidget{
AssignTo: &mw.tabWidget,
},
},
}.Run()); err != nil {
log.Fatal(err)
}
}
type MyMainWindow struct {
*walk.MainWindow
tabWidget *walk.TabWidget
prevFilePath string
}
func (mw *MyMainWindow) openAction_Triggered() {
if err := mw.openImage(); err != nil {
log.Print(err)
}
}
func (mw *MyMainWindow) openImage() error {
dlg := new(walk.FileDialog)
dlg.FilePath = mw.prevFilePath
dlg.Filter = "Image Files (*.emf;*.bmp;*.exif;*.gif;*.jpeg;*.jpg;*.png;*.tiff)|*.emf;*.bmp;*.exif;*.gif;*.jpeg;*.jpg;*.png;*.tiff"
dlg.Title = "Select an Image"
if ok, err := dlg.ShowOpen(mw); err != nil {
return err
} else if !ok {
return nil
}
mw.prevFilePath = dlg.FilePath
img, err := walk.NewImageFromFile(dlg.FilePath)
if err != nil {
return err
}
var succeeded bool
defer func() {
if !succeeded {
img.Dispose()
}
}()
page, err := walk.NewTabPage()
if err != nil {
return err
}
if page.SetTitle(path.Base(strings.Replace(dlg.FilePath, "\\", "/", -1))); err != nil {
return err
}
page.SetLayout(walk.NewHBoxLayout())
defer func() {
if !succeeded {
page.Dispose()
}
}()
imageView, err := walk.NewImageView(page)
if err != nil {
return err
}
defer func() {
if !succeeded {
imageView.Dispose()
}
}()
imageView.SetMode(walk.ImageViewModeShrink)
if err := imageView.SetImage(img); err != nil {
return err
}
if err := mw.tabWidget.Pages().Add(page); err != nil {
return err
}
if err := mw.tabWidget.SetCurrentIndex(mw.tabWidget.Pages().Len() - 1); err != nil {
return err
}
succeeded = true
return nil
}
func (mw *MyMainWindow) aboutAction_Triggered() {
walk.MsgBox(mw, "About", "Walk Image Viewer Example", walk.MsgBoxIconInformation)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。