You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
277 lines
11 KiB
277 lines
11 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Windows;
|
|
using System.Windows.Media;
|
|
using System.Xml;
|
|
|
|
namespace CoreTest
|
|
{
|
|
public sealed class ConfigCache
|
|
{
|
|
public const string PATH = @"C:\DataConfig\client.xml";
|
|
|
|
static ConfigCache()
|
|
{
|
|
_windows = new Dictionary<string, Rect>();
|
|
string path = PATH;
|
|
if (File.Exists(path))
|
|
{
|
|
try
|
|
{
|
|
using (var reader = XmlTextReader.Create(path))
|
|
{
|
|
while (reader.Read())
|
|
{
|
|
if (reader.NodeType == XmlNodeType.Element)
|
|
{
|
|
switch (reader.Name)
|
|
{
|
|
case "Server":
|
|
{
|
|
if (reader.MoveToAttribute("AlarmLimit"))
|
|
int.TryParse(reader.Value, out _alarmLimit);
|
|
if (reader.MoveToAttribute("Cycle"))
|
|
int.TryParse(reader.Value, out _cycle);
|
|
}
|
|
break;
|
|
case "RecipeDisplay":
|
|
{
|
|
if (reader.MoveToAttribute("Row"))
|
|
int.TryParse(reader.Value, out _row);
|
|
if (reader.MoveToAttribute("RowByCount"))
|
|
int.TryParse(reader.Value, out _rowbycount);
|
|
if (reader.MoveToAttribute("RowHeight"))
|
|
int.TryParse(reader.Value, out _rowheight);
|
|
if (reader.MoveToAttribute("ColWidth"))
|
|
int.TryParse(reader.Value, out _colwidth);
|
|
}
|
|
break;
|
|
case "DataDisplay":
|
|
{
|
|
if (reader.MoveToAttribute("HdaLargeTick"))
|
|
int.TryParse(reader.Value, out _hda_l_tick);
|
|
if (reader.MoveToAttribute("HdaSmallTick"))
|
|
int.TryParse(reader.Value, out _hda_s_tick);
|
|
if (reader.MoveToAttribute("RtWaitTick"))
|
|
int.TryParse(reader.Value, out _rtWaitTick);
|
|
if (reader.MoveToAttribute("RtCap"))
|
|
int.TryParse(reader.Value, out _rtCap);
|
|
}
|
|
break;
|
|
case "WindowSet":
|
|
{
|
|
if (reader.MoveToAttribute("Background"))
|
|
_background = new SolidColorBrush((Color)ColorConverter.ConvertFromString(reader.Value));
|
|
}
|
|
break;
|
|
case "Window":
|
|
{
|
|
string name = null;
|
|
double left, top, width, height; left = top = width = height = 0;
|
|
if (reader.MoveToAttribute("Name"))
|
|
name = reader.Value;
|
|
if (reader.MoveToAttribute("Left"))
|
|
double.TryParse(reader.Value, out left);
|
|
if (reader.MoveToAttribute("Top"))
|
|
double.TryParse(reader.Value, out top);
|
|
if (reader.MoveToAttribute("Width"))
|
|
double.TryParse(reader.Value, out width);
|
|
if (reader.MoveToAttribute("Height"))
|
|
double.TryParse(reader.Value, out height);
|
|
if (!string.IsNullOrEmpty(name))
|
|
{
|
|
if (double.IsInfinity(left) || double.IsInfinity(top) || double.IsInfinity(width) || double.IsInfinity(height))
|
|
_windows.Add(name, new Rect());
|
|
else
|
|
_windows.Add(name, new Rect(left, top, width, height));
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception err)
|
|
{
|
|
App.AddErrorLog(err);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void SaveConfig()
|
|
{
|
|
try
|
|
{
|
|
using (var writer = XmlTextWriter.Create(PATH))
|
|
{
|
|
writer.WriteStartDocument();
|
|
writer.WriteStartElement("Client");
|
|
writer.WriteStartElement("Server");
|
|
if (ConfigCache.AlarmLimit > 0)
|
|
writer.WriteAttributeString("AlarmLimit", ConfigCache.AlarmLimit.ToString());
|
|
if (ConfigCache.Cycle > 0)
|
|
writer.WriteAttributeString("Cycle", ConfigCache.Cycle.ToString());
|
|
writer.WriteEndElement();
|
|
writer.WriteStartElement("RecipeDisplay");
|
|
if (ConfigCache.Row > 0)
|
|
writer.WriteAttributeString("Row", ConfigCache.Row.ToString());
|
|
if (ConfigCache.RowByCount > 0)
|
|
writer.WriteAttributeString("RowByCount", ConfigCache.RowByCount.ToString());
|
|
if (ConfigCache.RowHeight > 0)
|
|
writer.WriteAttributeString("RowHeight", ConfigCache.RowHeight.ToString());
|
|
if (ConfigCache.ColWidth > 0)
|
|
writer.WriteAttributeString("ColWidth", ConfigCache.ColWidth.ToString());
|
|
writer.WriteEndElement();
|
|
writer.WriteStartElement("DataDisplay");
|
|
if (ConfigCache.HdaLargeTick > 0)
|
|
writer.WriteAttributeString("HdaLargeTick", ConfigCache.HdaLargeTick.ToString());
|
|
if (ConfigCache.HdaLargeTick > 0)
|
|
writer.WriteAttributeString("HdaSmallTick", ConfigCache.HdaSmallTick.ToString());
|
|
if (ConfigCache.HdaLargeTick > 0)
|
|
writer.WriteAttributeString("RtWaitTick", ConfigCache.RtWaitTick.ToString());
|
|
if (ConfigCache.HdaLargeTick > 0)
|
|
writer.WriteAttributeString("RtCap", ConfigCache.RtCap.ToString());
|
|
writer.WriteEndElement();
|
|
writer.WriteStartElement("WindowSet");
|
|
var background = ConfigCache.Background;
|
|
if (background != null)
|
|
writer.WriteAttributeString("Background", background.ToString());
|
|
foreach (var item in ConfigCache.Windows)
|
|
{
|
|
writer.WriteStartElement("Window");
|
|
Rect rec = item.Value;
|
|
if (double.IsInfinity(rec.Width) || double.IsInfinity(rec.Height) || double.IsInfinity(rec.Top) || double.IsInfinity(rec.Left))
|
|
rec = new Rect();
|
|
writer.WriteAttributeString("Name", item.Key);
|
|
writer.WriteAttributeString("Left", rec.Left.ToString());
|
|
writer.WriteAttributeString("Top", rec.Top.ToString());
|
|
writer.WriteAttributeString("Width", rec.Width.ToString());
|
|
writer.WriteAttributeString("Height", rec.Height.ToString());
|
|
writer.WriteEndElement();
|
|
}
|
|
writer.WriteEndElement();
|
|
writer.WriteEndElement();
|
|
}
|
|
}
|
|
catch (Exception err)
|
|
{
|
|
App.AddErrorLog(err);
|
|
}
|
|
}
|
|
|
|
private static SolidColorBrush _background = Brushes.DarkSlateGray;
|
|
public static SolidColorBrush Background
|
|
{
|
|
get
|
|
{
|
|
return _background;
|
|
}
|
|
set
|
|
{
|
|
_background = value;
|
|
}
|
|
}
|
|
|
|
private static int _hda_l_tick = 60;
|
|
public static int HdaLargeTick
|
|
{
|
|
get
|
|
{
|
|
return _hda_l_tick;
|
|
}
|
|
}
|
|
|
|
private static int _hda_s_tick = 10;
|
|
public static int HdaSmallTick
|
|
{
|
|
get
|
|
{
|
|
return _hda_s_tick;
|
|
}
|
|
}
|
|
|
|
private static int _rtWaitTick = 5000;
|
|
public static int RtWaitTick
|
|
{
|
|
get
|
|
{
|
|
return _rtWaitTick;
|
|
}
|
|
}
|
|
|
|
private static int _rtCap = 200;
|
|
public static int RtCap
|
|
{
|
|
get
|
|
{
|
|
return _rtCap;
|
|
}
|
|
}
|
|
|
|
private static int _alarmLimit = 1000;
|
|
public static int AlarmLimit
|
|
{
|
|
get
|
|
{
|
|
return _alarmLimit;
|
|
}
|
|
}
|
|
|
|
private static int _cycle = 60000;
|
|
public static int Cycle
|
|
{
|
|
get
|
|
{
|
|
return _cycle;
|
|
}
|
|
}
|
|
|
|
private static int _row = 5;
|
|
public static int Row
|
|
{
|
|
get
|
|
{
|
|
return _row;
|
|
}
|
|
}
|
|
|
|
private static int _rowbycount = 15;
|
|
public static int RowByCount
|
|
{
|
|
get
|
|
{
|
|
return _rowbycount;
|
|
}
|
|
}
|
|
|
|
private static int _rowheight = 40;
|
|
public static int RowHeight
|
|
{
|
|
get
|
|
{
|
|
return _rowheight;
|
|
}
|
|
}
|
|
|
|
private static int _colwidth = 150;
|
|
public static int ColWidth
|
|
{
|
|
get
|
|
{
|
|
return _colwidth;
|
|
}
|
|
}
|
|
|
|
private static Dictionary<string, Rect> _windows;
|
|
public static Dictionary<string, Rect> Windows
|
|
{
|
|
get
|
|
{
|
|
return _windows;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|