public TerminalInitializeInfo(IAbstractTerminalHost session, ITerminalParameter param) { _session = session; _param = param; _initialWidth = param.InitialWidth; _initialHeight = param.InitialHeight; }
public AbstractTerminal(TerminalInitializeInfo info) { //TerminalEmulatorPlugin.Instance.LaterInitialize(); _session = info.Session; // //_invalidateParam = new InvalidateParam(); _document = new TerminalDocument(info.InitialWidth, info.InitialHeight); //_document.SetOwner(_session.ISession); _afterExitLockActions = new List <AfterExitLockDelegate>(); _decoder = new ISO2022CharDecoder(this, EncodingProfile.Get(info.Session.TerminalSettings.Encoding)); _terminalMode = TerminalMode.Normal; _logService = new LogService(info.TerminalParameter, _session.TerminalSettings, _session.TerminalOptions); //_promptRecognizer = new PromptRecognizer(this); //if (info.Session.TerminalSettings.LogSettings != null) //{ // _logService.ApplyLogSettings(_session.TerminalSettings.LogSettings, false); //} //event handlers ITerminalSettings ts = info.Session.TerminalSettings; ts.ChangeEncoding += delegate(EncodingType t) { this.Reset(); }; _document.DebugFlag = ts.DebugFlag; _document.LineFeedRule = GetTerminalSettings().LineFeedRule; //(Telnet.LineFeedRule) //ToDo: Set Encoding //_document.Encoding = Encoding.GetEncoding("iso-2022-jp") }
private void OnTimer(object sender, EventArgs args) { //TODO アプリケーション内部イベントログでも作ってこういうのは記録していくのがいいのか? foreach (ISession s in TerminalEmulatorPlugin.Instance.GetSessionManager().AllSessions) { IAbstractTerminalHost ts = (IAbstractTerminalHost)s.GetAdapter(typeof(IAbstractTerminalHost)); if (ts != null && ts.TerminalConnection != null && ts.TerminalConnection.TerminalOutput != null) { ts.TerminalConnection.TerminalOutput.SendKeepAliveData(); } } }
public void OnDocumentActivated(IPoderosaMainWindow window, IPoderosaDocument document) { //Debug.WriteLine("OnDocumentActivated"); TerminalToolBarInstance tb = FindToolbarInstance(window); if (tb == null) { tb = new TerminalToolBarInstance(this, window.ToolBar); _toolbarInstances[window] = tb; //TODO コレクションの削除がない! } IAbstractTerminalHost session = (IAbstractTerminalHost)document.OwnerSession.GetAdapter(typeof(IAbstractTerminalHost)); if (session != null) { tb.Attach(session.TerminalSettings); } }
public AbstractTerminal(TerminalInitializeInfo info) { TerminalEmulatorPlugin.Instance.LaterInitialize(); _session = info.Session; //_invalidateParam = new InvalidateParam(); _document = new TerminalDocument(info.InitialWidth, info.InitialHeight); _document.SetOwner(_session.ISession); _afterExitLockActions = new List <AfterExitLockDelegate>(); _encodingProfile = EncodingProfile.Create(info.Session.TerminalSettings.Encoding); _decoder = new ISO2022CharDecoder(this, _encodingProfile); _unicodeCharConverter = _encodingProfile.CreateUnicodeCharConverter(); _terminalMode = TerminalMode.Normal; _currentdecoration = TextDecoration.Default; _manipulator = new GLineManipulator(); _scrollBarValues = new ScrollBarValues(); _logService = new LogService(info.TerminalParameter, _session.TerminalSettings); _promptRecognizer = new PromptRecognizer(this); _intelliSense = new IntelliSense(this); _commandResultRecognizer = new PopupStyleCommandResultRecognizer(this); if (info.Session.TerminalSettings.LogSettings != null) { _logService.ApplyLogSettings(_session.TerminalSettings.LogSettings, false); } //event handlers ITerminalSettings ts = info.Session.TerminalSettings; ts.ChangeEncoding += delegate(EncodingType t) { this.Reset(); }; ts.ChangeRenderProfile += delegate(RenderProfile prof) { TerminalControl tc = _session.TerminalControl; if (tc != null) { tc.ApplyRenderProfile(prof); } }; }
//必ずimportされるという前提なのでちょっと危険 public void OnPreferenceImport(IPreferenceFolder oldvalues, IPreferenceFolder newvalues) { ITerminalEmulatorOptions opt = (ITerminalEmulatorOptions)newvalues.QueryAdapter(typeof(ITerminalEmulatorOptions)); //DefaultRenderProfile GEnv.DefaultRenderProfile = opt.CreateRenderProfile(); //必要なTerminalSessionにApplyTerminalOptions ISessionManager sm = TerminalEmulatorPlugin.Instance.GetSessionManager(); foreach (ISession session in sm.AllSessions) { IAbstractTerminalHost ts = (IAbstractTerminalHost)session.GetAdapter(typeof(IAbstractTerminalHost)); if (ts != null) { TerminalControl tc = ts.TerminalControl; if (tc != null) { tc.ApplyTerminalOptions(opt); } } } //ASCIIWordBreakTable ASCIIWordBreakTable table = ASCIIWordBreakTable.Default; table.Reset(); foreach (char ch in opt.AdditionalWordElement) { table.Set(ch, ASCIIWordBreakTable.LETTER); } //キーバインド系をリセット TerminalEmulatorPlugin.Instance.CustomKeySettings.Reset(opt); //KeepAliveのリフレッシュ TerminalEmulatorPlugin.Instance.KeepAlive.Refresh(opt.KeepAliveInterval); _originalOptions.ResetParseKeyFlag(); }
public AbstractTerminal(TerminalInitializeInfo info) { TerminalEmulatorPlugin.Instance.LaterInitialize(); _session = info.Session; //_invalidateParam = new InvalidateParam(); _document = new TerminalDocument(info.InitialWidth, info.InitialHeight); _document.SetOwner(_session.ISession); _afterExitLockActions = new List<AfterExitLockDelegate>(); _decoder = new ISO2022CharDecoder(this, EncodingProfile.Get(info.Session.TerminalSettings.Encoding)); _terminalMode = TerminalMode.Normal; _currentdecoration = TextDecoration.Default; _manipulator = new GLineManipulator(); _scrollBarValues = new ScrollBarValues(); _logService = new LogService(info.TerminalParameter, _session.TerminalSettings); _promptRecognizer = new PromptRecognizer(this); _intelliSense = new IntelliSense(this); _commandResultRecognizer = new PopupStyleCommandResultRecognizer(this); if (info.Session.TerminalSettings.LogSettings != null) _logService.ApplyLogSettings(_session.TerminalSettings.LogSettings, false); //event handlers ITerminalSettings ts = info.Session.TerminalSettings; ts.ChangeEncoding += delegate(EncodingType t) { this.Reset(); }; ts.ChangeRenderProfile += delegate(RenderProfile prof) { TerminalControl tc = _session.TerminalControl; if (tc != null) tc.ApplyRenderProfile(prof); }; }