using PaintDotNet;
using PaintDotNet.Base.CommTool;
using PaintDotNet.Base.SettingModel;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Metis.Setting
{
internal partial class GridSettingForm : PdnBaseForm
{
///
/// 主控件
///
private AppWorkspace appWorkspace;
///
/// 网格设置的model
///
private GridModel gridModel = Startup.instance.gridModel;
///
/// 单位标尺
///
private double unitLength = 1;
///
/// 网格调色板
///
PaintDotNet.ColorsForm colorsFormGrid;
///
/// 正方形调色板
///
PaintDotNet.ColorsForm colorsFormRect;
///
/// 圆形调色板
///
PaintDotNet.ColorsForm colorsFormCircular;
///
/// 网格样式的增改删,0-添加、1-修改、2-删除
///
private int operation = -1;
public GridSettingForm(AppWorkspace appWorkspace)
{
this.appWorkspace = appWorkspace;
InitializeComponent();
InitializeLanguageText();
InitParameterData();
InitializeComponent2();
InitializationDataGridView();
UnitData();
}
private void InitializeLanguageText()
{
this.Text = PdnResources.GetString("Menu.Setting.GridSetting.Text");
this.groupBox5.Text = PdnResources.GetString("GridAdded");
this.btnDel.Text = PdnResources.GetString("Menu.Edit.Delete.Text");
this.groupBox1.Text = PdnResources.GetString("Menu.Setting.Text");
this.btnSave.Text = PdnResources.GetString("CommonAction.Save");
this.btnSaveAs.Text = PdnResources.GetString("Menu.Edit.Copy.Text");
this.button1.Text = PdnResources.GetString("Menu.Imagement.Rulersetting.active.text");
this.groupBox2.Text = PdnResources.GetString("Menu.Edit.Text");
this.label6.Text = PdnResources.GetString("Menu.name.text") + ":";
this.label8.Text = PdnResources.GetString("Menu.unit.text") + ":";
this.label9.Text = PdnResources.GetString("Menu.width.text") + ":";
this.label10.Text = PdnResources.GetString("Menu.height.text") + ":";
this.label12.Text = PdnResources.GetString("Menu.row.text") + ":";
this.label11.Text = PdnResources.GetString("Menu.columns.text") + ":";
this.label2.Text = PdnResources.GetString("Menu.diameter.text") + ":";
this.label1.Text = PdnResources.GetString("Menu.Generalanalysis.Processmparison.Sidelength.text") + ":";
this.label4.Text = PdnResources.GetString("Menu.Tools.GridLine.Text") + ":";
this.label5.Text = PdnResources.GetString("Menu.circular.Text") + ":";
this.label3.Text = PdnResources.GetString("Menu.MeasureAction.MeasureSquare.Text") + ":";
}
///
/// 给下拉集合赋值
///
private void InitParameterData()
{
this.comboBox_Grid.Items.AddRange(InvariantData.dashStyles);
this.comboBox_Circular.Items.AddRange(InvariantData.dashStyles);
this.comboBox_Square.Items.AddRange(InvariantData.dashStyles);
}
///
/// 网格样式列表初始化
///
private void InitializationDataGridView()
{
this.dataGridView1.Rows.Clear();
//keyValuePairs.Clear();
int serveNameID = 0;
this.dataGridView1.ReadOnly = true;
List fileNames = FileOperationHelper.GetFileList(Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\GridConfig\\");
if (fileNames.Count > 0)
{
for (int i = 0; i < fileNames.Count; i++)
{
GridModel gselectRidModel = XmlSerializeHelper.DESerializer(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\GridConfig\\" + fileNames[i], FileMode.Open));
DataGridViewRow row = new DataGridViewRow();
foreach (DataGridViewColumn c in this.dataGridView1.Columns)
{
row.Cells.Add(c.CellTemplate.Clone() as DataGridViewCell);
}
row.Cells[0].Value = gselectRidModel.gridName;
if (gselectRidModel.gridName.Equals(Startup.instance.configModel.GridName))
{
serveNameID = i;
}
this.dataGridView1.Rows.Add(row);
}
if (operation != 2)
{
this.dataGridView1.CurrentCell = this.dataGridView1[0, serveNameID];
}
else
{
this.dataGridView1.CurrentCell = this.dataGridView1[0, 0];
}
RefreshDataGridView();
}
}
private string serveName = string.Empty;
///
/// 刷新网格样式列表
///
private void RefreshDataGridView()
{
if (this.dataGridView1.SelectedRows.Count > 0 && this.dataGridView1.CurrentCell != null)
{
serveName = this.dataGridView1.CurrentCell.Value.ToString();
//string selectName = this.dataGridView1.CurrentCell.Value.ToString() + ".xml";
GridModel gselectRidModel = XmlSerializeHelper.DESerializer(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\GridConfig\\" + serveName + ".xml", FileMode.Open));
this.textBox1.Text = serveName;
//网格
this.numericUpDown1.Value = gselectRidModel.grid.ActualLength > 0 ? gselectRidModel.grid.ActualLength : 1;
this.numericUpDown2.Value = gselectRidModel.grid.ActualHeight > 0 ? gselectRidModel.grid.ActualHeight : 1;
this.numericUpDown4.Value = gselectRidModel.grid.HorizontalNum > 0 ? gselectRidModel.grid.HorizontalNum : 1;
this.numericUpDown3.Value = gselectRidModel.grid.VerticalNum > 0 ? gselectRidModel.grid.VerticalNum : 1;
this.comboBox_Grid.SelectedIndex = gselectRidModel.grid.DashStyle;
this.numericUpDown7.Value = gselectRidModel.grid.Thickness > 0 ? gselectRidModel.grid.Thickness : 1;
this.gridPanel.BackColor = Color.FromArgb(gselectRidModel.grid.Color);
//正方形
this.comboBox_Square.SelectedIndex = gselectRidModel.rectangle.DashStyle;
this.numericUpDown9.Value = gselectRidModel.rectangle.Thickness > 0 ? gselectRidModel.rectangle.Thickness : 1;
this.numericUpDown6.Value = gselectRidModel.rectangle.ActualLength > 0 ? gselectRidModel.rectangle.ActualLength : 1;
this.rectPanel.BackColor = Color.FromArgb(gselectRidModel.rectangle.Color);
//圆形
this.comboBox_Circular.SelectedIndex = gselectRidModel.round.DashStyle;
this.numericUpDown8.Value = gselectRidModel.round.Thickness > 0 ? gselectRidModel.round.Thickness : 1;
this.numericUpDown5.Value = gselectRidModel.round.ActualDiameter > 0 ? gselectRidModel.round.ActualDiameter : 1;
this.circularPanel.BackColor = Color.FromArgb(gselectRidModel.round.Color);
if (gselectRidModel.grid.Unit == 6)
comboBox7.Text = "px";
else if (gselectRidModel.grid.Unit == 4)
comboBox7.Text = "μm";
}
}
///
/// 初始化组件
///
private void InitializeComponent2()
{
this.textBox1.Text = gridModel.gridName;
this.numericUpDown1.Value = gridModel.grid.ActualLength > 0 ? gridModel.grid.ActualLength : 1;
this.numericUpDown2.Value = gridModel.grid.ActualHeight > 0 ? gridModel.grid.ActualHeight : 1;
this.numericUpDown4.Value = gridModel.grid.HorizontalNum > 0 ? gridModel.grid.HorizontalNum : 1;
this.numericUpDown3.Value = gridModel.grid.VerticalNum > 0 ? gridModel.grid.VerticalNum : 1;
this.comboBox_Grid.SelectedIndex = gridModel.grid.DashStyle;
this.numericUpDown7.Value = gridModel.grid.Thickness > 0 ? gridModel.grid.Thickness : 1;
this.gridPanel.BackColor = Color.FromArgb(gridModel.grid.Color);
this.numericUpDown6.Value = gridModel.rectangle.sideLength > 0 ? gridModel.rectangle.sideLength : 80;
this.comboBox_Square.SelectedIndex = gridModel.rectangle.DashStyle;
this.numericUpDown9.Value = gridModel.rectangle.Thickness > 0 ? gridModel.rectangle.Thickness : 1;
this.rectPanel.BackColor = Color.FromArgb(gridModel.rectangle.Color);
this.numericUpDown5.Value = gridModel.round.diameter > 0 ? gridModel.round.diameter : 70;
this.comboBox_Circular.SelectedIndex = gridModel.round.DashStyle;
this.numericUpDown8.Value = gridModel.round.Thickness > 0 ? gridModel.round.Thickness : 1;
this.circularPanel.BackColor = Color.FromArgb(gridModel.round.Color);
this.colorsFormGrid = new ColorsForm();
this.colorsFormGrid.StartPosition = FormStartPosition.CenterScreen;
this.colorsFormGrid.UserPrimaryColorChanged += new ColorEventHandler(this.colorsFormUserPrimaryColorChanged);
this.colorsFormRect = new ColorsForm();
this.colorsFormRect.StartPosition = FormStartPosition.CenterScreen;
this.colorsFormRect.UserPrimaryColorChanged += new ColorEventHandler(this.colorsFormUserPrimaryColorChanged);
this.colorsFormCircular = new ColorsForm();
this.colorsFormCircular.StartPosition = FormStartPosition.CenterScreen;
this.colorsFormCircular.UserPrimaryColorChanged += new ColorEventHandler(this.colorsFormUserPrimaryColorChanged);
//this.groupBox2.Enabled = false;
//this.groupBox3.Enabled = false;
//this.groupBox4.Enabled = false;
}
///
/// 单位设置初始化
///
private void UnitData()
{
this.appWorkspace.getMeasureInfo().TryGetValue(MeasurementUnit.Micron, out unitLength);//获取系统标尺-微米
if (gridModel.grid.Unit == 6)
comboBox7.Text = "px";
else if (gridModel.grid.Unit == 4)
comboBox7.Text = "μm";
}
///
/// 调色板回调函数
///
///
///
private void colorsFormUserPrimaryColorChanged(object sender, ColorEventArgs ce)
{
}
#region 宽度
private void trackBar1_Scroll(object sender, EventArgs e)
{
this.numericUpDown1.Value = this.trackBar1.Value;
}
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
this.trackBar1.Value = Convert.ToInt32(this.numericUpDown1.Value);
}
#endregion
#region 高度
private void trackBar2_Scroll(object sender, EventArgs e)
{
this.numericUpDown2.Value = this.trackBar2.Value;
}
private void numericUpDown2_ValueChanged(object sender, EventArgs e)
{
this.trackBar2.Value = Convert.ToInt32(this.numericUpDown2.Value);
}
#endregion
#region 列数
private void trackBar3_Scroll(object sender, EventArgs e)
{
this.numericUpDown3.Value = this.trackBar3.Value;
}
private void numericUpDown3_ValueChanged(object sender, EventArgs e)
{
this.trackBar3.Value = Convert.ToInt32(this.numericUpDown3.Value);
}
#endregion
#region 行数
private void trackBar4_Scroll(object sender, EventArgs e)
{
this.numericUpDown4.Value = this.trackBar4.Value;
}
private void numericUpDown4_ValueChanged(object sender, EventArgs e)
{
this.trackBar4.Value = Convert.ToInt32(this.numericUpDown4.Value);
}
#endregion
#region 直径
private void trackBar5_Scroll(object sender, EventArgs e)
{
this.numericUpDown5.Value = this.trackBar5.Value;
}
private void numericUpDown5_ValueChanged(object sender, EventArgs e)
{
this.trackBar5.Value = Convert.ToInt32(this.numericUpDown5.Value);
}
#endregion
#region 边长
private void trackBar6_Scroll(object sender, EventArgs e)
{
this.numericUpDown6.Value = this.trackBar6.Value;
}
private void numericUpDown6_ValueChanged(object sender, EventArgs e)
{
this.trackBar6.Value = Convert.ToInt32(this.numericUpDown6.Value);
}
#endregion
private void gridPanel_Click(object sender, EventArgs e)
{
this.colorsFormGrid.UserPrimaryColor = ColorBgra.FromColor(this.gridPanel.BackColor);
this.colorsFormGrid.setSaveBtn_Click(new System.EventHandler(this.gridColorChanged));
this.colorsFormGrid.ShowDialog();
}
private void circularPanel_Click(object sender, EventArgs e)
{
this.colorsFormCircular.UserPrimaryColor = ColorBgra.FromColor(this.circularPanel.BackColor);
this.colorsFormCircular.setSaveBtn_Click(new System.EventHandler(this.circularColorChanged));
this.colorsFormCircular.ShowDialog();
}
private void rectPanel_Click(object sender, EventArgs e)
{
this.colorsFormRect.UserPrimaryColor = ColorBgra.FromColor(this.rectPanel.BackColor);
this.colorsFormRect.setSaveBtn_Click(new System.EventHandler(this.rectColorChanged));
this.colorsFormRect.ShowDialog();
}
///
/// 网格Panel的调色板颜色改变
///
///
///
private void gridColorChanged(object sender, EventArgs e)
{
this.gridPanel.BackColor = this.colorsFormGrid.UserPrimaryColor.ToColor();
// this.measureStyleModel.backColor = this.colorsForm.UserPrimaryColor.ToColor().ToArgb();
this.colorsFormGrid.Close();
}
///
/// 矩形Panel的调色板颜色改变
///
///
///
private void rectColorChanged(object sender, EventArgs e)
{
this.rectPanel.BackColor = this.colorsFormRect.UserPrimaryColor.ToColor();
// this.measureStyleModel.backColor = this.colorsForm.UserPrimaryColor.ToColor().ToArgb();
this.colorsFormRect.Close();
}
///
/// 圆形Panel的调色板颜色改变
///
///
///
private void circularColorChanged(object sender, EventArgs e)
{
this.circularPanel.BackColor = this.colorsFormCircular.UserPrimaryColor.ToColor();
// this.measureStyleModel.backColor = this.colorsForm.UserPrimaryColor.ToColor().ToArgb();
this.colorsFormCircular.Close();
}
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
RefreshDataGridView();
}
private void btnSaveAs_Click(object sender, EventArgs e)
{
operation = 0;
}
private void btnSave_Click(object sender, EventArgs e)
{
string userInfoXml = XmlSerializeHelper.XmlSerialize(CurrentGridModel());
if (operation == -1)
{
string updateName = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\GridConfig\\" + this.dataGridView1.CurrentCell.Value + ".xml";
System.IO.File.Delete(updateName);
//FileOperationHelper.DeleteFolder(updateName);
//保存到xml
string gridFilePath = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\GridConfig\\" + this.textBox1.Text + ".xml";
if (System.IO.File.Exists(gridFilePath))
{
MessageBox.Show(PdnResources.GetString("Menu.Thefilenandmodify.text"));
return;
}
if (!FileOperationHelper.WriteStringToFile(userInfoXml, gridFilePath, FileMode.Create))
{
MessageBox.Show(PdnResources.GetString("Menu.idinformationsavin.Text"));
}
this.dataGridView1.SelectedCells[0].Value = this.textBox1.Text;
}
else if (operation == 0)
{
//保存到xml
string gridFilePath = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\GridConfig\\" + this.textBox1.Text + ".xml";
if (System.IO.File.Exists(gridFilePath))
{
MessageBox.Show(PdnResources.GetString("Menu.Thefilenandmodify.text"));
return;
}
else
{
if (!FileOperationHelper.WriteStringToFile(userInfoXml, gridFilePath, FileMode.Create))
{
MessageBox.Show(PdnResources.GetString("Menu.idinformationsavin.Text"));
}
InitializationDataGridView();
}
operation = -1;
//this.button1.Text = PdnResources.GetString("Menu.application.text");
}
//InitializationDataGridView();
}
///
/// 获取model
///
///
private GridModel CurrentGridModel()
{
//临时model,根据应用场景运用
GridModel temporarygridModel = new GridModel();
temporarygridModel.grid = new GridModel.Grid();
temporarygridModel.rectangle = new GridModel.Rectangle();
temporarygridModel.round = new GridModel.Round();
temporarygridModel.gridName = this.textBox1.Text;
if ("px".Equals(comboBox7.Text))
{
temporarygridModel.grid.SideLength = (int)this.numericUpDown1.Value;
temporarygridModel.grid.SideHeight = (int)this.numericUpDown2.Value;
temporarygridModel.rectangle.sideLength = (int)this.numericUpDown6.Value;
temporarygridModel.round.diameter = (int)this.numericUpDown5.Value;
}
else if ("μm".Equals(comboBox7.Text))
{
temporarygridModel.grid.SideLength = int.Parse(((double)this.numericUpDown1.Value / unitLength).ToString("F0"));
temporarygridModel.grid.SideHeight = int.Parse(((double)this.numericUpDown2.Value / unitLength).ToString("F0"));
temporarygridModel.rectangle.sideLength = int.Parse(((double)this.numericUpDown6.Value / unitLength).ToString("F0"));
temporarygridModel.round.diameter = int.Parse(((double)this.numericUpDown5.Value / unitLength).ToString("F0"));
}
temporarygridModel.grid.HorizontalNum = (int)this.numericUpDown4.Value;
temporarygridModel.grid.VerticalNum = (int)this.numericUpDown3.Value;
temporarygridModel.grid.DashStyle = this.comboBox_Grid.SelectedIndex;
temporarygridModel.grid.Thickness = (int)this.numericUpDown7.Value;
temporarygridModel.grid.Color = this.gridPanel.BackColor.ToArgb();
if ("px".Equals(comboBox7.Text))
{
temporarygridModel.grid.Unit = (int)MeasurementUnit.Pixel;
}
else if ("μm".Equals(comboBox7.Text))
{
temporarygridModel.grid.Unit = (int)MeasurementUnit.Micron;
}
temporarygridModel.rectangle.DashStyle = this.comboBox_Square.SelectedIndex;
temporarygridModel.rectangle.Thickness = (int)this.numericUpDown9.Value;
temporarygridModel.rectangle.Color = this.rectPanel.BackColor.ToArgb();
temporarygridModel.round.DashStyle = this.comboBox_Circular.SelectedIndex;
temporarygridModel.round.Thickness = (int)this.numericUpDown8.Value;
temporarygridModel.round.Color = this.circularPanel.BackColor.ToArgb();
temporarygridModel.grid.ActualLength = (int)this.numericUpDown1.Value;
temporarygridModel.grid.ActualHeight = (int)this.numericUpDown2.Value;
temporarygridModel.rectangle.ActualLength = (int)this.numericUpDown6.Value;
temporarygridModel.round.ActualDiameter = (int)this.numericUpDown5.Value;
return temporarygridModel;
}
///
/// 删除
///
///
///
private void btnDel_Click(object sender, EventArgs e)
{
if (this.dataGridView1.Rows.Count > 1)
{
DialogResult dr = MessageBox.Show(PdnResources.GetString("Menu.Areyousuretcteddata.text") + "?", PdnResources.GetString("Menu.ensure.text"), MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
if (dr == DialogResult.OK)
{
operation = 2;
string updateName = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\GridConfig\\" + this.dataGridView1.CurrentCell.Value.ToString() + ".xml";
System.IO.File.Delete(updateName);
InitializationDataGridView();
operation = -1;
}
}
else
{
MessageBox.Show("只有一条数据,不可删除!");
return;
}
}
///
/// 激活
///
///
///
private void button1_Click(object sender, EventArgs e)
{
Startup.instance.gridModel = CurrentGridModel();
string userInfoXml = XmlSerializeHelper.XmlSerialize(CurrentGridModel());
Startup.instance.configModel.GridName = this.textBox1.Text;
string configXml = XmlSerializeHelper.XmlSerialize(Startup.instance.configModel);
string configPath = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\Config.xml";
FileOperationHelper.WriteStringToFile(configXml, configPath, FileMode.Create);
string filePath = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\Grid.xml";
if (!FileOperationHelper.WriteStringToFile(userInfoXml, filePath, FileMode.Create))
MessageBox.Show(PdnResources.GetString("Menu.idinformationsavin.Text"));
if (appWorkspace.ActiveDocumentWorkspace != null)
appWorkspace.ActiveDocumentWorkspace.Refresh();
if (operation != -1) operation = -1;
}
}
}