using Community.VisualStudio.Toolkit;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using VberAdmin.Models;
namespace VberAdmin.WinForm
{
public delegate void GeneratorCodeStart();
public partial class VberForm : Form
{
public event GeneratorCodeStart OnGeneratorCodeStart;
public VberForm()
{
InitializeComponent();
}
public VberForm(TemplateViewModel viewModel)
{
InitializeComponent();
ViewModel = viewModel;
_parentPath = tPathParent.Text;
}
[DllImport("user32.dll")]
public static extern bool ReleaseCapture();
[DllImport("user32.dll")]
public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
private const int VmNclbuttondown = 0XA1;//定义鼠标左键按下
private const int Htcaption = 2;
public void SetVersion(string version, Color bg)
{
lab_version.Text = version;
pHeader.BackColor = bg;
pFooter.BackColor = bg;
}
///
/// 鼠标按下
///
///
///
private void Title_MouseDown(object sender, MouseEventArgs e)
{
//为当前应用程序释放鼠标捕获
ReleaseCapture();
//发送消息 让系统误以为在标题栏上按下鼠标
SendMessage(Handle, VmNclbuttondown, Htcaption, 0);
}
public TemplateViewModel ViewModel { get; set; }
private readonly string _parentPath;
private void Form_Load(object sender, EventArgs e)
{
try
{
tFileName.Text = ViewModel.BaseFolder;
tExtFilePath.Text = ViewModel.FileName;
tPathDto.Text = ViewModel.DtoFolder;
tPathService.Text = ViewModel.ServiceFolder;
tPathController.Text = ViewModel.ControllerFolder;
tPathView.Text = ViewModel.ViewsFolder;
tProjectName.Text = ViewModel.ProjectName;
tClassName.Text = ViewModel.ClassName;
tPageTitle.Text = ViewModel.HtmlPageTitle;
tModalTitle.Text = ViewModel.HtmlModalTitle;
var columnList = new List { new ColumnViewModel { ColumnName = "Id", Comment = "Id" } };
columnList.AddRange(ViewModel.Columns ?? new List());
columnList.Add(new ColumnViewModel { ColumnName = "", Comment = "" });
cPrimarykey.DataSource = columnList;
cPrimarykey.SelectedIndex = 0;
//tPathParent.Text = ViewModel.ParentPath;
dgvColumns.DataSource = ViewModel.Columns;
}
catch (Exception ex)
{
VS.MessageBox.ShowError($@"系统出错![{ex.Message}]");
}
}
private void btnStart_Click(object sender, EventArgs e)
{
try
{
ViewModel.ProjectName = tProjectName.Text;
ViewModel.ClassName = tClassName.Text;
ViewModel.HtmlPageTitle = tPageTitle.Text;
ViewModel.HtmlModalTitle = tModalTitle.Text;
ViewModel.ColumnPrimaryKey = cPrimarykey.SelectedValue.ToString();
ViewModel.ParentPath = tPathParent.Text == _parentPath ? "" : tPathParent.Text;
ViewModel.ExtFilePath = tExtFilePath.Text;
//ViewModel.DtoFolder = tPathDto.Text ;//== ViewModel.DtoFolder ? "" : tPathDto.Text;
//ViewModel.ServiceFolder = tPathService.Text;// == ViewModel.ServiceFolder ? "" : tPathService.Text;
ViewModel.ControllerFolder = tPathController.Text;
ViewModel.ViewsFolder = tPathView.Text;
ViewModel.Columns = (List)dgvColumns.DataSource;
ViewModel.IsCreateDto = cCreateDto.Checked;
ViewModel.IsUpdateDto = cUpdateDto.Checked;
ViewModel.IsListDto = cListDto.Checked;
ViewModel.IsApplicationService = cService.Checked;
ViewModel.IsIApplicationService = cServiceInterface.Checked;
ViewModel.IsController = cController.Checked;
ViewModel.IsView = cView.Checked;
ViewModel.IsReplace = cReplace.Checked;
ViewModel.IsMultipleSearch = cMulitSearch.Checked;
DialogResult = DialogResult.OK;
OnGeneratorCodeStart?.Invoke();
}
catch (Exception ex)
{
VS.MessageBox.ShowError($@"系统出错![{ex.Message}]");
}
}
private void btnClose_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.Cancel;
Close();
}
#region tPathParent
private void tPathParent_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = e.KeyChar != '\b' && (e.KeyChar > '9' || e.KeyChar < '0') &&
(e.KeyChar > 'Z' || e.KeyChar < 'A') && (e.KeyChar > 'z' || e.KeyChar < 'a');
}
private void tPathParent_GotFocus(object sender, EventArgs e)
{
if (tPathParent.Text == _parentPath)
tPathParent.Text = "";
}
private void tPathParent_LostFocus(object sender, EventArgs e)
{
if (tPathParent.Text == "")
tPathParent.Text = _parentPath;
}
#endregion tPathParent
private void tExtFilePath_TextChanged(object sender, EventArgs e)
{
ViewModel.ExtFilePath = tExtFilePath.Text;
tPathDto.Text = ViewModel.DtoFolder;
tPathService.Text = ViewModel.ServiceFolder;
}
}
}