using Microsoft.Win32;
|
using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace SHARP_CLAS_UI
|
{
|
public class Main_Recipe_Manager
|
{
|
#region Define
|
string str_extension = ".xml";
|
#endregion
|
|
#region Property
|
private static readonly Lazy<Main_Recipe_Manager> _instatnce = new Lazy<Main_Recipe_Manager>(() => new Main_Recipe_Manager());
|
|
public static Main_Recipe_Manager Instance
|
{
|
get
|
{
|
return _instatnce.Value;
|
}
|
}
|
#endregion
|
|
#region Field
|
private Dictionary<string, Main_Recipe> Recipes;
|
|
private Xml_Manager<Main_Recipe> xml_manager = new Xml_Manager<Main_Recipe>();
|
|
private string file_path;
|
#endregion
|
|
#region Construct
|
public Main_Recipe_Manager()
|
{
|
Recipes = new Dictionary<string, Main_Recipe>();
|
Get_Panel_Type_Info_Recipes();
|
}
|
#endregion
|
#region Function
|
private void Get_File_Path()
|
{
|
RegistryKey rkk = Registry.CurrentUser.OpenSubKey(Equipment.Registry_Path, true);
|
|
try
|
{
|
if (rkk == null)
|
{
|
rkk = Registry.CurrentUser.CreateSubKey(Equipment.Registry_Path);
|
|
rkk.SetValue("MAIN_RECIPE_PATH", @"C:\SHARP_CLAS\Config\MAIN_RECIPE\");
|
file_path = @"C:\SHARP_CLAS\Config\MAIN_RECIPE\";
|
}
|
else
|
{
|
object value = rkk.GetValue("MAIN_RECIPE_PATH");
|
if (value == null)
|
{
|
rkk.SetValue("MAIN_RECIPE_PATH", @"C:\SHARP_CLAS\Config\MAIN_RECIPE\");
|
file_path = @"C:\SHARP_CLAS\Config\MAIN_RECIPE\";
|
}
|
else
|
{
|
file_path = value.ToString();
|
}
|
}
|
}
|
finally
|
{
|
rkk.Close();
|
}
|
}
|
|
private void Get_Panel_Type_Info_Recipes()
|
{
|
Get_File_Path();
|
|
Recipes.Clear();
|
|
if (Directory.Exists(file_path))
|
{
|
DirectoryInfo di = new DirectoryInfo(file_path);
|
FileInfo[] recipes = di.GetFiles($"*{str_extension}");
|
|
foreach (FileInfo recipe in recipes)
|
{
|
Main_Recipe main_recipe = new Main_Recipe();
|
|
if (xml_manager.Try_Read_File(file_path + recipe, out main_recipe))
|
{
|
if (Recipes.ContainsKey(main_recipe.Name))
|
{
|
Recipes[main_recipe.Name] = main_recipe;
|
}
|
else
|
{
|
Recipes.Add(main_recipe.Name, main_recipe);
|
}
|
}
|
}
|
}
|
else
|
{
|
Directory.CreateDirectory(file_path);
|
}
|
}
|
|
public void Refresh_Main_Recipe()
|
{
|
Get_Panel_Type_Info_Recipes();
|
}
|
|
public bool Exist_Recipe(string name)
|
{
|
foreach (Main_Recipe recipe in Recipes.Values)
|
{
|
if (name == recipe.Name)
|
return true;
|
}
|
|
return false;
|
}
|
|
public bool Create_Recipe(string name)
|
{
|
if (!Exist_Recipe(name))
|
{
|
Main_Recipe recipe = new Main_Recipe();
|
recipe.Name = name;
|
|
if (xml_manager.Try_Save_File(file_path + name + str_extension, recipe))
|
{
|
Recipes.Add(name, recipe);
|
return true;
|
}
|
else
|
return false;
|
}
|
else
|
return false;
|
}
|
|
public bool Delete_Recipe(string name)
|
{
|
if (Exist_Recipe(name))
|
{
|
Recipes.Remove(name);
|
|
FileInfo fi = new FileInfo(file_path + name + str_extension);
|
|
if (fi.Exists)
|
{
|
fi.Delete();
|
}
|
}
|
|
return true;
|
}
|
|
public bool Save_Recipe(string name, Main_Recipe recipe)
|
{
|
if (Exist_Recipe(name))
|
{
|
DateTime dt = Recipes[name].Create_Time;
|
Recipes[name] = recipe.Clone();
|
Recipes[name].Name = name;
|
Recipes[name].Create_Time = dt;
|
|
if (xml_manager.Try_Save_File(file_path + name + str_extension, Recipes[name]))
|
{
|
return true;
|
}
|
else
|
return false;
|
}
|
else
|
{
|
return false;
|
}
|
}
|
|
public bool Try_Get_Recipe(string name, out Main_Recipe recipe)
|
{
|
if (Exist_Recipe(name))
|
{
|
recipe = Recipes[name].Clone();
|
return true;
|
}
|
else
|
{
|
recipe = null;
|
return false;
|
}
|
}
|
|
public Main_Recipe Get_Recipe(string name)
|
{
|
if (Exist_Recipe(name))
|
{
|
return Recipes[name].Clone();
|
}
|
else
|
{
|
return null;
|
}
|
}
|
|
public Main_Recipe[] Get_Recipes()
|
{
|
List<Main_Recipe> recipes = new List<Main_Recipe>();
|
recipes.Clear();
|
|
foreach (Main_Recipe info in Recipes.Values)
|
{
|
recipes.Add(info.Clone());
|
}
|
|
return recipes.ToArray();
|
}
|
#endregion
|
}
|
}
|