From ce3b0ddd94f407096f5b669eb6b7f87afe628325 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Wed, 21 May 2025 18:20:39 +0300 Subject: [PATCH] WIP: Undo/Redo --- McBitFont/CanvasHistory.cs | 74 +++++++++++++++++ McBitFont/Form1.Designer.cs | 48 +++++++++-- McBitFont/Form1.cs | 47 ++++++++++- McBitFont/McBitFont.csproj | 24 ++++++ McBitFont/Properties/Resources.Designer.cs | 90 +++++++++++++-------- McBitFont/Properties/Resources.resx | 54 +++++++------ McBitFont/Properties/Settings.Designer.cs | 10 +-- McBitFont/Resources/redo.png | Bin 0 -> 561 bytes McBitFont/Resources/undo.png | Bin 0 -> 566 bytes icons/redo.png | Bin 0 -> 561 bytes icons/undo.png | Bin 0 -> 566 bytes 11 files changed, 273 insertions(+), 74 deletions(-) create mode 100644 McBitFont/CanvasHistory.cs create mode 100644 McBitFont/Resources/redo.png create mode 100644 McBitFont/Resources/undo.png create mode 100644 icons/redo.png create mode 100644 icons/undo.png diff --git a/McBitFont/CanvasHistory.cs b/McBitFont/CanvasHistory.cs new file mode 100644 index 0000000..a096334 --- /dev/null +++ b/McBitFont/CanvasHistory.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + + +namespace McBitFont { + internal class CanvasHistory { + private List stack; + public int Depth { get; set; } + public int Index { get; set; } + public int Count { + get { return stack.Count; } + } + public int Redos { + get { + return Count - Index - 1; + } + } + public int Undos { + get { + return Index + 1; + } + } + + + public CanvasHistory(int depth = 5, int index = -1) { + Depth = depth; + Index = index; + stack = []; + } + + public void Clear() { + stack.Clear(); + Index = -1; + } + + public void Add(bool[,] data, bool useIndex = true) { + if (Index < Count - 1) { + stack.RemoveRange(Index + 1, Count - Index - 1); + } + stack.Add(data); + if (useIndex) { + if (Count > Depth) stack.RemoveAt(0); + else Index++; + } + } + + public void ApplyAdded() { + if (Count > Depth) + while (Count > Depth) stack.RemoveAt(0); + else Index = Count - 1; + } + + public void Remove(bool useIndex = true) { + stack.RemoveAt(stack.Count - 1); + if (useIndex) Index--; + } + + public void Undo(ref bool[,] data) { + if (Index < 0) return; + data = stack.ElementAt(Index); + Index--; + } + + public void Redo(ref bool[,] data) { + if (Index >= Count - 1) return; + Index++; + data = stack.ElementAt(Index); + } + } +} diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index b25df56..83a1b9e 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -57,6 +57,8 @@ saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + undoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + redoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); pasteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); prependSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -83,6 +85,7 @@ toolTip1 = new System.Windows.Forms.ToolTip(components); chkLeftSide = new System.Windows.Forms.CheckBox(); chkTopSide = new System.Windows.Forms.CheckBox(); + label3 = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)nudX).BeginInit(); ((System.ComponentModel.ISupportInitialize)nudY).BeginInit(); panel1.SuspendLayout(); @@ -469,17 +472,37 @@ // // editToolStripMenuItem // - editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { copyToolStripMenuItem, pasteToolStripMenuItem, prependSymbolToolStripMenuItem, appendSymbolToolStripMenuItem, removeSymbolToolStripMenuItem, removeBeforeToolStripMenuItem, removeAfterToolStripMenuItem, applyToolStripMenuItem }); + editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { undoToolStripMenuItem, redoToolStripMenuItem, copyToolStripMenuItem, pasteToolStripMenuItem, prependSymbolToolStripMenuItem, appendSymbolToolStripMenuItem, removeSymbolToolStripMenuItem, removeBeforeToolStripMenuItem, removeAfterToolStripMenuItem, applyToolStripMenuItem }); editToolStripMenuItem.Name = "editToolStripMenuItem"; - editToolStripMenuItem.Size = new System.Drawing.Size(39, 20); + editToolStripMenuItem.Size = new System.Drawing.Size(122, 20); editToolStripMenuItem.Text = "Edit"; + editToolStripMenuItem.DropDownOpening += editToolStripMenuItem_DropDownOpening; + // + // undoToolStripMenuItem + // + undoToolStripMenuItem.Image = Properties.Resources.arrow_undo; + undoToolStripMenuItem.Name = "undoToolStripMenuItem"; + undoToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z; + undoToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + undoToolStripMenuItem.Text = "Undo"; + undoToolStripMenuItem.ToolTipText = "Undo last canvas change"; + undoToolStripMenuItem.Click += undoToolStripMenuItem_Click; + // + // redoToolStripMenuItem + // + redoToolStripMenuItem.Image = Properties.Resources.arrow_redo; + redoToolStripMenuItem.Name = "redoToolStripMenuItem"; + redoToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y; + redoToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + redoToolStripMenuItem.Text = "Redo"; + redoToolStripMenuItem.ToolTipText = "Redo canvas change"; // // copyToolStripMenuItem // copyToolStripMenuItem.Enabled = false; copyToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Page_copy_16; copyToolStripMenuItem.Name = "copyToolStripMenuItem"; - copyToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+C"; + copyToolStripMenuItem.ShortcutKeyDisplayString = ""; copyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C; copyToolStripMenuItem.Size = new System.Drawing.Size(215, 22); copyToolStripMenuItem.Text = "Copy"; @@ -491,7 +514,7 @@ pasteToolStripMenuItem.Enabled = false; pasteToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Page_paste_16; pasteToolStripMenuItem.Name = "pasteToolStripMenuItem"; - pasteToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+V"; + pasteToolStripMenuItem.ShortcutKeyDisplayString = ""; pasteToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V; pasteToolStripMenuItem.Size = new System.Drawing.Size(215, 22); pasteToolStripMenuItem.Text = "Paste"; @@ -515,7 +538,7 @@ appendSymbolToolStripMenuItem.Enabled = false; appendSymbolToolStripMenuItem.Image = Properties.Resources.action_add; appendSymbolToolStripMenuItem.Name = "appendSymbolToolStripMenuItem"; - appendSymbolToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+End"; + appendSymbolToolStripMenuItem.ShortcutKeyDisplayString = ""; appendSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.End; appendSymbolToolStripMenuItem.Size = new System.Drawing.Size(215, 22); appendSymbolToolStripMenuItem.Text = "Append symbol"; @@ -527,7 +550,7 @@ removeSymbolToolStripMenuItem.Enabled = false; removeSymbolToolStripMenuItem.Image = Properties.Resources.action_remove; removeSymbolToolStripMenuItem.Name = "removeSymbolToolStripMenuItem"; - removeSymbolToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Del"; + removeSymbolToolStripMenuItem.ShortcutKeyDisplayString = ""; removeSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Delete; removeSymbolToolStripMenuItem.Size = new System.Drawing.Size(215, 22); removeSymbolToolStripMenuItem.Text = "Remove symbol"; @@ -738,11 +761,21 @@ toolTip1.SetToolTip(chkTopSide, "Height changes will be made on Top/Bottom side"); chkTopSide.UseVisualStyleBackColor = true; // + // label3 + // + label3.AutoSize = true; + label3.Location = new System.Drawing.Point(645, 78); + label3.Name = "label3"; + label3.Size = new System.Drawing.Size(17, 15); + label3.TabIndex = 21; + label3.Text = "h:"; + // // MainForm // AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; ClientSize = new System.Drawing.Size(915, 647); + Controls.Add(label3); Controls.Add(chkTopSide); Controls.Add(chkLeftSide); Controls.Add(btnBaseline); @@ -841,6 +874,9 @@ private System.Windows.Forms.ToolStripMenuItem removeBeforeToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem removeAfterToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem makeVarWidthToolStripMenuItem; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.ToolStripMenuItem undoToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem redoToolStripMenuItem; } } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 6b524c3..0ec7e42 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -48,6 +48,7 @@ namespace McBitFont { private FrameMiniature f; public List frames = new List(); + private CanvasHistory history = new(); private int cellSize = 10; public int dotWidth, dotHeight; private int pixelOffset = 5; @@ -277,7 +278,10 @@ namespace McBitFont { dotPanel.Refresh(); } + private bool mouseDown = false; + private bool fChanged = false; private void dotPanel_MouseMove(object sender, MouseEventArgs e) { + // Moving baseline Rectangle rect1, rect2; if (set_base) { @@ -299,15 +303,34 @@ namespace McBitFont { return; } } + if (e.X >= w || e.X <= pixelOffset || e.Y >= h || e.Y <= pixelOffset) return; + // Change coordinates in the panel int i = (e.X - pixelOffset + hScroll.Value) / (cellSize + gap); int j = (e.Y - pixelOffset + vScroll.Value) / (cellSize + gap); label5.Text = i.ToString() + ',' + j.ToString(); + // history management + if (e.Button != MouseButtons.None && !mouseDown) { + mouseDown = true; + history.Add(f.data, false); + label3.Text += history.Count.ToString(); + } + if (e.Button == MouseButtons.None && mouseDown) { + mouseDown = false; + if (!fChanged) { + history.Remove(false); + } else { + fChanged = false; + history.ApplyAdded(); + } + label3.Text += history.Count.ToString(); + } + + // Paint black / white if (e.Button == MouseButtons.Left && !f.data[i, j]) { - Graphics g = dotPanel.CreateGraphics(); - SolidBrush sbb = new SolidBrush(Color.Black); f.data[i, j] = true; + fChanged = true; int x = pixelOffset + i * (cellSize + gap) - hScroll.Value; int y = pixelOffset + j * (cellSize + gap) - vScroll.Value; modified = true; @@ -315,9 +338,8 @@ namespace McBitFont { dotPanel.Invalidate(rect1); } if (e.Button == MouseButtons.Right && f.data[i, j]) { - Graphics g = dotPanel.CreateGraphics(); - SolidBrush sbw = new SolidBrush(Color.White); f.data[i, j] = false; + fChanged = true; int x = pixelOffset + i * (cellSize + gap) - hScroll.Value; int y = pixelOffset + j * (cellSize + gap) - vScroll.Value; modified = true; @@ -616,6 +638,10 @@ namespace McBitFont { return; //miniList.Items[0].Selected = true; } + + // Clear history + history.Clear(); + var sel = miniList.SelectedItems[0]; int code = Convert.ToInt32(sel.ImageKey); FrameMiniature ff = copyFrame(frames.Find(x => x.code == code)); @@ -874,5 +900,18 @@ namespace McBitFont { lblType.Text = "Variable width / Single"; prjModified = true; } + + private void editToolStripMenuItem_DropDownOpening(object sender, EventArgs e) { + undoToolStripMenuItem.Enabled = history.Undos > 0; + redoToolStripMenuItem.Enabled = history.Redos > 0; + + undoToolStripMenuItem.Text = "Undo (" + history.Undos + ")"; + redoToolStripMenuItem.Text = "Redo (" + history.Redos + ")"; + } + + private void undoToolStripMenuItem_Click(object sender, EventArgs e) { + history.Undo(ref f.data); + dotPanel.Refresh(); + } } } diff --git a/McBitFont/McBitFont.csproj b/McBitFont/McBitFont.csproj index be1b34e..123c225 100644 --- a/McBitFont/McBitFont.csproj +++ b/McBitFont/McBitFont.csproj @@ -48,4 +48,28 @@ false + + + True + True + Resources.resx + + + True + True + Settings.settings + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + \ No newline at end of file diff --git a/McBitFont/Properties/Resources.Designer.cs b/McBitFont/Properties/Resources.Designer.cs index dc105bc..414bacb 100644 --- a/McBitFont/Properties/Resources.Designer.cs +++ b/McBitFont/Properties/Resources.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ @@ -13,12 +13,12 @@ namespace McBitFont.Properties { /// - /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д. + /// A strongly-typed resource class, for looking up localized strings, etc. /// - // Этот класс создан автоматически классом StronglyTypedResourceBuilder - // с помощью такого средства, как ResGen или Visual Studio. - // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen - // с параметром /str или перестройте свой проект VS. + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] @@ -33,7 +33,7 @@ namespace McBitFont.Properties { } /// - /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом. + /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { @@ -47,8 +47,8 @@ namespace McBitFont.Properties { } /// - /// Перезаписывает свойство CurrentUICulture текущего потока для всех - /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией. + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { @@ -61,7 +61,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap action_add { get { @@ -71,7 +71,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap action_check { get { @@ -81,7 +81,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap action_remove { get { @@ -91,7 +91,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap arrow_back { get { @@ -101,7 +101,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap arrow_down { get { @@ -111,7 +111,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap arrow_next { get { @@ -121,7 +121,17 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap arrow_redo { + get { + object obj = ResourceManager.GetObject("arrow_redo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap arrow_top { get { @@ -131,7 +141,17 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap arrow_undo { + get { + object obj = ResourceManager.GetObject("arrow_undo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Famfamfam_Silk_Disk_16 { get { @@ -141,7 +161,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Famfamfam_Silk_Door_out_16 { get { @@ -151,7 +171,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Famfamfam_Silk_Folder_16 { get { @@ -161,7 +181,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Famfamfam_Silk_Folder_page_16 { get { @@ -171,7 +191,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Famfamfam_Silk_Page_copy_16 { get { @@ -181,7 +201,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Famfamfam_Silk_Page_paste_16 { get { @@ -191,7 +211,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Famfamfam_Silk_Page_white_16 { get { @@ -201,7 +221,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Famfamfam_Silk_Shape_flip_horizontal_16 { get { @@ -211,7 +231,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Famfamfam_Silk_Shape_flip_vertical_16 { get { @@ -221,7 +241,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap file { get { @@ -231,7 +251,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap folder_open { get { @@ -241,7 +261,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap icon { get { @@ -251,7 +271,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap icon_32 { get { @@ -261,7 +281,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap icon_64 { get { @@ -271,7 +291,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Ionic_Ionicons_Invert_mode_outline_16 { get { @@ -281,7 +301,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap save { get { diff --git a/McBitFont/Properties/Resources.resx b/McBitFont/Properties/Resources.resx index cf25ab1..67bb33b 100644 --- a/McBitFont/Properties/Resources.resx +++ b/McBitFont/Properties/Resources.resx @@ -118,6 +118,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\icon_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\Ionic-Ionicons-Invert-mode-outline.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -127,32 +130,32 @@ ..\Resources\Famfamfam-Silk-Page-copy.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Famfamfam-Silk-Disk.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\arrow_back.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\action_check.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Famfamfam-Silk-Page-white.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\arrow_down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\arrow_back.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Famfamfam-Silk-Page-white.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\save.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Famfamfam-Silk-Shape-flip-horizontal.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\Famfamfam-Silk-Door-out.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Famfamfam-Silk-Folder-page.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Famfamfam-Silk-Folder.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\action_remove.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\action_add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -160,31 +163,34 @@ ..\Resources\folder_open.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Famfamfam-Silk-Disk.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\Famfamfam-Silk-Page-paste.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\action_remove.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\file.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icon_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\Famfamfam-Silk-Shape-flip-vertical.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Famfamfam-Silk-Shape-flip-horizontal.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Famfamfam-Silk-Folder.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\arrow_top.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\arrow_down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\action_check.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\icon_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\redo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\icon_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\undo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/McBitFont/Properties/Settings.Designer.cs b/McBitFont/Properties/Settings.Designer.cs index bfdecbb..f3dca9d 100644 --- a/McBitFont/Properties/Settings.Designer.cs +++ b/McBitFont/Properties/Settings.Designer.cs @@ -9,14 +9,14 @@ //------------------------------------------------------------------------------ namespace McBitFont.Properties { - - + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { - + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - + public static Settings Default { get { return defaultInstance; diff --git a/McBitFont/Resources/redo.png b/McBitFont/Resources/redo.png new file mode 100644 index 0000000000000000000000000000000000000000..f350a239f21f8227c67359e81c2a1caf33e91d25 GIT binary patch literal 561 zcmV-10?z%3P)tmR-}V(R18_c_n+(I^Cy zV?+-`evd|>e?OjO|9kf|`2XLZD%^$v+`QKDaQPp%4l%sn+WwV8RyX(k-f8nu3=nY3 zcm8qb#AX4vLQW11M+PQ#Zmcf)_v16eyR}vS|NZ*1p9Ll;=$w`K_uI#55?O0Fn79Rr z@ficd-@lBE|NsAI5O6Os{(0}jNs0W;%#6&e4FA4;VEA@*7sK!8HyBvOlo@y|qH%hG zg@J*A;m@19^F?B(G5`Pdjp6;a4u)UPuRmetl{n16CpPo<)!hepETS3y|NhSKZbJjZ zpSKS$uqnAXzu!^+j)8%Jfq~CC&x7A3@1Jb*)&HDY&Y$`0GjoySncFz{zf{@&{~W5e z-}&q_3enR61DApSQIV)g|GA6;ZVLo72#}hP7&w$IUvcSp++_%DV8f)RkgC`scqK-jt1lw8gK|NqBKiKGGm<&<%97+!s500000NkvXXu0mjf9#9PK literal 0 HcmV?d00001 diff --git a/McBitFont/Resources/undo.png b/McBitFont/Resources/undo.png new file mode 100644 index 0000000000000000000000000000000000000000..1bf10d641650866255e50aab669691c0ae924e67 GIT binary patch literal 566 zcmV-60?GY}P)4Y#~tLP23BUV`5-tCK!)Q?A#1o`aTR2S!+1| zetxq>&^ap+?t=gS|1$_WXC?l?;)O3KmNNW)b(euvQiFj@+l_&VOMv13-`@-`Ci?zm zSF$kwu(RhZBP<~y2cl3w0|O%~C&R0`2@H%vat;iiUZwy2{KA$^Qd362tAgS0m$wY> zH`ZVNa(2BQM!fRbXB2X%+J2WR+y9^2IQT!RTxKq(mh)%X=BxktUGo0%Ip=vWVoS;* zzD3gC?qA#Y>(M#2Kc8MPBFhN|HVXWDbm26YhLg&-YkQC3O=SXZ1p(N^8A2P_xO6=3 zawuEA!fOCN%tmR-}V(R18_c_n+(I^Cy zV?+-`evd|>e?OjO|9kf|`2XLZD%^$v+`QKDaQPp%4l%sn+WwV8RyX(k-f8nu3=nY3 zcm8qb#AX4vLQW11M+PQ#Zmcf)_v16eyR}vS|NZ*1p9Ll;=$w`K_uI#55?O0Fn79Rr z@ficd-@lBE|NsAI5O6Os{(0}jNs0W;%#6&e4FA4;VEA@*7sK!8HyBvOlo@y|qH%hG zg@J*A;m@19^F?B(G5`Pdjp6;a4u)UPuRmetl{n16CpPo<)!hepETS3y|NhSKZbJjZ zpSKS$uqnAXzu!^+j)8%Jfq~CC&x7A3@1Jb*)&HDY&Y$`0GjoySncFz{zf{@&{~W5e z-}&q_3enR61DApSQIV)g|GA6;ZVLo72#}hP7&w$IUvcSp++_%DV8f)RkgC`scqK-jt1lw8gK|NqBKiKGGm<&<%97+!s500000NkvXXu0mjf9#9PK literal 0 HcmV?d00001 diff --git a/icons/undo.png b/icons/undo.png new file mode 100644 index 0000000000000000000000000000000000000000..1bf10d641650866255e50aab669691c0ae924e67 GIT binary patch literal 566 zcmV-60?GY}P)4Y#~tLP23BUV`5-tCK!)Q?A#1o`aTR2S!+1| zetxq>&^ap+?t=gS|1$_WXC?l?;)O3KmNNW)b(euvQiFj@+l_&VOMv13-`@-`Ci?zm zSF$kwu(RhZBP<~y2cl3w0|O%~C&R0`2@H%vat;iiUZwy2{KA$^Qd362tAgS0m$wY> zH`ZVNa(2BQM!fRbXB2X%+J2WR+y9^2IQT!RTxKq(mh)%X=BxktUGo0%Ip=vWVoS;* zzD3gC?qA#Y>(M#2Kc8MPBFhN|HVXWDbm26YhLg&-YkQC3O=SXZ1p(N^8A2P_xO6=3 zawuEA!fOCN%