using IniParser;
using Prism.Ioc;
using SWS.Commons;
using SWS.Model;
using SWS.Service;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
using Unity;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
namespace SWS.CAD
{
public class GlobalObje
{
public static string templateForDrawing = "普通图框";
public static string editorPre = "DI_Electrical ";
public static string TemplateFile_Template = "普通图框";
public enum DBConst
{
///
/// 图纸类型
///
Be_DrawingType,
///
/// 图纸阶段
///
Be_DrawingStage,
///
/// 图纸系统
///
Be_DrawingSystem,
///
/// 材料统计
///
Be_MaterialCensus,
///
/// 材料范围
///
Be_MaterialRange
}
#region 图纸类型
static List _dwgType;
///
/// 初始化图纸类型列表
///
///
public static List DwgType()
{
var res0 = new ec_dataitem { DataItemName = "图纸类型", DataItemCode = DBConst.Be_DrawingType.ToString() };
if (_dwgType == null)
{
var serv = GlobalObject.container.Resolve();
var res = Task.Run(() => serv.GetDetails(DBConst.Be_DrawingType.ToString()));
var res2 = res.Result;
return res2;
}
else
{
return _dwgType;
}
}
#endregion
#region 材料范围
static List _dwgMaterialRange;
///
/// 初始化材料材料范围
///
///
public static List DwgMaterialRange()
{
var res0 = new ec_dataitem { DataItemName = "材料范围", DataItemCode = DBConst.Be_MaterialRange.ToString() };
if (_dwgMaterialRange == null)
{
var serv = GlobalObject.container.Resolve();
var res = Task.Run(() => serv.GetDetails(DBConst.Be_MaterialRange.ToString()));
var res2 = res.Result;
return res2;
}
else
{
return _dwgMaterialRange;
}
}
#endregion
#region 材料统计
static List _dwgMaterialCensus;
///
/// 初始化材料统计列表
///
///
public static List DwgMaterialCensus()
{
var res0 = new ec_dataitem { DataItemName = "材料统计", DataItemCode = DBConst.Be_MaterialCensus.ToString() };
if (_dwgMaterialCensus == null)
{
var serv = GlobalObject.container.Resolve();
var res = Task.Run(() => serv.GetDetails(DBConst.Be_MaterialCensus.ToString()));
var res2 = res.Result;
return res2;
}
else
{
return _dwgMaterialCensus;
}
}
#endregion
#region 图纸阶段
static List _dwgStage;
///
/// 初始化图纸阶段列表
///
///
public static List DwgStage()
{
var res0 = new ec_dataitem { DataItemName = "图纸阶段", DataItemCode = DBConst.Be_DrawingStage.ToString() };
if (_dwgStage == null)
{
var serv = GlobalObject.container.Resolve();
var res = Task.Run(() => serv.GetDetails(DBConst.Be_DrawingStage.ToString()));
var res2 = res.Result;
return res2;
}
else
{
return _dwgStage;
}
}
#endregion
#region 图纸系统
static ObservableCollection _dwgSystem;
///
/// 初始化图纸系统列表
///
///
public static ObservableCollection DwgSystem()
{
var res0 = new ec_dataitem { DataItemName = "图纸系统", DataItemCode = DBConst.Be_DrawingSystem.ToString() };
if (_dwgSystem == null)
{
var serv = GlobalObject.container.Resolve();
var res = Task.Run(() => serv.GetDetails(DBConst.Be_DrawingSystem.ToString()));
var res2 = res.Result;
var res3 = DataItemDetailsToTree(res2);
return res3;
}
else
{
return _dwgSystem;
}
}
#endregion
#region DataItemDetail列表转换成树形结果
///
/// DataItemDetail列表转换成树形结果
///
/// 列表数据
/// 是否子节点遍历添加
///
public static ObservableCollection DataItemDetailsToTree(List listData, bool isChildres = false)
{
ObservableCollection result = new ObservableCollection();
List list = new List();
if (isChildres)
{ list = listData; }
else
{
//取所有第一级树
list = listData.Where(a => a.UpDataItemDetailID == "0").ToList();
}
foreach (var data in list)
{
//获取当前节点的所有子节点
var details = listData.Where(a => a.UpDataItemDetailID == data.DataItemDetailID).ToList();
if (details.Any())
{
//获取子节点
var childrens = DataItemDetailsToTree(details, true);
result.Add(new Model.TreeModel
{
ID = data.DataItemDetailID,
Text = data.DataItemName,
ChildNodes = childrens
});
}
else
{
//没有子节点就添加当前节点Node
result.Add(new Model.TreeModel
{
ID = data.DataItemDetailID,
Text = data.DataItemName,
});
}
}
return result;
}
#endregion
#region 对象类型树
///
/// 对象类型树
///
public static List objectTypeTree = new List();
#endregion
#region 设计浏览树
///
/// 设计浏览树
///
public static List designTree = new List();
#endregion
public static bool isConfigIniCreateBySys = true;
public static ec_project curProject;
public static DateTime preClickTime = DateTime.Now;
public static Style TransparentComboBoxStyle;
public static Style WhiteStyle;
public static Unit UnitSelected;
public static List Units;
///
/// 打开的图纸名列表
///
public static List ListDwgOpened = new List();
///
/// 图纸树上的所有图纸名
///
public static List AllDwgName = new List();
public static string currentTagNumber;
#region 本地文件目录
static string _LocalFileDirectory;
///
/// 获取本地目录文件夹
///
///
public static string GetLocalFileDirectory()
{
if (string.IsNullOrEmpty(_LocalFileDirectory))
{
string path = Environment.ExpandEnvironmentVariables(@"%USERPROFILE%\AppData\Roaming\SWS\Config.ini");
FileIniDataParser parser = new FileIniDataParser();
var data = parser.ReadFile(path);
_LocalFileDirectory = data["Profile"]["Directory"];
return _LocalFileDirectory;
}
else
{ return _LocalFileDirectory; }
}
///
/// 设置本地目录文件夹
///
/// 文件夹目录
public static void SetLocalFileDirectory(string dir)
{ _LocalFileDirectory = dir; }
#endregion
#region 图纸文件所在文件夹
///
/// 图纸文件所在文件夹
///
///
public static string GetDwgFileFolder()
{
string path = Path.Combine(GetLocalFileDirectory(), curProject.ProjectIndex.ToString());
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
return path;
}
#endregion
#region 图纸文件备份文件夹
///
/// 图纸文件备份文件夹
///
///
public static string GetBackupDwgFileFolder()
{
string path = Path.Combine(GetDwgFileFolder(), "Backup");
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
return path;
}
#endregion
#region 查找子控件
///
/// 查找子控件
///
/// 子控件的类型
/// 要找的是obj的子控件
/// 想找的子控件的Name属性
/// 目标子控件
public static T GetChildObject(DependencyObject obj, string name) where T : FrameworkElement
{
DependencyObject child = null;
T grandChild = null;
for (int i = 0; i <= VisualTreeHelper.GetChildrenCount(obj) - 1; i++)
{
child = VisualTreeHelper.GetChild(obj, i);
if (child is T && (((T)child).Name == name | string.IsNullOrEmpty(name)))
{
return (T)child;
}
else
{
// 在下一级中没有找到指定名字的子控件,就再往下一级找
grandChild = GetChildObject(child, name);
if (grandChild != null)
return grandChild;
}
}
return null;
}
#endregion
}
}