private CtxmData GetWorkCtxmDataView(CtxmCode code) { CtxmData ctxm = new CtxmData(code); CtxmData ctxmDef = DefCtxmData[code]; //存在するものをコピーしていく。編集メニューは常に個別設定が有効になる。 if (Settings.Instance.MenuSet.IsManualAssign.Contains(code) == true || code == CtxmCode.EditChgMenu) { CtxmSetting ctxmEdited = Settings.Instance.MenuSet.ManualMenuItems.FindData(code); if (ctxmEdited == null) { //編集サブメニューの場合は、初期無効アイテムを削除したデフォルトセッティングを返す。 return(code != CtxmCode.EditChgMenu ? ctxmDef.Clone() : GetDefaultChgSubMenuCtxmData()); } ctxmEdited.Items.ForEach(setMenuString => { CtxmItemData item1 = ctxmDef.Items.Find(item => item.Header == setMenuString); if (item1 != null) { ctxm.Items.Add(item1.Clone()); } }); } else { ctxmDef.Items.ForEach(item1 => { if (MC.WorkCmdOptions[item1.Command].IsMenuEnabled == true) { ctxm.Items.Add(item1.Clone()); } }); } //・連続したセパレータの除去 for (int i = ctxm.Items.Count - 1; i >= 1; i--) { if (ctxm.Items[i].Command == EpgCmdsEx.Separator && ctxm.Items[i - 1].Command == EpgCmdsEx.Separator) { ctxm.Items.RemoveAt(i); } } //・先頭と最後のセパレータ除去 if (ctxm.Items.Count != 0 && ctxm.Items[ctxm.Items.Count - 1].Command == EpgCmdsEx.Separator) { ctxm.Items.RemoveAt(ctxm.Items.Count - 1); } if (ctxm.Items.Count != 0 && ctxm.Items[0].Command == EpgCmdsEx.Separator) { ctxm.Items.RemoveAt(0); } return(ctxm); }
private CtxmData GetWorkCtxmDataView(CtxmCode code) { CtxmData ctxm = new CtxmData(code); CtxmData ctxmDef = DefCtxmData[code]; //存在するものをコピーしていく。編集メニューは常に個別設定が有効になる。 if (Settings.Instance.MenuSet.IsManualAssign.Contains(code) == true || code == CtxmCode.EditChgMenu) { CtxmSetting ctxmEdited = Settings.Instance.MenuSet.ManualMenuItems.FindData(code); if (ctxmEdited == null) { //編集サブメニューの場合は、初期無効アイテムを削除したデフォルトセッティングを返す。 return(code != CtxmCode.EditChgMenu ? ctxmDef.DeepClone() : GetDefaultChgSubMenuCtxmData()); } ctxmEdited.Items.ForEach(setMenuString => { CtxmItemData item1 = ctxmDef.Items.Find(item => item.Header == setMenuString); if (item1 != null) { ctxm.Items.Add(item1.DeepClone()); } }); } else { ctxmDef.Items.ForEach(item1 => { if (MC.WorkCmdOptions[item1.Command].IsMenuEnabled == true) { ctxm.Items.Add(item1.DeepClone()); } }); } //セパレータの整理 SweepSeparators(ctxm); return(ctxm); }
public static List <CtxmSetting> Clone(this IEnumerable <CtxmSetting> src) { return(CtxmSetting.Clone(src)); }
protected static void CopyData(CtxmSetting src, CtxmSetting dest) { dest.ctxmCode = src.ctxmCode; dest.Items = src.Items.ToList(); }
public CtxmSetting(CtxmSetting data) { CopyData(data, this); }