2020-03-12 07:12:02 +01:00
|
|
|
use crate::ClipboardProvider;
|
|
|
|
|
|
2021-03-06 04:34:02 +01:00
|
|
|
use clipboard_win::{get_clipboard_string, set_clipboard_string};
|
2020-03-12 07:12:02 +01:00
|
|
|
use raw_window_handle::HasRawWindowHandle;
|
2020-03-12 07:15:06 +01:00
|
|
|
|
2020-03-12 07:12:02 +01:00
|
|
|
use std::error::Error;
|
|
|
|
|
|
2021-03-07 03:25:51 +01:00
|
|
|
pub fn connect<W: HasRawWindowHandle>(
|
2020-03-12 07:12:02 +01:00
|
|
|
_window: &W,
|
|
|
|
|
) -> Result<Box<dyn ClipboardProvider>, Box<dyn Error>> {
|
2020-03-12 07:15:06 +01:00
|
|
|
Ok(Box::new(Clipboard))
|
2020-03-12 07:12:02 +01:00
|
|
|
}
|
|
|
|
|
|
2020-03-12 07:15:06 +01:00
|
|
|
pub struct Clipboard;
|
|
|
|
|
|
|
|
|
|
impl ClipboardProvider for Clipboard {
|
|
|
|
|
fn read(&self) -> Result<String, Box<dyn Error>> {
|
2020-03-12 07:12:02 +01:00
|
|
|
Ok(get_clipboard_string()?)
|
|
|
|
|
}
|
2021-03-06 04:34:02 +01:00
|
|
|
|
|
|
|
|
fn write(&mut self, contents: String) -> Result<(), Box<dyn Error>> {
|
|
|
|
|
Ok(set_clipboard_string(&contents)?)
|
|
|
|
|
}
|
2020-03-12 07:12:02 +01:00
|
|
|
}
|