| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 | using Aitex.Common.Util;using Aitex.Core.RT.DataCenter;using Aitex.Core.RT.Log;using Aitex.Core.Util;using MECF.Framework.Common.ToolLayout;using PunkHPX8_Core;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Markup;namespace MECF.Framework.Common.Layout{    public class ProcessLayoutManager : Singleton<ProcessLayoutManager>    {        #region 常量         private const int MARGIN_LEFT = 10;        #endregion        #region 内部变量        /// <summary>        /// Process Layout cell名称字典(key-cell Id,value-layout item对象)        /// </summary>        private Dictionary<int, ProcessLayoutCellItem> _idProcessLayoutCellItemDic = new Dictionary<int, ProcessLayoutCellItem>();        /// <summary>        /// 名称与Cell字典(key-Cell Id,value-cell 名称)        /// </summary>        private Dictionary<string, ProcessLayoutCellItem> _nameProcessLayoutCellItemDic = new Dictionary<string, ProcessLayoutCellItem>();        /// <summary>        /// 模块名称与cell字典(key-模块名称,value-cell对象)        /// </summary>        private Dictionary<string, ProcessLayoutCellItem> _moduleNameProcessLayoutCellItemDic = new Dictionary<string, ProcessLayoutCellItem>();        /// <summary>        /// xml地址        /// </summary>        private string _xmlPath = "";        /// <summary>        /// process layout对象        /// </summary>        private ProcessLayout _processLayout;        #endregion        /// <summary>        /// 初始化        /// </summary>        /// <param name="xmlPath"></param>        public void Initialize()        {            try            {                _xmlPath = PathManager.GetCfgDir() + "Layout\\Layout.xml";                _processLayout = CustomXmlSerializer.Deserialize<ProcessLayout>(new FileInfo(_xmlPath));                if (_processLayout != null)                {                    DATA.Subscribe("System.Layout", () => _processLayout, SubscriptionAttribute.FLAG.IgnoreSaveDB);                    foreach (ProcessLayoutCellItem item in _processLayout.Items)                    {                        if (item.Name != "Loader")                        {                            item.ModuleName = CellItemManager.Instance.GetModuleNameByCellId($"Cell{item.CellId}");                        }                        else                        {                            item.ModuleName = item.Name;                        }                        if (!string.IsNullOrEmpty(item.ModuleName))                        {                            _moduleNameProcessLayoutCellItemDic[item.ModuleName] = item;                        }                        _idProcessLayoutCellItemDic[item.CellId] = item;                        _nameProcessLayoutCellItemDic[item.Name] = item;                    }                }            }            catch(Exception ex)            {                LOG.WriteLog(eEvent.ERR_EXCEPTION, "System", ex.Message);            }        }        /// <summary>        /// 获取ProcessLayout cell项        /// </summary>        /// <param name="name"></param>        /// <returns></returns>        public ProcessLayoutCellItem GetProcessLayoutCellItemByName(string cellName)        {            return _nameProcessLayoutCellItemDic.ContainsKey(cellName) ? _nameProcessLayoutCellItemDic[cellName] : null;        }        /// <summary>        /// 获取ProcessLayout cell项        /// </summary>        /// <param name="name"></param>        /// <returns></returns>        public ProcessLayoutCellItem GetProcessLayoutCellItemByModuleName(string moduleName)        {            return _moduleNameProcessLayoutCellItemDic.ContainsKey(moduleName) ? _moduleNameProcessLayoutCellItemDic[moduleName] : null;        }        /// <summary>        /// 保存Process Layout        /// </summary>        /// <returns></returns>        public void SaveProcessLayout()        {            CustomXmlSerializer.Serialize(_processLayout, _xmlPath);        }    }}
 |