示例#1
0
        /******************************************************************************
        *
        *  IPlugin
        *
        ******************************************************************************/
        //初期処理を行います
        public bool Initialize(PluginCreateParam param)
        {
            //プラグインマネージャーを保持します
            _pluginManager = PluginManager.GetInstance();

            //コントロールの初期化をします
            this.Initialize();

            this.SelectionMode = DataGridViewSelectionMode.CellSelect;      //セル選択モード
            this.EditMode      = DataGridViewEditMode.EditProgrammatically; //シングルクリックで編集中にならないようにした

            //ファイルリストで表示するフォルダの画像を設定します
            this.SetImage(Image.FromFile(FileUtils.AppendPath(param.DataPath, "img/opened_folder.png")));

            //ポップアップメニューを設定します
            SetPopupMenuItem();

            //カラムの設定(FileListPluginExクラスでは、動的にカラムを設定するようになっています)
            this.Columns.Add(new PathColumn());           //パスカラム(非表示)
            //this.Columns.Add(new FileKindColumn      ());
            this.Columns.Add(new FileNameColumn());
            this.Columns.Add(new FileExtensionColumn());
            this.Columns.Add(new FileSizeColumn());
            this.Columns.Add(new FileUpdateDateColumn());

            //イベントハンドラーを登録します
            _pluginManager.GetEventManager().AddEventHandler(DirSelectedEventParam.Name, this);

            return(true);
        }
示例#2
0
        public FileInfo ValueChanged(FileInfo orgFile, string newValue)
        {
            var oldPath = orgFile.FullName;
            var newPath = FileUtils.AppendPath(orgFile.DirectoryName, newValue);

            //ファイル名の変更がない場合は処理を抜けます
            if (orgFile.Name.Equals(newValue))
            {
                return(null);
            }

            try {
                if (FileUtils.IsFile(oldPath))
                {
                    //ファイルの場合
                    File.Move(oldPath, newPath);
                }
                else
                {
                    //フォルダの場合
                    Directory.Move(oldPath, newPath);
                }
            } catch (Exception ex) {
                __.ShowErrorMsgBox(ex.Message);
                return(null);
            }

            return(new FileInfo(newPath));
        }
示例#3
0
        //起動します
        public void Startup()
        {
            //startup.ini を読み込み、プラグインローダーのクラス名を取得します
            var startupIni = new IniFile();

            try {
                startupIni.Load(FileUtils.AppendPath(__.GetAppDirPath(), "plugins/startup.ini"));
            } catch (Exception ex) {
                MessageBox.Show("startup.ini の読み込みに失敗しました。" + ex.Message);
                return;
            }

            //最初に起動するプラグイン(プラグインローダー)のクラス名を取得します
            var pluginLoaderClassName = startupIni["startup", "class_name"];

            if (string.IsNullOrEmpty(pluginLoaderClassName))
            {
                MessageBox.Show("startup.ini の [startup] の class_name が見つかりません。");
                return;
            }

            //クラス名 -> クラスの型
            var pluginLoaderType = GetPluginType(pluginLoaderClassName);

            if (pluginLoaderType == null)
            {
                MessageBox.Show(pluginLoaderClassName + "の型の取得に失敗しました。startup.ini のクラス名を確認してください。");
                return;
            }

            //プラグインを生成します
            var param  = new PluginCreateParam();
            var plugin = CreatePluginInstance(pluginLoaderType, param, this, null, "plugin_loader");
        }
示例#4
0
        }                                                   //プラグイン配置後の初期化処理を行います

        //初期処理を行います
        public bool Initialize(PluginCreateParam param)
        {
            //プラグインマネージャーを保持します
            _pluginManager = PluginManager.GetInstance();

            //イベントハンドラーを登録します
            _pluginManager.GetEventManager().AddEventHandler(FileSelectedEventParam.Name, this);

            //plugin_extension.ini を読み込みます
            _pluginExtIni.Load(FileUtils.AppendPath(param.DataPath, "plugin_extension.ini"));

            //plugin_list.ini を読み込みます
            var pluginListIni = new PluginListIni(); //new IniFile();

            pluginListIni.Load(FileUtils.AppendPath(param.DataPath, "plugin_list.ini"));

            //plugin_list.ini で指定されているプラグインを全て生成します
            CreatePlugin(pluginListIni);

            //全てのプラグインの生成が完了したことを通知するイベントを発生させます
            var eventParam = new AllPluginCreatedEventParam();

            _pluginManager.GetEventManager().RaiseEvent(AllPluginCreatedEventParam.Name, this, eventParam);

            return(true);
        }
示例#5
0
        //初期処理を行います
        public bool Initialize(PluginCreateParam param)
        {
            //プラグインマネージャーを保持します
            _pluginManager = PluginManager.GetInstance();

            //プロパティファイルを読み込みます
            _property = new PluginProperty();
            _property.Load(param.PropertyPath);

            var text      = _property[PluginProperty.NO_SECTION, "text"];
            var toolTip   = _property[PluginProperty.NO_SECTION, "tool_tip_text"];
            var className = _property[PluginProperty.NO_SECTION, "create_plugin_class_name"];
            var imgPath   = _property[PluginProperty.NO_SECTION, "img_path"]; //img/calendar.png

            //ツールの画像を設定します
            if (StringUtils.IsNotEmpty(imgPath))
            {
                this.Image = System.Drawing.Image.FromFile(FileUtils.AppendPath(param.DataPath, imgPath));
            }

            //メニューを作成します
            this.Text        = text;
            this.ToolTipText = toolTip;
            this.Click      += (sender, e) => {
                //プラグインを生成します
                var type   = _pluginManager.GetPluginType(className);
                var plugin = (IPlugin)_pluginManager.CreatePluginInstance(type, new PluginCreateParam(), this);
            };

            return(true);
        }
示例#6
0
        //初期処理を行います
        public bool Initialize(PluginCreateParam param)
        {
            //プラグインマネージャーを保持します
            _pluginManager = PluginManager.GetInstance();

            //DBのパスを作成します
            var dbDirPath = FileUtils.AppendPath(PluginManager.GetCommonDataPath(), "file_info/");

            FileUtils.CreateDir(dbDirPath);
            var dbPath = FileUtils.AppendPath(dbDirPath, "file_info.db");

            //プロパティファイルを読み込みます
            Property = new IniFile();
            Property.Load(param.PropertyPath);

            //DB接続用オブジェクトを生成します
            _db = new FileDB(dbPath);

            //DBのバックアップを作成します
            File.Copy(dbPath, dbPath + "_old", true);

            //ビューのコントロールを生成します
            _control = new FileInfoManagerControl(this, dbPath);

            //イベントハンドラーを登録します
            _pluginManager.GetEventManager().AddEventHandler(FileNameChangedEventParam.Name, this);

            return(true);
        }
示例#7
0
        /// <summary>
        /// プラグインの定義データを全て読み込みます
        /// plugins/{フルクラス名}/plugin.ini を全て読み込みます
        /// </summary>
        public void Load()
        {
            //pluginsフォルダ配下のフォルダ一覧を取得します
            var dirList = FileUtils.GetDirList(FileUtils.AppendPath(__.GetAppDirPath(), "plugins/define"));

            //フォルダ一覧でループして、iniファイルを読み込みます
            foreach (var dirPath in dirList)
            {
                //iniファイルのパスを作成します
                var pluginClassName = Path.GetFileName(dirPath);
                var iniFileName     = "plugin.ini"; //パスが長くなるため廃止:pluginClassName + ".ini";
                var iniPath         = FileUtils.AppendPath(dirPath, iniFileName);

                //ファイルチェック
                if (File.Exists(iniPath))
                {
                    //iniファイルを読み込みます
                    var iniFile = new IniFile();
                    iniFile.Load(iniPath);

                    //iniファイルをプラグイン名をキーにして保持します
                    _pluginDefineData[pluginClassName] = iniFile;
                }
                else
                {
                    //TODO warningをログとして残す。残骸ファイルがあっても、動作上は問題ないため。
                    //throw new Exception(iniPath + "が見つかりません。");
                }
            }
        }
示例#8
0
        /// <summary>
        /// 指定された月の日記ファイルを読み込んで、
        /// 日付をキーにした連想配列に入れて返します。
        /// 読み込む量は、先頭の10行、または1024文字まで。
        ///
        ///   連想配列["yyyyMMdd"] = テキスト
        ///
        /// 日記ファイルのパス
        /// diary/{yyyy}/{MM}/{yyyyMMdd}.txt
        /// </summary>
        /// <param name="year"></param>
        /// <param name="month"></param>
        /// <returns></returns>
        private Map <string, string> GetDiaryData(int year, int month)
        {
            var map = new Map <string, string>(); //キー:yyyyMMdd 値:先頭の10行
            var enc = Encoding.GetEncoding(932);

            //データフォルダのパスを作成します。{_dataDir}/yyyy/MM
            var dataDirPath = GetDataDirPath(year, month);

            //月末を取得します
            int endDay = DateTimeUtils.GetEndDate(year, month).Day;

            //1日 ~ 月末でループします
            for (int day = 1; day <= endDay; day++)
            {
                //日記ファイルの有無を確認します
                var yyyyMMdd = year + month.ToString("00") + day.ToString("00");
                var path     = FileUtils.AppendPath(dataDirPath, yyyyMMdd + ".txt");
                if (File.Exists(path) == false)
                {
                    continue;
                }

                //ファイルが存在する場合、先頭の10行を読み込みます
                var list = TextFileUtils.ReadTopLines(path, enc, 10);

                //読み込んだテキストを連想配列に設定します
                map[yyyyMMdd] = StringUtils.Left(string.Join("\n", list).Trim(), 1024);
            }

            return(map);
        }
示例#9
0
        public void Paste()
        {
            if (Clipboard.ContainsImage())
            {
                //クリップボードに画像形式のデータが入っている場合
                var    img  = Clipboard.GetImage();
                string path = FileUtils.AppendPath(fileListGrid.CurrentPath, GetTimeFileName() + ".png");

                //画像ファイルを出力します
                img.Save(path, ImageFormat.Png);

                //ファイル一覧を更新します
                fileListGrid.ShowFileList();

                __.ShowInfoMsgBox("画像を保存しました。\n" + path);
                return;
            }

            if (Clipboard.ContainsText())
            {
                //クリップボードにテキスト形式のデータが入っている場合
                var    text = Clipboard.GetText();
                string path = FileUtils.AppendPath(fileListGrid.CurrentPath, GetTimeFileName() + ".txt");

                //テキストファイルを出力します
                using (var writer = new StreamWriter(path, false, Encoding.GetEncoding(932))) {
                    writer.Write(text);
                }

                //ファイル一覧を更新します
                fileListGrid.ShowFileList();
                __.ShowInfoMsgBox("テキストを保存しました。\n" + path);
                return;
            }
        }
示例#10
0
        /// <summary>
        /// 編集で値が変更された場合に呼ばれます
        /// </summary>
        /// <param name="orgFileData"></param>
        /// <param name="newValue"></param>
        /// <returns></returns>
        public FileData ValueChanged(FileData orgFileData, string newValue)
        {
            if (FileUtils.IsDir(orgFileData.path))
            {
                return(null);
            }

            //新旧の拡張子を取得します
            var oldExt = Path.GetExtension(orgFileData.path).Replace(".", "");
            var newExt = newValue.Replace(".", ""); //入力値の先頭に「.」がある場合は削除する

            //変更がない場合は処理を抜けます
            if (oldExt.Equals(newExt))
            {
                return(null);
            }

            var oldPath     = orgFileData.path;
            var oldDirPath  = Path.GetDirectoryName(oldPath);                     //フォルダのパス
            var oldFileName = Path.GetFileNameWithoutExtension(orgFileData.path); //拡張子を除いたファイル名
            var newPath     = FileUtils.AppendPath(oldDirPath, oldFileName + "." + newExt);

            //ファイル名の変更がない場合は処理を抜けます
            if (oldFileName.Equals(newValue))
            {
                return(null);
            }

            //ファイル名を変更します
            try {
                if (FileUtils.IsFile(oldPath))
                {
                    //ファイルの場合
                    File.Move(oldPath, newPath);
                }
                else
                {
                    //フォルダの場合
                    Directory.Move(oldPath, newPath);
                }
            } catch (Exception ex) {
                __.ShowErrorMsgBox(ex.Message);
                return(null);
            }

            //パスを更新します
            using (var connection = _db.GetConnection()) {
                FileDataDao.UpdateField(connection, orgFileData.id, "path", newPath);
            }

            orgFileData.path = newPath;
            return(orgFileData);
        }
示例#11
0
        /******************************************************************************
        *
        *  IPlugin
        *
        ******************************************************************************/

        //初期処理を行います
        public bool Initialize(PluginCreateParam param)
        {
            //プラグインマネージャーを保持します
            _pluginManager = PluginManager.GetInstance();

            //ファイルツリービューの設定
            {
                //ノード用の画像の読み込み
                var imgDirPath      = FileUtils.AppendPath(param.DataPath, "img");
                var imgOpenedFolder = Image.FromFile(FileUtils.AppendPath(imgDirPath, "opened_folder.png"));
                var imgClosedFolder = Image.FromFile(FileUtils.AppendPath(imgDirPath, "closed_folder.png"));
                var imgRoot         = Image.FromFile(FileUtils.AppendPath(imgDirPath, "root.png"));
                var imgCd           = Image.FromFile(FileUtils.AppendPath(imgDirPath, "cd.png"));
                var imgHdd          = Image.FromFile(FileUtils.AppendPath(imgDirPath, "hdd.png"));
                var imgRemovable    = Image.FromFile(FileUtils.AppendPath(imgDirPath, "removable.png"));

                //ノード用の画像の設定
                SetImage(20, 20, imgOpenedFolder, imgClosedFolder, imgRoot, imgCd, imgHdd, imgRemovable);

                //ファイルツリービューを初期化します
                Initialize();
                this.Font = new Font("MSゴシック", 9);
            }

            //ポップアップメニューを設定します
            var popupMenu = new ContextMenuStrip();

            {
                var menu = new ToolStripMenuItem("最新の情報に更新");
                popupMenu.Items.Add(menu);
                menu.Click += (sender, e) => {
                    this.Refresh(this.SelectedNode);
                };
            }
            {
                var menu = new ToolStripMenuItem("フォルダを開く");
                popupMenu.Items.Add(menu);
                menu.Click += (sender, e) => {
                    //選択されているノードのパスを取得します
                    var path = GetPath(this.SelectedNode);
                    if (string.IsNullOrEmpty(path))
                    {
                        return;
                    }

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

            return(true);
        }
示例#12
0
        //初期処理を行います
        public bool Initialize(PluginCreateParam param)
        {
            //プラグインマネージャーを保持します
            _pluginManager = PluginManager.GetInstance();

            //クリックイベントを設定します
            this.Click += ToolClick;

            //ツールの画像を設定します
            this.Image = Image.FromFile(FileUtils.AppendPath(param.DataPath, "img/opened_folder.png"));

            return(true);
        }
示例#13
0
        /// <summary>
        /// defineのプロパティファイルに差分プロパティを上書きして保存します
        /// </summary>
        /// <param name="plugin">defineの対象プラグイン</param>
        /// <param name="property">プロパティの差分のみ</param>
        public static void SaveToDefine(IPlugin plugin, IniFile property)
        {
            var dirPath = PluginManager.GetDefineDataPath(plugin.GetType().FullName);
            var iniPath = FileUtils.AppendPath(dirPath, PropertyFileName);

            //defineのプロパティファイルを読み込みます
            var defineProp = new IniFile();

            defineProp.Load(iniPath);

            //引数の差分プロパティを、defineのプロパティに上書きします
            defineProp.AddData(property);

            //defineのプロパティファイルを保存します
            defineProp.Save();
        }
示例#14
0
        //初期処理を行います
        public bool Initialize(PluginCreateParam param)
        {
            //プラグインマネージャーを保持します
            _pluginManager = PluginManager.GetInstance();

            //DBのパスを作成します
            var dbDirPath = FileUtils.AppendPath(PluginManager.GetCommonDataPath(), "file_info/");

            FileUtils.CreateDir(dbDirPath);
            var dbPath = FileUtils.AppendPath(dbDirPath, "file_info.db");

            //タイトルカラムコントロールを生成します
            _column = new TitleColumn(dbPath);

            return(true);
        }
示例#15
0
        //初期処理を行います
        public bool Initialize(PluginCreateParam param)
        {
            //プラグインマネージャーを保持します
            _pluginManager = PluginManager.GetInstance();

            //プロパティファイルを読み込みます
            var property = new PluginProperty();

            property.Load(param.PropertyPath);

            var text      = property[PluginProperty.NO_SECTION, "text"];
            var toolTip   = property[PluginProperty.NO_SECTION, "tool_tip_text"];
            var className = property[PluginProperty.NO_SECTION, "create_plugin_class_name"];
            var imgPath   = property[PluginProperty.NO_SECTION, "img_path"]; //img/calendar.png
            var method    = property[PluginProperty.NO_SECTION, "method"];

            //ツールの画像を設定します
            if (StringUtils.IsNotEmpty(imgPath))
            {
                this.Image = System.Drawing.Image.FromFile(FileUtils.AppendPath(param.DataPath, imgPath));
            }

            //メニューを作成します
            this.Text        = text;
            this.ToolTipText = toolTip;
            this.Click      += (sender, e) => {
                var targetPlugin = _pluginManager.ActivePlugin;
                if (targetPlugin == null)
                {
                    return;
                }

                //リフレクションで指定されたメソッドを取得します
                var methodInfo = targetPlugin.GetType().GetMethod(method);

                //メソッドが取得できない場合は、処理を中止します
                if (methodInfo == null)
                {
                    return;                     //TODO ログ出力
                }
                //メソッドを実行します
                methodInfo.Invoke(targetPlugin, null);
            };

            return(true);
        }
示例#16
0
        /// <summary>
        /// 現在選択されている行のパスを返します
        /// </summary>
        /// <returns></returns>
        private string GetSelectedPath()
        {
            if (_grid.CurrentRow == null)
            {
                return(null);
            }
            if (_grid.CurrentRow.Index < 0)
            {
                return(null);
            }

            //選択されている行のパスを取得します
            var path     = _grid[_colIndexes.Path, _grid.CurrentRow.Index].Value?.ToString();
            var fileName = _grid[_colIndexes.FileName, _grid.CurrentRow.Index].Value?.ToString();

            return(FileUtils.AppendPath(path, fileName));
        }
示例#17
0
        /// <summary>
        /// プロパティファイル
        /// </summary>
        //private IniFile _property = new IniFile();

        /******************************************************************************
        *
        *  IPlugin
        *
        ******************************************************************************/
        //初期処理を行います
        public bool Initialize(PluginCreateParam param)
        {
            //プラグインマネージャーを保持します
            _pluginManager = PluginManager.GetInstance();

            //親フォルダへ移動ボタン用の画像の読み込み
            var imgDirPath      = FileUtils.AppendPath(param.DataPath, "img");
            var imgOpenedFolder = Image.FromFile(FileUtils.AppendPath(imgDirPath, "move_to_parent_dir.png"));

            //ボタンに画像を設定します
            btnMoveToParentDir.Image = imgOpenedFolder;

            //イベントハンドラーを登録します
            _pluginManager.GetEventManager().AddEventHandler(DirSelectedEventParam.Name, this);

            return(true);
        }
示例#18
0
        //初期処理を行います
        public bool Initialize(PluginCreateParam param)
        {
            //プラグインマネージャーを保持します
            _pluginManager = PluginManager.GetInstance();

            this.Click += (sender, e) => {
                if (_pluginManager.ActivePlugin is IFilePlugin plugin)
                {
                    //アクティブプラグインのファイルを保存します
                    plugin.SaveFile();
                }
            };

            //ツールの画像を設定します
            this.Image = Image.FromFile(FileUtils.AppendPath(param.DataPath, "img/save.png"));

            return(true);
        }
示例#19
0
        /// <summary>
        /// 指定されたノードのパスを取得します
        /// </summary>
        /// <param name="node">ノード</param>
        /// <returns>パス</returns>
        public string GetPath(TreeNode node)
        {
            if (node == null)
            {
                return(null);
            }

            string path = node.Name;

            //子ノードからルートノードに向かって遡って結合していく
            while (node.Parent != null && node.Parent != this.RootNode)
            {
                node = node.Parent;
                path = FileUtils.AppendPath(node.Name, path); //パスの先頭に親ノードの名前を追加します
            }

            return(path);
        }
示例#20
0
        /******************************************************************************
        *
        *  IPlugin
        *
        ******************************************************************************/

        //初期処理を行います
        public bool Initialize(PluginCreateParam param)
        {
            //プラグインマネージャーを保持します
            _pluginManager = PluginManager.GetInstance();

            //DBのパスを作成します
            var dbDirPath = FileUtils.AppendPath(PluginManager.GetCommonDataPath(), "file_info/");

            FileUtils.CreateDir(dbDirPath);
            var dbPath = FileUtils.AppendPath(dbDirPath, "file_info.db");

            //ファイル情報エディターを生成します
            _editor = new FileInfoEditorControl(this, dbPath, (string)param["id"]);

            //イベントハンドラーを登録します
            _pluginManager.GetEventManager().AddEventHandler(FileInfoSelectingEventParam.Name, this);

            return(true);
        }
示例#21
0
        public FileInfo ValueChanged(FileInfo orgFile, string newValue)
        {
            //フォルダの場合は処理しない
            if (FileUtils.IsFile(orgFile.FullName) == false)
            {
                return(null);
            }

            //新旧の拡張子を取得します
            var oldExt = Path.GetExtension(orgFile.FullName).Replace(".", "");
            var newExt = newValue.Replace(".", ""); //入力値の先頭に「.」がある場合は削除する

            //変更がない場合は処理を抜けます
            if (oldExt.Equals(newExt))
            {
                return(null);
            }

            var oldDirPath  = orgFile.DirectoryName;                          //フルパス
            var oldFileName = Path.GetFileNameWithoutExtension(orgFile.Name); //拡張子を除いたファイル名
            var newPath     = FileUtils.AppendPath(oldDirPath, oldFileName + "." + newExt);

            try {
                if (FileUtils.IsFile(orgFile.FullName))
                {
                    //ファイルの場合
                    File.Move(orgFile.FullName, newPath);
                }
                else
                {
                    //フォルダの場合
                    Directory.Move(orgFile.FullName, newPath);
                }
            } catch (Exception ex) {
                __.ShowErrorMsgBox(ex.Message);
                return(null);
            }

            return(new FileInfo(newPath));
        }
示例#22
0
        /// <summary>
        /// 編集で値が変更された場合に呼ばれます
        /// </summary>
        /// <param name="orgFileData"></param>
        /// <param name="newValue"></param>
        /// <returns></returns>
        public FileData ValueChanged(FileData orgFileData, string newValue)
        {
            var oldPath     = orgFileData.path;
            var oldDir      = Path.GetDirectoryName(oldPath);
            var oldFileName = Path.GetFileName(oldPath);
            var newPath     = FileUtils.AppendPath(oldDir, newValue);

            //ファイル名の変更がない場合は処理を抜けます
            if (oldFileName.Equals(newValue))
            {
                return(null);
            }

            //ファイル名を変更します
            try {
                if (FileUtils.IsFile(oldPath))
                {
                    //ファイルの場合
                    File.Move(oldPath, newPath);
                }
                else
                {
                    //フォルダの場合
                    Directory.Move(oldPath, newPath);
                }
            } catch (Exception ex) {
                __.ShowErrorMsgBox(ex.Message);
                return(null);
            }

            //パスを更新します
            using (var connection = _db.GetConnection()) {
                FileDataDao.UpdateField(connection, orgFileData.id, "path", newPath);
            }

            orgFileData.path = newPath;
            return(orgFileData);
        }
示例#23
0
        /// <summary>
        /// 日記ファイルをテキストエディターで開きます
        /// </summary>
        /// <param name="col"></param>
        /// <param name="row"></param>
        private void OpenMemo(int col, int row)
        {
            //行が偶数の場合は、日付行がクリックされているので、+1 します。
            if (row % 2 == 0)
            {
                row++;
            }

            int year  = _currentDate.Year;
            int month = _currentDate.Month;
            int day   = StringUtils.ToInt(grid[col, row - 1].Value.ToString());

            if (day == 0)
            {
                return;           //セルから日付が取得できない場合は処理しない
            }
            //データフォルダのパスを作成します
            var dataDirPath = GetDataDirPath(year, month);
            var yyyyMMdd    = year + month.ToString("00") + day.ToString("00");
            var path        = FileUtils.AppendPath(dataDirPath, yyyyMMdd + ".txt");

            //フォルダがない場合は、フォルダを作成します
            FileUtils.CreateDir(dataDirPath);

            //ファイルがない場合は、ファイルを作成します
            if (File.Exists(path) == false)
            {
                File.Create(path).Close();
            }

            //ファイル選択イベントを発生させます
            var param = new FileSelectedEventParam {
                Path = path
            };

            _pluginManager.GetEventManager().RaiseEvent(FileSelectedEventParam.Name, this, param);
        }
示例#24
0
        /// <summary>
        /// 選択されているパスリストを返します
        /// </summary>
        /// <returns></returns>
        private IList <string> GetSelectedPathList()
        {
            var list = new List <string>();

            foreach (DataGridViewCell cell in _grid.SelectedCells)
            {
                //選択されている行のパスを取得します
                var dirPath  = _grid[_colIndexes.Path, cell.RowIndex].Value?.ToString();
                var fileName = _grid[_colIndexes.FileName, cell.RowIndex].Value?.ToString();
                if (string.IsNullOrEmpty(dirPath) || string.IsNullOrEmpty(fileName))
                {
                    continue;
                }
                var path = FileUtils.AppendPath(dirPath, fileName);

                //リストに追加されていない場合は、リストに追加します
                if (list.IndexOf(path) == -1)
                {
                    list.Add(path);
                }
            }

            return(list);
        }
示例#25
0
        /******************************************************************************
        *
        *  IPlugin
        *
        ******************************************************************************/
        //初期処理を行います
        public bool Initialize(PluginCreateParam param)
        {
            //プラグインマネージャーを保持します
            _pluginManager = PluginManager.GetInstance();

            //コントロールの初期化をします
            fileListGrid.Initialize();

            //カラムの設定
            fileListGrid.Columns.Add(new PathColumn());           //パスカラム(非表示)

            /*
             * fileListGrid.Columns.Add(new FileKindColumn      ());
             * fileListGrid.Columns.Add(new FileNameColumn      ());
             * fileListGrid.Columns.Add(new FileExtensionColumn ());
             * fileListGrid.Columns.Add(new FileSizeColumn      ());
             * fileListGrid.Columns.Add(new FileUpdateDateColumn());
             * fileListGrid.Columns.Add(new ImageSizeColumn     ());
             *
             * //各カラムに FileListGrid 本体を設定します
             * foreach (var colums in fileListGrid.Columns) ((IFileListColumn)colums).FileList = fileListGrid;
             */

            fileListGrid.SelectionMode = DataGridViewSelectionMode.CellSelect;      //セル選択モード
            fileListGrid.EditMode      = DataGridViewEditMode.EditProgrammatically; //シングルクリックで編集中にならないようにした

            //ファイルリストで表示するフォルダの画像を設定します
            fileListGrid.SetImage(Image.FromFile(FileUtils.AppendPath(param.DataPath, "img/opened_folder.png")));

            //ファイル一覧の取得メソッドを設定します
            fileListGrid.GetFileList = (dirPath) => {
                //ファイルのパターンを取得します。未指定の場合は、「*」にします。
                var searchPattern = cmbPattern.Text.Trim();
                if (string.IsNullOrEmpty(searchPattern))
                {
                    searchPattern = "*";
                }

                //フォルダとファイルの一覧を取得します
                List <string> pathList = new List <string>();
                try {
                    //フォルダにチェックが入っている場合は、フォルダ一覧を取得します
                    if (chkDirVisible.Checked)
                    {
                        var list = FileUtils.GetDirList(dirPath, false, searchPattern);
                        pathList.AddRange(list);
                        chkDirVisible.Text = "フォルダ(" + list.Count + "個)";
                    }
                    else
                    {
                        chkDirVisible.Text = "フォルダ";
                    }

                    //ファイルにチェックが入っている場合は、フォルダ一覧を取得します
                    if (chkFileVisible.Checked == true)
                    {
                        var list = FileUtils.GetFileList(dirPath, false, searchPattern);
                        pathList.AddRange(list);
                        chkFileVisible.Text = "ファイル(" + list.Count + "個)";
                    }
                    else
                    {
                        chkFileVisible.Text = "ファイル";
                    }
                } catch (Exception) {
                    //アクセス権限がない場合
                    return(new List <string>());
                }
                return(pathList);
            };

            //ポップアップメニューを設定します
            SetPopupMenuItem();

            //イベントハンドラーを登録します
            _pluginManager.GetEventManager().AddEventHandler(DirSelectedEventParam.Name, this);
            _pluginManager.GetEventManager().AddEventHandler(PluginCreatedEventParam.Name, this);

            return(true);
        }
示例#26
0
 /// <summary>
 /// 日記のデータフォルダのパスを返します
 /// {_dataDir}/yyyy/MM
 /// </summary>
 /// <param name="year"></param>
 /// <param name="month"></param>
 /// <returns></returns>
 private string GetDataDirPath(int year, int month)
 {
     return(FileUtils.AppendPath(_dataDir, year.ToString(), month.ToString("00")));
 }
示例#27
0
 /// <summary>
 /// プラグイン用デフォルトデータフォルダのパスを返します
 /// </summary>
 /// <param name="pluginClassName"></param>
 /// <returns></returns>
 public static string GetDefineDataPath(string pluginClassName)
 {
     return(FileUtils.AppendPath(__.GetAppDirPath(), "plugins/define/" + pluginClassName + "/data"));
 }
示例#28
0
 /// <summary>
 /// プラグイン用データフォルダのパスを返します
 /// </summary>
 /// <param name="pluginId">プラグインID</param>
 /// <returns></returns>
 public static string GetDataPath(string pluginId)
 {
     return(FileUtils.AppendPath(__.GetAppDirPath(), "plugins/data/" + pluginId + "/"));
 }