Пример #1
0
        /// <summary>
        /// DBにタグを追加します
        /// </summary>
        /// <param name=""></param>
        /// <param name=""></param>
        /// <returns></returns>
        private bool AddTag(IList <int> idList, IList <string> selectedTagList)
        {
            //DBにタグを追加します
            using (var connection = _db.GetConnection()) {
                //トランザクション開始
                var transaction = connection.BeginTransaction();

                try {
                    //選択中のIDのデータに対して、選択されたタグを追加します
                    foreach (var id in idList)
                    {
                        TagDataDao.AddTags(connection, id, selectedTagList);
                    }

                    //コミット
                    transaction.Commit();
                    return(true);
                } catch (Exception ex) {
                    //ロールバック
                    transaction.Rollback();
                    MsgBoxUtils.ShowErrorMsgBox("更新に失敗しました。\n" + ex.Message);
                    return(false);
                }
            }
        }
Пример #2
0
        /// <summary>
        /// DBのタグを更新します
        /// </summary>
        /// <param name=""></param>
        /// <param name=""></param>
        /// <returns></returns>
        private bool UpdateTag(IList <int> idList, IList <string> selectedTagList)
        {
            //DBのタグを更新します
            using (var connection = _db.GetConnection()) {
                //トランザクション開始
                var transaction = connection.BeginTransaction();
                try {
                    foreach (var id in idList)
                    {
                        //タグを全て削除します
                        TagDataDao.Delete(connection, id);

                        //タグを追加します
                        foreach (var tag in selectedTagList)
                        {
                            TagDataDao.Insert(connection, tag, id);
                        }
                    }

                    //コミット
                    transaction.Commit();
                    return(true);
                } catch (Exception ex) {
                    //ロールバック
                    transaction.Rollback();
                    MsgBoxUtils.ShowErrorMsgBox("更新に失敗しました。\n" + ex.Message);
                    return(false);
                }
            }
        }
Пример #3
0
        /// <summary>
        /// グリッドの手入力後に発生するイベント
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void grid_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            var id       = _grid[0, e.RowIndex].Value.ToString();              //ID
            var newValue = _grid[e.ColumnIndex, e.RowIndex].Value?.ToString(); //入力値

            if (newValue == null)
            {
                newValue = "";
            }

            FileData oldFileData;

            using (var connection = _db.GetConnection()) {
                oldFileData = FileDataDao.GetData(connection, id);
                if (oldFileData == null)
                {
                    MsgBoxUtils.ShowErrorMsgBox("このデータは削除されています。");
                    return;
                }

                //タグを取得します
                oldFileData._tags = TagDataDao.GetTags(connection, StringUtils.ToInt(id));
            }

            //カラムオブジェクトに値の変更を通知します(カラム側ではファイル名の変更などを行う)
            var newFileData = ((IFileListColumnForFileInfo)_grid.Columns[e.ColumnIndex]).ValueChanged(oldFileData, newValue);

            if (newFileData == null)
            {
                newFileData = oldFileData;
            }

            //行の更新します
            SetRowData(e.RowIndex, newFileData);
        }
Пример #4
0
        /// <summary>
        /// グリッドのキーダウンイベント
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void grid_KeyDown(object sender, KeyEventArgs e)
        {
            //CTRL + エンターキーの場合は、ネイティブな方法でファイルを開きます
            if (e.Control && e.KeyCode == Keys.Enter)
            {
                //選択されているセルがある行のパスを取得します
                var path = GetSelectedPath();
                if (path == null)
                {
                    return;
                }
                if (FileUtils.Exists(path) == false)
                {
                    MsgBoxUtils.ShowErrorMsgBox(path + "が見つかりません。");
                    return;
                }

                //ネイティブな方法でファイルを開きます
                Process.Start(path);

                //キー操作を処理済みにします
                e.Handled = true;
                return;
            }

            //エンターキーが押された場合は、フォルダorファイル選択イベントを発生させます
            if (e.KeyCode == Keys.Enter)
            {
                //選択されているセルがある行のパスを取得します
                var path = GetSelectedPath();
                if (path == null)
                {
                    return;
                }

                //フォルダまたはファイル選択イベントを発生させます
                RaiseSelectedEvent(path);

                //キー操作を処理済みにします
                e.Handled = true;
                return;
            }

            //DELETEキーが押された場合は、管理データを削除します
            if (e.KeyCode == Keys.Delete)
            {
                //現在選択中のIDリストを取得します
                var idList = GetSelectedIDList();
                if (idList.Count == 0)
                {
                    return;
                }

                //管理データを削除します
                DeleteData(idList);
            }
        }
Пример #5
0
        /// <summary>
        /// 管理データを削除します
        /// </summary>
        private void DeleteData(IList <int> idList)
        {
            //セルが選択されていない場合は、処理を抜けます
            if (_grid.SelectedCells.Count == 0)
            {
                return;
            }

            var result = MessageBox.Show("管理データを削除してもよろしいですか?\nファイルは削除されません。", "確認", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);

            if (result == DialogResult.Yes)
            {
                var deleteIDList = new List <int>(); //グリッドから行を削除するためのIDリスト

                //「はい」の場合、管理データを削除します
                using (var connection = _db.GetConnection()) {
                    //トランザクション開始
                    var transaction = connection.BeginTransaction();


                    try {
                        foreach (var id in idList)
                        {
                            //管理データを削除します
                            FileDB.DeleteData(connection, id);

                            //削除用IDリストにIDを追加します
                            deleteIDList.Add(id);
                        }

                        //コミット
                        transaction.Commit();
                    } catch (Exception ex) {
                        //ロールバック
                        transaction.Rollback();
                        MsgBoxUtils.ShowErrorMsgBox("削除に失敗しました。\n" + ex.Message);
                    }
                }

                //一覧を更新します
                foreach (var id in deleteIDList)
                {
                    //指定したIDの行を取得します
                    int row = GetRowIndex(id);

                    //行を削除します
                    _grid.Rows.RemoveAt(row);
                }
            }
        }
Пример #6
0
        //初期処理を行います
        public bool Initialize(PluginCreateParam param)
        {
            //指定されたファイルがある場合は、ファイルを開きます
            if (FileUtils.Exists(param.Path))
            {
                //指定されたパスの先頭の1行を読み込みます
                var lines = TextFileUtils.ReadTopLines(param.Path, Encoding.UTF8, 1);
                try {
                    var path = lines[0].Trim();

                    //OSで指定されている方法でファイルを開きます
                    Process.Start(path);
                } catch (Exception ex) {
                    MsgBoxUtils.ShowErrorMsgBox(ex.Message);
                }
            }

            //false を返してプラグインを破棄させます
            return(false);
        }
Пример #7
0
        /// <summary>
        /// グリッドのダブルクリックイベント
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void grid_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex == -1)
            {
                return;                   //ヘッダーダブルクリックは無視する
            }
            //選択されているパスを取得します
            var path = GetSelectedPath();

            if (path == null)
            {
                return;
            }
            if (FileUtils.Exists(path) == false)
            {
                MsgBoxUtils.ShowErrorMsgBox(path + "が見つかりません。");
                return;
            }

            //フォルダまたはファイル選択イベントを発生させます
            RaiseSelectedEvent(path);
        }
Пример #8
0
        /// <summary>
        /// 評価を一括更新します
        /// </summary>
        private bool UpdateValue(IList <int> idList)
        {
            using (var connection = _db.GetConnection()) {
                //トランザクション開始
                var transaction = connection.BeginTransaction();

                try {
                    foreach (var id in idList)
                    {
                        //評価を更新します
                        FileDataDao.UpdateField(connection, id, "value", _value.ToString());
                    }

                    //コミット
                    transaction.Commit();
                    return(true);
                } catch (Exception ex) {
                    //ロールバック
                    transaction.Rollback();
                    MsgBoxUtils.ShowErrorMsgBox("更新に失敗しました。\n" + ex.Message);
                    return(false);
                }
            }
        }
Пример #9
0
        /// <summary>
        /// ポップアップメニューを設定します
        /// </summary>
        private void SetPopupMenuItem()
        {
            //フォルダを開く
            _grid.ContextMenuStrip = new ContextMenuStrip();
            {
                var menu = new ToolStripMenuItem("フォルダを開く");
                menu.Click += (sender, e) => {
                    //選択されているセルがある行のパスを取得します
                    var path = GetSelectedPath();
                    if (path == null)
                    {
                        return;
                    }
                    var dirPath = Path.GetDirectoryName(path);
                    if (Directory.Exists(dirPath) == false)
                    {
                        MsgBoxUtils.ShowErrorMsgBox(path + "が見つかりません。");
                        return;
                    }

                    //ネイティブな方法でフォルダを開きます
                    Process.Start(dirPath);
                };
                _grid.ContextMenuStrip.Items.Add(menu);
            }

            //ファイルを開く
            {
                var menu = new ToolStripMenuItem("ファイルを開く");
                menu.Click += (sender, e) => {
                    //選択されているセルがある行のパスを取得します
                    var path = GetSelectedPath();
                    if (path == null)
                    {
                        return;
                    }
                    if (FileUtils.Exists(path) == false)
                    {
                        MsgBoxUtils.ShowErrorMsgBox(path + "が見つかりません。");
                        return;
                    }

                    //フォルダまたはファイル選択イベントを発生させます
                    RaiseSelectedEvent(path);
                };
                _grid.ContextMenuStrip.Items.Add(menu);
            }

            //ネイティブな方法でファイルを開く
            {
                var menu = new ToolStripMenuItem("ネイティブな方法でファイルを開く");
                menu.Click += (sender, e) => {
                    //選択されているセルがある行のパスを取得します
                    var path = GetSelectedPath();
                    if (path == null)
                    {
                        return;
                    }
                    if (FileUtils.Exists(path) == false)
                    {
                        MsgBoxUtils.ShowErrorMsgBox(path + "が見つかりません。");
                        return;
                    }

                    //ネイティブな方法でフォルダを開きます
                    Process.Start(path);
                };
                _grid.ContextMenuStrip.Items.Add(menu);
            }

            //管理データの削除
            {
                var menu = new ToolStripMenuItem("管理データの削除");
                menu.Click += (sender, e) => {
                    //現在選択中のIDリストを取得します
                    var idList = GetSelectedIDList();
                    if (idList.Count == 0)
                    {
                        return;
                    }

                    //管理データを削除します
                    DeleteData(idList);
                };
                _grid.ContextMenuStrip.Items.Add(menu);
            }

            //評価
            {
                var menu = new ToolStripMenuItem {
                    Text = "評価"
                };
                _grid.ContextMenuStrip.Items.Add(menu);

                //評価(0 - 10)ごとにメニューを作成します
                for (int value = 0; value <= 10; value++)
                {
                    menu.DropDownItems.Add(new UpdateValueMenu(this, _db, _grid, _colIndexes.Value, value));
                }
            }

            //タグ
            {
                var menu = new ToolStripMenuItem("タグ");
                _grid.ContextMenuStrip.Items.Add(menu);

                menu.DropDownItems.Add(new    AddTagMenu(this, _db, _grid, _colIndexes.Tag)); //タグ追加
                menu.DropDownItems.Add(new UpdateTagMenu(this, _db, _grid, _colIndexes.Tag)); //タグ更新
                menu.DropDownItems.Add(new DeleteTagMenu(this, _db, _grid, _colIndexes.Tag)); //タグ削除
            }
        }