repl: Create action to refresh kernelspecs (#14786)

Adds a command to refresh kernelspecs. Also added the kernelspecs to the
runtime panel when none are running. That's just for now until we move
out of the panel completely.

Release Notes:

- N/A
This commit is contained in:
Kyle Kelley 2024-07-19 07:42:18 -07:00 committed by GitHub
parent 272be98ec8
commit be4b19babb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -23,7 +23,10 @@ use workspace::{
Workspace,
};
actions!(repl, [Run, ClearOutputs, Interrupt, Shutdown]);
actions!(
repl,
[Run, ClearOutputs, Interrupt, Shutdown, RefreshKernelspecs]
);
actions!(repl_panel, [ToggleFocus]);
pub fn init(cx: &mut AppContext) {
@ -32,6 +35,14 @@ pub fn init(cx: &mut AppContext) {
workspace.register_action(|workspace, _: &ToggleFocus, cx| {
workspace.toggle_panel_focus::<RuntimePanel>(cx);
});
workspace.register_action(|workspace, _: &RefreshKernelspecs, cx| {
if let Some(panel) = workspace.panel::<RuntimePanel>(cx) {
panel.update(cx, |panel, cx| {
panel.refresh_kernelspecs(cx).detach();
});
}
});
},
)
.detach();
@ -543,6 +554,13 @@ impl Render for RuntimePanel {
)
)
)
.child(Label::new("Kernels available").size(LabelSize::Large))
.children(
self.kernel_specifications.iter().map(|spec| {
h_flex().gap_2().child(Label::new(spec.name.clone()))
.child(Label::new(spec.kernelspec.language.clone()).color(Color::Muted))
})
)
.into_any_element();
}