From 5e1a2085cf80cbc479b898cdde042edaee6b1127 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Tue, 27 May 2025 18:08:11 +0300 Subject: [PATCH] TODO features: Application: - Indicate modified project by adding "*" to window caption Functionality: - Copy/Paste should be aware of rectangle selection - Select All function - Select and Select All shortcuts Bugs: - Hostory does not record pastes from clipboard - Undo/Redo menu availability recalculation does not happen sometimes --- McBitFont/Form1.Designer.cs | 42 +++++- McBitFont/Form1.cs | 147 ++++++++++++++------- McBitFont/Properties/Resources.Designer.cs | 10 ++ McBitFont/Properties/Resources.resx | 11 +- McBitFont/Resources/arrow_out.png | Bin 0 -> 594 bytes TODO.txt | 6 + icons/famfamfam/arrow_out.png | Bin 0 -> 594 bytes 7 files changed, 156 insertions(+), 60 deletions(-) create mode 100644 McBitFont/Resources/arrow_out.png create mode 100644 icons/famfamfam/arrow_out.png diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index 5163344..d8815be 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -74,6 +74,7 @@ copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); pasteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); selectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + selectAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); fontToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); makeVarWidthToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); prependSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -105,6 +106,7 @@ label3 = new System.Windows.Forms.Label(); lblSelectionLabel = new System.Windows.Forms.Label(); lblSelection = new System.Windows.Forms.Label(); + lblModified = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)nudX).BeginInit(); ((System.ComponentModel.ISupportInitialize)nudY).BeginInit(); panel1.SuspendLayout(); @@ -615,7 +617,7 @@ // // editToolStripMenuItem // - editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { undoToolStripMenuItem, redoToolStripMenuItem, copyToolStripMenuItem, pasteToolStripMenuItem, selectToolStripMenuItem }); + editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { undoToolStripMenuItem, redoToolStripMenuItem, copyToolStripMenuItem, pasteToolStripMenuItem, selectToolStripMenuItem, selectAllToolStripMenuItem }); editToolStripMenuItem.Name = "editToolStripMenuItem"; editToolStripMenuItem.Size = new System.Drawing.Size(39, 20); editToolStripMenuItem.Text = "Edit"; @@ -626,7 +628,7 @@ 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(144, 22); + undoToolStripMenuItem.Size = new System.Drawing.Size(164, 22); undoToolStripMenuItem.Text = "Undo"; undoToolStripMenuItem.ToolTipText = "Undo last canvas change"; undoToolStripMenuItem.Click += undoToolStripMenuItem_Click; @@ -636,19 +638,18 @@ 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(144, 22); + redoToolStripMenuItem.Size = new System.Drawing.Size(164, 22); redoToolStripMenuItem.Text = "Redo"; redoToolStripMenuItem.ToolTipText = "Redo canvas change"; redoToolStripMenuItem.Click += redoToolStripMenuItem_Click; // // copyToolStripMenuItem // - copyToolStripMenuItem.Enabled = false; copyToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Page_copy_16; copyToolStripMenuItem.Name = "copyToolStripMenuItem"; copyToolStripMenuItem.ShortcutKeyDisplayString = ""; copyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C; - copyToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + copyToolStripMenuItem.Size = new System.Drawing.Size(164, 22); copyToolStripMenuItem.Text = "Copy"; copyToolStripMenuItem.ToolTipText = "Copy current symbol to clipboard"; copyToolStripMenuItem.Click += copyToolStripMenuItem_Click; @@ -660,7 +661,7 @@ pasteToolStripMenuItem.Name = "pasteToolStripMenuItem"; pasteToolStripMenuItem.ShortcutKeyDisplayString = ""; pasteToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V; - pasteToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + pasteToolStripMenuItem.Size = new System.Drawing.Size(164, 22); pasteToolStripMenuItem.Text = "Paste"; pasteToolStripMenuItem.ToolTipText = "Paste from clipboard to current symbol"; pasteToolStripMenuItem.Click += pasteToolStripMenuItem_Click; @@ -669,10 +670,21 @@ // selectToolStripMenuItem.Image = Properties.Resources.fam_rectt; selectToolStripMenuItem.Name = "selectToolStripMenuItem"; - selectToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + selectToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.R; + selectToolStripMenuItem.Size = new System.Drawing.Size(164, 22); selectToolStripMenuItem.Text = "Select"; selectToolStripMenuItem.Click += selectToolStripMenuItem_Click; // + // selectAllToolStripMenuItem + // + selectAllToolStripMenuItem.Enabled = false; + selectAllToolStripMenuItem.Image = Properties.Resources.arrow_out; + selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem"; + selectAllToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.A; + selectAllToolStripMenuItem.Size = new System.Drawing.Size(164, 22); + selectAllToolStripMenuItem.Text = "Select All"; + selectAllToolStripMenuItem.Click += selectAllToolStripMenuItem_Click; + // // fontToolStripMenuItem // fontToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { makeVarWidthToolStripMenuItem, prependSymbolToolStripMenuItem, appendSymbolToolStripMenuItem, removeSymbolToolStripMenuItem, removeBeforeToolStripMenuItem, removeAfterToolStripMenuItem, CodeShiftToolStripMenuItem }); @@ -998,11 +1010,25 @@ lblSelection.TextAlign = System.Drawing.ContentAlignment.TopRight; lblSelection.Visible = false; // + // lblModified + // + lblModified.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + lblModified.AutoSize = true; + lblModified.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + lblModified.ForeColor = System.Drawing.SystemColors.Highlight; + lblModified.Location = new System.Drawing.Point(616, 78); + lblModified.Name = "lblModified"; + lblModified.Size = new System.Drawing.Size(91, 15); + lblModified.TabIndex = 26; + lblModified.Text = "Frame modified"; + lblModified.Visible = false; + // // MainForm // AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; ClientSize = new System.Drawing.Size(915, 647); + Controls.Add(lblModified); Controls.Add(lblSelectionLabel); Controls.Add(lblSelection); Controls.Add(chkRectSelect); @@ -1129,6 +1155,8 @@ private System.Windows.Forms.ToolStripMenuItem importTextToolStripMenuItem1; private System.Windows.Forms.Label lblSelectionLabel; private System.Windows.Forms.Label lblSelection; + private System.Windows.Forms.ToolStripMenuItem selectAllToolStripMenuItem; + private System.Windows.Forms.Label lblModified; } } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 68286ee..e3cb3ed 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -83,6 +83,18 @@ namespace McBitFont { lblSelection.Text = width.ToString() + ',' + height.ToString(); } + private void SetModified(bool modif = true, bool prj = false) { + string suffix = ""; + if (prj) { + prjModified = modif; + if (modif) suffix = " *"; + SetWindowCap(suffix); + } else { + modified = modif; + lblModified.Visible = modif; + } + } + private void Form1_Load(object sender, EventArgs e) { lblType.Text = monospaced ? "Monospaced" : "Variable width / Single"; tsmiMakeVarWidth.Visible = monospaced; @@ -124,7 +136,7 @@ namespace McBitFont { tsmiCodeShift.Visible = frames.Count > 1; CodeShiftToolStripMenuItem.Visible = frames.Count > 1; - + } [DllImport("user32.dll")] @@ -134,9 +146,19 @@ namespace McBitFont { return (int)(((ushort)lowPart) | (uint)(highPart << 16)); } - private static FrameMiniature CopyFrame(FrameMiniature frame) { - var ff = new FrameMiniature(frame.code, frame.width, frame.height); - Array.Copy(frame.data, ff.data, frame.data.Length); + private FrameMiniature CopyFrame(FrameMiniature frame, bool clipboard = false) { + int width = chkRectSelect.Checked ? selection2.X - selection1.X + 1 : frame.width; + int height = chkRectSelect.Checked ? selection2.Y - selection1.Y + 1 : frame.height; + var ff = new FrameMiniature(frame.code, width, height); + + if (chkRectSelect.Checked && clipboard) { + for (int i = 0; i <= selection2.X - selection1.X; i++) + for (int j = 0; j <= selection2.Y - selection1.Y; j++) { + ff.data[i, j] = frame.data[i + selection1.X, j + selection1.Y]; + } + } else + Array.Copy(frame.data, ff.data, frame.data.Length); + return ff; } @@ -183,10 +205,10 @@ namespace McBitFont { ilMiniatures.Images.Add(s, (Image)bmp); miniList.Items[s].ImageKey = s; } - prjModified = true; + SetModified(true, true); } if (nudX.Focused) { - modified = true; + SetModified(); } DotResize((int)nudX.Value, dotHeight); @@ -205,8 +227,8 @@ namespace McBitFont { miniList.Items[s].ImageKey = s; } if (nudY.Focused) { - modified = true; - prjModified = true; + SetModified(); + SetModified(true, true); } DotResize(dotWidth, (int)nudY.Value); @@ -318,7 +340,7 @@ namespace McBitFont { } history.AddPost(f); CheckHistoryButtons(); - modified = true; + SetModified(); dotPanel.Refresh(); } @@ -341,7 +363,7 @@ namespace McBitFont { } history.AddPost(f); CheckHistoryButtons(); - modified = true; + SetModified(); dotPanel.Refresh(); } @@ -364,7 +386,7 @@ namespace McBitFont { } history.AddPost(f); CheckHistoryButtons(); - modified = true; + SetModified(); dotPanel.Refresh(); } @@ -386,7 +408,7 @@ namespace McBitFont { } history.AddPost(f); CheckHistoryButtons(); - modified = true; + SetModified(); dotPanel.Refresh(); } @@ -497,7 +519,7 @@ namespace McBitFont { fChanged = true; int x = pixelOffset + i * (cellSize + gap) - hScroll.Value; int y = pixelOffset + j * (cellSize + gap) - vScroll.Value; - modified = true; + SetModified(); rect1 = new Rectangle(x, y, cellSize, cellSize); dotPanel.Invalidate(rect1); } @@ -506,7 +528,7 @@ namespace McBitFont { fChanged = true; int x = pixelOffset + i * (cellSize + gap) - hScroll.Value; int y = pixelOffset + j * (cellSize + gap) - vScroll.Value; - modified = true; + SetModified(); rect1 = new Rectangle(x, y, cellSize, cellSize); dotPanel.Invalidate(rect1); } @@ -528,7 +550,7 @@ namespace McBitFont { history.AddPost(f); CheckHistoryButtons(); - modified = true; + SetModified(); dotPanel.Refresh(); } @@ -552,7 +574,7 @@ namespace McBitFont { } history.AddPost(f); CheckHistoryButtons(); - modified = true; + SetModified(); dotPanel.Refresh(); } @@ -576,7 +598,7 @@ namespace McBitFont { } history.AddPost(f); CheckHistoryButtons(); - modified = true; + SetModified(); dotPanel.Refresh(); } @@ -587,7 +609,7 @@ namespace McBitFont { } else { f = CopyFrame(frames.Find(x => x.code == f.code)); } - modified = false; + SetModified(false); ; } @@ -608,8 +630,8 @@ namespace McBitFont { ilMiniatures.Images.RemoveByKey(s); ilMiniatures.Images.Add(s, (Image)sizedBMP); sizedBMP.Dispose(); - modified = false; - prjModified = true; + SetModified(false); + SetModified(true, true); } private static Bitmap GetMiniPictue(FrameMiniature m) { @@ -728,7 +750,7 @@ namespace McBitFont { private void newToolStripMenuItem_Click(object sender, EventArgs e) { CheckModifiedFrame(); if (CheckModifiedProject()) return; - + New form = new New(this); if (form.ShowDialog() == DialogResult.OK) { Cursor.Current = Cursors.WaitCursor; @@ -792,7 +814,7 @@ namespace McBitFont { prjName = "Untitled"; prjFileName = ""; SetWindowCap(); - modified = false; + SetModified(false); ; CheckForAdd(); fbuffer = false; miniList.Items[0].Selected = true; @@ -816,7 +838,7 @@ namespace McBitFont { tsmiRemoveSymbol.Enabled = false; tsmiRemoveBefore.Enabled = false; tsmiRemoveAfter.Enabled = false; - copyToolStripMenuItem.Enabled = false; + //copyToolStripMenuItem.Enabled = false; pasteToolStripMenuItem.Enabled = false; return; //miniList.Items[0].Selected = true; @@ -840,7 +862,7 @@ namespace McBitFont { removeSymbolToolStripMenuItem.Enabled = false; tsmiRemoveSymbol.Enabled = false; } - copyToolStripMenuItem.Enabled = true; + //copyToolStripMenuItem.Enabled = true; if (ff.Equals(frames.First())) { removeBeforeToolStripMenuItem.Enabled = false; removeAfterToolStripMenuItem.Enabled = true; @@ -897,14 +919,16 @@ namespace McBitFont { nudY.ValueChanged -= nudY_ValueChanged; nudX.Value = frames.First().width; nudY.Value = frames.First().height; + selection1.X = 0; selection1.Y = 0; + selection2.X = (int)nudX.Value - 1; selection2.Y = (int)nudY.Value - 1; DotResize((int)nudX.Value, (int)nudY.Value); nudX.ValueChanged += nudX_ValueChanged; nudY.ValueChanged += nudY_ValueChanged; f = CopyFrame(frames.First()); dotPanel.Refresh(); miniList.Refresh(); - modified = false; - prjModified = false; + SetModified(false); + SetModified(false, true); prjFileName = filename; prjName = Path.GetFileNameWithoutExtension(filename); @@ -914,6 +938,7 @@ namespace McBitFont { CheckForAdd(); fbuffer = false; + //copyToolStripMenuItem.Enabled = true; // Re-create history object history = new CanvasHistory(); @@ -936,18 +961,18 @@ namespace McBitFont { MessagePackSerializer.Serialize(ms, sav); ms.Close(); } - prjModified = false; + prjName = Path.GetFileNameWithoutExtension(filename); prjFileName = filename; - SetWindowCap(); + SetModified(false, true); } - private void SetWindowCap() { - this.Text = "McBitFont v" + version + " - " + prjName; + private void SetWindowCap(string suffix = "") { + this.Text = "McBitFont v" + version + " - " + prjName + suffix; } - - + + private void openToolStripMenuItem_Click(object sender, EventArgs e) { CheckModifiedFrame(); if (CheckModifiedProject()) return; @@ -1014,26 +1039,40 @@ namespace McBitFont { private void copyToolStripMenuItem_Click(object sender, EventArgs e) { fbuffer = true; - fbuf = CopyFrame(f); + fbuf = CopyFrame(f, true); pasteToolStripMenuItem.Enabled = true; } private void pasteToolStripMenuItem_Click(object sender, EventArgs e) { + history.AddPre(f); if (fbuf.width == f.width && fbuf.height == f.height) { Array.Copy(fbuf.data, f.data, fbuf.data.Length); } else { - var wmax = (fbuf.width > f.width) ? f.width : fbuf.width; - var hmax = (fbuf.height > f.height) ? f.height : fbuf.height; + int di, dj, wmax, hmax, selw, selh; + if (chkRectSelect.Checked) { + di = selection1.X; + dj = selection1.Y; + selw = selection2.X - selection1.X + 1; + selh = selection2.Y - selection1.Y + 1; + wmax = fbuf.width > selw ? selw : fbuf.width; + hmax = fbuf.height > selh ? selh : fbuf.height; + } else { + di = 0; + dj = 0; + wmax = (fbuf.width > f.width) ? f.width : fbuf.width; + hmax = (fbuf.height > f.height) ? f.height : fbuf.height; + } for (int i = 0; i < wmax; i++) { for (int j = 0; j < hmax; j++) { - f.data[i, j] = fbuf.data[i, j]; + f.data[i + di, j + dj] = fbuf.data[i, j]; } } } - + history.AddPost(f); + CheckHistoryButtons(); dotPanel.Refresh(); - modified = true; + SetModified(); } private void aboutToolStripMenuItem_Click(object sender, EventArgs e) { @@ -1051,7 +1090,7 @@ namespace McBitFont { if (MessageBox.Show("Current symbol is modified.\nDo you want to save the changes?", "Symbol was modified!", MessageBoxButtons.YesNo) == DialogResult.Yes) { SaveFrame(); } - modified = false; + SetModified(false); } } @@ -1091,7 +1130,7 @@ namespace McBitFont { history.AddPost(f); CheckHistoryButtons(); - modified = true; + SetModified(); dotPanel.Refresh(); } @@ -1138,7 +1177,7 @@ namespace McBitFont { } //dotPanel.Refresh(); miniList.Refresh(); - prjModified = true; + SetModified(true, true); } private void removeBeforeToolStripMenuItem_Click(object sender, EventArgs e) { @@ -1154,7 +1193,7 @@ namespace McBitFont { makeVarWidthToolStripMenuItem.Visible = false; tsmiMakeVarWidth.Visible = false; lblType.Text = "Variable width / Single"; - prjModified = true; + SetModified(true, true); } public void CheckHistoryButtons() { @@ -1220,7 +1259,7 @@ namespace McBitFont { history.Clear(); CheckForAdd(); - prjModified = true; + SetModified(true, true); } @@ -1234,8 +1273,9 @@ namespace McBitFont { } } history.AddPost(f); + CheckHistoryButtons(); dotPanel.Refresh(); - modified = true; + SetModified(); } iform.Dispose(); } @@ -1257,6 +1297,7 @@ namespace McBitFont { private void chkRectSelect_CheckedChanged(object sender, EventArgs e) { lblSelection.Visible = lblSelectionLabel.Visible = chkRectSelect.Checked; + selectAllToolStripMenuItem.Enabled = chkRectSelect.Checked; dotPanel.Refresh(); } @@ -1297,11 +1338,11 @@ namespace McBitFont { w = w.Remove(w.IndexOf("0b"), 2); numBase = 2; } - if (w.Contains("0x") ) { // Check if value is written as hexadecimal + if (w.Contains("0x")) { // Check if value is written as hexadecimal w = w.Remove(w.IndexOf("0x"), 2); numBase = 16; } - + try { // Try to convert a number from text data.Add(Convert.ToUInt32(w, numBase)); @@ -1309,14 +1350,14 @@ namespace McBitFont { catch { continue; } - + //MessageBox.Show(w + ": Length: " + w.Length + " Bits: " + bits + " Converted: " + data.Last() + "\nData length: " + data.Count); } } if (MessageBox.Show(bits + "-bit font found. " + data.Count + " numbers (" + data.Count * bits / 8 + " bytes) total\n" + "Start code: " + data.ElementAt(4) + " End code: " + data.ElementAt(5) + "\nDo you want to load it?", "Import from text file", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { // Font header bool packed = data.ElementAt(0) == 1; - int width= (int)data.ElementAt(1); + int width = (int)data.ElementAt(1); int height = (int)data.ElementAt(2); int first = (int)data.ElementAt(4); int last = (int)data.ElementAt(5); @@ -1362,7 +1403,7 @@ namespace McBitFont { miniList.Items.Add(s, (chkHexCodes.Checked ? sHex : s) + ' ' + sss, s); } } - prjModified = true; + SetModified(true, true); if (miniList.Items.Count > 0) miniList.Items[0].Selected = true; f = frames[0]; dotWidth = f.width; @@ -1375,5 +1416,13 @@ namespace McBitFont { //MessageBox.Show(bits + "-font found. " + data.Count + " numbers (" + data.Count * bits / 8 + " bytes) total\n" + "Start code: " + data.ElementAt(4) + " End code: " + data.ElementAt(5)); } } + + private void selectAllToolStripMenuItem_Click(object sender, EventArgs e) { + selection1.X = 0; + selection1.Y = 0; + selection2.X = dotWidth - 1; + selection2.Y = dotHeight - 1; + dotPanel.Refresh(); + } } } diff --git a/McBitFont/Properties/Resources.Designer.cs b/McBitFont/Properties/Resources.Designer.cs index 97cde8f..4f5dce3 100644 --- a/McBitFont/Properties/Resources.Designer.cs +++ b/McBitFont/Properties/Resources.Designer.cs @@ -80,6 +80,16 @@ namespace McBitFont.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap arrow_out { + get { + object obj = ResourceManager.GetObject("arrow_out", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/McBitFont/Properties/Resources.resx b/McBitFont/Properties/Resources.resx index e072095..caf2781 100644 --- a/McBitFont/Properties/Resources.resx +++ b/McBitFont/Properties/Resources.resx @@ -142,6 +142,9 @@ ..\Resources\redo.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\icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -202,8 +205,8 @@ ..\Resources\Famfamfam-Silk-Page-white.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\folder_table.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Canvas_Fill.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -223,7 +226,7 @@ ..\Resources\icon_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\folder_table.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\arrow_out.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/Resources/arrow_out.png b/McBitFont/Resources/arrow_out.png new file mode 100644 index 0000000000000000000000000000000000000000..2e9bc42bec16e3077a9680e7af0f90395bfeb60c GIT binary patch literal 594 zcmV-Y0%pKpR5(n-OJ3xTo| zzV{Az-rC_Vje#(D=jSF0=P$d$OcdrqWdZ50OISNyhHKXf!jg068_0ZrhDT>{L~4Gy zBdqY8Z{N|1SMT6qEsm9X5`57DGIJ6{tUiU*w*<03GFWKb!_-I5B@^$yqd8xVVYQKh zR0+dTu)vlxgG|$F-~JTf!pHvB;^}=nIGMw(LqWZ0Ajmc)rbZwghz$N6FuFDPw?M3V zxyd6>bK=mgT-5{T&WPHE+aleX_AmP13}~n2@i(LDRmJ8PMrCl_&@?^QbAJr{3Xe7{ zRYXL~lWa_vCNY#Ts)2%lP|*kDnyzJ7?dSAQ`{;tavxCB5aI&_5*@FmdS#$HE!Hso; z?9Gj1PKm*v6<|v1p?jjC$@D`cYYE)_AVDgN3~tc{;W|CxdRiyDU-Jm$-Iy+k=wIpu zaqU^Lc$`4uXdceI71qtpa9aZ_T0~1>NOA<)R1XMW9DzMQjIr$@2E+2ogl@2IS%W^B gtbN=AP4XIk0RxY;jV+3>Hvj+t07*qoM6N<$f-d$A%>V!Z literal 0 HcmV?d00001 diff --git a/TODO.txt b/TODO.txt index 022be8e..2ef9d56 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,9 +1,15 @@ Application: V Move Select and Baseline buttons right V Display RectSelection width and width +V Indicate modified project by adding "*" to window caption Functionality: +V Copy/Paste should be aware of rectangle selection +V Select All function +V Select and Select All shortcuts Bugs: V EncodingProvider hotfix V Check if frame changed before exit application +V Hostory does not record pastes from clipboard +V Undo/Redo menu availability recalculation does not happen sometimes diff --git a/icons/famfamfam/arrow_out.png b/icons/famfamfam/arrow_out.png new file mode 100644 index 0000000000000000000000000000000000000000..2e9bc42bec16e3077a9680e7af0f90395bfeb60c GIT binary patch literal 594 zcmV-Y0%pKpR5(n-OJ3xTo| zzV{Az-rC_Vje#(D=jSF0=P$d$OcdrqWdZ50OISNyhHKXf!jg068_0ZrhDT>{L~4Gy zBdqY8Z{N|1SMT6qEsm9X5`57DGIJ6{tUiU*w*<03GFWKb!_-I5B@^$yqd8xVVYQKh zR0+dTu)vlxgG|$F-~JTf!pHvB;^}=nIGMw(LqWZ0Ajmc)rbZwghz$N6FuFDPw?M3V zxyd6>bK=mgT-5{T&WPHE+aleX_AmP13}~n2@i(LDRmJ8PMrCl_&@?^QbAJr{3Xe7{ zRYXL~lWa_vCNY#Ts)2%lP|*kDnyzJ7?dSAQ`{;tavxCB5aI&_5*@FmdS#$HE!Hso; z?9Gj1PKm*v6<|v1p?jjC$@D`cYYE)_AVDgN3~tc{;W|CxdRiyDU-Jm$-Iy+k=wIpu zaqU^Lc$`4uXdceI71qtpa9aZ_T0~1>NOA<)R1XMW9DzMQjIr$@2E+2ogl@2IS%W^B gtbN=AP4XIk0RxY;jV+3>Hvj+t07*qoM6N<$f-d$A%>V!Z literal 0 HcmV?d00001