Exemple #1
0
        // --------------------------------------------------------------------
        // 設定をコンポーネントに反映
        // --------------------------------------------------------------------
        private void SettingsToCompos()
        {
            // クリア
            ListBoxFileNameRules.Items.Clear();
            ListBoxFolderNameRules.Items.Clear();

            // 設定
            FolderSettingsInDisk aSettings = NklCommon.LoadFolderSettings(mFolder);

            foreach (String aFileNameRule in aSettings.FileNameRules)
            {
                ListBoxFileNameRules.Items.Add(aFileNameRule);
            }
            foreach (String aFolderNameRule in aSettings.FolderNameRules)
            {
                ListBoxFolderNameRules.Items.Add(aFolderNameRule);
            }
        }
Exemple #2
0
        // --------------------------------------------------------------------
        // イベントハンドラー
        // --------------------------------------------------------------------
        private void ButtonRemoveExt_Click(Object oSender, EventArgs oEventArgs)
        {
            try
            {
                // 選択されていない場合はボタンが押されないはずだが念のため
                if (ListBoxTargetExts.SelectedIndex < 0)
                {
                    throw new Exception("削除したい拡張子を選択してください。");
                }

                // 削除
                ListBoxTargetExts.Items.RemoveAt(ListBoxTargetExts.SelectedIndex);
            }
            catch (Exception oExcep)
            {
                NklCommon.ShowLogMessage(TraceEventType.Error, "拡張子削除ボタンクリック時エラー:\n" + oExcep.Message);
                NklCommon.ShowLogMessage(TraceEventType.Verbose, " スタックトレース:\n" + oExcep.StackTrace);
            }
        }
Exemple #3
0
        private async void ButtonPreview_Click(object sender, EventArgs e)
        {
            try
            {
                // 保存
                SaveSettingsIfNeeded();

                // 検索
                await NklCommon.LaunchTaskAsync <Object>(UpdateDataGridViewPreview, mTaskLock, null);
            }
            catch (OperationCanceledException)
            {
            }
            catch (Exception oExcep)
            {
                ShowLogMessage(TraceEventType.Error, "ファイル検索時エラー:\n" + oExcep.Message);
                ShowLogMessage(TraceEventType.Verbose, " スタックトレース:\n" + oExcep.StackTrace);
            }
        }
Exemple #4
0
 // --------------------------------------------------------------------
 // イベントハンドラー
 // --------------------------------------------------------------------
 private void ButtonUpItem_Click(Object oSender, EventArgs oEventArgs)
 {
     try
     {
         Int32 aOrgIndex = ListBoxAddedItems.SelectedIndex;
         if (aOrgIndex <= 0)
         {
             return;
         }
         String aItem = (String)ListBoxAddedItems.Items[aOrgIndex];
         ListBoxAddedItems.Items.RemoveAt(aOrgIndex);
         ListBoxAddedItems.Items.Insert(aOrgIndex - 1, aItem);
         ListBoxAddedItems.SelectedIndex = aOrgIndex - 1;
     }
     catch (Exception oExcep)
     {
         NklCommon.ShowLogMessage(TraceEventType.Error, "上へボタンクリック時エラー:\n" + oExcep.Message);
         NklCommon.ShowLogMessage(TraceEventType.Verbose, " スタックトレース:\n" + oExcep.StackTrace);
     }
 }
Exemple #5
0
        // --------------------------------------------------------------------
        // イベントハンドラー
        // --------------------------------------------------------------------
        private void ButtonRemoveItem_Click(Object oSender, EventArgs oEventArgs)
        {
            try
            {
                Int32 aRemoveItem = Array.IndexOf(NklCommon.OUTPUT_ITEM_NAMES, (String)ListBoxAddedItems.Items[ListBoxAddedItems.SelectedIndex]);
                if (aRemoveItem < 0)
                {
                    return;
                }

                ListBoxAddedItems.Items.RemoveAt(ListBoxAddedItems.SelectedIndex);
                ListBoxRemovedItems.Items.Add(NklCommon.OUTPUT_ITEM_NAMES[aRemoveItem]);
                ListBoxRemovedItems.SelectedIndex = ListBoxRemovedItems.Items.Count - 1;
            }
            catch (Exception oExcep)
            {
                NklCommon.ShowLogMessage(TraceEventType.Error, "項目削除ボタンクリック時エラー:\n" + oExcep.Message);
                NklCommon.ShowLogMessage(TraceEventType.Verbose, " スタックトレース:\n" + oExcep.StackTrace);
            }
        }
Exemple #6
0
        // --------------------------------------------------------------------
        // イベントハンドラー:プレブス一覧の編集ボタンがクリックされた
        // --------------------------------------------------------------------
        private void ButtonEditInfoClicked(Int32 oRowIndex)
        {
            // ファイル命名規則とフォルダー固定値を適用
            FolderSettingsInDisk        aFolderSettingsInDisk   = NklCommon.LoadFolderSettings(mFolder);
            FolderSettingsInMemory      aFolderSettingsInMemory = NklCommon.CreateFolderSettingsInMemory(aFolderSettingsInDisk);
            Dictionary <String, String> aDic = NklCommon.MatchFileNameRulesAndFolderRule
                                                   (Path.GetFileNameWithoutExtension((String)DataGridViewPreview.Rows[oRowIndex].Cells[(Int32)PreviewColumns.File].Value), aFolderSettingsInMemory);

            // 楽曲名が取得できていない場合は編集不可
            if (String.IsNullOrEmpty(aDic[NklCommon.RULE_VAR_TITLE]))
            {
                ShowLogMessage(TraceEventType.Error, "ファイル名から楽曲名を取得できていないため、編集できません。\nファイル命名規則を確認して下さい。");
                return;
            }

            using (FormEditInfo aFormEditInfo = new FormEditInfo(aDic, mNicoKaraListerSettings, mLogWriter))
            {
                aFormEditInfo.ShowDialog(this);
            }
        }
Exemple #7
0
        // --------------------------------------------------------------------
        // ファイル命名規則の変数の表示用文字列を生成
        // --------------------------------------------------------------------
        private List <String> CreateRuleVarLabels()
        {
            List <String> aLabels               = new List <String>();
            TextInfo      aTextInfo             = Thread.CurrentThread.CurrentCulture.TextInfo;
            Dictionary <String, String> aVarMap = NklCommon.CreateRuleDictionaryWithDescription();

            foreach (KeyValuePair <String, String> aVar in aVarMap)
            {
                String aKey;
                if (aVar.Key == NklCommon.RULE_VAR_ANY)
                {
                    aKey = aVar.Key;
                }
                else
                {
                    aKey = NklCommon.RULE_VAR_BEGIN + aTextInfo.ToTitleCase(aVar.Key) + NklCommon.RULE_VAR_END;
                }
                aLabels.Add(aKey + "(" + aVar.Value + ")");
            }
            return(aLabels);
        }
Exemple #8
0
        // ====================================================================
        // public メンバー関数
        // ====================================================================

        // --------------------------------------------------------------------
        // リスト出力
        // --------------------------------------------------------------------
        public override void Output()
        {
            base.Output();

            // ゆかり検索用データベース作成
            NklCommon.ShowLogMessage(Common.TRACE_EVENT_TYPE_STATUS, "ゆかり検索用データベース作成中...");
            using (SQLiteConnection aConnection = NklCommon.CreateDbConnection(YukariDbPath()))
            {
                NklCommon.CreateFoundDbTables(aConnection);

                using (DataContext aContext = new DataContext(aConnection))
                {
                    Table <TFound> aTable = aContext.GetTable <TFound>();

                    IQueryable <TFound> aQueryResult =
                        from x in TableFound
                        select x;
                    aTable.InsertAllOnSubmit(aQueryResult);
                    aContext.SubmitChanges();
                }
            }
        }
Exemple #9
0
        private void ButtonSaveLog_Click(object sender, EventArgs e)
        {
            try
            {
                SaveFileDialogLog.FileName = "NicoKaraListerLog_" + DateTime.Now.ToString("yyyy_MM_dd-HH_mm_ss");
                if (SaveFileDialogLog.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                // 環境情報保存
                NklCommon.LogEnvironmentInfo();

                ZipFile.CreateFromDirectory(NklCommon.SettingsPath(), SaveFileDialogLog.FileName, CompressionLevel.Optimal, true);
                ShowLogMessage(TraceEventType.Information, "ログ保存完了:\n" + SaveFileDialogLog.FileName);
            }
            catch (Exception oExcep)
            {
                ShowLogMessage(TraceEventType.Error, "ログ保存時エラー:\n" + oExcep.Message);
                ShowLogMessage(TraceEventType.Verbose, " スタックトレース:\n" + oExcep.StackTrace);
            }
        }
Exemple #10
0
        private void ButtonSearch_Click(object sender, EventArgs e)
        {
            try
            {
                ListBoxFounds.Items.Clear();

                // 検索
                List <List <String> > aRecords = NklCommon.FindCsvRecordsIncludes(mCsvs, mColumnIndex, TextBoxKeyword.Text);
                if (aRecords.Count == 0)
                {
                    ShowLogMessage(TraceEventType.Error, "「" + TextBoxKeyword.Text + "」を含む" + mItemName + "はありません。");
                    return;
                }

                // 重複を除外
                List <String> aHits = new List <String>();
                for (Int32 i = 0; i < aRecords.Count; i++)
                {
                    String aName = aRecords[i][mColumnIndex];
                    if (!String.IsNullOrEmpty(aName) && !aHits.Contains(aName))
                    {
                        aHits.Add(aName);
                    }
                }
                aHits.Sort();

                // リストボックスに表示
                ListBoxFounds.Items.AddRange(aHits.ToArray());
                ListBoxFounds.Focus();
                ListBoxFounds.SelectedIndex = 0;
            }
            catch (Exception oExcep)
            {
                ShowLogMessage(TraceEventType.Error, "情報検索時エラー:\n" + oExcep.Message);
                ShowLogMessage(TraceEventType.Verbose, " スタックトレース:\n" + oExcep.StackTrace);
            }
        }
Exemple #11
0
        // ====================================================================
        // コンストラクター・デストラクター
        // ====================================================================

        // --------------------------------------------------------------------
        // コンストラクター
        // --------------------------------------------------------------------
        public FolderSettingsInMemory()
        {
            FileNameRules   = new List <String>();
            FileRegexGroups = new List <List <String> >();
            FolderNameRules = NklCommon.CreateRuleDictionary();
        }
Exemple #12
0
        // ====================================================================
        // private メンバー関数
        // ====================================================================

        // --------------------------------------------------------------------
        // 入力された値が適正か確認
        // <例外> Exception
        // --------------------------------------------------------------------
        private void CheckInput()
        {
            NklCommon.CheckIdPrefix(TextBoxIdPrefix.Text);
        }
Exemple #13
0
        // --------------------------------------------------------------------
        // データグリッドビューを更新
        // --------------------------------------------------------------------
        private void UpdateDataGridViewPreview(Object oDummy)
        {
            try
            {
                // 準備
                DisableComponents();
                SetCursor(Cursors.WaitCursor);

                Invoke(new Action(() =>
                {
                    // クリア
                    DataGridViewPreview.Rows.Clear();

                    // 検索
                    String[] aAllPathes = Directory.GetFiles(mFolder);

                    // マッチをリストに追加
                    FolderSettingsInDisk aFolderSettingsInDisk     = NklCommon.LoadFolderSettings(mFolder);
                    FolderSettingsInMemory aFolderSettingsInMemory = NklCommon.CreateFolderSettingsInMemory(aFolderSettingsInDisk);
                    Dictionary <String, String> aRuleMap           = NklCommon.CreateRuleDictionaryWithDescription();
                    foreach (String aPath in aAllPathes)
                    {
                        if (!mOutputSettings.TargetExts.Contains(Path.GetExtension(aPath).ToLower()))
                        {
                            continue;
                        }

                        // ファイル命名規則とフォルダー固定値を適用
                        Dictionary <String, String> aDic = NklCommon.MatchFileNameRulesAndFolderRule(Path.GetFileNameWithoutExtension(aPath), aFolderSettingsInMemory);

                        // DGV 追加
                        DataGridViewPreview.Rows.Add();
                        Int32 aIndex = DataGridViewPreview.Rows.Count - 1;

                        // ファイル
                        DataGridViewPreview.Rows[aIndex].Cells[(Int32)PreviewColumns.File].Value = Path.GetFileName(aPath);

                        // 項目と値
                        StringBuilder aSB = new StringBuilder();
                        foreach (KeyValuePair <String, String> aKvp in aDic)
                        {
                            if (aKvp.Key != NklCommon.RULE_VAR_ANY && !String.IsNullOrEmpty(aKvp.Value))
                            {
                                aSB.Append(aRuleMap[aKvp.Key] + "=" + aKvp.Value + ", ");
                            }
                        }
                        DataGridViewPreview.Rows[aIndex].Cells[(Int32)PreviewColumns.Matches].Value = aSB.ToString();

                        // 編集
                        DataGridViewPreview.Rows[aIndex].Cells[(Int32)PreviewColumns.Edit].Value = "編集";
                    }

                    // 選択解除
                    DataGridViewPreview.ClearSelection();

                    // 次の編集候補ボタン
                    UpdateButtonJump();
                }));
            }
            catch (OperationCanceledException)
            {
                ShowLogMessage(Common.TRACE_EVENT_TYPE_STATUS, "ファイル検索結果更新を中止しました。");
            }
            catch (Exception oExcep)
            {
                ShowLogMessage(TraceEventType.Error, "ファイル検索結果更新更新時エラー:\n" + oExcep.Message);
                ShowLogMessage(TraceEventType.Verbose, " スタックトレース:\n" + oExcep.StackTrace);
            }
            finally
            {
                // 後片付け
                SetCursor(Cursors.Default);
                EnableComponents();
            }
        }
Exemple #14
0
        // --------------------------------------------------------------------
        // 編集する必要がありそうなファイルに飛ぶ
        // --------------------------------------------------------------------
        private void JumpToNextCandidate(Object oDummy)
        {
            try
            {
                // 準備
                DisableComponents();
                SetCursor(Cursors.WaitCursor);

                // 初めての場合は CSV をロード
                if (mProgramCsvs == null)
                {
                    NklCommon.LoadCsvs(mNicoKaraListerSettings, out mProgramCsvs, out mSongCsvs, out mProgramAliasCsvs, out mSongAliasCsvs);
                }

                Invoke(new Action(() =>
                {
                    Int32 aRowIndex = -1;
                    if (DataGridViewPreview.SelectedRows.Count > 0)
                    {
                        aRowIndex = DataGridViewPreview.SelectedRows[0].Index;
                    }

                    // マッチ準備
                    FolderSettingsInDisk aFolderSettingsInDisk     = NklCommon.LoadFolderSettings(mFolder);
                    FolderSettingsInMemory aFolderSettingsInMemory = NklCommon.CreateFolderSettingsInMemory(aFolderSettingsInDisk);

                    for (; ;)
                    {
                        aRowIndex++;
                        if (aRowIndex >= DataGridViewPreview.RowCount)
                        {
                            ShowLogMessage(TraceEventType.Information, "ファイル名から取得した情報が楽曲情報・番組情報に未登録のファイルは見つかりませんでした。");
                            DataGridViewPreview.ClearSelection();
                            return;
                        }

                        // ファイル命名規則とフォルダー固定値を適用
                        Dictionary <String, String> aDic = NklCommon.MatchFileNameRulesAndFolderRule(
                            Path.GetFileNameWithoutExtension((String)DataGridViewPreview.Rows[aRowIndex].Cells[(Int32)PreviewColumns.File].Value), aFolderSettingsInMemory);

                        // 楽曲名が空かどうか
                        if (String.IsNullOrEmpty(aDic[NklCommon.RULE_VAR_TITLE]))
                        {
                            break;
                        }

                        // 楽曲名が anison.info と不一致かどうか
                        String aSongOrigin           = SongOriginCsv(aDic[NklCommon.RULE_VAR_TITLE]);
                        List <String> aSongCsvRecord = NklCommon.FindCsvRecord(mSongCsvs, (Int32)SongCsvColumns.Name, aSongOrigin);
                        if (aSongCsvRecord == null)
                        {
                            break;
                        }

                        // 番組名がある場合、番組名が anison.info と不一致かどうか
                        if (!String.IsNullOrEmpty(aDic[NklCommon.RULE_VAR_PROGRAM]))
                        {
                            String aProgramOrigin           = ProgramOriginCsv(aDic[NklCommon.RULE_VAR_PROGRAM]);
                            List <String> aProgramCsvRecord = NklCommon.FindCsvRecord(mProgramCsvs, (Int32)ProgramCsvColumns.Name, aProgramOrigin);
                            if (aProgramCsvRecord == null)
                            {
                                break;
                            }
                        }
                    }

                    DataGridViewPreview.Rows[aRowIndex].Selected = true;

                    // 検出行が完全に表示されていない場合はスクロールする
                    Int32 aBeforeRowIndex = aRowIndex > 0 ? aRowIndex - 1 : aRowIndex;
                    Int32 aAfterRowIndex  = aRowIndex < DataGridViewPreview.RowCount - 1 ? aRowIndex + 1 : aRowIndex;
                    if (!DataGridViewPreview.Rows[aBeforeRowIndex].Displayed || !DataGridViewPreview.Rows[aAfterRowIndex].Displayed)
                    {
                        DataGridViewPreview.FirstDisplayedScrollingRowIndex = aRowIndex;
                    }
                }));
            }
            catch (OperationCanceledException)
            {
                ShowLogMessage(Common.TRACE_EVENT_TYPE_STATUS, "未登録検出を中止しました。");
            }
            catch (Exception oExcep)
            {
                ShowLogMessage(TraceEventType.Error, "未登録検出時エラー:\n" + oExcep.Message);
                ShowLogMessage(TraceEventType.Verbose, " スタックトレース:\n" + oExcep.StackTrace);
            }
            finally
            {
                // 後片付け
                SetCursor(Cursors.Default);
                EnableComponents();
            }
        }