123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510 |
- using OTS.WinFormsUI.Docking;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using static System.Windows.Forms.VisualStyles.VisualStyleElement;
- namespace OTSPartA_STDEditor
- {
- public partial class ReferenceLibrary : DockContent
- {
- public SubMidWindow m_SubMidWindow = null;
- protected SourceGrid.Cells.Views.Cell m_CellGroupType = null;
- public Dictionary<int, STDdata> ReferenceDictionary = new Dictionary<int, STDdata>();
- System.Collections.Hashtable table_ReferenceLibrary;
- readonly Dictionary<int, string> ReferenceGroup = new Dictionary<int, string>();
- public ReferenceLibrary(SubMidWindow SubMidWindow)
- {
- InitializeComponent();
- m_SubMidWindow = SubMidWindow;
- }
- private void InitGrid()
- {
- int iColumnWidth = 20; // 第一列的宽度
- int width = this.Width;
- PropGrid.Redim(1, 12);
- PropGrid.Columns.SetWidth(0, iColumnWidth);
- PropGrid.Columns.AutoSizeColumn(2); // 固定进度条
- PropGrid.Columns.SetWidth(2, 1 * (width - iColumnWidth) / 30);
- PropGrid.Columns.SetWidth(3, 25 * (width - iColumnWidth) / 30);
- PropGrid.Columns.SetWidth(4, 3 * (width - iColumnWidth) / 30);
- PropGrid.Columns.SetWidth(5, 1 * (width - iColumnWidth) / 30);
- PropGrid.Columns.SetWidth(6, 1 * (width - iColumnWidth) / 30);
- PropGrid.Columns.SetWidth(7, 2 * (width - iColumnWidth) / 30);
- PropGrid.Columns.SetWidth(8, 1 * (width - iColumnWidth) / 30);
- PropGrid.Columns.SetWidth(9, 3 * (width - iColumnWidth) / 30);
- PropGrid.Columns.SetWidth(10, 10 * (width - iColumnWidth) / 30);
- PropGrid.Columns.SetWidth(11, 1 * (width - iColumnWidth) / 30);
- PropGrid.AutoStretchColumnsToFitWidth = true;
- // 创建列标题
- if (null == PropGrid[0, 1])
- {
- List<String> listColName = new List<string>();
- if (m_SubMidWindow.m_MainForm.lan.GetNameTable("Form_Main")["language"].ToString() == "ZH")
- {
- listColName.Add("规则名称");
- listColName.Add("颜色");
- listColName.Add("表达式");
- listColName.Add("必须存在元素");
- listColName.Add("硬度");
- listColName.Add("密度");
- listColName.Add("导电性");
- listColName.Add("BSE");
- listColName.Add("化学式");
- listColName.Add("元素");
- listColName.Add("分组名称");
- }
- else
- {
- listColName.Add("Rule Name");
- listColName.Add("Color");
- listColName.Add("Expression");
- listColName.Add("Elements must exist");
- listColName.Add("Hardness");
- listColName.Add("Density");
- listColName.Add("Conductivity");
- listColName.Add("BSE");
- listColName.Add("Formula");
- listColName.Add("Element");
- listColName.Add("GroupName");
- }
- for (int i = 0; i < listColName.Count; i++)
- {
- if (null == PropGrid[0, 1 + i])
- {
- PropGrid[0, 1 + i] = new SourceGrid.Cells.Cell(listColName[i]);
- }
- else
- {
- PropGrid[0, 1 + i].Value = listColName[i];
- }
- }
- PropGrid.FixedRows = 1; // 第一行是列标题不可以滚动
- PropGrid.Selection.EnableMultiSelection = false;
- PropGrid.Refresh();
- }
- }
-
- private void ComparativeLibrary_Load(object sender, EventArgs e)
- {
- m_SubMidWindow.m_MainForm.lan = new Language(this);
- table_ReferenceLibrary = m_SubMidWindow.m_MainForm.lan.GetNameTable("ReferenceLibrary");
- InitGrid();
- }
- bool LoadClassifyToDictionary(string DBAddress, ref Dictionary<int, STDdata> STDDictionary)
- {
- try
- {
- System.Data.SQLite.SQLiteConnection m_dbConnection = new System.Data.SQLite.SQLiteConnection("data source='" + DBAddress + "'");
- m_dbConnection.Open();
- //加载STD信息
- System.Data.SQLite.SQLiteDataAdapter m_dataAdapter = new System.Data.SQLite.SQLiteDataAdapter("select * from ClassifySTD", m_dbConnection);
- DataSet ds = new DataSet();
- m_dataAdapter.Fill(ds);
- DataTable dt = ds.Tables[0];
- ReferenceGroup.Clear();
- STDDictionary.Clear();
- if (dt != null)
- {
- if (dt.Rows.Count > 0)
- {
- foreach (DataRow item in dt.Rows)
- {
- STDdata new_STDdata = new STDdata
- {
- STDId = int.Parse(item["STDId"].ToString()),
- Hardness = item["Hardness"].ToString(),
- Density = item["Density"].ToString(),
- Electrical_conductivity = item["Electrical_conductivity"].ToString(),
- BSE = item["BSE"].ToString(),
- Formula = item["Formula"].ToString(),
- Element = item["Formula"].ToString(),
- StrName = item["StrName"].ToString(),
- Expression = item["Expression"].ToString(),
- Color = item["Color"].ToString(),
- KeyElementList = item["KeyElementList"].ToString(),
- SubElementList = item["SubElementList"].ToString(),
- GroupId = (int)item["GroupId"]
- };
- STDDictionary.Add(int.Parse(item["STDId"].ToString()), new_STDdata);
- }
- }
- }
- System.Data.SQLite.SQLiteDataAdapter m_dataAdapterGroup = new System.Data.SQLite.SQLiteDataAdapter("select Id,name from STDGroups", m_dbConnection);
- DataSet dsGroup = new DataSet();
- m_dataAdapterGroup.Fill(dsGroup);
- DataTable dtGroup = dsGroup.Tables[0];
- if (dtGroup != null)
- {
- if (dtGroup.Rows.Count >= 0)
- {
- foreach (DataRow item in dtGroup.Rows)
- {
- ReferenceGroup.Add(int.Parse(item["Id"].ToString()), item["name"].ToString());
- }
- if(!ReferenceGroup.Keys.Contains(0))
- {
- ReferenceGroup.Add(0, "Default");
- }
- }
- }
- return true;
- }
- catch (Exception)
- {
- MessageBox.Show("Reference library format error, please open the correct reference library!", "Tip");
- return false;
- }
- }
- void AddDataToRefereceLiberary(Dictionary<int, STDdata> RefDictionary)
- {
- PropGrid.Redim(RefDictionary.Count+1, 12);
- int i = 1;
- foreach (KeyValuePair<int, STDdata> kv in RefDictionary)
- {
- if (null == PropGrid[i, 0])
- {
- PropGrid[i, 0] = new SourceGrid.Cells.CheckBox(null, false);
- SourceGrid.Cells.Controllers.CheckBox clickEvent = new SourceGrid.Cells.Controllers.CheckBox();
- clickEvent.CheckedChanged += new EventHandler(clickEvent_Click);
- PropGrid[i, 0].AddController(clickEvent);
- }
- else
- {
- PropGrid[i, 0].Value = false;
- }
- PropGrid.Rows[i].Height = 25;
- PropGrid.Rows[i].Tag = kv.Value;
- PropGrid[i, 1] = new SourceGrid.Cells.Cell(kv.Value.StrName, typeof(string))
- {
- Tag = kv.Value
- };
- PropGrid[i, 2] = new SourceGrid.Cells.Cell("", typeof(string));
- SourceGrid.Cells.Views.Cell view = new SourceGrid.Cells.Views.Cell
- {
- BackColor = STDRuleslist.colorHx16toRGB(kv.Value.Color)
- };
- PropGrid[i, 2].View = view;
- PropGrid[i, 3] = new SourceGrid.Cells.Cell(kv.Value.Expression, typeof(string));
- PropGrid[i, 4] = new SourceGrid.Cells.Cell(kv.Value.KeyElementList, typeof(string));
- PropGrid[i, 5] = new SourceGrid.Cells.Cell(kv.Value.Hardness, typeof(string));
- PropGrid[i, 6] = new SourceGrid.Cells.Cell(kv.Value.Density, typeof(string));
- PropGrid[i, 7] = new SourceGrid.Cells.Cell(kv.Value.Electrical_conductivity, typeof(string));
- PropGrid[i, 8] = new SourceGrid.Cells.Cell(kv.Value.BSE, typeof(string));
- PropGrid[i, 9] = new SourceGrid.Cells.Cell(kv.Value.Formula, typeof(string));
- PropGrid[i, 10] = new SourceGrid.Cells.Cell(kv.Value.Element, typeof(string));
- PropGrid[i, 11] = new SourceGrid.Cells.Cell(ReferenceGroup[kv.Value.GroupId], typeof(string));
- i++;
- }
- PropGrid.AutoSizeCells();
- int iColumnWidth = 45; // 第一列的宽度
- int width = this.Width;
- PropGrid.Columns.SetWidth(0, iColumnWidth);
- PropGrid.Columns.SetWidth(2, 1 * (width - iColumnWidth) / 20);
- //PropGrid.Columns.SetWidth(3, 25 * (width - iColumnWidth) / 30);
- //PropGrid.Columns.SetWidth(4, 3 * (width - iColumnWidth) / 30);
- //PropGrid.Columns.SetWidth(5, 1 * (width - iColumnWidth) / 30);
- //PropGrid.Columns.SetWidth(6, 1 * (width - iColumnWidth) / 30);
- //PropGrid.Columns.SetWidth(7, 2 * (width - iColumnWidth) / 30);
- //PropGrid.Columns.SetWidth(8, 1 * (width - iColumnWidth) / 30);
- //PropGrid.Columns.SetWidth(9, 3 * (width - iColumnWidth) / 30);
- //PropGrid.Columns.SetWidth(10, 10 * (width - iColumnWidth) / 30);
- for (int ro = 0; ro < PropGrid.RowsCount; ro++)
- {
- PropGrid.Rows.SetHeight(ro,25);
- }
- for (int col = 1; col < PropGrid.ColumnsCount; col++)
- {
- for (int ro = 0; ro < PropGrid.RowsCount; ro++)
- {
- PropGrid[ro,col].AddController(SourceGrid.Cells.Controllers.Unselectable.Default);
- }
- }
- PropGrid.Refresh();
- //为修改bug 第一次点击sourcegrid滚动界面时,取数不准问题(载入数据时将第一次点击落在1,0单元格)
- if (PropGrid[1,0] != null)
- {
- SourceGrid.Position pos = new SourceGrid.Position(1, 0);
- PropGrid.Selection.Focus(pos, true);
- }
- }
- public void MakeCheckboxUnchecked()
- {
- for (int i = 1; i < PropGrid.RowsCount; i++)
- {
- if ((bool)PropGrid[i, 0].Value == true)
- {
- PropGrid[i, 0].Value = false;
- }
- }
- }
- private void clickEvent_Click(object sender, EventArgs e)
- {
- int t = PropGrid.Selection.ActivePosition.Column;
- if (t == 0)//选择事件
- {
- if ((bool)PropGrid[PropGrid.Selection.ActivePosition.Row, 0].Value == true)
- {
- PropGrid[PropGrid.Selection.ActivePosition.Row, 0].Value = false;
- }
- else
- {
- MakeCheckboxUnchecked();
- PropGrid[PropGrid.Selection.ActivePosition.Row, 0].Value = true;
- }
- PropGrid.Refresh();
- }
- }
- private void TSLoad_Click(object sender, EventArgs e)
- {
- OpenFileDialog fileSel = new OpenFileDialog
- {
- Filter = "(*.db)|*.db"
- };
- if (DialogResult.OK == fileSel.ShowDialog())
- {
- ReferenceDictionary.Clear();
- if (LoadClassifyToDictionary(fileSel.FileName, ref ReferenceDictionary))
- {
- AddDataToRefereceLiberary(ReferenceDictionary);
- this.Text = " " + fileSel.FileName;
- PropGrid.Refresh();
- }
- }
- }
- private void TSClose_Click(object sender, EventArgs e)
- {
- if (PropGrid.RowsCount > 1)
- {
- PropGrid.Rows.RemoveRange(1, PropGrid.RowsCount - 1);
- ReferenceDictionary.Clear();
- this.Text = this.Text.Split(' ')[0];
- PropGrid.Refresh();
- }
- else
- {
- ReferenceDictionary.Clear();
- this.Text = this.Text.Split(' ')[0];
- PropGrid.Refresh();
- }
- }
- private void PropGrid_MouseClick(object sender, MouseEventArgs e)
- {
- SourceGrid.Grid oSender = (SourceGrid.Grid)sender;
- oSender.Focus();
- // 表示右击的是无效区域, 则退出(第0行是标题)
- if (oSender.MouseCellPosition.Row < 1 || oSender.MouseCellPosition.Column < 0)
- {
- return;
- }
- // 右击的区域获取焦点
- PropGrid.Selection.Focus(new SourceGrid.Position(oSender.MouseCellPosition.Row, oSender.MouseCellPosition.Column), true);
- try
- {
- if (MouseButtons.Right == e.Button && e.Clicks == 1)
- {
- // 此处编写在什么情况下弹出右击菜单
- contextMenuStrip.Show(PointToScreen(e.Location));
- // 判断左侧区域是否已经选中了某个stdmineral
- bool bEnable = false;
- bEnable = null != m_SubMidWindow.m_MainForm.m_STDRuleslist.Predata;
- this.insertToolStripMenuItem.Enabled = bEnable;
- }
- }
- catch (Exception/* ex*/)
- {
- }
- }
- private void InsertToolStripMenuItem_Click(object sender, EventArgs e)
- {
- //if (m_SubMidWindow.m_MainForm.m_STDRuleslist.tabControl1.SelectedIndex == 0)
- //{
- // MessageBox.Show("Please do not operate the reference library in the grouping interface!");
- // return;
- //}
- //m_SubMidWindow.m_MainForm.m_STDRuleslist.Grid_Minerals.Focus(true);
- //int i = m_SubMidWindow.m_MainForm.m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Row;
- //int j = m_SubMidWindow.m_MainForm.m_STDRuleslist.Grid_Minerals.Selection.ActivePosition.Column;
- ///// 保证鼠标点击的GRID行和列是有效的
- //if (i >= 0 && j >= 0)
- //{
- // //规则名称不为空
- // if (m_SubMidWindow.m_MainForm.m_STDRuleslist.Grid_Minerals[i, 0].Value.ToString().Replace(" ", "").Trim() != "")
- // {
- // int id = ((STDdata)m_SubMidWindow.m_MainForm.m_STDRuleslist.Grid_Minerals[i, 0].Tag).STDId;
- // m_SubMidWindow.m_MainForm.SaveDataOfSelRule(id);
- // PropGrid.Focus(true);
- // int selrow = PropGrid.Selection.ActivePosition.Row;
- // int STDnum = ((STDdata)PropGrid[selrow, 1].Tag).STDId;
- // int STDId = 1;
- // foreach (KeyValuePair<int, STDdata> kv in m_SubMidWindow.m_MainForm._sTDEditor.STDDictionary)
- // {
- // if (STDId < kv.Key)
- // {
- // STDId = kv.Key;
- // }
- // }
- // STDdata sT = new STDdata();
- // sT.BSE = ReferenceDictionary[STDnum].BSE;
- // sT.StrName = ReferenceDictionary[STDnum].StrName;
- // sT.Color = ReferenceDictionary[STDnum].Color;
- // sT.Density = ReferenceDictionary[STDnum].Density;
- // sT.Expression = ReferenceDictionary[STDnum].Expression;
- // sT.Formula = ReferenceDictionary[STDnum].Formula;
- // sT.Hardness = ReferenceDictionary[STDnum].Hardness;
- // sT.UsingImgPropertyList = ReferenceDictionary[STDnum].UsingImgPropertyList;
- // sT.UsingOtherPropertyList = ReferenceDictionary[STDnum].UsingOtherPropertyList;
- // sT.KeyElementList = ReferenceDictionary[STDnum].KeyElementList;
- // sT.SubElementList = ReferenceDictionary[STDnum].SubElementList;
- // sT.Electrical_conductivity = ReferenceDictionary[STDnum].Electrical_conductivity;
- // sT.Element = ReferenceDictionary[STDnum].Element;
- // sT.GroupId = ReferenceDictionary[STDnum].GroupId;
- // sT.STDId = STDnum;
- // m_SubMidWindow.m_MainForm._sTDEditor.STDDictionary.Add(STDId + 1, sT);
- // m_SubMidWindow.m_MainForm.m_STDRuleslist.InsertNewRow(STDId + 1, sT.StrName, STDRuleslist.colorHx16toRGB(sT.Color));
- // m_SubMidWindow.m_MainForm.m_STDRuleslist.Refresh();
- // m_SubMidWindow.m_MainForm.m_STDRuleslist.Predata = (STDdata)m_SubMidWindow.m_MainForm.m_STDRuleslist.Grid_Minerals[i, 0].Tag;
- // }
- //}
- //else
- //{
- // AddIntoMainLab();
- //}
- }
- #region 因为复制容易引起用户误操作,故取消
- private void copyDataToolStripMenuItem_Click(object sender, EventArgs e)
- {
- //int selrow = PropGrid.Selection.ActivePosition.Row;
- //int STDnum = (int)PropGrid[selrow, 1].Tag;
- //int STDid = (int)m_SubMidWindow.m_MainForm.m_STDRuleslist.Grid_Minerals[m_SubMidWindow.m_MainForm.m_STDRuleslist.PreRow, 0].Tag;
- //m_SubMidWindow.m_MainForm.STDDictionary[STDid] = ReferenceDictionary[STDnum];
- //m_SubMidWindow.m_MainForm.m_STDRuleslist.ChangeStrName(m_SubMidWindow.m_MainForm.m_STDRuleslist.PreRow, ReferenceDictionary[STDnum].StrName);
- //m_SubMidWindow.m_MainForm.ChangeSTDEditorAndGrid_Attributes(STDid);
- //m_SubMidWindow.m_MainForm.m_STDRuleslist.Grid_Minerals.Refresh();
- }
- #endregion
- private void addIntoMainLabToolStripMenuItem_Click(object sender, EventArgs e)
- {
- foreach (TreeNode treeNode1 in m_SubMidWindow.m_MainForm.m_STDRuleslist.treeView_G.Nodes)
- {
- if (((STDGroups)treeNode1.Tag).name == "Default")
- {
- if (m_SubMidWindow.m_MainForm.m_STDRuleslist.Predata != null)
- {
- m_SubMidWindow.m_MainForm.SaveDataOfSelRule(m_SubMidWindow.m_MainForm.m_STDRuleslist.Predata.STDId);
- }
- STDdata ddata = AddIntoMainLab();
- int STDId = 40000;
- foreach (STDGroups grp in m_SubMidWindow.m_MainForm.m_STDRuleslist.GroupViewDic.Values)
- {
- foreach (STDdata ddata1 in grp.ContainSTD)
- {
- if (STDId < ddata1.STDId)
- {
- STDId = ddata1.STDId;
- }
- }
- }
- ddata.STDId = STDId + 1;
- TreeNode treeNode = new TreeNode();
- treeNode.Text = ddata.StrName;
- treeNode.Tag = ddata;
- ddata.ListNum = ((((STDGroups)treeNode1.Tag).ContainSTD).Count - 1).ToString();
- ddata.GroupId = ((STDGroups)treeNode1.Tag).id;
- ((STDGroups)treeNode1.Tag).ContainSTD.Add(ddata);
- m_SubMidWindow.m_MainForm.m_STDRuleslist.InitGroupView();
- foreach (TreeNode node in m_SubMidWindow.m_MainForm.m_STDRuleslist.treeView_G.Nodes)
- {
- foreach (TreeNode node1 in node.Nodes)
- {
- if (((STDdata)node1.Tag).STDId == ddata.STDId)
- {
- m_SubMidWindow.m_MainForm.ChangeSTDEditorAndGrid_Attributes(ddata);
- m_SubMidWindow.m_MainForm.m_STDRuleslist.Predata = (STDdata)treeNode.Tag;
- m_SubMidWindow.m_MainForm.m_STDRuleslist.treeView_G.SelectedNode = node1;
- m_SubMidWindow.m_MainForm.m_STDRuleslist.treeView_G.Focus();
- break;
- }
- }
- }
- }
- }
- }
- STDdata AddIntoMainLab()
- {
- PropGrid.Focus(true);
- int selrow = PropGrid.Selection.ActivePosition.Row;
- int STDnum = ((STDdata)PropGrid[selrow, 1].Tag).STDId;
- //int STDId = 40000;
- //foreach (KeyValuePair<int, STDdata> kv in m_SubMidWindow.m_MainForm._sTDEditor.STDDictionary)
- //{
- // if (STDId < kv.Key)
- // {
- // STDId = kv.Key;
- // }
- //}
- STDdata sT = new STDdata
- {
- BSE = ReferenceDictionary[STDnum].BSE,
- StrName = ReferenceDictionary[STDnum].StrName,
- Color = ReferenceDictionary[STDnum].Color,
- Density = ReferenceDictionary[STDnum].Density,
- Expression = ReferenceDictionary[STDnum].Expression,
- Formula = ReferenceDictionary[STDnum].Formula,
- Hardness = ReferenceDictionary[STDnum].Hardness,
- UsingImgPropertyList = ReferenceDictionary[STDnum].UsingImgPropertyList,
- UsingOtherPropertyList = ReferenceDictionary[STDnum].UsingOtherPropertyList,
- KeyElementList = ReferenceDictionary[STDnum].KeyElementList,
- SubElementList = ReferenceDictionary[STDnum].SubElementList,
- Electrical_conductivity = ReferenceDictionary[STDnum].Electrical_conductivity,
- Element = ReferenceDictionary[STDnum].Element
- };
- return sT;
- }
- }
- }
|