//初期処理を行います 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); }
//初期処理を行います 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); }
//初期処理を行います 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); }
//初期処理を行います 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); }
//初期処理を行います 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); }
//初期処理を行います 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); }
//初期処理を行います 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); }