-
Notifications
You must be signed in to change notification settings - Fork 2
/
HadronStateSave.sc
123 lines (93 loc) · 2.18 KB
/
HadronStateSave.sc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
HadronStateSave
{
var parentApp;
*new
{|argParentApp|
^super.new.init(argParentApp);
}
init
{|argParentApp|
parentApp = argParentApp;
}
showSaveDialog
{
File.saveDialog("Save project", {}, {|pathFile| this.saveState(pathFile); });
}
saveState
{|argFile|
var outFile;
parentApp.isDirty = false;
outFile = File(argFile, "w");
outFile.write("?Hadron 1\n");
outFile.write("?StartPlugs\n");
parentApp.alivePlugs.do
({|item|
outFile.write
(
item.class.asString
++ 31.asAscii
++ item.ident
++ 31.asAscii
++ item.uniqueID.asString
++ 31.asAscii
++ item.extraArgs.asCompileString
++ 31.asAscii
++ (item.boundCanvasItem.objView.bounds.left@item.boundCanvasItem.objView.bounds.top).asString
++ 31.asAscii
++ item.outerWindow.bounds.asString
++ 31.asAscii
++ item.oldWinBounds.asString
++ 31.asAscii
++ item.isHidden.asString
++"\n"
);
});
outFile.write("?EndPlugs\n");
outFile.write("?StartConnections\n");
parentApp.alivePlugs.do
({|item|
var tempIn, tempOut;
tempIn = item.inConnections.deepCopy;
tempOut = item.outConnections.deepCopy;
tempIn.do
({|inItem, count|
if(inItem[0] != nil,
{
tempIn[count][0] = tempIn[count][0].uniqueID;
});
});
tempOut.do
({|outItem, count|
if(outItem[0] != nil,
{
tempOut[count][0] = tempOut[count][0].uniqueID;
});
});
outFile.write
(
item.uniqueID.asString
++ 31.asAscii
++ tempIn.asCompileString
++ 31.asAscii
++ tempOut.asCompileString
++ "\n"
);
});
outFile.write("?EndConnections\n");
outFile.write("?StartPlugParams\n");
parentApp.alivePlugs.do
({|item|
outFile.write(item.uniqueID.asString);
item.giveSaveValues.do
({|sValue|
outFile.write(31.asAscii);
outFile.write(sValue.asCompileString.replace("\n", " ")); //.asCompileString injects linefeeds to some stuff don't really know why...
});
outFile.write("\n");
});
outFile.write("?EndPlugParams\n");
outFile.write("?EndSave\n");
outFile.close;
parentApp.displayStatus("State saved!", 1);
}
}