Compare commits

..

1 Commits

Author SHA1 Message Date
81af54b6f4 wip: pasting from system clipboard 2025-04-10 21:22:42 -04:00

View File

@ -5,7 +5,6 @@ use crate::book::{self, AddressRange, Book};
use anyhow::{anyhow, Result};
use crossterm::event::{self, Event, KeyCode, KeyEventKind, KeyModifiers};
use csv::StringRecord;
use ironcalc::base::{expressions::types::Area, Model};
use ratatui::{
buffer::Buffer,
@ -699,13 +698,8 @@ impl<'ws> Workspace<'ws> {
let record = rec?;
let mut row = Vec::with_capacity(record.len());
for i in 0..record.len() {
row.push(
String::from_utf8_lossy(
record.get(i).expect("Unexpected failure to get cell row"),
)
.to_string(),
);
}
row.push(String::from_utf8_lossy(record.get(i).expect("Unexpected failure to get cell row")).to_string());
};
rows.push(row);
}
Ok(rows)
@ -978,34 +972,7 @@ impl<'ws> Workspace<'ws> {
self.book.evaluate();
}
None => {
// Try to get from system clipboard
use arboard::Clipboard;
let mut cb = Clipboard::new()?;
let csv = cb.get_text()?;
let rdr = csv::Reader::from_reader(csv.as_bytes());
let records: Vec<Result<csv::StringRecord, csv::Error>> =
rdr.into_records().collect();
let Address { sheet, row, col } = self.book.location.clone();
let row_len = records.len();
for ri in 0..row_len {
let columns = &records[ri];
if let Ok(columns) = columns {
let col_len = columns.len();
for ci in 0..col_len {
self.book.update_cell(
&Address {
sheet,
row: ri + row,
col: ci + col,
},
columns
.get(ci)
.expect("Failed to get column value from csv")
.to_string(),
)?;
}
}
}
// NOOP
}
}
self.state.clipboard = None;