Ejemplo n.º 1
0
        /// <summary>
        /// 削除
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnDelete_Click(object sender, EventArgs e)
        {
            try
            {
                // 件数確認
                if (cboLabel.Items.Count == 0)
                {
                    // コンボボックスに価が存在しない場合は中断
                    return;
                }

                // 削除確認
                if (CommonUtil.PutMessage(
                        CommonEnums.MessageType.Confirm,
                        "選択中の項目を削除します。\n設定されたデータが全て削除されます。よろしいですか?") ==
                    DialogResult.No)
                {
                    // 削除しない場合は中断
                    return;
                }

                // アイテムを削除
                TranslateInfo.SettingDs.Tables[Util.TITLE_TABLE]
                .Rows.Remove(((DataRowView)cboLabel.SelectedItem).Row);
                txtLabel.Text          = string.Empty;
                nudReadMultiples.Value = 2;
                lblX.Text = "0";
                lblY.Text = "0";
                lblW.Text = "0";
                lblH.Text = "0";

                // タイトルテーブルか名詞テーブルのどちらかに1件でもデータが存在する場合
                if (TranslateInfo.SettingDs.Tables[Util.TITLE_TABLE].Rows.Count > 0 ||
                    TranslateInfo.SettingDs.Tables[Util.NOUN_TABLE].Rows.Count > 0)
                {
                    // 削除後もアイテムが残っている場合は設定ファイルを更新
                    Util.WriteXml(TranslateInfo.SettingDs, TranslateInfo.ConfigFilePath);
                }
                else
                {
                    // アイテムが1件も存在しない場合は設定ファイルごと削除
                    File.Delete(TranslateInfo.ConfigFilePath);
                    if (!Util.IsExistsProcessData())
                    {
                        ProcessNameInfo.DeleteProcessName();
                    }
                }

                // 他にアイテムが存在する場合は先頭を選択
                if (cboLabel.Items.Count > 0)
                {
                    cboLabel.SelectedIndex = -1;
                    cboLabel.SelectedIndex = 0;
                }
            }
            catch (Exception ex)
            {
                CommonUtil.PutMessage(CommonEnums.MessageType.Error, ex.Message);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 確定
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnReturn_Click(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrEmpty(txtTitle.Text))
                {
                    // 未入力確認
                    if (CommonUtil.PutMessage(CommonEnums.MessageType.Confirm,
                                              "ラベルタイトルが未入力です。そのまま登録しますか?") == DialogResult.No)
                    {
                        return;
                    }
                }

                int id = 1;
                if (historyDt.Rows.Count > 0)
                {
                    // IDは最大値+1
                    id = historyDt.AsEnumerable().Select(s => (int)s[HistoryColumns.Id]).Max() + 1;
                }

                var dr = historyDt.NewRow();
                dr[HistoryColumns.Id]           = id;
                dr[HistoryColumns.Label]        = txtTitle.Text.Trim();
                dr[HistoryColumns.OriginalText] = OriginalText;
                dr[HistoryColumns.ResultText]   = ResultText;
                historyDt.Rows.Add(dr);

                Util.WriteXml(historyDt, historyPath);
                ProcessNameInfo.RegisterProessName();

                Close();
            }
            catch (Exception ex)
            {
                CommonUtil.PutMessage(CommonEnums.MessageType.Error, ex.Message);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 閉じる
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnClose_Click(object sender, EventArgs e)
        {
            try
            {
                // フィルター中の場合は解除する
                if (historyDispDt.Rows.Count > 0)
                {
                    if (btnFilter.Text == LBL_FILTER_OFF)
                    {
                        var dt = (DataTable)dgvHistoryList.DataSource;
                        dt.PrimaryKey = new DataColumn[] { dt.Columns[HistoryDispColumns.Id] };

                        historyDispDt.Merge(dt);

                        historyDispDt.AcceptChanges();
                    }
                }

                if (Util.IsSameValue(historyOrgDt, historyDispDt))
                {
                    // データが同じだったら閉じる
                    Close();
                    return;
                }

                // 確認メッセージ
                var result = CommonUtil.PutMessage(CommonEnums.MessageType.Confirm,
                                                   "編集されたデータが存在します。保存しますか?", true);

                switch (result)
                {
                case DialogResult.Yes:
                    // 入力チェック
                    var orgTextRequiredErr = historyDispDt.AsEnumerable()
                                             .Where(w => string.IsNullOrEmpty(w[HistoryDispColumns.OriginalText].ToString()))
                                             .Select(s => new { err = true, index = historyDispDt.Rows.IndexOf(s) }).FirstOrDefault();

                    if (orgTextRequiredErr != null && orgTextRequiredErr.err)
                    {
                        CommonUtil.PutMessage(CommonEnums.MessageType.Error, "原文の入力は必須です。");
                        dgvHistoryList.ClearSelection();
                        dgvHistoryList.FirstDisplayedScrollingRowIndex = orgTextRequiredErr.index;
                        dgvHistoryList[OriginalText.Name, orgTextRequiredErr.index].Selected = true;
                        return;
                    }

                    var resultTextRequiredErr = historyDispDt.AsEnumerable()
                                                .Where(w => string.IsNullOrEmpty(w[HistoryDispColumns.ResultText].ToString()))
                                                .Select(s => new { err = true, index = historyDispDt.Rows.IndexOf(s) }).FirstOrDefault();

                    if (resultTextRequiredErr != null && resultTextRequiredErr.err)
                    {
                        CommonUtil.PutMessage(CommonEnums.MessageType.Error, "訳文の入力は必須です。");
                        dgvHistoryList.ClearSelection();
                        dgvHistoryList.FirstDisplayedScrollingRowIndex = resultTextRequiredErr.index;
                        dgvHistoryList[ResultText.Name, resultTextRequiredErr.index].Selected = true;
                        return;
                    }

                    // 保存処理
                    var historyColumns = Util.CreateHistoryDataTable()
                                         .Columns.Cast <DataColumn>()
                                         .Select(s => s.ColumnName).ToArray();

                    // 書き込み用に列を抽出
                    var dt = historyDispDt.DefaultView.ToTable(Util.HISTORY_TABLE, false, historyColumns);

                    // 履歴フォルダにデータが存在しない場合
                    if (dt.Rows.Count == 0)
                    {
                        // ファイルが存在する場合はファイルを削除
                        if (File.Exists(historyPath))
                        {
                            File.Delete(historyPath);
                            if (!Util.IsExistsProcessData())
                            {
                                ProcessNameInfo.DeleteProcessName();
                            }
                        }

                        int fileCount = Directory.GetFileSystemEntries(
                            "history", "*.cfg", SearchOption.TopDirectoryOnly).Length;

                        if (fileCount == 0)
                        {
                            Directory.Delete("history");
                        }
                    }
                    else
                    {
                        // 出力
                        Util.WriteXml(dt, historyPath);
                    }

                    Close();
                    break;

                case DialogResult.No:
                    // 保存せずに終了
                    Close();
                    break;
                }
            }
            catch (Exception ex)
            {
                CommonUtil.PutMessage(CommonEnums.MessageType.Error, ex.Message);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 新規作成
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnCreate_Click(object sender, EventArgs e)
        {
            try
            {
                // 未入力
                if (string.IsNullOrEmpty(txtLabel.Text))
                {
                    CommonUtil.PutMessage(CommonEnums.MessageType.Error, "タイトルを入力してください。");
                    return;
                }

                // 重複
                if (TranslateInfo.SettingDs.Tables[Util.TITLE_TABLE].Rows.Count > 0)
                {
                    if (TranslateInfo.SettingDs.Tables[Util.TITLE_TABLE].AsEnumerable()
                        .Any(a => a[TitleColumns.Title].ToString() == txtLabel.Text))
                    {
                        CommonUtil.PutMessage(
                            CommonEnums.MessageType.Error, "入力したタイトルはすでに存在します。");
                        return;
                    }
                }

                // 採番
                var Ids = TranslateInfo.SettingDs.Tables[Util.TITLE_TABLE].AsEnumerable()
                          .Select(s => (int)s[TitleColumns.Id]).ToArray();
                var newId = CommonUtil.GetSerialNumber(Ids);

                // データ作成
                var dr = TranslateInfo.SettingDs.Tables[Util.TITLE_TABLE].NewRow();
                dr[TitleColumns.Id]            = newId;
                dr[TitleColumns.Title]         = txtLabel.Text;
                dr[TitleColumns.UseOcrEngine]  = (int)cboUseOcrEngine.SelectedValue;
                dr[TitleColumns.ReadMultiples] = decimal.ToSingle(nudReadMultiples.Value);
                dr[TitleColumns.X]             = 0;
                dr[TitleColumns.Y]             = 0;
                dr[TitleColumns.Width]         = 0;
                dr[TitleColumns.Height]        = 0;
                dr[TitleColumns.TargetReturn]  = false;
                dr[TitleColumns.IgnoreReturn]  = false;
                TranslateInfo.SettingDs.Tables[Util.TITLE_TABLE].Rows.Add(dr);

                var sortedDt = TranslateInfo.SettingDs.Tables[Util.TITLE_TABLE].AsEnumerable()
                               .OrderBy(o => o[TitleColumns.Title]).ToArray().CopyToDataTable();

                TranslateInfo.SettingDs.Tables[Util.TITLE_TABLE].Clear();

                foreach (DataRow row in sortedDt.Rows)
                {
                    TranslateInfo.SettingDs.Tables[Util.TITLE_TABLE].ImportRow(row);
                }

                // 出力
                if (ProcessNameInfo.DisconnectProcess)
                {
                    // デスクトップ接続
                    Util.WriteXml(TranslateInfo.SettingDs, TranslateInfo.DesktopConfigFilePath);
                }
                else
                {
                    // 対象プロセス
                    Util.WriteXml(TranslateInfo.SettingDs, TranslateInfo.ConfigFilePath);
                    ProcessNameInfo.RegisterProessName();
                }

                SelectedId = newId;
                TranslateInfo.UseOcrEngine  = (int)cboUseOcrEngine.SelectedValue;
                TranslateInfo.ReadMultiples = decimal.ToSingle(nudReadMultiples.Value);
                Result = LabelResult.Create;
                Close();
            }
            catch (Exception ex)
            {
                CommonUtil.PutMessage(CommonEnums.MessageType.Error, ex.Message);
            }
        }