1use gpui::{ModelHandle, ViewContext};
2use settings::{Settings, WorkingDirectory};
3use workspace::{dock::Dock, Workspace};
4
5use crate::{
6 terminal_container_view::{
7 get_working_directory, DeployModal, TerminalContainer, TerminalContainerContent,
8 },
9 Event, Terminal,
10};
11
12pub fn deploy_modal(workspace: &mut Workspace, _: &DeployModal, cx: &mut ViewContext<Workspace>) {
13 // let window = cx.window_id();
14
15 // // Pull the terminal connection out of the global if it has been stored
16 // let possible_terminal = Dock::remove::<Terminal, _>(window, cx);
17
18 // if let Some(terminal_handle) = possible_terminal {
19 // workspace.toggle_modal(cx, |_, cx| {
20 // // Create a view from the stored connection if the terminal modal is not already shown
21 // cx.add_view(|cx| TerminalContainer::from_terminal(terminal_handle.clone(), true, cx))
22 // });
23 // // Toggle Modal will dismiss the terminal modal if it is currently shown, so we must
24 // // store the terminal back in the global
25 // Dock::insert_or_replace::<Terminal, _>(window, terminal_handle, cx);
26 // } else {
27 // // No connection was stored, create a new terminal
28 // if let Some(closed_terminal_handle) = workspace.toggle_modal(cx, |workspace, cx| {
29 // // No terminal modal visible, construct a new one.
30 // let wd_strategy = cx
31 // .global::<Settings>()
32 // .terminal_overrides
33 // .working_directory
34 // .clone()
35 // .unwrap_or(WorkingDirectory::CurrentProjectDirectory);
36
37 // let working_directory = get_working_directory(workspace, cx, wd_strategy);
38
39 // let this = cx.add_view(|cx| TerminalContainer::new(working_directory, true, cx));
40
41 // if let TerminalContainerContent::Connected(connected) = &this.read(cx).content {
42 // let terminal_handle = connected.read(cx).handle();
43 // cx.subscribe(&terminal_handle, on_event).detach();
44 // // Set the global immediately if terminal construction was successful,
45 // // in case the user opens the command palette
46 // Dock::insert_or_replace::<Terminal, _>(window, terminal_handle, cx);
47 // }
48
49 // this
50 // }) {
51 // // Terminal modal was dismissed and the terminal view is connected, store the terminal
52 // if let TerminalContainerContent::Connected(connected) =
53 // &closed_terminal_handle.read(cx).content
54 // {
55 // let terminal_handle = connected.read(cx).handle();
56 // // Set the global immediately if terminal construction was successful,
57 // // in case the user opens the command palette
58 // Dock::insert_or_replace::<Terminal, _>(window, terminal_handle, cx);
59 // }
60 // }
61 // }
62}
63
64pub fn on_event(
65 workspace: &mut Workspace,
66 _: ModelHandle<Terminal>,
67 event: &Event,
68 cx: &mut ViewContext<Workspace>,
69) {
70 // Dismiss the modal if the terminal quit
71 // if let Event::CloseTerminal = event {
72 // Dock::remove::<Terminal, _>(cx.window_id(), cx);
73
74 // if workspace.modal::<TerminalContainer>().is_some() {
75 // workspace.dismiss_modal(cx)
76 // }
77 // }
78}