MCPcopy Create free account
hub / github.com/NVIDIA/OpenShell / handle_setting_edit_key

Method handle_setting_edit_key

crates/openshell-tui/src/app.rs:1274–1324  ·  view source on GitHub ↗
(&mut self, key: KeyEvent)

Source from the content-addressed store, hash-verified

1272 }
1273
1274 fn handle_setting_edit_key(&mut self, key: KeyEvent) {
1275 let Some(ref mut edit) = self.setting_edit else {
1276 return;
1277 };
1278 match key.code {
1279 KeyCode::Esc => {
1280 self.setting_edit = None;
1281 }
1282 KeyCode::Enter => {
1283 // Validate then open confirmation.
1284 let idx = edit.index;
1285 if let Some(entry) = self.global_settings.get(idx) {
1286 let raw = edit.input.trim();
1287 match entry.kind {
1288 SettingValueKind::Int => {
1289 if raw.parse::<i64>().is_err() {
1290 edit.error = Some("expected integer".to_string());
1291 return;
1292 }
1293 }
1294 SettingValueKind::Bool => {
1295 if settings::parse_bool_like(raw).is_none() {
1296 edit.error = Some("expected true/false/yes/no/1/0".to_string());
1297 return;
1298 }
1299 }
1300 SettingValueKind::String => {
1301 if let Some(setting) = settings::setting_for_key(&entry.key)
1302 && let Err(allowed) = setting.validate_string_value(raw)
1303 {
1304 edit.error =
1305 Some(format!("expected one of: {}", allowed.join(", ")));
1306 return;
1307 }
1308 }
1309 }
1310 }
1311 edit.error = None;
1312 self.confirm_setting_set = Some(idx);
1313 }
1314 KeyCode::Backspace => {
1315 edit.input.pop();
1316 edit.error = None;
1317 }
1318 KeyCode::Char(c) => {
1319 edit.input.push(c);
1320 edit.error = None;
1321 }
1322 _ => {}
1323 }
1324 }
1325
1326 fn handle_setting_confirm_set_key(&mut self, key: KeyEvent) {
1327 match key.code {

Callers 1

handle_keyMethod · 0.80

Calls 5

parse_bool_likeFunction · 0.85
setting_for_keyFunction · 0.85
validate_string_valueMethod · 0.80
pushMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected