From 13b6effb91bf3329e073b4a9de7c3b46ccdfdab6 Mon Sep 17 00:00:00 2001 From: p6nj Date: Mon, 6 May 2024 21:45:01 +0200 Subject: [PATCH] something something strip --- src/app/tabs.rs | 69 ++++++++++++++++++++++++++++++------------------- 1 file changed, 43 insertions(+), 26 deletions(-) diff --git a/src/app/tabs.rs b/src/app/tabs.rs index 268ecc5..e97eac2 100644 --- a/src/app/tabs.rs +++ b/src/app/tabs.rs @@ -1,8 +1,8 @@ use std::path::PathBuf; use derive_new::new; -use eframe::egui::{Sense, Ui, WidgetText}; -use egui_extras::{Column, TableBuilder}; +use eframe::egui::{ScrollArea, Sense, TextStyle, Ui, WidgetText}; +use egui_extras::{Column, Size, StripBuilder, TableBuilder}; use rfd::FileDialog; use strum::{AsRefStr, EnumIter, IntoEnumIterator}; @@ -58,33 +58,50 @@ impl egui_dock::TabViewer for TabViewer { ui.heading(tab.kind.as_ref()); match tab.kind { TabKind::Input => { - TableBuilder::new(ui) - .sense(Sense::click()) - .column(Column::remainder()) - .body(|body| { - body.rows(18.0, self.input_files.len(), |mut row| { - let index = row.index(); - row.col(|ui| { - ui.label( - &self - .input_files - .get(index) - .map(|buf| { - buf.to_str().unwrap_or("[invalid UTF-8]").to_string() - }) - .unwrap_or("???".to_string()), - ); + let button_size = TextStyle::Button.resolve(ui.style()).size; + StripBuilder::new(ui) + .size(Size::remainder().at_least(20.0)) // for the table + .size(Size::remainder().at_most(button_size * 4.0)) // for the add and clear buttons + .vertical(|mut strip| { + strip.cell(|ui| { + ScrollArea::horizontal().show(ui, |ui| { + TableBuilder::new(ui) + .striped(true) + .sense(Sense::click()) + .column(Column::remainder()) + .body(|body| { + body.rows(18.0, self.input_files.len(), |mut row| { + let index = row.index(); + row.col(|ui| { + ui.label( + &self + .input_files + .get(index) + .map(|buf| { + buf.to_str() + .unwrap_or("[invalid UTF-8]") + .to_string() + }) + .unwrap_or("???".to_string()), + ); + }); + }); + }) + }); + }); + strip.cell(|ui| { + ui.vertical_centered_justified(|ui| { + if ui.button("Clear").clicked() { + self.input_files.clear(); + } + if ui.button("Add").clicked() { + if let Some(mut paths) = FileDialog::new().pick_files() { + self.input_files.append(&mut paths); + } + } }); }); }); - if ui.button("Clear").clicked() { - self.input_files.clear(); - } - if ui.button("Add").clicked() { - if let Some(mut paths) = FileDialog::new().pick_files() { - self.input_files.append(&mut paths); - } - } // https://github.com/emilk/egui/blob/master/examples/file_dialog/src/main.rs } TabKind::Decode => todo!(),