assistant2: Add keybinding to toggle LanguageModelSelector (#22122)

This PR adds a keybinding to toggle the `LanguageModelSelector` in
Assistant2.

Release Notes:

- N/A
This commit is contained in:
Marshall Bowers 2024-12-16 19:19:24 -05:00 committed by GitHub
parent d11deff3c2
commit 0ca0433912
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 14 additions and 2 deletions

View file

@ -224,7 +224,8 @@
"use_key_equivalents": true, "use_key_equivalents": true,
"bindings": { "bindings": {
"cmd-n": "assistant2::NewThread", "cmd-n": "assistant2::NewThread",
"cmd-shift-h": "assistant2::OpenHistory" "cmd-shift-h": "assistant2::OpenHistory",
"cmd-shift-m": "assistant2::ToggleModelSelector"
} }
}, },
{ {

View file

@ -7,7 +7,10 @@ use language_model::{LanguageModelRegistry, LanguageModelRequestTool};
use language_model_selector::{LanguageModelSelector, LanguageModelSelectorPopoverMenu}; use language_model_selector::{LanguageModelSelector, LanguageModelSelectorPopoverMenu};
use settings::{update_settings_file, Settings}; use settings::{update_settings_file, Settings};
use theme::ThemeSettings; use theme::ThemeSettings;
use ui::{prelude::*, ButtonLike, CheckboxWithLabel, ElevationIndex, KeyBinding, Tooltip}; use ui::{
prelude::*, ButtonLike, CheckboxWithLabel, ElevationIndex, KeyBinding, PopoverMenuHandle,
Tooltip,
};
use workspace::Workspace; use workspace::Workspace;
use crate::assistant_settings::AssistantSettings; use crate::assistant_settings::AssistantSettings;
@ -23,6 +26,7 @@ pub struct MessageEditor {
context_store: Model<ContextStore>, context_store: Model<ContextStore>,
context_strip: View<ContextStrip>, context_strip: View<ContextStrip>,
language_model_selector: View<LanguageModelSelector>, language_model_selector: View<LanguageModelSelector>,
language_model_selector_menu_handle: PopoverMenuHandle<LanguageModelSelector>,
use_tools: bool, use_tools: bool,
} }
@ -67,10 +71,15 @@ impl MessageEditor {
cx, cx,
) )
}), }),
language_model_selector_menu_handle: PopoverMenuHandle::default(),
use_tools: false, use_tools: false,
} }
} }
fn toggle_model_selector(&mut self, _: &ToggleModelSelector, cx: &mut ViewContext<Self>) {
self.language_model_selector_menu_handle.toggle(cx);
}
fn chat(&mut self, _: &Chat, cx: &mut ViewContext<Self>) { fn chat(&mut self, _: &Chat, cx: &mut ViewContext<Self>) {
self.send_to_model(RequestKind::Chat, cx); self.send_to_model(RequestKind::Chat, cx);
} }
@ -163,6 +172,7 @@ impl MessageEditor {
Tooltip::for_action_in("Change Model", &ToggleModelSelector, &focus_handle, cx) Tooltip::for_action_in("Change Model", &ToggleModelSelector, &focus_handle, cx)
}), }),
) )
.with_handle(self.language_model_selector_menu_handle.clone())
} }
} }
@ -182,6 +192,7 @@ impl Render for MessageEditor {
v_flex() v_flex()
.key_context("MessageEditor") .key_context("MessageEditor")
.on_action(cx.listener(Self::chat)) .on_action(cx.listener(Self::chat))
.on_action(cx.listener(Self::toggle_model_selector))
.size_full() .size_full()
.gap_2() .gap_2()
.p_2() .p_2()