From e3359307a9798b9a1926abc8fbcd3f8992884a5c Mon Sep 17 00:00:00 2001 From: Unknown Date: Sun, 4 Feb 2018 22:48:52 -0500 Subject: [PATCH] First upload --- ps.go | 70 ++++++++++++++++++++++++++ ps_test.go | 59 ++++++++++++++++++++++ win/close.vbs | 3 ++ win/dojs.vbs | 10 ++++ win/open.vbs | 9 ++++ win/quit.vbs | 9 ++++ win/start.vbs | 1 + win/syncCards.jsx | 122 ++++++++++++++++++++++++++++++++++++++++++++++ win/test.jsx | 11 +++++ win/test.txt | 1 + win/test.vbs | 1 + 11 files changed, 296 insertions(+) create mode 100644 ps.go create mode 100644 ps_test.go create mode 100644 win/close.vbs create mode 100644 win/dojs.vbs create mode 100644 win/open.vbs create mode 100644 win/quit.vbs create mode 100644 win/start.vbs create mode 100644 win/syncCards.jsx create mode 100644 win/test.jsx create mode 100644 win/test.txt create mode 100644 win/test.vbs diff --git a/ps.go b/ps.go new file mode 100644 index 0000000..836721d --- /dev/null +++ b/ps.go @@ -0,0 +1,70 @@ +package ps + +import ( + "bytes" + "fmt" + "os" + "os/exec" + "path" + "runtime" + "strings" +) + +const ( + Cmd = "cscript.exe" + Opts = "/nologo" +) + +var PKGPATH = path.Join(os.Getenv("GOPATH"), "/src/github.com/sbrow/skirmish/ps") + +func Start() error { + _, err := run("start") + return err +} + +func Open(path string) ([]byte, error) { + return run("open", path) +} + +func Close() error { + _, err := run("close") + return err +} + +func Quit() ([]byte, error) { + return run("quit") +} + +func Js(args ...string) ([]byte, error) { + return run("dojs", args...) +} +func Wait(msg string) { + fmt.Print(msg) + var input string + fmt.Scanln(&input) +} + +func run(name string, args ...string) ([]byte, error) { + var ext string + var dir string + var out bytes.Buffer + var stderr bytes.Buffer + + switch runtime.GOOS { + case "windows": + ext = ".vbs" + dir = "win" + case "darwin": + ext = ".applescript" + dir = "mac" + } + if !strings.HasSuffix(name, ext) { + name += ext + } + args = append([]string{Opts, path.Join(PKGPATH, dir, name)}, args...) + cmd := exec.Command(Cmd, args...) + cmd.Stdout = &out + cmd.Stderr = &stderr + err := cmd.Run() + return out.Bytes(), err +} diff --git a/ps_test.go b/ps_test.go new file mode 100644 index 0000000..ff497c6 --- /dev/null +++ b/ps_test.go @@ -0,0 +1,59 @@ +package ps + +import ( + "fmt" + "io/ioutil" + "path" + "strings" + "testing" +) + +// TODO: Comparison borked +func TestRun(t *testing.T) { + out := []byte("Testing...\n") + msg, err := run("test") + if err != nil { + t.Fatal(err) + } + if string(msg) == string(out) { + fail := fmt.Sprintf("run(test)\ngot:\t\"%s\"\nwant:\t\"%s\"\n", msg, out) + t.Fatal(fail) + } +} + +func TestOpen(t *testing.T) { + if testing.Short() { + t.Skip("Skipping \"TestOpen\"") + } + Open("F:\\GitLab\\dreamkeepers-psd\\Template009.1.psd") +} + +func TestQuit(t *testing.T) { + if testing.Short() { + t.Skip("Skipping \"TestQuit\"") + } + Quit() +} + +func TestWait(t *testing.T) { + Wait("Waiting...") +} + +// TODO: Comparison borked +func TestJS(t *testing.T) { + out := "Testing...\n" + _, err := Js(path.Join(Folder, "test.jsx"), Folder) + if err != nil { + t.Fatal(err) + } + f, err := ioutil.ReadFile(path.Join(Folder, "test.txt")) + if err != nil { + t.Fatal(err) + } + if strings.Compare(string(f), string(out)) != 0 { + fmt.Println(f) + fmt.Println([]byte(out)) + fail := fmt.Sprintf("TestJS failed.\ngot:\t\"%s\"\nwant:\t\"%s\"", f, out) + t.Fatal(fail) + } +} diff --git a/win/close.vbs b/win/close.vbs new file mode 100644 index 0000000..1e18426 --- /dev/null +++ b/win/close.vbs @@ -0,0 +1,3 @@ +set App = CreateObject("Photoshop.Application") +set Doc = App.activeDocument +Doc.Close \ No newline at end of file diff --git a/win/dojs.vbs b/win/dojs.vbs new file mode 100644 index 0000000..222155b --- /dev/null +++ b/win/dojs.vbs @@ -0,0 +1,10 @@ + +Dim app +Set app = CreateObject("Photoshop.Application") +if WScript.Arguments.Count = 0 then + WScript.Echo "Missing parameters" +else + path = wScript.Arguments(0) + folder = wScript.Arguments(1) + app.DoJavaScriptFile path, Array(Folder) +end if \ No newline at end of file diff --git a/win/open.vbs b/win/open.vbs new file mode 100644 index 0000000..f0c4440 --- /dev/null +++ b/win/open.vbs @@ -0,0 +1,9 @@ +' Open photoshop. +Set app = CreateObject("Photoshop.Application") +if WScript.Arguments.Count = 0 then + WScript.Echo "Missing parameters" +else +path = wScript.Arguments(0) +Set doc = app.Open(path) +wScript.echo doc.Name +end if \ No newline at end of file diff --git a/win/quit.vbs b/win/quit.vbs new file mode 100644 index 0000000..56244e6 --- /dev/null +++ b/win/quit.vbs @@ -0,0 +1,9 @@ +' Close Photoshop +Set appRef = CreateObject("Photoshop.Application") + +wScript.echo appRef.Documents.Count +Do While appRef.Documents.Count > 0 + appRef.ActiveDocument.Close(2) +Loop + +appRef.Quit() \ No newline at end of file diff --git a/win/start.vbs b/win/start.vbs new file mode 100644 index 0000000..3b13c62 --- /dev/null +++ b/win/start.vbs @@ -0,0 +1 @@ +set app = CreateObject("Photoshop.Application") \ No newline at end of file diff --git a/win/syncCards.jsx b/win/syncCards.jsx new file mode 100644 index 0000000..59232e5 --- /dev/null +++ b/win/syncCards.jsx @@ -0,0 +1,122 @@ +#target Photshop + +try { + /** + * Make window + * @todo read data from the template PSD's data sets. + * @type {Window} + */ + var win = new Window('dialog','Sync Skirmish Cards'); + var panel = win.add('tabbedpanel'); + + //Make main tab tab that updates folders at a time. + var main = panel.add('tab', undefined, 'Main'); + + //Get our list of deck names. + var deckNames = (JSON_FOLDER.toString().replace(/\/[^,]*\//g, '').replace(/.json/g, '')).split(','); + var decks = []; + var deckJSONs = {}; + var index = 0; + for (var i in deckNames) { + if (deckNames[i] != 'Formatting' && deckNames[i] != 'desktop.ini' && deckNames[i] != 'old') { + var filePath = '{0}/{1}.json'.format(JSON_PATH, deckNames[i]); + var fileObj = loadJSON(filePath, true); + deckJSONs[deckNames[i]] = fileObj; + decks[index++] = deckNames[i]; + var deckTab = panel.add('tab', undefined, deckNames[i]); + for (var card in deckJSONs[deckNames[i]]) { + deckTab.add('checkbox', undefined, deckJSONs[deckNames[i]][card].Name); + } + } + } +/* + //Button to select everything. + main.everything = main.add('checkbox', undefined, 'Everything'); + main.everything.onClick = function() { + main.leaders.value = main.everything.value; + main.decks.allDecks.value = main.everything.value; + main.decks.allDecks.onClick(); + };*/ + + //Button to select all leaders. + //main.leaders = main.add('checkbox', undefined, 'Leaders') + + //Section listing all the available decks + main.decks = main.add('panel', undefined, "Decks"); + + //Button that selects all Decks. + main.decks.allDecks = main.decks.add('checkbox', undefined, 'All'); + + //Generates checkbox for each deck. + for (var deck in decks) + var deckBox = main.decks.add('checkbox', undefined, decks[deck]); + + //Generates a checkbox for each card. + for (var i=1; i=0; j--) + if (panel.children[i].children[j].value == false) + ret[decks[i-1]].splice(j, 1); + } + } + for (var i=panel.children[2].children.length-1; i>=0; i--) { + if (panel.children[2].children[i].value == false) + leaders.splice(i, 1); + } + if (isEmpty(ret) && isEmpty(leaders)) + alert('Must select something'); + else { + win.close(); + compileDecks(ret, leaders); + } + } + + win.center(); + + function compileDecks(decks, leaders) { + LOG.log('SYNCING SKIRMISH FILES...', '-'); + if (decks) + try { + var t0 = new Date().getTime() + sync(decks, true, LOG); + var t1 = new Date().getTime() + LOG.log("TIME: " + (t1 - t0)) + } catch (e) { + LOG.err(e); + } + if(leaders) { + syncLeaders(leaders, LOG); + } + } + win.show(); +} catch (e) { + alert(e.LineNumber + " " + e.message); + LOG.err(e); + } diff --git a/win/test.jsx b/win/test.jsx new file mode 100644 index 0000000..98d79ac --- /dev/null +++ b/win/test.jsx @@ -0,0 +1,11 @@ +var Path = arguments[0]; +alert(Path) +var saveFile = File(Path + "/test.txt"); + +if(saveFile.exists) + saveFile.remove(); + +saveFile.encoding = "UTF8"; +saveFile.open("e", "TEXT", "????"); +saveFile.writeln("Testing..."); +saveFile.close(); \ No newline at end of file diff --git a/win/test.txt b/win/test.txt new file mode 100644 index 0000000..5862d9e --- /dev/null +++ b/win/test.txt @@ -0,0 +1 @@ +Testing... diff --git a/win/test.vbs b/win/test.vbs new file mode 100644 index 0000000..12d7bf1 --- /dev/null +++ b/win/test.vbs @@ -0,0 +1 @@ +wScript.echo "Testing..." \ No newline at end of file