From 0ba03444d13629d15ad9b929e4ffbc8a86e656cb Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Fri, 12 May 2023 14:08:21 +0300 Subject: [PATCH] Add/Remove symbols --- McBitFont/Form1.Designer.cs | 4 +++ McBitFont/Form1.cs | 58 +++++++++++++++++++++++++++++++++++-- 2 files changed, 59 insertions(+), 3 deletions(-) diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index 9ec361b..5ed27e2 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -325,6 +325,7 @@ this.miniList.ShowGroups = false; this.miniList.Size = new System.Drawing.Size(343, 395); this.miniList.SmallImageList = this.ilMiniatures; + this.miniList.Sorting = System.Windows.Forms.SortOrder.Ascending; this.miniList.TabIndex = 12; this.miniList.TabStop = false; this.miniList.TileSize = new System.Drawing.Size(50, 50); @@ -459,6 +460,7 @@ this.removeSymbolToolStripMenuItem.Name = "removeSymbolToolStripMenuItem"; this.removeSymbolToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.removeSymbolToolStripMenuItem.Text = "Remove symbol"; + this.removeSymbolToolStripMenuItem.Click += new System.EventHandler(this.removeSymbolToolStripMenuItem_Click); // // applyToolStripMenuItem // @@ -582,6 +584,7 @@ this.prependSymbolToolStripMenuItem.Name = "prependSymbolToolStripMenuItem"; this.prependSymbolToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.prependSymbolToolStripMenuItem.Text = "Prepend symbol"; + this.prependSymbolToolStripMenuItem.Click += new System.EventHandler(this.prependSymbolToolStripMenuItem_Click); // // appendSymbolToolStripMenuItem // @@ -590,6 +593,7 @@ this.appendSymbolToolStripMenuItem.Name = "appendSymbolToolStripMenuItem"; this.appendSymbolToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.appendSymbolToolStripMenuItem.Text = "Append symbol"; + this.appendSymbolToolStripMenuItem.Click += new System.EventHandler(this.prependSymbolToolStripMenuItem_Click); // // MainForm // diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index af50525..9091e68 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -391,7 +391,7 @@ namespace McBitFont { frames[index] = f; var sizedBMP = getMiniPictue(f); - string s = f.code.ToString(); + string s = f.code.ToString().PadLeft(3, '0'); ilMiniatures.Images.RemoveByKey(s); ilMiniatures.Images.Add(s, (Image)sizedBMP); sizedBMP.Dispose(); @@ -492,7 +492,7 @@ namespace McBitFont { } lblType.Text = monospaced ? "Monospaced" : "Variable width / Single"; foreach (FrameMiniature ff in frames) { - var s = ff.code.ToString(); + var s = ff.code.ToString().PadLeft(3, '0'); ilMiniatures.Images.Add(s, (Image)getMiniPictue(ff)); codepage =(form.cbEncoding.SelectedItem as New.EncodingItem).Code; var sss = decodeSymbol(ff.code); @@ -506,6 +506,7 @@ namespace McBitFont { prjName = "Untitled"; this.Text = "McBitFont " + version + " - " + prjName; modified = false; + checkForAdd(); } } @@ -518,7 +519,9 @@ namespace McBitFont { modified = false; } if (miniList.SelectedItems.Count == 0) { - miniList.Items[0].Selected = true; + removeSymbolToolStripMenuItem.Enabled = false; + return; + //miniList.Items[0].Selected = true; } var sel = miniList.SelectedItems[0]; int code = Convert.ToInt32(sel.ImageKey); @@ -527,6 +530,12 @@ namespace McBitFont { nudY.Value = ff.height; f = ff; dotPanel.Refresh(); + ff = frames.Find(x => x.code == code); + if (frames.Count > 1 && (ff.Equals(frames.First()) || ff.Equals(frames.Last()))) { + removeSymbolToolStripMenuItem.Enabled = true; + } else { + removeSymbolToolStripMenuItem.Enabled = false; + } } private void saveToolStripMenuItem_Click(object sender, EventArgs e) { @@ -587,6 +596,49 @@ namespace McBitFont { prjName = Path.GetFileNameWithoutExtension(dlgOpen.FileName); this.Text = "McBitFont " + version + " - " + prjName; + checkForAdd(); + } + } + + private void removeSymbolToolStripMenuItem_Click(object sender, EventArgs e) { + if (miniList.SelectedItems.Count == 0) { + removeSymbolToolStripMenuItem.Enabled = false; + return; + } + var sel = miniList.SelectedItems[0].ImageKey; + int code = Convert.ToInt32(miniList.SelectedItems[0].ImageKey); + FrameMiniature ff = frames.Find(x => x.code == code); + frames.Remove(ff); + miniList.SelectedItems[0].Remove(); + //miniList.Items[0].Selected = true; + } + + private void prependSymbolToolStripMenuItem_Click(object sender, EventArgs e) { + FrameMiniature ff; + if (sender == prependSymbolToolStripMenuItem) { + ff = new FrameMiniature(frames.First().code - 1, dotWidth, dotHeight); + frames.Insert(0, ff); + } else { + ff = new FrameMiniature(frames.Last().code + 1, dotWidth, dotHeight); + frames.Add(ff); + } + + var s = ff.code.ToString().PadLeft(3, '0'); + ilMiniatures.Images.Add(s, (Image)getMiniPictue(ff)); + var sss = decodeSymbol(ff.code); + miniList.Items.Add(s, s + ' ' + sss, s); + checkForAdd(); + } + + private void checkForAdd() { + if (frames.Count > 1) { + if (frames.First().code > 0) prependSymbolToolStripMenuItem.Enabled = true; + else prependSymbolToolStripMenuItem.Enabled = false; + if (frames.Last().code < 255) appendSymbolToolStripMenuItem.Enabled = true; + else appendSymbolToolStripMenuItem.Enabled = false; + } else { + prependSymbolToolStripMenuItem.Enabled = false; + appendSymbolToolStripMenuItem.Enabled = false; } }