-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathChild.cs
117 lines (95 loc) · 2.91 KB
/
Child.cs
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
using Rainmeter;
using System;
using System.Management.Automation.Runspaces;
namespace PowershellRM
{
internal class ChildMeasure : Measure
{
private ParentMeasure parent;
internal ChildMeasure(API api)
{
rmAPI = api;
proxy = new APIProxy(api);
string parentName = api.ReadString("Parent", "").ToLowerInvariant();
IntPtr skin = api.GetSkin();
parent = null;
// Find parent using measure name AND the skin pointer to be sure that it's the right one.
foreach (ParentMeasure parentMeasure in ParentMeasure.ParentMeasures)
{
if (parentMeasure.skin.Equals(skin) &&
parentMeasure.measureName.Equals(parentName))
{
parent = parentMeasure;
break;
}
}
if (parent == null)
{
api.Log(API.LogType.Error, "PowershellRM.dll: Parent=" + parentName + " not valid");
return;
}
runspace = parent.runspace;
}
internal override void Reload()
{
if (parent == null)
{
return;
}
script = GetCommandFromLine();
if (parent.state == State.NotReady) return;
using (Pipeline pipe = runspace.CreatePipeline())
{
pipe.Commands.Add(script);
try
{
pipe.Invoke();
}
catch (Exception e)
{
rmAPI.Log(API.LogType.Error, e.ToString());
}
}
}
internal override double Update()
{
if (parent == null) return 0;
if (parent.state == State.NotReady) return 0;
Invoke();
return outputNumber;
}
internal override string GetString()
{
return outputString;
}
internal override void SetRmAPI()
{
runspace.SessionStateProxy.SetVariable("RMAPI", proxy);
parent.rmPSHost.Ui.RainmeterAPI = rmAPI;
}
internal override string SectionInvoke(string command)
{
if (runspace == null)
{
return null;
}
return base.SectionInvoke(command);
}
internal override string SectionGetVariable(string variableName, string defaulValue)
{
if (runspace == null)
{
return defaulValue;
}
return base.SectionGetVariable(variableName, defaulValue);
}
internal override string SectionExpand(string input)
{
if (runspace == null)
{
return null;
}
return base.SectionExpand(input);
}
}
}