private CommandResult CmdShowPoderosaLog(ICommandTarget target) { if (_session.IsWindowVisible) //表示中の場合 { _session.CurrentView.ParentForm.AsForm().Activate(); return(CommandResult.Succeeded); } else { //セッションの作成(オブジェクトとしては再利用) PopupViewCreationParam cp = new PopupViewCreationParam(_viewFactory); cp.InitialSize = new Size(PoderosaLogViewControl.DefaultWidth, 300); IPoderosaPopupWindow window = _coreServices.WindowManager.CreatePopupView(cp); _coreServices.SessionManager.StartNewSession(_session, window.InternalView); _coreServices.SessionManager.ActivateDocument(_session.Document, ActivateReason.InternalAction); return(CommandResult.Succeeded); } }
private static void SessionEntryPoint(AbstractTerminal terminal, CommandResultDocument document) { try { TerminalControl tc = terminal.TerminalHost.TerminalControl; Debug.Assert(tc != null); RenderProfile rp = (RenderProfile)tc.GetRenderProfile().Clone(); CommandResultSession session = new CommandResultSession(document, rp); //現在のRenderProfileを使ってセッションを作る TerminalDocument terminaldoc = terminal.GetDocument(); PopupViewCreationParam cp = new PopupViewCreationParam(_viewFactory); //結果のサイズに合わせる。ただし高さは20行を上限とする cp.InitialSize = new Size(tc.ClientSize.Width, (int)(RuntimeUtil.AdjustIntRange(document.Size, 0, 20) * rp.Pitch.Height) + 2); cp.OwnedByCommandTargetWindow = GEnv.Options.CommandPopupAlwaysOnTop; cp.ShowInTaskBar = GEnv.Options.CommandPopupInTaskBar; IWindowManager wm = TerminalEmulatorPlugin.Instance.GetWindowManager(); ISessionManager sm = TerminalEmulatorPlugin.Instance.GetSessionManager(); IPoderosaPopupWindow window = wm.CreatePopupView(cp); sm.StartNewSession(session, window.InternalView); sm.ActivateDocument(session.Document, ActivateReason.InternalAction); } catch (Exception ex) { RuntimeUtil.ReportException(ex); } }