Add project files.

This commit is contained in:
Martijn Dijkstra
2025-05-08 09:10:15 +02:00
parent 7be30a6f28
commit 6a44bd4fd2
211 changed files with 729572 additions and 0 deletions

22
FeanorProjects/App.config Normal file
View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

554
FeanorProjects/Export.cs Normal file
View File

@@ -0,0 +1,554 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Maser.Feanor.Model;
using Maser.Feanor.Biz;
using System.IO;
using System.Globalization;
namespace FeanorProjects
{
public static class Export
{
private static StringBuilder _Content; // File content
private static List<List<Result>> _Results = new List<List<Result>>();
public static void Create(Project Project, Chamber Chamber)
{
_Project = Project;
_Chamber = Chamber;
_Sensors = new List<Sensor>();
_File = "";
// Set project stop to UTC for current object
_Project.Stop = _Project.Stop == null ? Time.UTC : (DateTime)_Project.Stop;
}
public static List<Sensor> Sensors
{
get { return _Sensors; }
set { _Sensors = value; }
}
private static List<Sensor> _Sensors = new List<Sensor>();
public static Project Project { get { return _Project; } }
private static Project _Project;
public static Chamber Chamber { get { return _Chamber; } }
private static Chamber _Chamber;
public static String File { get { return _File; } set { _File = value; } }
private static String _File;
public static Boolean ToFile()
{
try
{
GetResults();
}
catch(Exception ex)
{
string msg = "Exception in Export.ToFile() during GetResults() -> " + ex.Message;
throw new Exception(msg);
}
_Content = new StringBuilder();
_Content.AppendLine(ProjectHeader);
_Content.AppendLine(ChamberHeader);
_Content.AppendLine(SensorHeader);
_Content.AppendLine(UncertaintyHeader);
AppendDataField();
_Content.AppendLine(FileStamp);
// Write the file
try
{
FileStream fileStream = new FileStream(_File, FileMode.Create);
StreamWriter MyStreamWriter = new StreamWriter(fileStream);
MyStreamWriter.WriteLine(_Content);
MyStreamWriter.Close();
fileStream.Close();
return true;
}
catch (Exception ex)
{
string msg = "Exception in Export.ToFile() during writing of file -> " + ex.Message;
throw new Exception(msg);
}
}
private static void AppendDataField()
{
List<ExportDataItem> exportDataItems = new List<ExportDataItem>();
String[,] dataField = new String[_Results[0].Count, _Sensors.Count + 1];
DateTime start = _Results[0][0].TimeStamp;
// sensor0 primary sensor (with timestamp)
for (int i = 1; i < _Sensors.Count; i++) //sensor1,sensor2,.... (without timestamp)
{
Sensor sensor = _Sensors[i];
List<Result> results = _Results[i];
}
int count = 0;
TimeSpan maxDifference = new TimeSpan(0, 0, 20); // max difference in time from sensor 0 timestamp
TimeSpan minDifference = new TimeSpan(0, 0, -20); // min difference in time from sensor 0 timestamp
//Console.WriteLine("count 0 and 1 "+ _Results[0].Count.ToString() + " " +_Results[2].Count.ToString());
//foreach (Result r in _Results[2]) // Itereer door elke rij van de eerste sensor
//Console.WriteLine("v ch1 " + r.TimeStamp.ToString() + " | " + r.Value.ToString());
Int32 foundsensorpk = 0;
double[] CalibrCoeff = new double[40];
for (int i = 0; i < _Sensors.Count; i++)
{
try
{
List<Int32> calibrationPKs = new List<int>();
foreach (Result r in _Results[i])
{
if (!calibrationPKs.Contains(r.CalibrationPK))
{
calibrationPKs.Add(r.CalibrationPK);
foundsensorpk = r.SensorPK;
}
}
Calibration t = new Calibrations().GetLastCreatedBySensorPK(foundsensorpk);
if (t != null) // calibration found
{
CalibrCoeff[2*i] = t.Coefficients[1]; // gain
CalibrCoeff[2*i+1] = t.Coefficients[0]; // offset
}
else // no calibration found
{
CalibrCoeff[2 * i] = 1.0; // gain
CalibrCoeff[2 * i + 1] = 0.0; // offset
}
}
catch
{
string msg = "Could not retrieve calibrations for sensor ";
}
}
int[] shift = new int[_Sensors.Count];
int[] skipcount = new int[_Sensors.Count];
#region oldExportSorter
/*
// Primary sensor is sensor with lowest ID (the first object in _Sensors)
foreach (Result r in _Results[0]) // for each row (first sensor)
{
ExportDataItem item = new ExportDataItem(r.TimeStamp, (r.Value*CalibrCoeff[0]+CalibrCoeff[1]), _Results.Count, start); // for sensor 0 export value and timestamp first sensor
exportDataItems.Add(item);
Console.Write(r.TimeStamp.ToString() + " " + r.Value.ToString() + " ");
for (int i = 1; i < _Sensors.Count; i++) // for the sensor1, sensor2, ....
{
try
{
TimeSpan difference = r.TimeStamp - _Results[i][count-shift[i]].TimeStamp; // Calculate difference between sensor 0 and sensor X
Console.Write(difference.TotalSeconds.ToString() + " ");
if (difference <= maxDifference && difference >= minDifference) // If difference is between min and max
{
// difference between sensor0 and sensor X is between max and min difference --> ADD value to file
}
else
{
// difference between sensor0 and sensor X is not between max and min difference --> DO NOT ADD VALUE to file
shift[i]++;
}
if (_Results[i][count - shift[i]].Value == 9999.99)
{
item.AddValue(_Results[i][count-shift[i]].Value, i);
}
else
{
_Results[i][count - shift[i]].Value = _Results[i][count-shift[i]].Value * CalibrCoeff[2*i] + CalibrCoeff[2*i+1];
item.AddValue(_Results[i][count-shift[i]].Value, i);
}
Console.Write(_Results[i][count - shift[i]].Value.ToString() + " ");
}
catch { }
}
count++; // next row
Console.WriteLine();
}
*/
#endregion
bool debug = true;
foreach (Result r in _Results[0])
{
//Console.WriteLine("timestamp "+ r.TimeStamp.ToString());
ExportDataItem item = new ExportDataItem(
r.TimeStamp,
(r.Value * CalibrCoeff[0] + CalibrCoeff[1]),
_Results.Count,
start
);
exportDataItems.Add(item);
for (int i = 1; i < _Sensors.Count; i++) // Itereren over andere sensoren (o.a. sensor 2)
{
bool dataAdded = false;
int index = BinarySearchClosestTimestamp(_Results[i], r.TimeStamp);
if (index != -1)
{
TimeSpan diff = _Results[i][index].TimeStamp - r.TimeStamp;
if (diff <= maxDifference && diff >= minDifference)
{
double calibratedValue = (_Results[i][index].Value != 9999.99)
? _Results[i][index].Value * CalibrCoeff[2 * i] + CalibrCoeff[2 * i + 1]
: _Results[i][index].Value;
item.AddValue(calibratedValue, i);
dataAdded = true;
}
}
// Voeg 0 toe als er geen match was
if (!dataAdded)
{
item.AddValue(0.0, i);
}
}
}
foreach (ExportDataItem exportDataItem in exportDataItems) // for each line of .csv file
{
_Content.AppendLine(exportDataItem.ToString()); // add line to content
}
}
private static int BinarySearchClosestTimestamp(List<Result> results, DateTime targetTimestamp)
{
int left = 0, right = results.Count - 1;
while (left <= right)
{
int mid = left + (right - left) / 2;
if (results[mid].TimeStamp == targetTimestamp)
return mid;
else if (results[mid].TimeStamp < targetTimestamp)
left = mid + 1;
else
right = mid - 1;
}
int closestIndex = Math.Max(0, Math.Min(left, results.Count - 1));
return closestIndex;
}
private static void GetResults()
{
_Results = new List<List<Result>>();
foreach (Sensor sensor in _Sensors)
{
if(Chamber.Humidity == true)
{
_Results.Add(new Results().GetByProjectWindow(_Project.PK, sensor.PK));
}
else
{
_Results.Add(new Results().GetByProjectWindowOudeHal(_Project.PK, sensor.PK));
}
}
}
private static string UncertaintyHeader
{
get
{
String uncertainty;
uncertainty = String.Format("Uncertainty (k=2), {0:0}, ", Math.Ceiling((double)_Chamber.Interval / 2));
double U = 0;
Int32 foundsensorpk = 0;
for (int i = 0; i < _Sensors.Count; i++)
{
try
{
List<Int32> calibrationPKs = new List<int>();
foreach (Result r in _Results[i])
{
if (!calibrationPKs.Contains(r.CalibrationPK))
{
//Console.WriteLine(r.SensorPK.ToString()); // 21 dit gaat goed
calibrationPKs.Add(r.CalibrationPK);
//Console.WriteLine(r.CalibrationPK.ToString());
foundsensorpk = r.SensorPK;
}
}
Console.Write("Found sensor PK = ");
Console.WriteLine(foundsensorpk.ToString());
Calibration t = new Calibrations().GetLastCreatedBySensorPK(foundsensorpk);
if (t != null) // calibration found
{
U = t.Uncertainty;
Console.Write("a = ");
Console.Write(t.Coefficients[1]); // gain
Console.Write(" ");
Console.Write("b = ");
Console.WriteLine(t.Coefficients[0]); // offset
}
else // no calibration found
{
Console.WriteLine("No calibration found for this sensor ( a = 0 and b = 0 )");
U = 0.0;
}
}
catch
{
string msg = "Could not retrieve calibrations for sensor ";
msg += string.Format("PK={0:0} ChamberPK={1:0) ID={2:00} [{3}]", _Sensors[i].PK, _Sensors[i].ChamberPK, _Sensors[i].ID, _Sensors[i].Description);
throw new Exception(msg);
}
uncertainty += String.Format("{0:0.00},", U);
}
// Remove last comma of line
uncertainty = uncertainty.Remove(uncertainty.Length - 1, 1);
Console.WriteLine(uncertainty);
return uncertainty;
}
}
private static string SensorHeader
{
get
{
String sensorHeader;
// Are sensors from other chambers linked to project's chamber?
bool linked = false;
foreach (Sensor sensor in _Sensors)
{
if (sensor.ChamberPK != _Chamber.PK)
{
linked = true;
break;
}
}
sensorHeader = "Timestamp, Duration,";
foreach (Sensor sensor in _Sensors)
{
if(linked)
{
try
{
Chamber c = new Chambers().GetByPK(sensor.ChamberPK);
sensorHeader = string.Format("{0:00000}.{1:00} {2}", c.MIDS, sensor.ID, sensor.Description);
}
catch { sensorHeader += String.Format("\"#{0:00} {1}\",", sensor.ID, sensor.Description); }
}
else
sensorHeader += String.Format("\"#{0:00} {1}\",", sensor.ID, sensor.Description);
}
// Remove last comma of line
sensorHeader = sensorHeader.Remove(sensorHeader.Length - 1, 1);
// Add newline
sensorHeader += "\n";
// Units
sensorHeader += "YYYY/MM/DD @ hh:mm:ss, s,";
foreach (Sensor sensor in _Sensors)
sensorHeader += String.Format("{0},", sensor.Units);
// Remove last comma of line
sensorHeader = sensorHeader.Remove(sensorHeader.Length - 1, 1);
return sensorHeader;
}
}
private static string ProjectHeader
{
get
{
DateTime stop = (DateTime)_Project.Stop; // Cast to non-nullable
string projectHeader;
projectHeader = "Project details\r\n";
projectHeader += String.Format(",Customer, \"{0}\"\r\n", _Project.Customer);
projectHeader += String.Format(",P{0:000000} , \"{1}\"\r\n", _Project.ProjectID, _Project.ProjectDescription);
projectHeader += String.Format(",Sub {0:00} , \"{1}\"\r\n", _Project.SubProject, _Project.SubProjectDescription);
String stepD = _Project.StepDescription;
stepD = stepD.Replace(System.Environment.NewLine, " ");
Console.WriteLine(stepD);
projectHeader += String.Format(",Step {0:00} , \"{1}\"\r\n", _Project.Step, stepD);
projectHeader += String.Format(",Start, {0:0000}/{1:00}/{2:00} @ {3:00}:{4:00}\r\n", _Project.Start.Year, _Project.Start.Month, _Project.Start.Day, _Project.Start.Hour+1, _Project.Start.Minute);
projectHeader += String.Format(",Stop, {0:0000}/{1:00}/{2:00} @ {3:00}:{4:00}\r\n", stop.Year, stop.Month, stop.Day, stop.Hour+1, stop.Minute);
projectHeader += "\r\n";
projectHeader += ",Note: Time is observed in Central European Time+1 (UTC+1).\r\n";
return projectHeader;
}
}
private static string ChamberHeader
{
get
{
// return String.Format("Apparatus, \"{0:00000} {1}\"\r\n", _Chamber.MIDS, _Chamber.Description);
return String.Format("Apparatus, \"{0:00000}\"\r\n", _Chamber.MIDSandDescription);
}
}
public static string FileStamp
{
get
{
string str = "Maser Engineering B.V. Central Monitoring System";
//return String.Format("\r\n{0}{1}{2} {3}", Time.UTC.Year, Time.UTC.Month, Time.UTC.Day, str); // <-- original \r\n zorgt voor witregel wat problemen met META geeft
return String.Format("{0}{1}{2} {3}", Time.UTC.Year, Time.UTC.Month, Time.UTC.Day, str);
}
}
public static string DefaultExportFileName
{
get
{
return String.Format("P{0:00000}-{1:00}-{2:00} measurements in {3:00000}.csv", _Project.ProjectID, _Project.SubProject, _Project.Step, _Chamber.MIDS);
}
}
}
public class ExportDataItem
{
public DateTime TimeStamp
{
get { return _timeStamp; }
}
private DateTime _timeStamp;
private Double[] _sensorData;
private DateTime _startOfProject;
public ExportDataItem(DateTime timeStamp, Double firstValue, Int32 sensorCount, DateTime startOfProject)
{
_timeStamp = timeStamp;
_sensorData = new Double[sensorCount];
_sensorData[0] = firstValue;
_startOfProject = startOfProject;
}
public void AddValue(Double value, Int32 SensorNr)
{
try
{
if (SensorNr < _sensorData.Length)
_sensorData[SensorNr] = value;
}
catch { }
}
public override string ToString()
{
StringBuilder result = new StringBuilder();
var culture = CultureInfo.InvariantCulture; // Zorgt ervoor dat het decimaalteken altijd een punt is.
// exported time is UTC + 1 !!!!
// onderstaande regel zorgde voor fouten rond middernacht data zoals 00h01 werd geexporteerd als 24h01
// result.AppendFormat("{0:0000}/{1:00}/{2:00} @ {3:00}:{4:00}:{5:00},", TimeStamp.Year, TimeStamp.Month, TimeStamp.Day, TimeStamp.Hour+1, TimeStamp.Minute, TimeStamp.Second);
DateTime localTime = TimeStamp.AddHours(1); // UTC +1 correct verwerken
result.AppendFormat("{0:0000}/{1:00}/{2:00} @ {3:00}:{4:00}:{5:00},",
localTime.Year, localTime.Month, localTime.Day,
localTime.Hour, localTime.Minute, localTime.Second);
result.AppendFormat("{0}", ((TimeSpan)TimeStamp.Subtract(_startOfProject)).TotalSeconds);
foreach (Double value in _sensorData)
{
if (Math.Abs(value) < 1 && value != 0)
{
int k = 0;
Double v = Math.Abs(value);
while (v < 10 && k < 10)
{
v = v * 10;
k++;
}
string s = ",{0:0.";
for (int i = 0; i < k; i++)
{
s += "0";
}
s += "000}";
result.AppendFormat(culture,s, value);
}
else
{
result.AppendFormat(culture,",{0:0.00}", value);
}
}
//Console.WriteLine(result.ToString());
return result.ToString();
}
}
}

1810
FeanorProjects/FeanorProjects.Designer.cs generated Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,208 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{3CB34174-B0A7-4780-87BF-809BF5D68C86}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>FeanorProjects</RootNamespace>
<AssemblyName>FeanorProjects</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<TargetFrameworkProfile />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>P.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="HarfBuzzSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
<HintPath>..\packages\HarfBuzzSharp.7.3.0.3\lib\net462\HarfBuzzSharp.dll</HintPath>
</Reference>
<Reference Include="LiveCharts, Version=0.9.7.0, Culture=neutral, PublicKeyToken=0bc1f845d1ebb8df, processorArchitecture=MSIL">
<HintPath>..\packages\LiveCharts.0.9.7\lib\net45\LiveCharts.dll</HintPath>
</Reference>
<Reference Include="LiveCharts.WinForms, Version=0.9.7.1, Culture=neutral, PublicKeyToken=0bc1f845d1ebb8df, processorArchitecture=MSIL">
<HintPath>..\packages\LiveCharts.WinForms.0.9.7.1\lib\net45\LiveCharts.WinForms.dll</HintPath>
</Reference>
<Reference Include="LiveCharts.Wpf, Version=0.9.7.0, Culture=neutral, PublicKeyToken=0bc1f845d1ebb8df, processorArchitecture=MSIL">
<HintPath>..\packages\LiveCharts.Wpf.0.9.7\lib\net45\LiveCharts.Wpf.dll</HintPath>
</Reference>
<Reference Include="OpenTK, Version=3.1.0.0, Culture=neutral, PublicKeyToken=bad199fe84eb3df4, processorArchitecture=MSIL">
<HintPath>..\packages\OpenTK.3.1.0\lib\net20\OpenTK.dll</HintPath>
</Reference>
<Reference Include="OpenTK.GLControl, Version=3.1.0.0, Culture=neutral, PublicKeyToken=bad199fe84eb3df4, processorArchitecture=MSIL">
<HintPath>..\packages\OpenTK.GLControl.3.1.0\lib\net20\OpenTK.GLControl.dll</HintPath>
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="ScottPlot, Version=5.0.53.0, Culture=neutral, PublicKeyToken=86698dc10387c39e, processorArchitecture=MSIL">
<HintPath>..\packages\ScottPlot.5.0.53\lib\net462\ScottPlot.dll</HintPath>
</Reference>
<Reference Include="ScottPlot.WinForms, Version=5.0.53.0, Culture=neutral, PublicKeyToken=86698dc10387c39e, processorArchitecture=MSIL">
<HintPath>..\packages\ScottPlot.WinForms.5.0.53\lib\net462\ScottPlot.WinForms.dll</HintPath>
</Reference>
<Reference Include="SkiaSharp, Version=2.88.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
<HintPath>..\packages\SkiaSharp.2.88.9\lib\net462\SkiaSharp.dll</HintPath>
</Reference>
<Reference Include="SkiaSharp.HarfBuzz, Version=2.88.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
<HintPath>..\packages\SkiaSharp.HarfBuzz.2.88.9\lib\net462\SkiaSharp.HarfBuzz.dll</HintPath>
</Reference>
<Reference Include="SkiaSharp.Views.Desktop.Common, Version=2.88.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
<HintPath>..\packages\SkiaSharp.Views.Desktop.Common.2.88.9\lib\net462\SkiaSharp.Views.Desktop.Common.dll</HintPath>
</Reference>
<Reference Include="SkiaSharp.Views.WindowsForms, Version=2.88.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
<HintPath>..\packages\SkiaSharp.Views.WindowsForms.2.88.9\lib\net462\SkiaSharp.Views.WindowsForms.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Core" />
<Reference Include="System.Drawing.Common, Version=4.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Drawing.Common.4.7.3\lib\net461\System.Drawing.Common.dll</HintPath>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Net.Http.WebRequest" />
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Xaml" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="WindowsBase" />
<Reference Include="WindowsFormsIntegration" />
</ItemGroup>
<ItemGroup>
<Compile Include="Export.cs" />
<Compile Include="FeanorProjects.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FeanorProjects.Designer.cs">
<DependentUpon>FeanorProjects.cs</DependentUpon>
</Compile>
<Compile Include="Nodestatus.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Nodestatus.Designer.cs">
<DependentUpon>Nodestatus.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="FeanorProjects.resx">
<DependentUpon>FeanorProjects.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Nodestatus.resx">
<DependentUpon>Nodestatus.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="OpenTK.dll.config" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Maser.Feanor.Biz\Maser.Feanor.Biz.csproj">
<Project>{316710e0-2143-44cd-8779-a833a2987174}</Project>
<Name>Maser.Feanor.Biz</Name>
</ProjectReference>
<ProjectReference Include="..\Maser.Feanor\Maser.Feanor.Model.csproj">
<Project>{f96ec5eb-647c-405e-934f-08df688f55f8}</Project>
<Name>Maser.Feanor.Model</Name>
</ProjectReference>
<ProjectReference Include="..\MIDSComm\MIDSInterface.csproj">
<Project>{41c4bd97-e017-4877-8a87-9185a5315496}</Project>
<Name>MIDSInterface</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="P.ico" />
</ItemGroup>
<ItemGroup>
<Folder Include="FeanorManager\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\HarfBuzzSharp.NativeAssets.macOS.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.macOS.targets" Condition="Exists('..\packages\HarfBuzzSharp.NativeAssets.macOS.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.macOS.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\HarfBuzzSharp.NativeAssets.macOS.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.macOS.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\HarfBuzzSharp.NativeAssets.macOS.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.macOS.targets'))" />
<Error Condition="!Exists('..\packages\HarfBuzzSharp.NativeAssets.Win32.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.Win32.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\HarfBuzzSharp.NativeAssets.Win32.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.Win32.targets'))" />
<Error Condition="!Exists('..\packages\SkiaSharp.NativeAssets.macOS.2.88.9\build\net462\SkiaSharp.NativeAssets.macOS.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SkiaSharp.NativeAssets.macOS.2.88.9\build\net462\SkiaSharp.NativeAssets.macOS.targets'))" />
<Error Condition="!Exists('..\packages\SkiaSharp.NativeAssets.Win32.2.88.9\build\net462\SkiaSharp.NativeAssets.Win32.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SkiaSharp.NativeAssets.Win32.2.88.9\build\net462\SkiaSharp.NativeAssets.Win32.targets'))" />
<Error Condition="!Exists('..\packages\HarfBuzzSharp.NativeAssets.Linux.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.Linux.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\HarfBuzzSharp.NativeAssets.Linux.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.Linux.targets'))" />
<Error Condition="!Exists('..\packages\SkiaSharp.NativeAssets.Linux.NoDependencies.2.88.9\build\net462\SkiaSharp.NativeAssets.Linux.NoDependencies.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SkiaSharp.NativeAssets.Linux.NoDependencies.2.88.9\build\net462\SkiaSharp.NativeAssets.Linux.NoDependencies.targets'))" />
</Target>
<Import Project="..\packages\HarfBuzzSharp.NativeAssets.Win32.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.Win32.targets" Condition="Exists('..\packages\HarfBuzzSharp.NativeAssets.Win32.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.Win32.targets')" />
<Import Project="..\packages\SkiaSharp.NativeAssets.macOS.2.88.9\build\net462\SkiaSharp.NativeAssets.macOS.targets" Condition="Exists('..\packages\SkiaSharp.NativeAssets.macOS.2.88.9\build\net462\SkiaSharp.NativeAssets.macOS.targets')" />
<Import Project="..\packages\SkiaSharp.NativeAssets.Win32.2.88.9\build\net462\SkiaSharp.NativeAssets.Win32.targets" Condition="Exists('..\packages\SkiaSharp.NativeAssets.Win32.2.88.9\build\net462\SkiaSharp.NativeAssets.Win32.targets')" />
<Import Project="..\packages\HarfBuzzSharp.NativeAssets.Linux.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.Linux.targets" Condition="Exists('..\packages\HarfBuzzSharp.NativeAssets.Linux.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.Linux.targets')" />
<Import Project="..\packages\SkiaSharp.NativeAssets.Linux.NoDependencies.2.88.9\build\net462\SkiaSharp.NativeAssets.Linux.NoDependencies.targets" Condition="Exists('..\packages\SkiaSharp.NativeAssets.Linux.NoDependencies.2.88.9\build\net462\SkiaSharp.NativeAssets.Linux.NoDependencies.targets')" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -0,0 +1,292 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBox1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
fwB12M4p+yMg8gAAAABJRU5ErkJggg==
</value>
</data>
<metadata name="dgvProjects_Project.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dgvProjects_Duration.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dgvProjects_Stepname.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dgvProjects_Chamber.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dgvProjects_Customer.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="pboxProjectWarning.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
fwB12M4p+yMg8gAAAABJRU5ErkJggg==
</value>
</data>
<metadata name="menu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>156, 17</value>
</metadata>
<metadata name="timerProjectDetails.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>239, 17</value>
</metadata>
<metadata name="timerUtcClock.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>394, 17</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dgvSensors_Column.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="FolderBrowserDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>522, 17</value>
</metadata>
<metadata name="sensorConditions.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>687, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>48</value>
</metadata>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAKjAAAAEACADoDQAAFgAAACgAAAAqAAAAYAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAQAAAAAAAgAAAAMADgAAABIAAAAAAAUAAQIAAAYGAgAMBgQABwcHAAAAIgAMCQYACAgUACwR
AgAcEQcAMBIAABYXEAAWFhYAJBsKAAQaLwARIC4AKCgeADAwKwAwMDAASjghAEw5IgBPPCQAKjhGAAw0
XABuTC4AVEtEABtLdgB0XkUATlxkAJNmPABEW3UAZGRSAIBmSQB/Zk4Am25DAJ5xRQCCcF8AWWx/AH1z
XwB2b28AiXNdAENvjABNeI8AnIJtAJuDegCJhYAAoYltAK2PYgBfiZUAkIqIAK6VaAClmYgAf5WrAJGc
ogDCsJsAra2tAKWtsAC1sa8AybWiAL+0qgCktMIAvruzANXGsQDZx68Ar8jYALPI2QDKy9AA0c7HAMzM
0QDa08cA6dvIAOrdzADM2e4A5eLcAPPj2ADN4O0A6ePcAN3j6wDy6NgA6OjoAPXr2wD27NwA9e7gAOPq
9QDu7u4A8/DnAO/v7wDw8O8A6PHxAPnx7QDx8fEA5vH3AP/15QD59O0A5vP3APX08wD19fUA9vb2APD2
+ADy9fsA/vnwAPj49QD/+fAA/frzAP379gD7+voA+fr9AP389gD1+v8A//z5APb8/wD+/fwA/v39AP7+
/AD6/v4A/v7/APj//wD///4A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAfHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8AAB8fHx8fHx8fHx8
fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHwAAHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8
fHx8fHx8fHx8fHx8fHx8fAAAfHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8
AAB8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHwAAHx8fHx8fHx8WT09PT09
P2x8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fAAAfHx8fHx8fHxOAAAAAAAbYnx8fHx8fHx8fHx8fHx8
fHx8fHx8fHx8fHx8AAB8fHx8fHx8fE4AAAAAABtifHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHwAAHx8
fHx8fHx8TgAAAAAAG2J8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fAAAfHx8fHx8fHxOAAAAAAAbYnx8
fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8AAB8fHx8fHx8fE4AAAAAABtifHx8fHx8fHx8fHx8fHx8fHx8
fHx8fHx8fHwAAHx8fHx8fHx8TgAAAAAAG2J8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fAAAfHx8fHx8
fHxOAAAAAAAbYnx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8AAB8fHx8fHx8fE4AAAAAABtifHx8fHx8
fHx8fHx8fHx8fHx8fHx8fHx8fHwAAHx8fHx8fHx8TgAAAAAAG2J8fHx8fHx8fHx8fHx8fHx8fHx8fHx8
fHx8fAAAfHx8fHx8fHxOAAAAAAAbYnx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8AAB8fHx8fHx8fE4A
AAAAABtifHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHwAAHx8fHx8fHx8TgAAAAAAG2J8fHx8fHx8fHx8
fHx8fHx8fHx8fHx8fHx8fAAAfHx8fHx8fHxOAAAAAAAZVGBgYGBgZW98fHx8fHx8fHx8fHx8fHx8fHx8
AAB8fHx8fHx8fE4AAAAAAAgXGBgYGBgfLTdDUnd8fHx8fHx8fHx8fHx8fHwAAHx8fHx8fHx8TgAAAAAA
AAAAAAAAAAAAAAAMKklzfHx8fHx8fHx8fHx8fAAAfHx8fHx8fHxOAAAAAAAAAAAAAAAAAAAAAAAADzJb
fHx8fHx8fHx8fHx8AAB8fHx8fHx8fE4AAAAAAAAAAAAAAAAAAAAAAAAAACFQfHx8fHx8fHx8fHwAAHx8
fHx8fHx8TgAAAAAAAAAAAAAAAAAAAAAAAAAAAB5YfHx8fHx8fHx8fAAAfHx8fHx8fHxOAAAAAAAaVmZm
ZmZVSj4iBgAAAAAAATFufHx8fHx8fHx8AAB8fHx8fHx8fE4AAAAAABtifHx8fHx8fGhCFQAAAAAABUR8
fHx8fHx8fHwAAHx8fHx8fHx8TgAAAAAAG2J8fHx8fHx8fHxHFAAAAAAAJ218fHx8fHx8fAAAfHx8fHx8
fHxOAAAAAAAbYnx8fHx8fHx8fHg6AAAAAAAOTHx8fHx8fHx8AAB8fHx8fHx8fE4AAAAAABtifHx8fHx8
fHx8fFELAAAAAABAfHx8fHx8fHwAAHx8fHx8fHx8TgAAAAAAG2J8fHx8fHx8fHx8aSAAAAAAADh8fHx8
fHx8fAAAfHx8fHx8fHxOAAAAAAAbYnx8fHx8fHx8fHx0MAAAAAAAKXx8fHx8fHx8AAB8fHx8fHx8fE4A
AAAAABtifHx8fHx8fHx8fHo2AAAAAAAjfHx8fHx8fHwAAHx8fHx8fHx8TgAAAAAAG2J8fHx8fHx8fHx8
ci8AAAAAACh8fHx8fHx8fAAAfHx8fHx8fHxOAAAAAAAbYnx8fHx8fHx8fHxhHQAAAAAANXx8fHx8fHx8
AAB8fHx8fHx8fE4AAAAAABtifHx8fHx8fHx8fEYCAAAAAAA8fHx8fHx8fHwAAHx8fHx8fHx8TgAAAAAA
G2J8fHx8fHx8fHxkJAAAAAAAEE18fHx8fHx8fAAAfHx8fHx8fHxOAAAAAAAbYnx8fHx8fHx5UysDAAAA
AAAmanx8fHx8fHx8AAB8fHx8fHx8fE4AAAAAABpXZ2dnZ2deSDscAAAAAAAABEV8fHx8fHx8fHwAAHx8
fHx8fHx8TgAAAAAABxESEhISDQAAAAAAAAAAAAA0cXx8fHx8fHx8fAAAfHx8fHx8fHxOAAAAAAAAAAAA
AAAAAAAAAAAAAAAALl98fHx8fHx8fHx8AAB8fHx8fHx8fE4AAAAAAAAAAAAAAAAAAAAAAAAAEzljfHx8
fHx8fHx8fHwAAHx8fHx8fHx8TgAAAAAAAAAAAAAAAAAAAAAACSxLdXx8fHx8fHx8fHx8fAAAfHx8fHx8
fHxOAAAAAAAAAAAAAAAAChYlM0FPdnx8fHx8fHx8fHx8fHx8AAB8fHx8fHx8fHBaWlpaWlpaWlpaWlpc
XWt7fHx8fHx8fHx8fHx8fHx8fHwAAHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8
fHx8fAAAfHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8AAB8fHx8fHx8fHx8
fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHwAAHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8
fHx8fHx8fHx8fHx8fHx8fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</value>
</data>
</root>

124
FeanorProjects/Nodestatus.Designer.cs generated Normal file
View File

@@ -0,0 +1,124 @@
namespace FeanorConfig
{
partial class Nodestatus
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.webBrowser1 = new System.Windows.Forms.WebBrowser();
this.UpdateStatus = new System.Windows.Forms.Button();
this.Close = new System.Windows.Forms.Button();
this.nodeURL = new System.Windows.Forms.TextBox();
this.UpdateStatusCheckBox = new System.Windows.Forms.CheckBox();
this.SuspendLayout();
//
// webBrowser1
//
this.webBrowser1.Location = new System.Drawing.Point(12, 73);
this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20);
this.webBrowser1.Name = "webBrowser1";
this.webBrowser1.Size = new System.Drawing.Size(936, 861);
this.webBrowser1.TabIndex = 44;
this.webBrowser1.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.webBrowser1_DocumentCompleted);
//
// UpdateStatus
//
this.UpdateStatus.BackColor = System.Drawing.Color.DimGray;
this.UpdateStatus.Font = new System.Drawing.Font("Century Gothic", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.UpdateStatus.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
this.UpdateStatus.Location = new System.Drawing.Point(12, 12);
this.UpdateStatus.Name = "UpdateStatus";
this.UpdateStatus.Size = new System.Drawing.Size(145, 55);
this.UpdateStatus.TabIndex = 45;
this.UpdateStatus.Text = "Update status";
this.UpdateStatus.UseVisualStyleBackColor = false;
this.UpdateStatus.Click += new System.EventHandler(this.UpdateStatus_Click);
//
// Close
//
this.Close.BackColor = System.Drawing.Color.DimGray;
this.Close.Font = new System.Drawing.Font("Century Gothic", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Close.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
this.Close.Location = new System.Drawing.Point(163, 12);
this.Close.Name = "Close";
this.Close.Size = new System.Drawing.Size(145, 55);
this.Close.TabIndex = 46;
this.Close.Text = "Close";
this.Close.UseVisualStyleBackColor = false;
this.Close.Click += new System.EventHandler(this.Close_Click);
//
// nodeURL
//
this.nodeURL.BackColor = System.Drawing.Color.Gray;
this.nodeURL.Font = new System.Drawing.Font("Century Gothic", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.nodeURL.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
this.nodeURL.Location = new System.Drawing.Point(585, 26);
this.nodeURL.Name = "nodeURL";
this.nodeURL.Size = new System.Drawing.Size(363, 27);
this.nodeURL.TabIndex = 47;
this.nodeURL.TextChanged += new System.EventHandler(this.nodeURL_TextChanged);
//
// UpdateStatusCheckBox
//
this.UpdateStatusCheckBox.AutoSize = true;
this.UpdateStatusCheckBox.Font = new System.Drawing.Font("Century Gothic", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.UpdateStatusCheckBox.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
this.UpdateStatusCheckBox.Location = new System.Drawing.Point(330, 28);
this.UpdateStatusCheckBox.Name = "UpdateStatusCheckBox";
this.UpdateStatusCheckBox.Size = new System.Drawing.Size(165, 25);
this.UpdateStatusCheckBox.TabIndex = 48;
this.UpdateStatusCheckBox.Text = "Update every 10s";
this.UpdateStatusCheckBox.UseVisualStyleBackColor = true;
this.UpdateStatusCheckBox.CheckedChanged += new System.EventHandler(this.UpdateStatusCheckBox_CheckedChanged);
//
// Nodestatus
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.DimGray;
this.ClientSize = new System.Drawing.Size(986, 946);
this.Controls.Add(this.UpdateStatusCheckBox);
this.Controls.Add(this.nodeURL);
this.Controls.Add(this.Close);
this.Controls.Add(this.UpdateStatus);
this.Controls.Add(this.webBrowser1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Name = "Nodestatus";
this.Text = "Nodestatus";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
public System.Windows.Forms.WebBrowser webBrowser1;
private System.Windows.Forms.Button UpdateStatus;
private System.Windows.Forms.Button Close;
public System.Windows.Forms.TextBox nodeURL;
private System.Windows.Forms.CheckBox UpdateStatusCheckBox;
}
}

View File

@@ -0,0 +1,93 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using System.Threading;
namespace FeanorConfig
{
public partial class Nodestatus : Form
{
public void Start()
{
while( UpdateStatusCheckBox.Checked == true)
{
this.Invoke(new Action(() => { UpdateStatus.PerformClick();})); // update cms-2 node status (by clicking on update button)
Thread.Sleep(10000); // 10 sec delay
}
}
public Nodestatus()
{
InitializeComponent();
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
}
public void UpdateStatus_Click(object sender, EventArgs e) // update node status
{
try
{
using (WebClient client = new WebClient())
{
string dta = client.DownloadString(nodeURL.Text); // get url for corresponding node
Nodestatus nodestate = new Nodestatus();
webBrowser1.Navigate("about:blank");
if (webBrowser1.Document != null)
{
webBrowser1.Document.Write(string.Empty); // empty viewer
}
webBrowser1.DocumentText = dta; // place incoming html in viewer
}
}
catch
{
Console.WriteLine("Status request error!");
System.Windows.Forms.MessageBox.Show("No response from CMS-2 node");
}
}
private void Close_Click(object sender, EventArgs e)
{
this.Close();
}
private void nodeURL_TextChanged(object sender, EventArgs e)
{
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
}
private void UpdateStatusCheckBox_CheckedChanged(object sender, EventArgs e)
{
Thread rtd = new Thread(Start); // initialize thread
if (UpdateStatusCheckBox.Checked == true)
{
rtd.Start(); // start thread
}
else if (UpdateStatusCheckBox.Checked == false)
{
rtd.Abort();
}
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,25 @@
<configuration>
<dllmap os="linux" dll="opengl32.dll" target="libGL.so.1"/>
<dllmap os="linux" dll="glu32.dll" target="libGLU.so.1"/>
<dllmap os="linux" dll="openal32.dll" target="libopenal.so.1"/>
<dllmap os="linux" dll="alut.dll" target="libalut.so.0"/>
<dllmap os="linux" dll="opencl.dll" target="libOpenCL.so"/>
<dllmap os="linux" dll="libX11" target="libX11.so.6"/>
<dllmap os="linux" dll="libXi" target="libXi.so.6"/>
<dllmap os="linux" dll="SDL2.dll" target="libSDL2-2.0.so.0"/>
<dllmap os="osx" dll="opengl32.dll" target="/System/Library/Frameworks/OpenGL.framework/OpenGL"/>
<dllmap os="osx" dll="openal32.dll" target="/System/Library/Frameworks/OpenAL.framework/OpenAL" />
<dllmap os="osx" dll="alut.dll" target="/System/Library/Frameworks/OpenAL.framework/OpenAL" />
<dllmap os="osx" dll="libGLES.dll" target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES" />
<dllmap os="osx" dll="libGLESv1_CM.dll" target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES" />
<dllmap os="osx" dll="libGLESv2.dll" target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES" />
<dllmap os="osx" dll="opencl.dll" target="/System/Library/Frameworks/OpenCL.framework/OpenCL"/>
<dllmap os="osx" dll="SDL2.dll" target="libSDL2.dylib"/>
<!-- XQuartz compatibility (X11 on Mac) -->
<dllmap os="osx" dll="libGL.so.1" target="/usr/X11/lib/libGL.dylib"/>
<dllmap os="osx" dll="libX11" target="/usr/X11/lib/libX11.dylib"/>
<dllmap os="osx" dll="libXcursor.so.1" target="/usr/X11/lib/libXcursor.dylib"/>
<dllmap os="osx" dll="libXi" target="/usr/X11/lib/libXi.dylib"/>
<dllmap os="osx" dll="libXinerama" target="/usr/X11/lib/libXinerama.dylib"/>
<dllmap os="osx" dll="libXrandr.so.2" target="/usr/X11/lib/libXrandr.dylib"/>
</configuration>

BIN
FeanorProjects/P.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

22
FeanorProjects/Program.cs Normal file
View File

@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace FeanorProjects
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FeanorProjects());
}
}
}

View File

@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("FeanorProjects")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("FeanorProjects")]
[assembly: AssemblyCopyright("Copyright © 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("3cb34174-b0a7-4780-87bf-809bf5d68c86")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,63 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace FeanorProjects.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("FeanorProjects.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

View File

@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace FeanorProjects.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}

View File

@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="HarfBuzzSharp" version="7.3.0.3" targetFramework="net472" />
<package id="HarfBuzzSharp.NativeAssets.Linux" version="7.3.0.3" targetFramework="net472" />
<package id="HarfBuzzSharp.NativeAssets.macOS" version="7.3.0.3" targetFramework="net472" />
<package id="HarfBuzzSharp.NativeAssets.Win32" version="7.3.0.3" targetFramework="net472" />
<package id="LiveCharts" version="0.9.7" targetFramework="net472" />
<package id="LiveCharts.WinForms" version="0.9.7.1" targetFramework="net472" />
<package id="LiveCharts.Wpf" version="0.9.7" targetFramework="net472" />
<package id="OpenTK" version="3.1.0" targetFramework="net472" />
<package id="OpenTK.GLControl" version="3.1.0" targetFramework="net472" />
<package id="ScottPlot" version="5.0.53" targetFramework="net472" />
<package id="ScottPlot.WinForms" version="5.0.53" targetFramework="net472" />
<package id="SkiaSharp" version="2.88.9" targetFramework="net472" />
<package id="SkiaSharp.HarfBuzz" version="2.88.9" targetFramework="net472" />
<package id="SkiaSharp.NativeAssets.Linux.NoDependencies" version="2.88.9" targetFramework="net472" />
<package id="SkiaSharp.NativeAssets.macOS" version="2.88.9" targetFramework="net472" />
<package id="SkiaSharp.NativeAssets.Win32" version="2.88.9" targetFramework="net472" />
<package id="SkiaSharp.Views.Desktop.Common" version="2.88.9" targetFramework="net472" />
<package id="SkiaSharp.Views.WindowsForms" version="2.88.9" targetFramework="net472" />
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
<package id="System.Drawing.Common" version="4.7.3" targetFramework="net472" />
<package id="System.Memory" version="4.5.5" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net472" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net472" />
</packages>