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

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

            //プロパティから色を取得して保持します
            _foreColor = Color.FromArgb((int)((long)0xff000000 + _property.ToInt("color", "fore_color", 0xffffff)));
            _backColor = Color.FromArgb((int)((long)0xff000000 + _property.ToInt("color", "back_color", 0x000000)));

            //カラーデータを生成して、共通データとして設定します
            var colorData = new ColorData {
                ForeColor = Color.White, BackColor = Color.Black
            };

            _pluginManager.CommonData[CommonDataKeys.ColorData] = colorData;

            //イベントハンドラーを登録します
            _pluginManager.GetEventManager().AddEventHandler(PluginCreatedEventParam.Name, this);
            _pluginManager.GetEventManager().AddEventHandler(AllPluginCreatedEventParam.Name, this);
            return(true);
        }
Пример #2
0
        //初期処理を行います
        public bool Initialize(PluginCreateParam param)
        {
            //プロパティファイルを読み込みます
            var property = new PluginProperty();

            property.Load(param.PropertyPath);

            //プロパティから値を取得します
            var text      = property[PluginProperty.NO_SECTION, "text"];
            var className = property[PluginProperty.NO_SECTION, "create_plugin_class_name"];
            var method    = property[PluginProperty.NO_SECTION, "method"];

            //メニューを作成します
            this.Text = text;
            //this.ShortcutKeys = Keys.F3; //TODO プロパティで指定できるようにする
            this.Click += (sender, e) => {
                var targetPlugin = PluginManager.GetInstance().ActivePlugin;
                if (targetPlugin == null)
                {
                    return;
                }

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

                //メソッドが取得できない場合は、処理を中止します
                if (methodInfo == null)
                {
                    return;                     //TODO ログ出力
                }
                //メソッドを実行します
                methodInfo.Invoke(targetPlugin, null);
            };
            return(true);
        }
Пример #3
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);
        }
Пример #4
0
        //初期処理を行います
        public bool Initialize(PluginCreateParam param)
        {
            //プロパティファイルを読み込みます
            var property = new PluginProperty();

            property.Load(param.PropertyPath);

            var text = property[PluginProperty.NO_SECTION, "text"];

            //メニューを作成します
            this.Text = text;
            //this.ShortcutKeys = Keys.F3; //TODO プロパティで指定できるようにする

            return(true);
        }
Пример #5
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);
        }
Пример #6
0
        //初期処理を行います
        public bool Initialize(PluginCreateParam param)
        {
            //プラグインマネージャーを保持します
            _pluginManager = PluginManager.GetInstance();

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

            var text      = _property[PluginProperty.NO_SECTION, "text"];
            var className = _property[PluginProperty.NO_SECTION, "create_plugin_class_name"];

            //メニューを作成します
            this.Text   = text;
            this.Click += (sender, e) => {
                //プラグイン生成パラメーター
                var pluginCreateParam = new PluginCreateParam();

                //親プラグインがパスを保持している場合は、
                //パスをプラグイン生成パラメーターに設定します
                if (this.ParentPlugin is IPathPlugin parentPlugin)
                {
                    var path = parentPlugin.GetPath();
                    if (string.IsNullOrEmpty(path))
                    {
                        return;                             //TODO 要検討。パスが取得できない場合に、プラグインを生成するか?
                    }
                    //プラグイン生成パラメーターを設定します
                    pluginCreateParam["path"] = path; //選択されたパス
                }

                //プラグインを生成します
                var type   = _pluginManager.GetPluginType(className);
                var plugin = (IPlugin)_pluginManager.CreatePluginInstance(type, pluginCreateParam, this);
            };

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

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

            bool notIgnoreCase = _property.ToBool("input", "not_ignore_case");
            bool includeSubDir = _property.ToBool("input", "include_sub_dir");
            bool useRegExp     = _property.ToBool("input", "use_reg_exp");
            var  extension     = _property.ToString("input", "extension");
            var  fontName      = _property.ToString("font", "name");
            var  fontSize      = _property.ToDouble("font", "size");

            //プラグイン生成時のパスを取得します
            var path = param.ToString("path");

            //Grepコントロールを生成します
            _control = new GrepControl(this, _pluginManager, path, notIgnoreCase, includeSubDir, useRegExp, extension, fontName, (float)fontSize);
            return(true);
        }