diff --git a/src/rvlib/menu/main.rs b/src/rvlib/menu/main.rs index d3fe2964..e8904d51 100644 --- a/src/rvlib/menu/main.rs +++ b/src/rvlib/menu/main.rs @@ -98,12 +98,16 @@ macro_rules! handle_error { pub struct ToolSelectMenu { are_tools_active: bool, // can deactivate all tools, overrides activated_tool recently_activated_tool: Option, + label_propagation_buffer: String, + label_deletion_buffer: String, } impl ToolSelectMenu { fn new() -> Self { Self { are_tools_active: true, recently_activated_tool: None, + label_propagation_buffer: "".to_string(), + label_deletion_buffer: "".to_string(), } } pub fn recently_clicked_tool(&self) -> Option { @@ -125,9 +129,14 @@ impl ToolSelectMenu { }); for v in tools_menu_map.values_mut().filter(|v| v.menu_active) { let tmp = match &mut v.specifics { - ToolSpecifics::Bbox(x) => { - bbox_menu(ui, v.menu_active, mem::take(x), &mut self.are_tools_active) - } + ToolSpecifics::Bbox(x) => bbox_menu( + ui, + v.menu_active, + mem::take(x), + &mut self.label_propagation_buffer, + &mut self.label_deletion_buffer, + &mut self.are_tools_active, + ), ToolSpecifics::Brush(x) => { brush_menu(ui, v.menu_active, mem::take(x), &mut self.are_tools_active) } diff --git a/src/rvlib/menu/tools_menus.rs b/src/rvlib/menu/tools_menus.rs index deab0de6..304b1b1d 100644 --- a/src/rvlib/menu/tools_menus.rs +++ b/src/rvlib/menu/tools_menus.rs @@ -194,10 +194,27 @@ fn toggle_erase(ui: &mut Ui, mut options: CoreOptions) -> CoreOptions { } options } +fn triggerable_number( + ui: &mut Ui, + buffer: &mut String, + are_tools_active: &mut bool, + input: &mut Option, + name: &str, +) { + ui.horizontal(|ui| { + text_edit_singleline(ui, buffer, are_tools_active); + + if ui.button(name).clicked() { + *input = buffer.parse::().ok(); + } + }); +} pub fn bbox_menu( ui: &mut Ui, mut window_open: bool, mut data: BboxSpecificData, + label_propagation_buffer: &mut String, + label_deletion_buffer: &mut String, are_tools_active: &mut bool, ) -> RvResult { let LabelMenuResult { @@ -224,6 +241,20 @@ pub fn bbox_menu( let mut export_file_menu_result = Ok(()); egui::CollapsingHeader::new("advanced").show(ui, |ui| { + triggerable_number( + ui, + label_propagation_buffer, + are_tools_active, + &mut data.options.core_options.label_propagation, + "label propagation", + ); + triggerable_number( + ui, + label_deletion_buffer, + are_tools_active, + &mut data.options.core_options.label_deletion, + "label deletion", + ); ui.checkbox( &mut data.options.core_options.track_changes, "track changes", diff --git a/src/rvlib/tools/bbox/core.rs b/src/rvlib/tools/bbox/core.rs index 0aa4aae3..e77edc0a 100644 --- a/src/rvlib/tools/bbox/core.rs +++ b/src/rvlib/tools/bbox/core.rs @@ -121,6 +121,14 @@ fn check_cocoexport(mut world: World) -> World { world } +fn check_propagate_or_delete(mut world: World) -> World { + let options = get_options_mut(&mut world); + if let Some(n_prop) = options.and_then(|o| o.core_options.label_propagation) {} + let options = get_options_mut(&mut world); + if let Some(n_del) = options.and_then(|o| o.core_options.label_deletion) {} + world +} + fn check_cocoimport(mut world: World) -> World { // import coco if demanded let options = get_options(&world); diff --git a/src/rvlib/tools_data/core.rs b/src/rvlib/tools_data/core.rs index 0055b061..6ecc0698 100644 --- a/src/rvlib/tools_data/core.rs +++ b/src/rvlib/tools_data/core.rs @@ -32,6 +32,8 @@ pub struct Options { pub is_history_update_triggered: bool, pub track_changes: bool, pub erase: bool, + pub label_propagation: Option, + pub label_deletion: Option, } impl Default for Options { fn default() -> Self { @@ -43,6 +45,8 @@ impl Default for Options { is_history_update_triggered: false, track_changes: false, erase: false, + label_propagation: None, + label_deletion: None, } } }