public object Convert(object value, Type targetType, object parameter, string language) { if (value is TerminalViewModel terminal) { if (_viewDictionary.TryGetValue(terminal.Id, out TerminalView view)) { return(view); } var newView = new TerminalView(terminal); _viewDictionary.Add(terminal.Id, newView); return(newView); } return(null); }
public void InternalAttachView(IPoderosaDocument document, IPoderosaView view) { Debug.WriteLineIf(DebugOpt.ViewManagement, "ATTACH VIEW"); Debug.Assert(document == _terminal.IDocument); TerminalView tv = (TerminalView)view.GetAdapter(typeof(TerminalView)); Debug.Assert(tv != null); TerminalControl tp = tv.TerminalControl; Debug.Assert(tp != null); tp.Attach(this); _terminalControl = tp; _terminal.Attached(tp); }
public void InternalDetachView(IPoderosaDocument document, IPoderosaView view) { Debug.WriteLineIf(DebugOpt.ViewManagement, "DETACH VIEW"); Debug.Assert(document == _terminal.IDocument); TerminalView tv = (TerminalView)view.GetAdapter(typeof(TerminalView)); Debug.Assert(tv != null); TerminalControl tp = tv.TerminalControl; Debug.Assert(tp != null); //Detachするときにはこのビューになっている必要あり if (!tp.IsDisposed) { tp.Detach(); } _terminalControl = null; }
public void SuccessfullyExit(ITerminalConnection connection) { ITerminalSettings terminalSettings = PoderosaTerminalEmulatorService.CreateDefaultTerminalSettings(Connection.DisplayName, null); TerminalSession session = new TerminalSession(connection, terminalSettings); SessionHost sessionHost = new SessionHost(PoderosaSessionManagerPlugin, session); TerminalView terminalView = new TerminalView(null, _terminal); RenderProfile renderProfile = new RenderProfile(_terminal.GetRenderProfile()); renderProfile.BackColor = Connection.BackgroundColor; renderProfile.ForeColor = Connection.TextColor; renderProfile.FontName = Connection.FontFamily; renderProfile.FontSize = Connection.FontSize; session.TerminalSettings.BeginUpdate(); session.TerminalSettings.Encoding = Connection.Encoding; session.TerminalSettings.RenderProfile = renderProfile; session.TerminalSettings.EndUpdate(); _telnetConnection = (TelnetTerminalConnection)connection; Invoke( new Action( () => { _terminal.Attach(session); session.InternalStart(sessionHost); session.InternalAttachView(sessionHost.DocumentAt(0), terminalView); _telnetConnection.ConnectionEventReceiver.NormalTermination += ConnectionEventReceiver_NormalTermination; _telnetConnection.ConnectionEventReceiver.AbnormalTermination += ConnectionEventReceiver_AbnormalTermination; ParentForm.Closing += ParentForm_OnClosing; connection.TerminalOutput.Resize(session.Terminal.GetDocument().TerminalWidth, session.Terminal.GetDocument().TerminalHeight); OnConnected(_terminal, null); })); }
private void InitView() { terminalView = transform.Find("DemoCanvas/DemoPanel/TerminalView").GetComponent <TerminalView>(); scrollContent = transform.Find("DemoCanvas/DemoPanel/DemoScrollView/Viewport/Content"); EnumDemoButton = scrollContent.Find("EnumDemo").GetComponent <Button>(); enumDemo = EnumDemoButton.GetComponent <EnumDemo>(); ToastDemoButton = scrollContent.Find("ToastDemo").GetComponent <Button>(); toastDemo = ToastDemoButton.GetComponent <ToastDemo>(); TamRecyclerViewDemoButton = scrollContent.Find("TamRecyclerViewDemo").GetComponent <Button>(); tamRecyclerViewDemo = TamRecyclerViewDemoButton.GetComponent <TamRecyclerViewDemo>(); GridButton = TamRecyclerViewDemoButton.transform.Find("Layout/GridButton").GetComponent <Button>(); VerticalButton = TamRecyclerViewDemoButton.transform.Find("Layout/VerticalButton").GetComponent <Button>(); HorizontalButton = TamRecyclerViewDemoButton.transform.Find("Layout/HorizontalButton").GetComponent <Button>(); Pano360DemoButton = scrollContent.Find("Pano360Demo").GetComponent <Button>(); pano360Demo = Pano360DemoButton.GetComponent <Pano360Demo>(); AutoRotateDemoButton = scrollContent.Find("AutoRotateDemo").GetComponent <Button>(); DrawOutlineDemoButton = scrollContent.Find("DrawOutlineDemo").GetComponent <Button>(); TamNumParticleDemoButton = scrollContent.Find("TamNumParticleDemo").GetComponent <Button>(); TamTemperatureDemoButton = scrollContent.Find("TamTemperatureDemo").GetComponent <Button>(); TamExitDemoButton = scrollContent.Find("TamExitDemo").GetComponent <Button>(); GUIKit.InitButtonOnClick(EnumDemoButton, () => { enumDemo.Test(); tamRecyclerViewDemo.DismissRecyclerView(); }); GUIKit.InitButtonOnClick(ToastDemoButton, () => { toastDemo.OnClickBtn(); tamRecyclerViewDemo.DismissRecyclerView(); }); GUIKit.InitButtonOnClick(TamRecyclerViewDemoButton, () => { tamRecyclerViewDemo.ShowRecyclerView(); }); GUIKit.InitButtonOnClick(GridButton, () => { tamRecyclerViewDemo.SetRecyclerViewType(TamRecyclerView.RecyclerViewType.Grid); tamRecyclerViewDemo.ShowRecyclerView(); }); GUIKit.InitButtonOnClick(VerticalButton, () => { tamRecyclerViewDemo.SetRecyclerViewType(TamRecyclerView.RecyclerViewType.Vertical); tamRecyclerViewDemo.ShowRecyclerView(); }); GUIKit.InitButtonOnClick(HorizontalButton, () => { tamRecyclerViewDemo.SetRecyclerViewType(TamRecyclerView.RecyclerViewType.Horizontal); tamRecyclerViewDemo.ShowRecyclerView(); }); GUIKit.InitButtonOnClick(Pano360DemoButton, () => { pano360Demo.OnClickEvent(); }); GUIKit.InitButtonOnClick(AutoRotateDemoButton, () => { SceneManager.LoadScene("TamEffectScene"); }); GUIKit.InitButtonOnClick(DrawOutlineDemoButton, () => { SceneManager.LoadScene("TamDrawOutline"); }); GUIKit.InitButtonOnClick(TamNumParticleDemoButton, () => { SceneManager.LoadScene("TamNumParticleScene"); }); GUIKit.InitButtonOnClick(TamTemperatureDemoButton, () => { SceneManager.LoadScene("TamTemperatureScene"); }); GUIKit.InitButtonOnClick(TamExitDemoButton, () => { GameManager.Instance.ExitGame(); }); }
/// <summary> /// Wires up a PowerShell runspace created via <see cref="RunspaceFactory.CreateRunspace()"/> to the terminal to display the PowerShell to the user. /// </summary> public override void Connect() { _progressBar.Value = 0; _progressLabel.Text = ""; // This is not strictly a network connection: we're relaying information that we receive from the runspace to the terminal over a local stream // (a StreamConnection in this case) ITerminalParameter terminalParam = new EmptyTerminalParameter(); StreamConnection connection = new StreamConnection(terminalParam) { Capture = false }; // Attach the new "connection" to the terminal control try { ITerminalSettings terminalSettings = PoderosaTerminalEmulatorService.CreateDefaultTerminalSettings(Connection.DisplayName, null); TerminalSession session = new TerminalSession(connection, terminalSettings); SessionHost sessionHost = new SessionHost(PoderosaSessionManagerPlugin, session); TerminalView terminalView = new TerminalView(null, _terminal); RenderProfile renderProfile = new RenderProfile(_terminal.GetRenderProfile()); renderProfile.BackColor = Connection.BackgroundColor; renderProfile.ForeColor = Connection.TextColor; renderProfile.FontName = Connection.FontFamily; renderProfile.FontSize = Connection.FontSize; session.TerminalSettings.BeginUpdate(); session.TerminalSettings.RenderProfile = renderProfile; session.TerminalSettings.EndUpdate(); _terminal.Attach(session); session.InternalStart(sessionHost); session.InternalAttachView(sessionHost.DocumentAt(0), terminalView); _powerShellHost = new PowerShellHost(this, _terminal, connection, ExecuteQuiet, _progressBar, _progressLabel); // Create the host and runspace instances for this interpreter. If we're connecting to the local host, don't bother with the connection info. // ReSharper disable StringCompareIsCultureSpecific.3 if (String.Compare(Connection.Host, "localhost", true) != 0 && Connection.Host != "127.0.0.1" && String.Compare(Connection.Host, Environment.MachineName, true) != 0) // ReSharper restore StringCompareIsCultureSpecific.3 { WSManConnectionInfo connectionInfo = new WSManConnectionInfo { ComputerName = Connection.Host }; if (!String.IsNullOrEmpty(Connection.InheritedUsername)) { connectionInfo.Credential = new PSCredential(Connection.InheritedUsername, Connection.InheritedPassword); } Runspace = RunspaceFactory.CreateRunspace(_powerShellHost, connectionInfo); } else { Runspace = RunspaceFactory.CreateRunspace(_powerShellHost); } Runspace.Open(); } catch (Exception e) { OnConnectionLost(this, new ErrorEventArgs(e)); return; } // Start capturing input from the prompt via the input loop _inputThread = new Thread(InputLoop) { Name = "PowerShellConnectionForm Input Thread" }; _inputThread.Start(); ParentForm.Closing += ParentForm_Closing; OnConnected(this, null); }