(
ui: &mut egui::Ui,
selected_obj: &mut Option<usize>,
name: &str,
units: &[ObjectConfig],
index: usize,
appearance: &Appearance,
)
| 339 | } |
| 340 | |
| 341 | fn display_unit( |
| 342 | ui: &mut egui::Ui, |
| 343 | selected_obj: &mut Option<usize>, |
| 344 | name: &str, |
| 345 | units: &[ObjectConfig], |
| 346 | index: usize, |
| 347 | appearance: &Appearance, |
| 348 | ) { |
| 349 | let object = &units[index]; |
| 350 | let selected = *selected_obj == Some(index); |
| 351 | let color = if selected { |
| 352 | appearance.emphasized_text_color |
| 353 | } else if let Some(complete) = object.complete { |
| 354 | if complete { appearance.insert_color } else { appearance.delete_color } |
| 355 | } else { |
| 356 | appearance.text_color |
| 357 | }; |
| 358 | let response = egui::Button::selectable( |
| 359 | selected, |
| 360 | RichText::new(name) |
| 361 | .font(FontId { |
| 362 | size: appearance.ui_font.size, |
| 363 | family: appearance.code_font.family.clone(), |
| 364 | }) |
| 365 | .color(color), |
| 366 | ) |
| 367 | .ui(ui); |
| 368 | if object.source_path.is_some() { |
| 369 | response.context_menu(|ui| object_context_ui(ui, object)); |
| 370 | } |
| 371 | if response.clicked() { |
| 372 | *selected_obj = Some(index); |
| 373 | } |
| 374 | } |
| 375 | |
| 376 | fn object_context_ui(ui: &mut egui::Ui, object: &ObjectConfig) { |
| 377 | if let Some(source_path) = &object.source_path |
no test coverage detected