private ToolStripMenuItem CreateApplyVerifierLayoutToolSpritMenuItem(string name) { ToolStripMenuItem newToolStripMenuItem = new ToolStripMenuItem(); newToolStripMenuItem.Name = name; newToolStripMenuItem.Text = VerifierUtility.GetVerifierDisplayName(name); newToolStripMenuItem.Click += new EventHandler(OnApplyVerifierLayoutToolStripMenuItem_Click); return(newToolStripMenuItem); }
public bool SaveFile(string path) { SaveLayout(); List <DataGridViewConsoleForm.Message> messageList; DataGridViewConsoleForm.Level verifyLevel = VerifierUtility.VerifyWithVerifier(m_Layout.Verifier, m_DataGridView, out messageList); DataGridViewConsoleForm.ShowForm(messageList, m_DataGridView, "保存文件"); bool canSave = false; if (verifyLevel == DataGridViewConsoleForm.Level.Info) { canSave = true; } else if (verifyLevel == DataGridViewConsoleForm.Level.Warning) { if (MessageBox.Show("您现在有Warning,确定存储吗?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes) { canSave = true; } } if (canSave) { // 保存文件 CsvExport myExport = new CsvExport(",", false); try { for (int rowIdx = 0; rowIdx < m_DataTable.Rows.Count; rowIdx++) { myExport.AddRow(); DataRow dataRow = m_DataTable.Rows[rowIdx]; for (int colIdx = 0; colIdx < m_DataTable.Columns.Count; colIdx++) { string value = (string)dataRow[colIdx]; myExport[colIdx.ToString()] = value; } } myExport.ExportToFile(path); } catch (Exception ex) { DebugUtility.ShowExceptionMessageBox(string.Format("保存文件({0})失败", path), ex); return(false); } return(true); } else { MessageBox.Show(string.Format("保存文件({0})失败", path), "提示"); return(false); } }
/// <summary> /// 更新窗口Text /// 文件没有保存到源文件就在开头加 ? /// 文件有改动就在结尾加 * /// </summary> public void UpdateFormText() { string newFormText = string.Format("{0}{1} -检验规则({2})", m_SourceFile, (DataChanged ? "*" : ""), VerifierUtility.GetVerifierDisplayName(m_Layout.Verifier)); if (Text != newFormText) { Text = newFormText; MainForm.Instance.UpdateFormText(); } }
public override void Verify(DataGridView dataGridView, ref List <DataGridViewConsoleForm.Message> messageList, ref bool hasError, ref bool hasWarning) { for (int iRow = 0; iRow < dataGridView.Rows.Count; iRow++) { DataGridViewRow dataRow = dataGridView.Rows[iRow]; for (int iCol = 0; iCol < dataGridView.Columns.Count; iCol++) { string iterCellValue = (string)dataRow.Cells[iCol].Value; AddMessageToMessageList(VerifierUtility.Verify_TabOrCRLF(DataGridViewConsoleForm.Level.Error, iRow, iCol, iterCellValue), ref messageList, ref hasError, ref hasWarning); AddMessageToMessageList(VerifierUtility.Verify_HeadAndTailWhiteSpace(DataGridViewConsoleForm.Level.Warning, iRow, iCol, iterCellValue), ref messageList, ref hasError, ref hasWarning); } } }
private void UpdateLayoutToolStripMenu() { m_SaveLayoutToolStripMenuItem.Enabled = false; m_ApplyLayoutToolStripMenuItem.Enabled = false; m_ManagerLayoutToolStripMenuItem.Enabled = false; m_ApplyVerifierLayoutToolStripMenuItem.Enabled = false; string[] specificLayoutKeys = CSVLayoutManager.Instance.GetSpecificKeys(); m_ManagerLayoutToolStripMenuItem.Enabled = specificLayoutKeys.Length > 0; if (SelCSVFormInitialized()) { m_SaveLayoutToolStripMenuItem.Enabled = true; // 应用布局 if (specificLayoutKeys.Length > 0) { m_ApplyLayoutToolStripMenuItem.Enabled = true; m_ApplyLayoutToolStripMenuItem.DropDownItems.Clear(); for (int keyIdx = 0; keyIdx < specificLayoutKeys.Length; keyIdx++) { ToolStripMenuItem newToolStripMenuItem = new ToolStripMenuItem(); newToolStripMenuItem.Name = specificLayoutKeys[keyIdx]; newToolStripMenuItem.Text = specificLayoutKeys[keyIdx]; newToolStripMenuItem.Click += new EventHandler(OnApplyLayoutToolStripMenuItem_Click); m_ApplyLayoutToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { newToolStripMenuItem }); } } // 应用校验固规则 m_ApplyVerifierLayoutToolStripMenuItem.Enabled = true; m_ApplyVerifierLayoutToolStripMenuItem.DropDownItems.Clear(); for (int iVerifyer = 0; iVerifyer < (int)VerifierName.Count; iVerifyer++) { VerifierInfo iterVerifierInfo = VerifierUtility.GetVerifierInfo((VerifierName)iVerifyer); m_ApplyVerifierLayoutToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { CreateApplyVerifierLayoutToolSpritMenuItem(iterVerifierInfo.Name, iterVerifierInfo.Display) }); } } }
public override void Verify(DataGridView dataGridView, ref List <DataGridViewConsoleForm.Message> messageList, ref bool hasError, ref bool hasWarning) { for (int rowIdx = 0; rowIdx < dataGridView.Rows.Count; rowIdx++) { DataGridViewRow dataRow = dataGridView.Rows[rowIdx]; // 魔法数字:Key不需要检测。 注释列, 中文列的重复太多不检测 int[][] repeats = VerifierUtility.VerifyRepeatCellInRow(dataRow, new int[] { 0, 1, 7, 12, 14 }); if (repeats != null) { messageList.Add(VerifierUtility.CreateRepeatCellInRowMessage(DataGridViewConsoleForm.Level.Info, rowIdx, repeats)); } for (int colIdx = 0; colIdx < dataGridView.Columns.Count; colIdx++) { string value = (string)dataRow.Cells[colIdx].Value; if (!VerifierUtility.VerifyTabOrLineBreak(value)) { hasError = true; messageList.Add(VerifierUtility.CreateTabOrLineBreakMessage(DataGridViewConsoleForm.Level.Error, rowIdx, colIdx, value)); } if (!VerifierUtility.VerifyHeadAndTailWhiteSpace(value)) { hasWarning = true; DataGridViewConsoleForm.Level level = DataGridViewConsoleForm.Level.Warning; // 本地化表第一列是Key,Key前后包含空格是Error if (colIdx == 0) { hasError = true; level = DataGridViewConsoleForm.Level.Error; } messageList.Add(VerifierUtility.CreateHeadAndTailWhiteSpaceMessage(level, rowIdx, colIdx, value)); } } } }
public override void Verify(DataGridView dataGridView, ref List <DataGridViewConsoleForm.Message> messageList, ref bool hasError, ref bool hasWarning) { for (int rowIdx = 0; rowIdx < dataGridView.Rows.Count; rowIdx++) { DataGridViewRow dataRow = dataGridView.Rows[rowIdx]; for (int colIdx = 0; colIdx < dataGridView.Columns.Count; colIdx++) { string value = (string)dataRow.Cells[colIdx].Value; if (!VerifierUtility.VerifyTabOrLineBreak(value)) { hasError = true; messageList.Add(VerifierUtility.CreateTabOrLineBreakMessage(DataGridViewConsoleForm.Level.Error, rowIdx, colIdx, value)); } if (!VerifierUtility.VerifyHeadAndTailWhiteSpace(value)) { hasWarning = true; messageList.Add(VerifierUtility.CreateHeadAndTailWhiteSpaceMessage(DataGridViewConsoleForm.Level.Warning, rowIdx, colIdx, value)); } } } }
public override void Verify(DataGridView dataGridView, ref List <DataGridViewConsoleForm.Message> messageList, ref bool hasError, ref bool hasWarning) { List <string> localizationKeys = new List <string>(); for (int iRow = 0; iRow < dataGridView.Rows.Count; iRow++) { DataGridViewRow iterDataRow = dataGridView.Rows[iRow]; // 魔法数字:Key不需要检测。 注释列, 中文列的重复太多不检测 AddMessageToMessageList(VerifierUtility.Verify_RepeatCellInRow(DataGridViewConsoleForm.Level.Info, iRow, iterDataRow, new int[] { 0, 1, 7, 12, 14 }), ref messageList, ref hasError, ref hasWarning); string iterKey = null; for (int iCol = 0; iCol < dataGridView.Columns.Count; iCol++) { string iterCellValue = (string)iterDataRow.Cells[iCol].Value; // 非法字符 AddMessageToMessageList(VerifierUtility.Verify_TabOrCRLF(DataGridViewConsoleForm.Level.Error, iRow, iCol, iterCellValue), ref messageList, ref hasError, ref hasWarning); // 列头 if (iRow == 0) { if (iCol == 0) { // 第一个单元格应为"String ID" AddMessageToMessageList(VerifierUtility.Verify_Localization_FirstCell(DataGridViewConsoleForm.Level.Error, iRow, iCol, iterCellValue), ref messageList, ref hasError, ref hasWarning); } } else { // 本地化Key if (iCol == 0) { iterKey = iterCellValue; localizationKeys.Add(iterKey); // Key不能为空 AddMessageToMessageList(VerifierUtility.Verify_Localization_EmptyKey(DataGridViewConsoleForm.Level.Error, iRow, iterDataRow, iterKey), ref messageList, ref hasError, ref hasWarning); // Key不能包含空白字符 // UNDONE Level应该是Error,但是现在本地化表里有些Key已经包含空格了。这些Key没人敢动 AddMessageToMessageList(VerifierUtility.Verify_Localization_KeyWhiteSpace(DataGridViewConsoleForm.Level.Warning, iRow, iterKey), ref messageList, ref hasError, ref hasWarning); } // 本地化文本 else { // UNDONE 因为消息数量太多,影响阅读,暂时注释掉 // 头尾有空白字符 //AddMessageToMessageList(VerifierUtility.VerifyHeadAndTailWhiteSpace(DataGridViewConsoleForm.Level.Warning, iRow, iCol, iterCellValue), // ref messageList, ref hasError, ref hasWarning); // 文本以占位符开头 AddMessageToMessageList(VerifierUtility.Verify_Localization_PlaceHolder(DataGridViewConsoleForm.Level.Warning, iRow, iCol, iterCellValue), ref messageList, ref hasError, ref hasWarning); AddMessageToMessageList(VerifierUtility.Verify_Localization_EmptyText(DataGridViewConsoleForm.Level.Warning, iRow, iCol, iterKey, iterCellValue), ref messageList, ref hasError, ref hasWarning); // 特殊的校验规则,详见Verify_Localization_Special1的注释 AddMessageToMessageList(VerifierUtility.Verify_Localization_Special1(DataGridViewConsoleForm.Level.Warning, iRow, iCol, iterKey, iterCellValue), ref messageList, ref hasError, ref hasWarning); } } } } // 重复的Key string[] localizationKeyArray = localizationKeys.ToArray(); AddMessageToMessageList(VerifierUtility.Verify_Localization_RepeatKey(DataGridViewConsoleForm.Level.Error, localizationKeyArray), ref messageList, ref hasError, ref hasWarning); }
public DataGridViewConsoleForm.Level VerifySelf(out List <DataGridViewConsoleForm.Message> messageList) { return(VerifierUtility.VerifyWithVerifier(m_Layout.Verifier, m_DataGridView, out messageList)); }