TODO feature: Delete symbols before/after selected
This commit is contained in:
36
McBitFont/Form1.Designer.cs
generated
36
McBitFont/Form1.Designer.cs
generated
@@ -62,6 +62,8 @@
|
||||
prependSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
appendSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
removeSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
removeBeforeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
removeAfterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
applyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
ClearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
@@ -461,7 +463,7 @@
|
||||
//
|
||||
// editToolStripMenuItem
|
||||
//
|
||||
editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { copyToolStripMenuItem, pasteToolStripMenuItem, prependSymbolToolStripMenuItem, appendSymbolToolStripMenuItem, removeSymbolToolStripMenuItem, applyToolStripMenuItem });
|
||||
editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { copyToolStripMenuItem, pasteToolStripMenuItem, prependSymbolToolStripMenuItem, appendSymbolToolStripMenuItem, removeSymbolToolStripMenuItem, removeBeforeToolStripMenuItem, removeAfterToolStripMenuItem, applyToolStripMenuItem });
|
||||
editToolStripMenuItem.Name = "editToolStripMenuItem";
|
||||
editToolStripMenuItem.Size = new System.Drawing.Size(39, 20);
|
||||
editToolStripMenuItem.Text = "Edit";
|
||||
@@ -473,7 +475,7 @@
|
||||
copyToolStripMenuItem.Name = "copyToolStripMenuItem";
|
||||
copyToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+C";
|
||||
copyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C;
|
||||
copyToolStripMenuItem.Size = new System.Drawing.Size(212, 22);
|
||||
copyToolStripMenuItem.Size = new System.Drawing.Size(215, 22);
|
||||
copyToolStripMenuItem.Text = "Copy";
|
||||
copyToolStripMenuItem.Click += copyToolStripMenuItem_Click;
|
||||
//
|
||||
@@ -484,7 +486,7 @@
|
||||
pasteToolStripMenuItem.Name = "pasteToolStripMenuItem";
|
||||
pasteToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+V";
|
||||
pasteToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V;
|
||||
pasteToolStripMenuItem.Size = new System.Drawing.Size(212, 22);
|
||||
pasteToolStripMenuItem.Size = new System.Drawing.Size(215, 22);
|
||||
pasteToolStripMenuItem.Text = "Paste";
|
||||
pasteToolStripMenuItem.Click += pasteToolStripMenuItem_Click;
|
||||
//
|
||||
@@ -495,7 +497,7 @@
|
||||
prependSymbolToolStripMenuItem.Name = "prependSymbolToolStripMenuItem";
|
||||
prependSymbolToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Ins";
|
||||
prependSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Insert;
|
||||
prependSymbolToolStripMenuItem.Size = new System.Drawing.Size(212, 22);
|
||||
prependSymbolToolStripMenuItem.Size = new System.Drawing.Size(215, 22);
|
||||
prependSymbolToolStripMenuItem.Text = "Prepend symbol";
|
||||
prependSymbolToolStripMenuItem.Click += prependSymbolToolStripMenuItem_Click;
|
||||
//
|
||||
@@ -506,7 +508,7 @@
|
||||
appendSymbolToolStripMenuItem.Name = "appendSymbolToolStripMenuItem";
|
||||
appendSymbolToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+End";
|
||||
appendSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.End;
|
||||
appendSymbolToolStripMenuItem.Size = new System.Drawing.Size(212, 22);
|
||||
appendSymbolToolStripMenuItem.Size = new System.Drawing.Size(215, 22);
|
||||
appendSymbolToolStripMenuItem.Text = "Append symbol";
|
||||
appendSymbolToolStripMenuItem.Click += prependSymbolToolStripMenuItem_Click;
|
||||
//
|
||||
@@ -517,17 +519,35 @@
|
||||
removeSymbolToolStripMenuItem.Name = "removeSymbolToolStripMenuItem";
|
||||
removeSymbolToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Del";
|
||||
removeSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Delete;
|
||||
removeSymbolToolStripMenuItem.Size = new System.Drawing.Size(212, 22);
|
||||
removeSymbolToolStripMenuItem.Size = new System.Drawing.Size(215, 22);
|
||||
removeSymbolToolStripMenuItem.Text = "Remove symbol";
|
||||
removeSymbolToolStripMenuItem.Click += removeSymbolToolStripMenuItem_Click;
|
||||
//
|
||||
// removeBeforeToolStripMenuItem
|
||||
//
|
||||
removeBeforeToolStripMenuItem.Enabled = false;
|
||||
removeBeforeToolStripMenuItem.Image = Properties.Resources.action_remove;
|
||||
removeBeforeToolStripMenuItem.Name = "removeBeforeToolStripMenuItem";
|
||||
removeBeforeToolStripMenuItem.Size = new System.Drawing.Size(215, 22);
|
||||
removeBeforeToolStripMenuItem.Text = "Remove all before selected";
|
||||
removeBeforeToolStripMenuItem.Click += removeBeforeToolStripMenuItem_Click;
|
||||
//
|
||||
// removeAfterToolStripMenuItem
|
||||
//
|
||||
removeAfterToolStripMenuItem.Enabled = false;
|
||||
removeAfterToolStripMenuItem.Image = Properties.Resources.action_remove;
|
||||
removeAfterToolStripMenuItem.Name = "removeAfterToolStripMenuItem";
|
||||
removeAfterToolStripMenuItem.Size = new System.Drawing.Size(215, 22);
|
||||
removeAfterToolStripMenuItem.Text = "Remove all after selected";
|
||||
removeAfterToolStripMenuItem.Click += removeAfterToolStripMenuItem_Click;
|
||||
//
|
||||
// applyToolStripMenuItem
|
||||
//
|
||||
applyToolStripMenuItem.Image = Properties.Resources.action_check;
|
||||
applyToolStripMenuItem.Name = "applyToolStripMenuItem";
|
||||
applyToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Space";
|
||||
applyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Space;
|
||||
applyToolStripMenuItem.Size = new System.Drawing.Size(212, 22);
|
||||
applyToolStripMenuItem.Size = new System.Drawing.Size(215, 22);
|
||||
applyToolStripMenuItem.Text = "Apply";
|
||||
applyToolStripMenuItem.Click += button2_Click;
|
||||
//
|
||||
@@ -786,6 +806,8 @@
|
||||
private System.Windows.Forms.ToolStripMenuItem ClearToolStripMenuItem;
|
||||
private System.Windows.Forms.CheckBox chkLeftSide;
|
||||
private System.Windows.Forms.CheckBox chkTopSide;
|
||||
private System.Windows.Forms.ToolStripMenuItem removeBeforeToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem removeAfterToolStripMenuItem;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -56,7 +56,7 @@ namespace McBitFont {
|
||||
public bool monospaced = false;
|
||||
bool modified = false;
|
||||
bool prjModified = false;
|
||||
public const string version = "1.7";
|
||||
public const string version = "2.0";
|
||||
public string prjName = "Untitled";
|
||||
public string prjFileName = "";
|
||||
public int codepage = 1251;
|
||||
@@ -72,7 +72,7 @@ namespace McBitFont {
|
||||
|
||||
private void Form1_Load(object sender, EventArgs e) {
|
||||
lblType.Text = monospaced ? "Monospaced" : "Variable width / Single";
|
||||
dotWidth = (int)nudX.Value;
|
||||
dotWidth = (int)nudX.Value;
|
||||
dotHeight = (int)nudY.Value;
|
||||
|
||||
gap = (cellSize < 5) ? 0 : 1;
|
||||
@@ -106,12 +106,12 @@ namespace McBitFont {
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
public static extern int SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
|
||||
|
||||
|
||||
public int MakeLong(short lowPart, short highPart) {
|
||||
return (int)(((ushort)lowPart) | (uint)(highPart << 16));
|
||||
}
|
||||
|
||||
FrameMiniature copyFrame(FrameMiniature frame) {
|
||||
FrameMiniature copyFrame(FrameMiniature frame) {
|
||||
var ff = new FrameMiniature(frame.code, frame.width, frame.height);
|
||||
Array.Copy(frame.data, ff.data, frame.data.Length);
|
||||
return ff;
|
||||
@@ -199,9 +199,9 @@ namespace McBitFont {
|
||||
ff.width = neww;
|
||||
ff.height = newh;
|
||||
t = new bool[neww, newh];
|
||||
for (int i=0; i<imax; i++) {
|
||||
for (int j=0;j<jmax; j++) {
|
||||
if (i+di >= 0 && j+dj >= 0) t[i, j] = ff.data[i + di, j + dj];
|
||||
for (int i = 0; i < imax; i++) {
|
||||
for (int j = 0; j < jmax; j++) {
|
||||
if (i + di >= 0 && j + dj >= 0) t[i, j] = ff.data[i + di, j + dj];
|
||||
}
|
||||
}
|
||||
ff.data = t;
|
||||
@@ -232,7 +232,7 @@ namespace McBitFont {
|
||||
hScroll.Minimum = 0;
|
||||
hScroll.Enabled = true;
|
||||
}
|
||||
|
||||
|
||||
if (h <= dotPanel.Height) {
|
||||
vScroll.Enabled = false;
|
||||
vScroll.Value = 0;
|
||||
@@ -347,7 +347,7 @@ namespace McBitFont {
|
||||
bool c;
|
||||
for (int i = 0; i < dotWidth; i++) {
|
||||
c = f.data[i, dotHeight - 1];
|
||||
for (int j = dotHeight-1; j >= 0; j--) {
|
||||
for (int j = dotHeight - 1; j >= 0; j--) {
|
||||
if (j == 0) {
|
||||
f.data[i, j] = c;
|
||||
} else {
|
||||
@@ -448,7 +448,7 @@ namespace McBitFont {
|
||||
for (int i = 0; i < m.width; i++) {
|
||||
for (int j = 0; j < m.height; j++) {
|
||||
c = m.data[i, j] ? Color.Black : Color.White;
|
||||
bmp.SetPixel(i+imin, j+jmin, c);
|
||||
bmp.SetPixel(i + imin, j + jmin, c);
|
||||
}
|
||||
}
|
||||
var sizedBMP = new Bitmap(bmp, new Size(50, 50));
|
||||
@@ -464,19 +464,19 @@ namespace McBitFont {
|
||||
Pen p = new Pen(Color.FromArgb(64, Color.Green));
|
||||
int x, y;
|
||||
|
||||
for (int i=0; i<dotWidth; i++) {
|
||||
for (int i = 0; i < dotWidth; i++) {
|
||||
x = pixelOffset + i * (cellSize + gap) - hScroll.Value;
|
||||
if (gap > 0 && i != 0 && (i % 8) == 0) {
|
||||
g.DrawLine(p, x - 1, pixelOffset - vScroll.Value, x - 1, h);
|
||||
}
|
||||
for (int j=0; j<dotHeight; j++) {
|
||||
for (int j = 0; j < dotHeight; j++) {
|
||||
y = pixelOffset + j * (cellSize + gap) - vScroll.Value;
|
||||
if (gap > 0 && i == 0 && j != 0 && (j % 8) == 0) {
|
||||
g.DrawLine(p, pixelOffset - hScroll.Value, y-1, w, y-1);
|
||||
g.DrawLine(p, pixelOffset - hScroll.Value, y - 1, w, y - 1);
|
||||
}
|
||||
if (f.data[i, j]) sb = sbb;
|
||||
else sb = sbw;
|
||||
g.FillRectangle(sb, x, (baseline == j ? y+1 : y), cellSize, (baseline == j ? cellSize-1 : cellSize));
|
||||
g.FillRectangle(sb, x, (baseline == j ? y + 1 : y), cellSize, (baseline == j ? cellSize - 1 : cellSize));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -545,7 +545,7 @@ namespace McBitFont {
|
||||
nudY.Value = newh;
|
||||
FrameMiniature newf;
|
||||
if (form.cbSingle.Checked) {
|
||||
frames.Add( new FrameMiniature(0, neww, newh));
|
||||
frames.Add(new FrameMiniature(0, neww, newh));
|
||||
//f = frames.Find(x => x.code == 0);
|
||||
append = "Single";
|
||||
monospaced = false;
|
||||
@@ -557,20 +557,20 @@ namespace McBitFont {
|
||||
} else {
|
||||
if (form.cbNotPrintable.Checked) imin = 0;
|
||||
else if (form.cbLatin.Checked) imin = 32;
|
||||
else imin = 128;
|
||||
else imin = 128;
|
||||
|
||||
if (form.cbExtended.Checked) imax = 255;
|
||||
else if (form.cbLatin.Checked) imax = 127;
|
||||
else imax = 31;
|
||||
}
|
||||
|
||||
|
||||
|
||||
for (i = imin; i <= imax; i++) {
|
||||
newf = new FrameMiniature(i, neww, newh);
|
||||
if (form.cbFontBased.Checked) newf = fillFrame(newf, form.dlgFont.Font, (int)form.nudShiftX.Value, (int)form.nudShiftY.Value);
|
||||
frames.Add(newf);
|
||||
}
|
||||
|
||||
|
||||
monospaced = form.rbMono.Checked;
|
||||
}
|
||||
lblType.Text = monospaced ? "Monospaced" : "Variable width / Single";
|
||||
@@ -579,7 +579,7 @@ namespace McBitFont {
|
||||
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+' '+append+sss, s);
|
||||
miniList.Items.Add(s, s + ' ' + append + sss, s);
|
||||
}
|
||||
f = copyFrame(frames.First());
|
||||
dotPanel.Refresh();
|
||||
@@ -603,6 +603,8 @@ namespace McBitFont {
|
||||
checkModifiedFrame();
|
||||
if (miniList.SelectedItems.Count == 0) {
|
||||
removeSymbolToolStripMenuItem.Enabled = false;
|
||||
removeBeforeToolStripMenuItem.Enabled = false;
|
||||
removeAfterToolStripMenuItem.Enabled = false;
|
||||
copyToolStripMenuItem.Enabled = false;
|
||||
pasteToolStripMenuItem.Enabled = false;
|
||||
return;
|
||||
@@ -622,6 +624,17 @@ namespace McBitFont {
|
||||
removeSymbolToolStripMenuItem.Enabled = false;
|
||||
}
|
||||
copyToolStripMenuItem.Enabled = true;
|
||||
if (ff.Equals(frames.First())) {
|
||||
removeBeforeToolStripMenuItem.Enabled = false;
|
||||
removeAfterToolStripMenuItem.Enabled = true;
|
||||
} else if (ff.Equals(frames.Last())) {
|
||||
removeBeforeToolStripMenuItem.Enabled = true;
|
||||
removeAfterToolStripMenuItem.Enabled = false;
|
||||
} else {
|
||||
removeBeforeToolStripMenuItem.Enabled = true;
|
||||
removeAfterToolStripMenuItem.Enabled = true;
|
||||
}
|
||||
|
||||
if (fbuffer) pasteToolStripMenuItem.Enabled = true;
|
||||
else pasteToolStripMenuItem.Enabled = false;
|
||||
}
|
||||
@@ -724,7 +737,7 @@ namespace McBitFont {
|
||||
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);
|
||||
@@ -755,11 +768,11 @@ namespace McBitFont {
|
||||
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;
|
||||
var 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, j] = fbuf.data[i, j];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -794,7 +807,7 @@ namespace McBitFont {
|
||||
checkModifiedFrame();
|
||||
saveProject(prjFileName);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void btnClear_Click(object sender, EventArgs e) {
|
||||
@@ -817,5 +830,35 @@ namespace McBitFont {
|
||||
dotPanel.Refresh();
|
||||
}
|
||||
|
||||
// Remove all before or after specified symbol
|
||||
private void removeBA(bool before) {
|
||||
if (miniList.SelectedItems.Count == 0) {
|
||||
removeBeforeToolStripMenuItem.Enabled = false;
|
||||
removeAfterToolStripMenuItem.Enabled = false;
|
||||
return;
|
||||
}
|
||||
int step = before ? -1 : 1;
|
||||
var sel = miniList.SelectedItems[0].ImageKey;
|
||||
int code = Convert.ToInt32(sel);
|
||||
int findex;
|
||||
|
||||
while (miniList.Items.ContainsKey((code + step).ToString().PadLeft(3, '0'))) {
|
||||
code += step;
|
||||
findex = frames.FindIndex(x => x.code == code);
|
||||
frames.RemoveAt(findex);
|
||||
miniList.Items.RemoveByKey(code.ToString().PadLeft(3, '0'));
|
||||
}
|
||||
//dotPanel.Refresh();
|
||||
miniList.Refresh();
|
||||
prjModified = true;
|
||||
}
|
||||
|
||||
private void removeBeforeToolStripMenuItem_Click(object sender, EventArgs e) {
|
||||
removeBA(true);
|
||||
}
|
||||
|
||||
private void removeAfterToolStripMenuItem_Click(object sender, EventArgs e) {
|
||||
removeBA(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -20,6 +20,8 @@
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
|
||||
<ApplicationIcon>icon_64.ico</ApplicationIcon>
|
||||
<AssemblyVersion>2.0.0.0</AssemblyVersion>
|
||||
<FileVersion>2.0.0.0</FileVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="icon.ico" />
|
||||
|
3
TODO.txt
3
TODO.txt
@@ -1,8 +1,9 @@
|
||||
Application:
|
||||
V Migrate from .Net Framework 4.7 to .NET 9
|
||||
|
||||
Functionality:
|
||||
- Context menu in symbol navigator
|
||||
- Delete symbols before/after selected
|
||||
V Delete symbols before/after selected
|
||||
- Shift all symbols on code line (change symbol codes)
|
||||
- Specify starting code (extends the shift)
|
||||
- Ability to make monospaced font a variable width one
|
||||
|
Reference in New Issue
Block a user