84 lines
3.3 KiB
Rust
84 lines
3.3 KiB
Rust
use eframe::egui::{self, RichText};
|
|
|
|
use crate::{application::Application, APP_NAME};
|
|
|
|
pub fn draw_sidebar(ctx: &egui::Context, app: &mut Application) {
|
|
egui::SidePanel::left("left_panel")
|
|
.exact_width(230.)
|
|
.show(ctx, |ui| {
|
|
ui.add_space(6.0);
|
|
|
|
ui.heading(APP_NAME);
|
|
|
|
ui.add_space(12.0);
|
|
|
|
let id = ui.make_persistent_id("GerberContainer");
|
|
egui::collapsing_header::CollapsingState::load_with_default_open(ui.ctx(), id, true)
|
|
.show_header(ui, |ui| {
|
|
ui.horizontal_centered(|ui| {
|
|
ui.image(app.resources.icons().gerber_file.clone());
|
|
ui.label(
|
|
RichText::new("Gerber")
|
|
.extra_letter_spacing(1.2)
|
|
.size(17.)
|
|
.strong(),
|
|
);
|
|
});
|
|
})
|
|
.body(|ui| {
|
|
for (key, (name, _)) in app.gerbers.iter() {
|
|
ui.selectable_value(
|
|
&mut app.selection,
|
|
key.to_string(),
|
|
RichText::new(name).size(11.),
|
|
);
|
|
}
|
|
});
|
|
|
|
let id = ui.make_persistent_id("ExcellonContainer");
|
|
egui::collapsing_header::CollapsingState::load_with_default_open(ui.ctx(), id, true)
|
|
.show_header(ui, |ui| {
|
|
ui.horizontal_centered(|ui| {
|
|
ui.image(app.resources.icons().excellon_file.clone());
|
|
ui.label(
|
|
RichText::new("Excellon")
|
|
.extra_letter_spacing(1.2)
|
|
.size(17.)
|
|
.strong(),
|
|
);
|
|
});
|
|
})
|
|
.body(|ui| {
|
|
for (key, (name, _)) in app.excellons.iter() {
|
|
ui.selectable_value(&mut app.selection, key.to_string(), name);
|
|
}
|
|
});
|
|
|
|
let id = ui.make_persistent_id("GeometryContainer");
|
|
egui::collapsing_header::CollapsingState::load_with_default_open(ui.ctx(), id, true)
|
|
.show_header(ui, |ui| {
|
|
ui.horizontal_centered(|ui| {
|
|
ui.image(app.resources.icons().geometry_file.clone());
|
|
ui.label(
|
|
RichText::new("Geometry")
|
|
.extra_letter_spacing(1.2)
|
|
.size(17.)
|
|
.strong(),
|
|
);
|
|
});
|
|
})
|
|
.body(|ui| {
|
|
for (key, _) in app.outlines.iter() {
|
|
ui.selectable_value(&mut app.selection, key.to_string(), key);
|
|
}
|
|
});
|
|
|
|
// allocate rest of the container
|
|
let (id, rect) = ui.allocate_space(ui.available_size());
|
|
let response = ui.interact(rect, id, egui::Sense::click_and_drag());
|
|
if response.clicked() {
|
|
app.selection = "".into();
|
|
}
|
|
});
|
|
}
|