Пример #1
0
 public TerminalInitializeInfo(IAbstractTerminalHost session, ITerminalParameter param)
 {
     _session       = session;
     _param         = param;
     _initialWidth  = param.InitialWidth;
     _initialHeight = param.InitialHeight;
 }
Пример #2
0
        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")
        }
Пример #3
0
 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();
         }
     }
 }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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);
                }
            };
        }
Пример #6
0
        //必ず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();
        }
Пример #7
0
        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);
            };
        }
Пример #8
0
 public TerminalInitializeInfo(IAbstractTerminalHost session, ITerminalParameter param)
 {
     _session = session;
     _param = param;
     _initialWidth = param.InitialWidth;
     _initialHeight = param.InitialHeight;
 }