Skip to content

Commit

Permalink
modified: src/histoer/cuts.rs
Browse files Browse the repository at this point in the history
	modified:   src/histoer/histo1d/plot_settings.rs
	modified:   src/histoer/histo2d/context_menu.rs
	modified:   src/histoer/histo2d/histogram2d.rs
	modified:   src/histoer/histo2d/keybinds.rs
	modified:   src/histoer/histo2d/plot_settings.rs
	modified:   src/histoer/histogrammer.rs
	modified:   src/histogram_scripter/histogram_script.rs
	modified:   src/histogram_scripter/manual_histogram_scripts.rs
  • Loading branch information
alconley committed Nov 18, 2024
1 parent 63b7391 commit 0b0aba8
Show file tree
Hide file tree
Showing 9 changed files with 504 additions and 508 deletions.
75 changes: 27 additions & 48 deletions src/histoer/cuts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,6 @@ impl Default for Cut {
}

impl Cut {
pub fn new_2d_cut(&self) -> Self {
Cut::Cut2D(Cut2D::default())
}

// Method to check if a cut is valid for a specific row in the DataFrame
pub fn valid(&self, df: &DataFrame, row_idx: usize) -> bool {
match self {
Expand All @@ -34,34 +30,6 @@ impl Cut {
}
}

pub fn menu_button(&mut self, ui: &mut egui::Ui) {
match self {
Cut::Cut1D(cut1d) => cut1d.menu_button(ui),
Cut::Cut2D(cut2d) => cut2d.menu_button(ui),
}
}

pub fn draw(&mut self, plot_ui: &mut egui_plot::PlotUi) {
match self {
Cut::Cut1D(_) => {}
Cut::Cut2D(cut2d) => cut2d.polygon.draw(plot_ui),
}
}

pub fn interactive_response(&mut self, plot_response: &egui_plot::PlotResponse<()>) {
match self {
Cut::Cut1D(_) => {}
Cut::Cut2D(cut2d) => cut2d.polygon.handle_interactions(plot_response),
}
}

pub fn is_dragging(&self) -> bool {
match self {
Cut::Cut1D(_) => false,
Cut::Cut2D(cut2d) => cut2d.polygon.is_dragging,
}
}

pub fn table_row(&mut self, row: &mut egui_extras::TableRow<'_, '_>) {
match self {
Cut::Cut1D(cut1d) => cut1d.table_row(row),
Expand Down Expand Up @@ -96,23 +64,18 @@ impl Default for Cut2D {

impl Cut2D {
pub fn ui(&mut self, ui: &mut egui::Ui) {
ui.add(
egui::TextEdit::singleline(&mut self.polygon.name)
.hint_text("Name")
.clip_text(false),
);

ui.add(
egui::TextEdit::singleline(&mut self.x_column)
.hint_text("X Column Name")
.clip_text(false),
);
if ui.button("Load").clicked() {
if let Err(e) = self.load_cut_from_json() {
log::error!("Error loading cut: {:?}", e);
}
}

ui.add(
egui::TextEdit::singleline(&mut self.y_column)
.hint_text("Y Column Name")
.clip_text(false),
);
if ui.button("Save").clicked() {
if let Err(e) = self.save_cut_to_json() {
log::error!("Error saving cut: {:?}", e);
}
}
self.polygon.menu_button(ui);
}

pub fn table_row(&mut self, row: &mut egui_extras::TableRow<'_, '_>) {
Expand Down Expand Up @@ -210,6 +173,22 @@ impl Cut2D {
let polygon = self.to_geo_polygon();
polygon.contains(&point)
}

pub fn draw(&mut self, plot_ui: &mut egui_plot::PlotUi) {
self.polygon.draw(plot_ui);
}

pub fn interactions(&mut self, plot_response: &egui_plot::PlotResponse<()>) {
self.polygon.handle_interactions(plot_response);
}

pub fn is_dragging(&self) -> bool {
self.polygon.is_dragging
}

pub fn is_clicking(&self) -> bool {
self.polygon.interactive_clicking
}
}

// Struct to hold each parsed condition
Expand Down
2 changes: 1 addition & 1 deletion src/histoer/histo1d/plot_settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ impl Default for PlotSettings {
}
impl PlotSettings {
pub fn settings_ui(&mut self, ui: &mut egui::Ui) {
self.egui_settings.menu_button(ui);
// self.egui_settings.menu_button(ui);
ui.checkbox(&mut self.stats_info, "Show Statistics");
self.markers.menu_button(ui);
}
Expand Down
60 changes: 60 additions & 0 deletions src/histoer/histo2d/context_menu.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,54 @@
use super::histogram2d::Histogram2D;
use crate::histoer::cuts::Cut2D;

impl Histogram2D {
// Context menu for the plot (when you right-click on the plot)
pub fn context_menu(&mut self, ui: &mut egui::Ui) {
self.image.menu_button(ui);
self.plot_settings.settings_ui(ui, self.bins.max_count);

ui.horizontal(|ui| {
ui.heading("Cuts");

if ui.button("+").clicked() {
self.new_cut();
}
});

ui.horizontal(|ui| {
ui.label("X: ");
ui.add(
egui::TextEdit::singleline(&mut self.plot_settings.x_column)
.hint_text("X Column Name"),
);
});

ui.horizontal(|ui| {
ui.label("Y: ");
ui.add(
egui::TextEdit::singleline(&mut self.plot_settings.y_column)
.hint_text("Y Column Name"),
);
});

let mut to_remove = None;

for (index, cut) in self.plot_settings.cuts.iter_mut().enumerate() {
ui.horizontal(|ui| {
if ui.button("X").clicked() {
to_remove = Some(index);
}

ui.separator();

cut.ui(ui);
});
}

if let Some(index) = to_remove {
self.plot_settings.cuts.remove(index);
}

ui.separator();

ui.heading("Rebin");
Expand Down Expand Up @@ -47,4 +90,21 @@ impl Histogram2D {
}
});
}

pub fn new_cut(&mut self) {
for cut in &mut self.plot_settings.cuts {
cut.polygon.interactive_clicking = false;
cut.polygon.interactive_dragging = false;
}

let mut cut = Cut2D {
x_column: self.plot_settings.x_column.clone(),
y_column: self.plot_settings.y_column.clone(),
..Default::default()
};
cut.polygon.name = format!("Cut {}", self.plot_settings.cuts.len());

cut.polygon.interactive_clicking = true;
self.plot_settings.cuts.push(cut);
}
}
3 changes: 1 addition & 2 deletions src/histoer/histo2d/histogram2d.rs
Original file line number Diff line number Diff line change
Expand Up @@ -207,8 +207,7 @@ impl Histogram2D {

self.plot_settings.draw(plot_ui);

self.plot_settings.egui_settings.allow_drag = !(self.plot_settings.cuts.is_dragging()
|| self.plot_settings.projections.is_dragging());
self.plot_settings.egui_settings.allow_drag = !self.plot_settings.projections.is_dragging();

if self.plot_settings.egui_settings.limit_scrolling {
self.limit_scrolling(plot_ui);
Expand Down
4 changes: 2 additions & 2 deletions src/histoer/histo2d/keybinds.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ impl Histogram2D {
}

if ui.input(|i| i.key_pressed(egui::Key::C)) {
self.plot_settings.cuts.new_2d_cut();
}
self.new_cut();
};

if ui.input(|i| i.key_pressed(egui::Key::X)) {
self.plot_settings.projections.add_x_projection =
Expand Down
34 changes: 17 additions & 17 deletions src/histoer/histo2d/plot_settings.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// use crate::cutter::Cut::HistogramCut;
use crate::histoer::cuts::Cut;
use crate::histoer::cuts::Cut2D;

use crate::egui_plot_stuff::egui_plot_settings::EguiPlotSettings;

Expand All @@ -11,7 +11,9 @@ pub struct PlotSettings {
#[serde(skip)]
pub cursor_position: Option<egui_plot::PlotPoint>,
pub egui_settings: EguiPlotSettings,
pub cuts: Cut,
pub x_column: String,
pub y_column: String,
pub cuts: Vec<Cut2D>,
pub stats_info: bool,
pub colormap: ColorMap,
pub colormap_options: ColormapOptions,
Expand All @@ -29,7 +31,9 @@ impl Default for PlotSettings {
PlotSettings {
cursor_position: None,
egui_settings: EguiPlotSettings::default(),
cuts: Cut::default(),
x_column: String::new(),
y_column: String::new(),
cuts: vec![],
stats_info: false,
colormap: ColorMap::default(),
colormap_options: ColormapOptions::default(),
Expand All @@ -53,32 +57,30 @@ impl PlotSettings {
ui.separator();

ui.checkbox(&mut self.stats_info, "Show Statitics");
self.egui_settings.menu_button(ui);
// self.egui_settings.menu_button(ui);

ui.separator();

self.projections.menu_button(ui);

ui.separator();

self.cuts.menu_button(ui);

// if any Cut are active temp disable double clicking to reset
// self.egui_settings.allow_double_click_reset = !self
// .Cut
// .Cut
// .iter()
// .any(|cut| cut.polygon.interactive_clicking);
}

pub fn draw(&mut self, plot_ui: &mut egui_plot::PlotUi) {
self.cuts.draw(plot_ui);
for cut in &mut self.cuts {
cut.draw(plot_ui);
}
self.projections.draw(plot_ui);
}

pub fn interactive_response(&mut self, plot_response: &egui_plot::PlotResponse<()>) {
self.projections.interactive_dragging(plot_response);
self.cuts.interactive_response(plot_response);

for cut in &mut self.cuts {
self.egui_settings.allow_drag = !cut.is_dragging();
self.egui_settings.allow_double_click_reset = !cut.is_clicking();
cut.interactions(plot_response);
}
}

pub fn progress_ui(&mut self, ui: &mut egui::Ui) {
Expand All @@ -91,6 +93,4 @@ impl PlotSettings {
);
}
}

// pub fn keybinds(&mut self, ui: &mut egui::Ui) {}
}
7 changes: 3 additions & 4 deletions src/histoer/histogrammer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -532,10 +532,10 @@ impl Histogrammer {
}
});

for (hist, _meta) in &hist2d_map {
for (hist, meta) in &hist2d_map {
let mut hist = hist.lock().unwrap();
// hist.plot_settings.cuts.x_column = meta.x_column_name.clone();
// hist.plot_settings.cuts.y_column = meta.y_column_name.clone();
hist.plot_settings.x_column = meta.x_column_name.clone();
hist.plot_settings.y_column = meta.y_column_name.clone();
hist.plot_settings.recalculate_image = true;
}

Expand Down Expand Up @@ -667,7 +667,6 @@ impl Histogrammer {
self.tree.ui(&mut self.behavior, ui);
}

/// Main UI function to display the histogram selection panel and other components
pub fn side_panel_ui(&mut self, ui: &mut egui::Ui) {
self.behavior.ui(ui);
ui.separator();
Expand Down
Loading

0 comments on commit 0b0aba8

Please sign in to comment.