(&mut self, key: KeyEvent)
| 1537 | } |
| 1538 | |
| 1539 | fn handle_sandbox_setting_edit_key(&mut self, key: KeyEvent) { |
| 1540 | let Some(ref mut edit) = self.sandbox_setting_edit else { |
| 1541 | return; |
| 1542 | }; |
| 1543 | match key.code { |
| 1544 | KeyCode::Esc => { |
| 1545 | self.sandbox_setting_edit = None; |
| 1546 | } |
| 1547 | KeyCode::Enter => { |
| 1548 | let idx = edit.index; |
| 1549 | if let Some(entry) = self.sandbox_settings.get(idx) { |
| 1550 | let raw = edit.input.trim(); |
| 1551 | match entry.kind { |
| 1552 | SettingValueKind::Int => { |
| 1553 | if raw.parse::<i64>().is_err() { |
| 1554 | edit.error = Some("expected integer".to_string()); |
| 1555 | return; |
| 1556 | } |
| 1557 | } |
| 1558 | SettingValueKind::Bool => { |
| 1559 | if settings::parse_bool_like(raw).is_none() { |
| 1560 | edit.error = Some("expected true/false/yes/no/1/0".to_string()); |
| 1561 | return; |
| 1562 | } |
| 1563 | } |
| 1564 | SettingValueKind::String => { |
| 1565 | if let Some(setting) = settings::setting_for_key(&entry.key) |
| 1566 | && let Err(allowed) = setting.validate_string_value(raw) |
| 1567 | { |
| 1568 | edit.error = |
| 1569 | Some(format!("expected one of: {}", allowed.join(", "))); |
| 1570 | return; |
| 1571 | } |
| 1572 | } |
| 1573 | } |
| 1574 | } |
| 1575 | edit.error = None; |
| 1576 | self.sandbox_confirm_setting_set = Some(edit.index); |
| 1577 | } |
| 1578 | KeyCode::Backspace => { |
| 1579 | edit.input.pop(); |
| 1580 | edit.error = None; |
| 1581 | } |
| 1582 | KeyCode::Char(c) => { |
| 1583 | edit.input.push(c); |
| 1584 | edit.error = None; |
| 1585 | } |
| 1586 | _ => {} |
| 1587 | } |
| 1588 | } |
| 1589 | |
| 1590 | fn handle_sandbox_setting_confirm_set_key(&mut self, key: KeyEvent) { |
| 1591 | match key.code { |
no test coverage detected