From 4bf7eca6b0134263d756925408379a43304f18ab Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 4 Apr 2018 15:14:59 -0400 Subject: [PATCH] Minor Improvements * Made Refresh() more robust - when an error is encountered, the layer(set) is reloaded automatically. * JS errors are now output to console instead of alerts. --- ps.go | 20 +++++++------------- scripts/PsIsOpen.vbs | 12 ++++++++++++ scripts/dojs.vbs | 5 ++++- scripts/getLayer.jsx | 2 +- structs.go | 39 ++++++++++++++++++--------------------- 5 files changed, 42 insertions(+), 36 deletions(-) create mode 100644 scripts/PsIsOpen.vbs diff --git a/ps.go b/ps.go index 9c9d773..2450b1d 100644 --- a/ps.go +++ b/ps.go @@ -73,10 +73,10 @@ func SaveAs(path string) error { func DoJs(path string, args ...string) (out []byte, err error) { // Temp file for js to output to. outpath := filepath.Join(os.Getenv("TEMP"), "js_out.txt") + defer os.Remove(outpath) if !strings.HasSuffix(path, ".jsx") { path += ".jsx" } - defer os.Remove(outpath) args = append([]string{outpath}, args...) @@ -87,14 +87,12 @@ func DoJs(path string, args ...string) (out []byte, err error) { args = append([]string{path}, args...) cmd, err := run("dojs", args...) - if err != nil { - return []byte{}, err + if err == nil { + file, err := ioutil.ReadFile(outpath) + if err == nil { + cmd = append(cmd, file...) + } } - file, err := ioutil.ReadFile(outpath) - if err != nil { - return cmd, err - } - cmd = append(cmd, file...) return cmd, err } @@ -138,11 +136,7 @@ func run(name string, args ...string) ([]byte, error) { cmd.Stdout = &out cmd.Stderr = &errs err := cmd.Run() - if err != nil { - return out.Bytes(), err - // return append(out.Bytes(), errs.Bytes()...), err - } - if len(errs.Bytes()) != 0 { + if err != nil || len(errs.Bytes()) != 0 { return out.Bytes(), errors.New(string(errs.Bytes())) } return out.Bytes(), nil diff --git a/scripts/PsIsOpen.vbs b/scripts/PsIsOpen.vbs new file mode 100644 index 0000000..2e44e2f --- /dev/null +++ b/scripts/PsIsOpen.vbs @@ -0,0 +1,12 @@ +Function IsProcessRunning( strComputer, strProcess ) + Dim Process, strObject + IsProcessRunning = False + strObject = "winmgmts://" & strComputer + For Each Process in GetObject( strObject ).InstancesOf( "win32_process" ) + If UCase( Process.name ) = UCase( strProcess ) Then + IsProcessRunning = True + Exit Function + End If + Next +End Function +wScript.Echo IsProcessRunning(".", "Photoshop.exe") diff --git a/scripts/dojs.vbs b/scripts/dojs.vbs index 6819bfd..a4b0311 100644 --- a/scripts/dojs.vbs +++ b/scripts/dojs.vbs @@ -6,5 +6,8 @@ if wScript.Arguments.Count = 0 then else path = wScript.Arguments(0) args = wScript.Arguments(1) - appRef.DoJavaScriptFile path, Split(args, ",") + error = appRef.DoJavaScriptFile(path, Split(args, ",")) + if Not error = "true" Then + Err.raise 1, "dojs.vbs", error + end if end if \ No newline at end of file diff --git a/scripts/getLayer.jsx b/scripts/getLayer.jsx index 66cbfd5..0375de8 100644 --- a/scripts/getLayer.jsx +++ b/scripts/getLayer.jsx @@ -1,5 +1,5 @@ #include lib.js - +app.displayDialogs=DialogModes.NO var stdout = newFile(arguments[0]); var lyr = eval(arguments[1]); stdout.write(('{"Name":"' + lyr.name + '","Bounds":[[' + lyr.bounds[0] + ',' + diff --git a/structs.go b/structs.go index 6648746..fa18621 100644 --- a/structs.go +++ b/structs.go @@ -411,10 +411,10 @@ func (a *ArtLayer) SetPos(x, y int, bound string) { a.bounds = lyr.bounds } -func (a *ArtLayer) Refresh() { +func (a *ArtLayer) Refresh() error { tmp, err := Layer(a.Path()) if err != nil { - log.Panic(err) + return err } tmp.SetParent(a.Parent()) a.name = tmp.name @@ -423,6 +423,7 @@ func (a *ArtLayer) Refresh() { a.parent = tmp.Parent() a.visible = tmp.visible a.current = true + return nil } type LayerSet struct { @@ -487,28 +488,20 @@ func (l *LayerSet) ArtLayer(name string) *ArtLayer { for _, lyr := range l.artLayers { if lyr.name == name { if Mode == 0 && !lyr.current { - lyr.Refresh() - /* - byt, err := DoJs("getLayer.jsx", JSLayer(lyr.Path())) - if err != nil { - log.Panic(err) - } - var lyr2 *ArtLayer - err = json.Unmarshal(byt, &lyr2) - if err != nil { - log.Panic(err) - } - lyr.name = lyr2.name - lyr.bounds = lyr2.bounds - lyr.visible = lyr2.visible - lyr.current = true - lyr.Text = lyr2.Text - */ + err := lyr.Refresh() + if err != nil { + l.Refresh() + } } return lyr } } - return nil + l.Refresh() + for _, lyr := range l.artLayers { + fmt.Println(lyr) + } + lyr := l.ArtLayer(name) + return lyr } func (l *LayerSet) LayerSets() []*LayerSet { @@ -589,7 +582,11 @@ func (l *LayerSet) Refresh() { } tmp.SetParent(l.Parent()) for _, lyr := range l.artLayers { - lyr.Refresh() + err := lyr.Refresh() + if err != nil { + l.artLayers = tmp.artLayers + break + } } for _, set := range l.layerSets { set.Refresh()