示例#1
0
 private void CloseToolStripMenuItem_Click(object sender, EventArgs e)
 {
     try
     {
         MainPanel.Close();
         IsSaved  = false;
         SavePath = "";
         UpdateTitle(Language.DICT["MainTitleEmptyName"]);
         Undos.Clear();
         Redos.Clear();
         CurrentStatusLabel.Text = Language.DICT["StslblCloseSucceed"];
     }
     catch (Exception ex)
     {
         MyMessageBox.Show(Language.DICT["MainText"], Language.DICT["MsgFatalClose"] + ex.Message);
         CurrentStatusLabel.Text = Language.DICT["StslblCloseFailed"];
     }
 }
示例#2
0
 /// <inheritdoc/>
 public bool Undo()
 {
     if (Undos.Count > 0)
     {
         IsPaused = true;
         var state = Undos.Pop();
         if (Undos.Count == 0)
         {
             _canUndo.OnNext(false);
         }
         state.Undo.Invoke();
         Redos.Push(state);
         _canRedo.OnNext(true);
         _canClear.OnNext(true);
         IsPaused = false;
         return(true);
     }
     return(false);
 }
示例#3
0
 private void UndoToolStripMenuItem_Click(object sender, EventArgs e)
 {
     try
     {
         if (Undos.Count > 0)
         {
             MakeRedo();
             Misc.DeepCopy(Undos.Last(), MainPanel.PalSource.Data);
             Undos.RemoveAt(Undos.Count - 1);
             MainPanel.Refresh();
             CurrentStatusLabel.Text = Language.DICT["StslblUndoSucceed"];
         }
     }
     catch (Exception ex)
     {
         MyMessageBox.Show(Language.DICT["MainTitle"], Language.DICT["MsgFatalUndo"] + ex.Message);
         CurrentStatusLabel.Text = Language.DICT["StslblUndoFailed"];
     }
 }
示例#4
0
        /// <inheritdoc/>
        public void Snapshot(Action undo, Action redo)
        {
            if (undo == null)
            {
                throw new ArgumentNullException(nameof(undo));
            }

            if (redo == null)
            {
                throw new ArgumentNullException(nameof(redo));
            }

            if (Redos.Count > 0)
            {
                Redos.Clear();
                _canRedo.OnNext(false);
            }
            Undos.Push(new State(undo, redo));
            _canUndo.OnNext(true);
            _canClear.OnNext(true);
        }
示例#5
0
 private void PushUndo(Undos undo)
 {
     _undos.Push(undo);
 }