Skip to content

Commit

Permalink
scrolling the pattern list works!
Browse files Browse the repository at this point in the history
  • Loading branch information
egasimus committed Jan 4, 2023
1 parent aea2f5a commit 47f1708
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 9 deletions.
19 changes: 11 additions & 8 deletions devices/korg/electribe2-tui.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,10 @@ impl Widget for Electribe2PatternsUI {
let max_height = area.h() - 4; // TODO determine automatically by Stacked
// by providing shrunken Area

self.patterns.scroll.size.set(max_height as usize);
let offset = self.patterns.scroll.offset;
for (index, (label, _)) in self.iter().enumerate().skip(offset) {
if index as Unit >= max_height {
if index as Unit >= max_height + offset as Unit {
break
}
if let Some(selected) = self.selected() && selected == index {
Expand Down Expand Up @@ -141,16 +142,18 @@ impl Electribe2PatternsUI {

/// Load a pattern bank
pub fn load_bank (&mut self, bank: Electribe2PatternBank) {
self.patterns.pages.replace(bank.patterns.iter().enumerate()
let new_pages = bank.patterns.iter().enumerate()
.map(|(index,pattern)|(Self::format_header(
index,
index + 1,
pattern.name.trim(),
pattern.bpm as u64,
pattern.length,
pattern.beats,
pattern.key,
pattern.scale,
), Electribe2PatternUI::new(pattern))).collect::<Vec<_>>());
), Electribe2PatternUI::new(pattern))).collect::<Vec<_>>();
self.patterns.scroll.total = new_pages.len();
self.patterns.pages.replace(new_pages);
self.patterns.pages.select_next();
self.bank = Some(bank);
}
Expand All @@ -166,7 +169,7 @@ impl Electribe2PatternsUI {
scale: impl Display
) -> String {
format!(
"{:>3} │ {:<16} │ {:>5} │ {:>6} │ {:>5} │ {:>3} │ {:>5} │",
"{:>4} │ {:<16} │ {:>5} │ {:>6} │ {:>5} │ {:>3} │ {:>5} │",
index, name, bpm, length, beats, key, scale,
)
}
Expand Down Expand Up @@ -204,15 +207,15 @@ impl Electribe2PatternsUI {
}

#[inline] pub fn selected (&self) -> Option<usize> {
self.patterns.pages.selected()
self.patterns.selected()
}

#[inline] pub fn select_prev (&mut self) -> bool {
self.patterns.pages.select_prev()
self.patterns.select_prev()
}

#[inline] pub fn select_next (&mut self) -> bool {
self.patterns.pages.select_next()
self.patterns.select_next()
}

#[inline] pub fn iter (&self) -> Iter<(String, Electribe2PatternUI)> {
Expand Down
1 change: 0 additions & 1 deletion libs/thatsit-widgets/tabs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,6 @@ impl<T: Widget> Widget for Tabs<T> {
TabSide::None => self.layout_page().render(out, area),
TabSide::Left => Some(Stacked::x(|add|{
add(self.layout_tabs());
add(format!("{}/{}",self.scroll.offset,self.scroll.size.get()));
if let Some(page) = self.layout_page() { add(1); add(page); }
})).render(out, area),
TabSide::Right => Stacked::x(|add|{
Expand Down

0 comments on commit 47f1708

Please sign in to comment.