First upload

This commit is contained in:
Unknown
2018-02-04 22:48:52 -05:00
parent 2e2b659cfb
commit e3359307a9
11 changed files with 296 additions and 0 deletions

70
ps.go Normal file
View File

@@ -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
}

59
ps_test.go Normal file
View File

@@ -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)
}
}

3
win/close.vbs Normal file
View File

@@ -0,0 +1,3 @@
set App = CreateObject("Photoshop.Application")
set Doc = App.activeDocument
Doc.Close

10
win/dojs.vbs Normal file
View File

@@ -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

9
win/open.vbs Normal file
View File

@@ -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

9
win/quit.vbs Normal file
View File

@@ -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()

1
win/start.vbs Normal file
View File

@@ -0,0 +1 @@
set app = CreateObject("Photoshop.Application")

122
win/syncCards.jsx Normal file
View File

@@ -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<decks.length+1; i++) {
main.decks.children[i].onClick = function() {
for (var k=1; k<main.decks.children.length; k++)
if (main.decks.children[k].text == panel.children[k].text)
for (var j=0; j<panel.children[k].children.length; j++)
panel.children[k].children[j].value = main.decks.children[k].value;
};
}
main.decks.allDecks.onClick = function() {
for (var box=1; box < decks.length+1; box++) {
main.decks.children[box].value = main.decks.allDecks.value;
main.decks.children[box].onClick();
}
}
//Button to cancel the operation.
main.cancel = main.add('Button', undefined, 'Cancel');
//Button to compile the chosen cards.
main.compile = main.add ('Button',undefined, 'Compile');
main.compile.onClick = function() {
LOG.debug('', $.fileName);
var ret = {};
var leaders = HEROES_JSON;
for (var i=1; i<panel.children.length; i++) {
if (i != 2) {
ret[decks[i-1]] = deckJSONs[decks[i-1]];
for (var j=panel.children[i].children.length-1; j>=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);
}

11
win/test.jsx Normal file
View File

@@ -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();

1
win/test.txt Normal file
View File

@@ -0,0 +1 @@
Testing...

1
win/test.vbs Normal file
View File

@@ -0,0 +1 @@
wScript.echo "Testing..."