Files
Cagire/src/state/project.rs

42 lines
1013 B
Rust

use std::collections::HashSet;
use std::path::PathBuf;
use crate::model::{MAX_BANKS, MAX_PATTERNS};
use crate::model::Project;
pub struct ProjectState {
pub project: Project,
pub file_path: Option<PathBuf>,
pub dirty_patterns: HashSet<(usize, usize)>,
}
impl Default for ProjectState {
fn default() -> Self {
let mut state = Self {
project: Project::default(),
file_path: None,
dirty_patterns: HashSet::new(),
};
state.mark_all_dirty();
state
}
}
impl ProjectState {
pub fn mark_dirty(&mut self, bank: usize, pattern: usize) {
self.dirty_patterns.insert((bank, pattern));
}
pub fn mark_all_dirty(&mut self) {
for bank in 0..MAX_BANKS {
for pattern in 0..MAX_PATTERNS {
self.dirty_patterns.insert((bank, pattern));
}
}
}
pub fn take_dirty(&mut self) -> HashSet<(usize, usize)> {
std::mem::take(&mut self.dirty_patterns)
}
}