public void Restart(bool isFinish) { history.AddHistoryItem(new HistoryItem(Game, Code, Step, isFinish)); DataGridHistory.Items.Clear(); foreach (HistoryItem hi in history.GetHistoryItems) { DataGridHistory.Items.Add(hi); } steps.Clear(); GenerateNewGame(); }
public CellSetData PerformMemberAction(PerformMemberActionArgs args) { if (args != null) { switch (args.Action) { case MemberActionType.Expand: case MemberActionType.Collapse: case MemberActionType.DrillDown: case MemberActionType.DrillUp: // Удаляем все элементы истории, стоящие за текущим History.CutRight(); HistoryItem clone = null; if (History.CurrentHistoryItem != null) { // Клонируем текущий элемент истории чтобы действие добавлялось уже в клон clone = (HistoryItem)(History.CurrentHistoryItem.Clone()); } else { // Добавляем пустой элемент истории HistoryItem first = new HistoryItem(); History.AddHistoryItem(first); clone = new HistoryItem(); } History.AddHistoryItem(clone); break; } switch (args.Action) { case MemberActionType.Expand: ExpandMember(args); break; case MemberActionType.Collapse: CollapseMember(args); break; case MemberActionType.DrillDown: DrillDownMember(args); break; case MemberActionType.DrillUp: DrillUpMember(args); break; } } return(RefreshQuery()); }
/// <summary> /// Performs the action, adds it to the history stack, and optionally updates the display lists /// </summary> /// <param name="name">The name of the action, for history purposes</param> /// <param name="action">The action to perform</param> public void PerformAction(string name, IAction action) { try { action.Perform(this); } catch (Exception ex) { var st = new StackTrace(); var frames = st.GetFrames() ?? new StackFrame[0]; var msg = "Action exception: " + name + " (" + action + ")"; foreach (var frame in frames) { var method = frame.GetMethod(); msg += "\r\n " + method.ReflectedType.FullName + "." + method.Name; } Logging.Logger.ShowException(new Exception(msg, ex), "Error performing action"); } var history = new HistoryAction(name, action); History.AddHistoryItem(history); }