mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2024-11-22 23:12:59 +08:00
114 lines
4.8 KiB
C#
114 lines
4.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
using System.Windows.Forms;
|
|
using System.Drawing;
|
|
using ST.Library.UI.NodeEditor;
|
|
|
|
namespace ST.Library.UI
|
|
{
|
|
internal class FrmSTNodePropertyInput : Form
|
|
{
|
|
private STNodePropertyDescriptor m_descriptor;
|
|
private Rectangle m_rect;
|
|
private Pen m_pen;
|
|
private SolidBrush m_brush;
|
|
private TextBox m_tbx;
|
|
|
|
public FrmSTNodePropertyInput(STNodePropertyDescriptor descriptor) {
|
|
this.SetStyle(ControlStyles.UserPaint, true);
|
|
this.SetStyle(ControlStyles.ResizeRedraw, true);
|
|
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
|
|
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
|
|
this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
|
|
|
|
m_rect = descriptor.RectangleR;
|
|
m_descriptor = descriptor;
|
|
this.ShowInTaskbar = false;
|
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
|
this.BackColor = descriptor.Control.AutoColor ? descriptor.Node.TitleColor : descriptor.Control.ItemSelectedColor;
|
|
m_pen = new Pen(descriptor.Control.ForeColor, 1);
|
|
m_brush = new SolidBrush(this.BackColor);
|
|
}
|
|
|
|
protected override void OnLoad(EventArgs e) {
|
|
base.OnLoad(e);
|
|
Point pt = m_descriptor.Control.PointToScreen(m_rect.Location);
|
|
pt.Y += m_descriptor.Control.ScrollOffset;
|
|
this.Location = pt;
|
|
this.Size = new System.Drawing.Size(m_rect.Width + m_rect.Height, m_rect.Height);
|
|
|
|
m_tbx = new TextBox();
|
|
m_tbx.Font = m_descriptor.Control.Font;
|
|
m_tbx.ForeColor = m_descriptor.Control.ForeColor;
|
|
m_tbx.BackColor = Color.FromArgb(255, m_descriptor.Control.ItemValueBackColor);
|
|
m_tbx.BorderStyle = BorderStyle.None;
|
|
|
|
m_tbx.Size = new Size(this.Width - 4 - m_rect.Height, this.Height - 2);
|
|
m_tbx.Text = m_descriptor.GetStringFromValue();
|
|
this.Controls.Add(m_tbx);
|
|
m_tbx.Location = new Point(2, (this.Height - m_tbx.Height) / 2);
|
|
m_tbx.SelectAll();
|
|
m_tbx.LostFocus += (s, ea) => this.Close();
|
|
m_tbx.KeyDown += new KeyEventHandler(tbx_KeyDown);
|
|
}
|
|
|
|
protected override void OnPaint(PaintEventArgs e) {
|
|
base.OnPaint(e);
|
|
Graphics g = e.Graphics;
|
|
m_brush.Color = m_tbx.BackColor;
|
|
g.FillRectangle(m_brush, 1, 1, this.Width - 2 - m_rect.Height, this.Height - 2);
|
|
m_brush.Color = m_descriptor.Control.ForeColor;
|
|
//Enter
|
|
g.FillPolygon(m_brush, new Point[]{
|
|
new Point(this.Width - 21, this.Height - 2),
|
|
new Point(this.Width - 14, this.Height - 2),
|
|
new Point(this.Width - 14, this.Height - 8)
|
|
});
|
|
g.DrawLine(m_pen, this.Width - 14, this.Height - 3, this.Width - 4, this.Height - 3);
|
|
g.DrawLine(m_pen, this.Width - 4, this.Height - 3, this.Width - 4, 14);
|
|
g.DrawLine(m_pen, this.Width - 8, 13, this.Width - 4, 13);
|
|
//----
|
|
g.DrawLine(m_pen, this.Width - 19, 11, this.Width - 4, 11);
|
|
//E
|
|
g.DrawLine(m_pen, this.Width - 19, 3, this.Width - 16, 3);
|
|
g.DrawLine(m_pen, this.Width - 19, 6, this.Width - 16, 6);
|
|
g.DrawLine(m_pen, this.Width - 19, 9, this.Width - 16, 9);
|
|
g.DrawLine(m_pen, this.Width - 19, 3, this.Width - 19, 9);
|
|
//S
|
|
g.DrawLine(m_pen, this.Width - 13, 3, this.Width - 10, 3);
|
|
g.DrawLine(m_pen, this.Width - 13, 6, this.Width - 10, 6);
|
|
g.DrawLine(m_pen, this.Width - 13, 9, this.Width - 10, 9);
|
|
g.DrawLine(m_pen, this.Width - 13, 3, this.Width - 13, 6);
|
|
g.DrawLine(m_pen, this.Width - 10, 6, this.Width - 10, 9);
|
|
//C
|
|
g.DrawLine(m_pen, this.Width - 7, 3, this.Width - 4, 3);
|
|
g.DrawLine(m_pen, this.Width - 7, 9, this.Width - 4, 9);
|
|
g.DrawLine(m_pen, this.Width - 7, 3, this.Width - 7, 9);
|
|
}
|
|
|
|
void tbx_KeyDown(object sender, KeyEventArgs e) {
|
|
if (e.KeyCode == Keys.Escape) this.Close();
|
|
if (e.KeyCode != Keys.Enter) return;
|
|
try {
|
|
m_descriptor.SetValue(((TextBox)sender).Text, null);
|
|
m_descriptor.Control.Invalidate();//add rect;
|
|
} catch (Exception ex) {
|
|
m_descriptor.OnSetValueError(ex);
|
|
}
|
|
this.Close();
|
|
}
|
|
|
|
private void InitializeComponent() {
|
|
this.SuspendLayout();
|
|
//
|
|
// FrmSTNodePropertyInput
|
|
//
|
|
this.ClientSize = new System.Drawing.Size(292, 273);
|
|
this.Name = "FrmSTNodePropertyInput";
|
|
this.ResumeLayout(false);
|
|
}
|
|
}
|
|
} |