コード例 #1
0
        private void OpenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                if (MainPanel.PalSource != null)
                {
                    switch (MyMessageBox.Show(Language.DICT["MainTitle"], Language.DICT["MsgInfoHintForSave"], MyMessageBoxButtons.YesNoCancel))
                    {
                    case DialogResult.Yes:
                        SaveToolStripMenuItem_Click(null, new EventArgs());
                        break;

                    case DialogResult.No:
                        break;

                    default:
                        return;
                    }
                }
                OpenFileDialog openFileDialog = new OpenFileDialog
                {
                    Filter           = "Palette File|*.pal|All Files|*.*",
                    InitialDirectory = Application.StartupPath,
                    Title            = Language.DICT["MainTitle"],
                    DefaultExt       = "pal",
                    CheckPathExists  = true
                };
                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    if (SavePath.EndsWith(".ini"))
                    {
                        //TODO
                    }
                    else
                    {
                        SavePath = openFileDialog.FileName;
                        IsSaved  = true;
                        Undos.Clear();
                        Redos.Clear();
                        MainPanel.Selections.Clear();
                        MainPanel.PalSource = new PalFile(SavePath);
                        MainPanel.Refresh();
                        MainPanel_SelectedIndexChanged(null, new EventArgs());
                        MainPanel_BackColorChanged(null, new EventArgs());
                        UpdateTitle(Language.DICT["MainTitleEmptyName"]);
                        CurrentStatusLabel.Text = Language.DICT["StslblOpenSucceed"];
                    }
                }
            }
            catch (Exception ex)
            {
                SavePath = "";
                IsSaved  = false;
                MainPanel.Close();
                CurrentStatusLabel.Text = Language.DICT["StslblOpenFailed"];
                UpdateTitle(Language.DICT["MainTitleEmptyName"]);
                MyMessageBox.Show(Language.DICT["MainTitle"], Language.DICT["MsgFatalOpen"] + ex.Message);
            }
        }
コード例 #2
0
 /// <inheritdoc/>
 public void Clear()
 {
     Undos.Clear();
     Redos.Clear();
     _canUndo.OnNext(false);
     _canRedo.OnNext(false);
     _canClear.OnNext(false);
 }
コード例 #3
0
 /// <inheritdoc/>
 public void Dispose()
 {
     Undos.Clear();
     Redos.Clear();
     _canUndo.Dispose();
     _canRedo.Dispose();
     _canClear.Dispose();
 }
コード例 #4
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"];
     }
 }
コード例 #5
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);
 }
コード例 #6
0
 private void RedoToolStripMenuItem_Click(object sender, EventArgs e)
 {
     try
     {
         if (Redos.Count > 0)
         {
             MakeUndo();
             Misc.DeepCopy(Redos.Last(), MainPanel.PalSource.Data);
             Redos.RemoveAt(Redos.Count - 1);
             MainPanel.Refresh();
             CurrentStatusLabel.Text = Language.DICT["StslblRedoSucceed"];
         }
     }
     catch (Exception ex)
     {
         MyMessageBox.Show(Language.DICT["MainTitle"], Language.DICT["MsgFatalRedo"] + ex.Message);
         CurrentStatusLabel.Text = Language.DICT["StslblRedoFailed"];
     }
 }
コード例 #7
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);
        }