diff options
| author | joesis | 2017-06-20 12:09:15 +0800 |
|---|---|---|
| committer | joesis | 2017-06-20 13:52:11 +0800 |
| commit | 64fc593b2f0f930014b8a8a0631f73ba6d00eed2 (patch) | |
| tree | 2ca69b25dbba989d6d7699f60e21fc2168890b2f | |
| parent | 8a840534343d8d7c863b876ed6ba3856e560c610 (diff) | |
| download | systray-64fc593b2f0f930014b8a8a0631f73ba6d00eed2.tar.bz2 | |
update example
| -rw-r--r-- | example/main.go | 10 | ||||
| -rw-r--r-- | systraydll_windows.go | 105 |
2 files changed, 63 insertions, 52 deletions
diff --git a/example/main.go b/example/main.go index 01b9ee8..46604d5 100644 --- a/example/main.go +++ b/example/main.go @@ -2,6 +2,8 @@ package main import ( "fmt" + "os" + "github.com/getlantern/systray" "github.com/getlantern/systray/example/icon" "github.com/skratchdot/open-golang/open" @@ -9,7 +11,7 @@ import ( func main() { // Should be called at the very beginning of main(). - systray.Run(onReady) + systray.Run(onReady, onExit) } func onReady() { @@ -59,3 +61,9 @@ func onReady() { } }() } + +func onExit() { + file, _ := os.Create("out.txt") + defer file.Close() + file.Write([]byte("On Exit...")) +} diff --git a/systraydll_windows.go b/systraydll_windows.go index 2bf4b4e..749605b 100644 --- a/systraydll_windows.go +++ b/systraydll_windows.go @@ -8,13 +8,14 @@ package systray import ( "fmt" - "io/ioutil" - "os" - "path/filepath" "reflect" "strings" - "time" "unsafe" + "os" + "time" + "io/ioutil" + "path" + "path/filepath" ) func bindataRead(data, name string) ([]byte, error) { @@ -34,9 +35,9 @@ type asset struct { } type bindataFileInfo struct { - name string - size int64 - mode os.FileMode + name string + size int64 + mode os.FileMode modTime time.Time } @@ -74,8 +75,8 @@ func systray386Dll() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "systray386.dll", size: 94208, mode: os.FileMode(438), modTime: time.Unix(1471643142, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "systray386.dll", size: 94208, mode: os.FileMode(420), modTime: time.Unix(1497931828, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -94,8 +95,8 @@ func systrayamd64Dll() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "systrayamd64.dll", size: 111104, mode: os.FileMode(438), modTime: time.Unix(1471643140, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "systrayamd64.dll", size: 111104, mode: os.FileMode(420), modTime: time.Unix(1497931828, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -118,7 +119,7 @@ func Asset(name string) ([]byte, error) { // It simplifies safe initialization of global variables. func MustAsset(name string) []byte { a, err := Asset(name) - if err != nil { + if (err != nil) { panic("asset: Asset(" + name + "): " + err.Error()) } @@ -191,58 +192,60 @@ func AssetDir(name string) ([]string, error) { } type bintree struct { - Func func() (*asset, error) + Func func() (*asset, error) Children map[string]*bintree } var _bintree = &bintree{nil, map[string]*bintree{ - "systray386.dll": &bintree{systray386Dll, map[string]*bintree{}}, - "systrayamd64.dll": &bintree{systrayamd64Dll, map[string]*bintree{}}, + "systray386.dll": &bintree{systray386Dll, map[string]*bintree{ + }}, + "systrayamd64.dll": &bintree{systrayamd64Dll, map[string]*bintree{ + }}, }} // RestoreAsset restores an asset under the given directory func RestoreAsset(dir, name string) error { - data, err := Asset(name) - if err != nil { - return err - } - info, err := AssetInfo(name) - if err != nil { - return err - } - err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755)) - if err != nil { - return err - } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) - if err != nil { - return err - } - err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) - if err != nil { - return err - } - return nil + data, err := Asset(name) + if err != nil { + return err + } + info, err := AssetInfo(name) + if err != nil { + return err + } + err = os.MkdirAll(_filePath(dir, path.Dir(name)), os.FileMode(0755)) + if err != nil { + return err + } + err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + if err != nil { + return err + } + err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) + if err != nil { + return err + } + return nil } // RestoreAssets restores an asset under the given directory recursively func RestoreAssets(dir, name string) error { - children, err := AssetDir(name) - // File - if err != nil { - return RestoreAsset(dir, name) - } - // Dir - for _, child := range children { - err = RestoreAssets(dir, filepath.Join(name, child)) - if err != nil { - return err - } - } - return nil + children, err := AssetDir(name) + // File + if err != nil { + return RestoreAsset(dir, name) + } + // Dir + for _, child := range children { + err = RestoreAssets(dir, path.Join(name, child)) + if err != nil { + return err + } + } + return nil } func _filePath(dir, name string) string { - cannonicalName := strings.Replace(name, "\\", "/", -1) - return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) + cannonicalName := strings.Replace(name, "\\", "/", -1) + return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) } |
