Skip to content

Commit

Permalink
Separate selection area from main ui
Browse files Browse the repository at this point in the history
  • Loading branch information
M4tthewDE committed Nov 12, 2023
1 parent 2f1adc9 commit 3de4c17
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 53 deletions.
7 changes: 6 additions & 1 deletion src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,12 @@ impl eframe::App for MyApp {
puffin::profile_function!();
puffin::GlobalProfiler::lock().new_frame();

ui::show(ctx, &self.app_data, &mut self.control_data, &self.sender);
egui::CentralPanel::default().show(ctx, |ui| {
ui::selection(ui, ctx, &self.control_data, &self.sender);
if let Some(app_data) = &self.app_data {
ui::main(ui, ctx, app_data, &mut self.control_data, &self.sender);
}
});

if env::var("PROFILING").is_ok() {
puffin::set_scopes_on(true);
Expand Down
105 changes: 53 additions & 52 deletions src/ui/mod.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use std::{env, sync::mpsc::Sender};
use std::sync::mpsc::Sender;

use egui::{Align, Color32, Context, Layout, RichText, Window};
use egui::{Align, Color32, Context, Layout, RichText, Ui, Window};

use crate::{
data::{DiffType, Message},
Expand All @@ -17,71 +17,72 @@ mod origins;
mod selection_area;
mod stats;

pub fn show(
pub fn selection(ui: &mut Ui, ctx: &Context, control_data: &ControlData, sender: &Sender<Message>) {
puffin::profile_function!();

if control_data.show_err_dialog {
error_dialog(ctx, control_data, sender);
}

selection_area::ui(ui, sender);
}

pub fn main(
ui: &mut Ui,
ctx: &Context,
app_data: &Option<AppData>,
app_data: &AppData,
control_data: &mut ControlData,
sender: &Sender<Message>,
) {
egui::CentralPanel::default().show(ctx, |ui| {
puffin::profile_function!();

if control_data.show_err_dialog {
error_dialog(ctx, control_data, sender);
puffin::profile_function!();

let diff_data = match control_data.diff_type {
DiffType::Modified => &app_data.modified_diff_data,
DiffType::Staged => &app_data.staged_diff_data,
};

ui.separator();
ui.horizontal(|ui| {
ui.heading(RichText::new(&app_data.project_path).color(Color32::WHITE));
if ui.button("Log").clicked() {
sender
.send(Message::ToggleHistory)
.expect("Channel closed unexpectedly!");
}
});
ui.separator();

selection_area::ui(ui, sender);

if let Some(app_data) = app_data {
let diff_data = match control_data.diff_type {
DiffType::Modified => &app_data.modified_diff_data,
DiffType::Staged => &app_data.staged_diff_data,
};

ui.separator();
ui.horizontal(|ui| {
ui.heading(RichText::new(&app_data.project_path).color(Color32::WHITE));
if ui.button("Log").clicked() {
sender
.send(Message::ToggleHistory)
.expect("Channel closed unexpectedly!");
}
});
ui.separator();

diff_type::ui(ui, control_data.diff_type.clone(), sender);
diff_type::ui(ui, control_data.diff_type.clone(), sender);

stats::ui(ui, &diff_data.stats);
stats::ui(ui, &diff_data.stats);

if diff_data.diffs.is_empty() {
return;
}
if diff_data.diffs.is_empty() {
return;
}

ui.separator();
ui.separator();

ui.with_layout(Layout::left_to_right(Align::LEFT), |ui| {
files_area::ui(ui, diff_data, control_data, sender);
ui.with_layout(Layout::left_to_right(Align::LEFT), |ui| {
files_area::ui(ui, diff_data, control_data, sender);

ui.separator();
ui.separator();

if let Some(diff) = diff_data.get_diff(&control_data.selected_diff) {
ui.vertical(|ui| {
ui.label(control_data.selected_diff.to_str().unwrap());
diff_area::ui(ui, &diff);
});
}
if let Some(diff) = diff_data.get_diff(&control_data.selected_diff) {
ui.vertical(|ui| {
ui.label(control_data.selected_diff.to_str().unwrap());
diff_area::ui(ui, &diff);
});

if control_data.history_open {
log::ui(
ctx,
sender,
&app_data.commits,
&mut control_data.search_string,
);
}
}
});

if control_data.history_open {
log::ui(
ctx,
sender,
&app_data.commits,
&mut control_data.search_string,
);
}
}

pub fn error_dialog(ctx: &Context, control_data: &ControlData, sender: &Sender<Message>) {
Expand Down

0 comments on commit 3de4c17

Please sign in to comment.