Esempio n. 1
0
    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);
    }
Esempio n. 2
0
    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);
        }
    }
Esempio n. 3
0
    /// <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();
        }
    }
Esempio n. 4
0
    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);
            }
        }
    }
Esempio n. 5
0
    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)
                });
            }
        }
    }
Esempio n. 6
0
    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));
                }
            }
        }
    }
Esempio n. 7
0
    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);
    }
Esempio n. 9
0
 public DataGridViewConsoleForm.Level VerifySelf(out List <DataGridViewConsoleForm.Message> messageList)
 {
     return(VerifierUtility.VerifyWithVerifier(m_Layout.Verifier, m_DataGridView, out messageList));
 }