/// <summary> /// プロファイルを新規作成 /// </summary> /// <param name="proflist">プロファイルリスト</param> public void NewProfileCommand(ConnectProfileList proflist) { ProfileEditForm dlg = new ProfileEditForm(null); if (dlg.ShowDialog() == DialogResult.OK) { AddProfileCommand(proflist, dlg.ResultProfile); } }
/// <summary> /// プロファイルをコピーして編集 /// </summary> /// <param name="proflist">プロファイルリスト</param> /// <param name="prof">コピー元プロファイル</param> public void CopyEditProfileCommand(ConnectProfileList proflist, ConnectProfileStruct prof) { ProfileEditForm dlg = new ProfileEditForm(prof); if (dlg.ShowDialog() == DialogResult.OK) { proflist.AddProfile(dlg.ResultProfile); } }
/// <summary> /// コンストラクタ /// </summary> public override void InitializePlugin(IPoderosaWorld poderosa) { base.InitializePlugin(poderosa); _instance = this; // 文字列リソース読み込み _stringResource = new Poderosa.StringResource("Contrib.ConnectProfile.strings", typeof(ConnectProfilePlugin).Assembly); ConnectProfilePlugin.Instance.PoderosaWorld.Culture.AddChangeListener(_stringResource); // コマンド登録 IPluginManager pm = poderosa.PluginManager; _coreServices = (ICoreServices)poderosa.GetAdapter(typeof(ICoreServices)); _terminalEmulatorPlugin = (ITerminalEmulatorService)pm.FindPlugin("org.poderosa.terminalemulator", typeof(ITerminalEmulatorService)); ConnectProfileCommand.Register(_coreServices.CommandManager); // メニューリスト作成 ConnectProfileMenuGroup menulist = new ConnectProfileMenuGroup(); ConnectProfileContextMenuGroup contextmenulist = new ConnectProfileContextMenuGroup(); // メニュー登録 IExtensionPoint toolmenu = pm.FindExtensionPoint("org.poderosa.menu.tool"); toolmenu.RegisterExtension(menulist); // コンテキストメニュー登録 IExtensionPoint contextmenu = pm.FindExtensionPoint("org.poderosa.terminalemulator.contextMenu"); contextmenu.RegisterExtension(contextmenulist); // 設定ファイル連携 _connectProfileOptionSupplier = new ConnectProfileOptionsSupplier(); _coreServices.PreferenceExtensionPoint.RegisterExtension(_connectProfileOptionSupplier); // 接続プロファイル _profiles = new ConnectProfileList(); }
/// <summary> /// 全プロファイルリストを置換 /// </summary> /// <param name="proflist1">置換前プロファイルリスト</param> /// <param name="proflist2">置換後プロファイルリスト</param> public void ReplaceAllProfileCommand(ConnectProfileList proflist1, ConnectProfileList proflist2) { proflist1.ReplaceAllProfile(proflist2); }
/// <summary> /// プロファイルを削除 /// </summary> /// <param name="proflist">プロファイルリスト</param> /// <param name="prof">プロファイル</param> public void DeleteProfileCommand(ConnectProfileList proflist, ConnectProfileStruct prof) { proflist.DeleteProfile(prof); }
/// <summary> /// プロファイルを追加 /// </summary> /// <param name="proflist">プロファイルリスト</param> /// <param name="prof">プロファイル</param> public void AddProfileCommand(ConnectProfileList proflist, ConnectProfileStruct prof) { proflist.AddProfile(prof); }
/// <summary> /// CSVインポートクリックイベント /// </summary> private void _csvImportButton_Click(object sender, System.EventArgs e) { ConnectProfileList profList = new ConnectProfileList(); ConnectProfileStruct prof = new ConnectProfileStruct(); StreamReader sr = null; bool appendFlg = false; int lineCnt = 1; if (_openCSVFileDialog.ShowDialog() == DialogResult.OK) { // インポート実行確認 if (ConnectProfilePlugin.AskUserYesNoInvoke(ConnectProfilePlugin.Strings.GetString("Message.ConnectProfile.CSVImportConfirm"), MessageBoxIcon.Question) == DialogResult.Yes) { // 追加/削除確認 if (ConnectProfilePlugin.AskUserYesNoInvoke(ConnectProfilePlugin.Strings.GetString("Message.ConnectProfile.CSVImportAppendProfileList"), MessageBoxIcon.Question) == DialogResult.Yes) { appendFlg = true; } // インポート実行 try { sr = new System.IO.StreamReader(_openCSVFileDialog.FileName, System.Text.Encoding.UTF8); while (!sr.EndOfStream) { string line = sr.ReadLine(); // 各種チェック if (lineCnt == 1) { // ヘッダーチェック(1行目固定) if (_cmd.CheckCSVHeader(line) != true) { ConnectProfilePlugin.MessageBoxInvoke(string.Format(ConnectProfilePlugin.Strings.GetString("Message.ConnectProfile.CSVImportInvalidHeader"), lineCnt.ToString()), MessageBoxIcon.Error); return; } } else if ((line == "") || (line.IndexOf("#") == 0)) { // 空白行/行頭シャープの行はスキップ lineCnt++; continue; } else { // フィールド数チェック if (_cmd.CheckCSVFieldCount(line) != true) { ConnectProfilePlugin.MessageBoxInvoke(string.Format(ConnectProfilePlugin.Strings.GetString("Message.ConnectProfile.CSVImportInvalidFieldCount"), lineCnt.ToString()), MessageBoxIcon.Error); return; } // 各項目チェック prof = _cmd.CheckCSVData(line); if (prof == null) { ConnectProfilePlugin.MessageBoxInvoke(string.Format(ConnectProfilePlugin.Strings.GetString("Message.ConnectProfile.CSVImportFailed"), lineCnt.ToString()), MessageBoxIcon.Error); return; } // プロファイル追加 if (appendFlg == true) { _cmd.AddProfileCommand(ConnectProfilePlugin.Profiles, prof); } else { _cmd.AddProfileCommand(profList, prof); } } lineCnt++; } // プロファイルリスト全置換 if (appendFlg == false) { _cmd.ReplaceAllProfileCommand(ConnectProfilePlugin.Profiles, profList); } RefreshAllProfiles(); RefreshSelectCount(); ConnectProfilePlugin.MessageBoxInvoke(ConnectProfilePlugin.Strings.GetString("Message.ConnectProfile.CSVImportComplete"), MessageBoxIcon.Information); } catch (Exception ex) { ConnectProfilePlugin.MessageBoxInvoke(ex.Message, MessageBoxIcon.Error); } finally { if (sr != null) { sr.Close(); } } } else { // キャンセル ConnectProfilePlugin.MessageBoxInvoke(ConnectProfilePlugin.Strings.GetString("Message.ConnectProfile.CSVImportCancel"), MessageBoxIcon.Warning); } } }
/// <summary> /// 全プロファイルリストを置換 /// </summary> /// <param name="proflist1">置換前プロファイルリスト</param> /// <param name="proflist2">置換後プロファイルリスト</param> public void ReplaceAllProfileCommand(ConnectProfileList proflist1, ConnectProfileList proflist2) { proflist1.ReplaceAllProfile(proflist2); }
/// <summary> /// プロファイルを新規作成 /// </summary> /// <param name="proflist">プロファイルリスト</param> public void NewProfileCommand(ConnectProfileList proflist) { ProfileEditForm dlg = new ProfileEditForm(null); if (dlg.ShowDialog() == DialogResult.OK) { AddProfileCommand(proflist, dlg.ResultProfile); } }
/// <summary> /// プロファイルを編集 /// </summary> /// <param name="proflist">プロファイルリスト</param> /// <param name="prof">プロファイル</param> public void EditProfileCommand(ConnectProfileList proflist, ConnectProfileStruct prof) { ProfileEditForm dlg = new ProfileEditForm(prof); if (dlg.ShowDialog() == DialogResult.OK) { proflist.ReplaceProfile(prof, dlg.ResultProfile); } }
/// <summary> /// プロファイルを削除 /// </summary> /// <param name="proflist">プロファイルリスト</param> /// <param name="prof">プロファイル</param> public void DeleteProfileCommand(ConnectProfileList proflist, ConnectProfileStruct prof) { proflist.DeleteProfile(prof); }
/// <summary> /// プロファイルを追加 /// </summary> /// <param name="proflist">プロファイルリスト</param> /// <param name="prof">プロファイル</param> public void AddProfileCommand(ConnectProfileList proflist, ConnectProfileStruct prof) { proflist.AddProfile(prof); }
/// <summary> /// 全プロファイルリストを置換 /// </summary> /// <param name="pl">置換後プロファイルリスト</param> public void ReplaceAllProfile(ConnectProfileList pl) { DeleteAllProfile(); _data = pl._data; }
/// <summary> /// コンストラクタ /// </summary> public override void InitializePlugin(IPoderosaWorld poderosa) { base.InitializePlugin(poderosa); _instance = this; // 文字列リソース読み込み _stringResource = new Poderosa.StringResource("Contrib.ConnectProfile.strings", typeof(ConnectProfilePlugin).Assembly); ConnectProfilePlugin.Instance.PoderosaWorld.Culture.AddChangeListener(_stringResource); // コマンド登録 IPluginManager pm = poderosa.PluginManager; _coreServices = (ICoreServices)poderosa.GetAdapter(typeof(ICoreServices)); _terminalEmulatorPlugin = (ITerminalEmulatorService)pm.FindPlugin("org.poderosa.terminalemulator", typeof(ITerminalEmulatorService)); ConnectProfileCommand.Register(_coreServices.CommandManager); // メニューリスト作成 ConnectProfileMenuGroup menulist = new ConnectProfileMenuGroup(); ConnectProfileContextMenuGroup contextmenulist = new ConnectProfileContextMenuGroup(); // メニュー登録 IExtensionPoint toolmenu = pm.FindExtensionPoint("org.poderosa.menu.tool"); toolmenu.RegisterExtension(menulist); // コンテキストメニュー登録 IExtensionPoint contextmenu = pm.FindExtensionPoint("org.poderosa.terminalemulator.contextMenu"); contextmenu.RegisterExtension(contextmenulist); // 設定ファイル連携 _connectProfileOptionSupplier = new ConnectProfileOptionsSupplier(); _coreServices.PreferenceExtensionPoint.RegisterExtension(_connectProfileOptionSupplier); // 接続プロファイル _profiles = new ConnectProfileList(); }
/// <summary> /// CSVインポートクリックイベント /// </summary> private void _csvImportButton_Click(object sender, System.EventArgs e) { ConnectProfileList profList = new ConnectProfileList(); ConnectProfileStruct prof = new ConnectProfileStruct(); StreamReader sr = null; bool appendFlg = false; int lineCnt = 1; if (_openCSVFileDialog.ShowDialog() == DialogResult.OK) { // インポート実行確認 if (ConnectProfilePlugin.AskUserYesNoInvoke(ConnectProfilePlugin.Strings.GetString("Message.ConnectProfile.CSVImportConfirm"), MessageBoxIcon.Question) == DialogResult.Yes) { // 追加/削除確認 if (ConnectProfilePlugin.AskUserYesNoInvoke(ConnectProfilePlugin.Strings.GetString("Message.ConnectProfile.CSVImportAppendProfileList"), MessageBoxIcon.Question) == DialogResult.Yes) { appendFlg = true; } // インポート実行 try { sr = new System.IO.StreamReader(_openCSVFileDialog.FileName, System.Text.Encoding.UTF8); while (!sr.EndOfStream) { string line = sr.ReadLine(); // 各種チェック if (lineCnt == 1) { // ヘッダーチェック(1行目固定) if (_cmd.CheckCSVHeader(line) != true) { ConnectProfilePlugin.MessageBoxInvoke(string.Format(ConnectProfilePlugin.Strings.GetString("Message.ConnectProfile.CSVImportInvalidHeader"), lineCnt.ToString()), MessageBoxIcon.Error); return; } } else if ((line == "") || (line.IndexOf("#") == 0)) { // 空白行/行頭シャープの行はスキップ lineCnt++; continue; } else { // フィールド数チェック if (_cmd.CheckCSVFieldCount(line) != true) { ConnectProfilePlugin.MessageBoxInvoke(string.Format(ConnectProfilePlugin.Strings.GetString("Message.ConnectProfile.CSVImportInvalidFieldCount"), lineCnt.ToString()), MessageBoxIcon.Error); return; } // 各項目チェック prof = _cmd.CheckCSVData(line); if (prof == null) { ConnectProfilePlugin.MessageBoxInvoke(string.Format(ConnectProfilePlugin.Strings.GetString("Message.ConnectProfile.CSVImportFailed"), lineCnt.ToString()), MessageBoxIcon.Error); return; } // プロファイル追加 if (appendFlg == true) _cmd.AddProfileCommand(ConnectProfilePlugin.Profiles, prof); else _cmd.AddProfileCommand(profList, prof); } lineCnt++; } // プロファイルリスト全置換 if (appendFlg == false) _cmd.ReplaceAllProfileCommand(ConnectProfilePlugin.Profiles, profList); RefreshAllProfiles(); RefreshSelectCount(); ConnectProfilePlugin.MessageBoxInvoke(ConnectProfilePlugin.Strings.GetString("Message.ConnectProfile.CSVImportComplete"), MessageBoxIcon.Information); } catch (Exception ex) { ConnectProfilePlugin.MessageBoxInvoke(ex.Message, MessageBoxIcon.Error); } finally { if (sr != null) sr.Close(); } } else { // キャンセル ConnectProfilePlugin.MessageBoxInvoke(ConnectProfilePlugin.Strings.GetString("Message.ConnectProfile.CSVImportCancel"), MessageBoxIcon.Warning); } } }
/// <summary> /// 全プロファイルリストを置換 /// </summary> /// <param name="pl">置換後プロファイルリスト</param> public void ReplaceAllProfile(ConnectProfileList pl) { DeleteAllProfile(); _data = pl._data; }