Remove clipboard_windows and simplify modules

This commit is contained in:
Héctor Ramón Jiménez 2020-03-12 07:12:02 +01:00
parent 8161059964
commit f697ee10bd
10 changed files with 100 additions and 350 deletions

View file

@ -10,16 +10,16 @@
#[path = "platform/linux.rs"]
mod platform;
#[cfg(not(all(
unix,
not(any(
target_os = "ios",
target_os = "macos",
target_os = "android",
target_os = "emscripten"
))
)))]
#[path = "platform/not_linux.rs"]
#[cfg(target_os = "windows")]
#[path = "platform/windows.rs"]
mod platform;
#[cfg(target_os = "macos")]
#[path = "platform/macos.rs"]
mod platform;
#[cfg(target_os = "ios")]
#[path = "platform/ios.rs"]
mod platform;
use raw_window_handle::HasRawWindowHandle;

38
src/platform/ios.rs Normal file
View file

@ -0,0 +1,38 @@
use crate::ClipboardProvider;
use raw_window_handle::HasRawWindowHandle;
use std::error::Error;
pub fn new_clipboard<W: HasRawWindowHandle>(
_window: &W,
) -> Result<Box<dyn ClipboardProvider>, Box<dyn Error>> {
Ok(Box::new(clipboard_ios::Clipboard::new()?))
}
pub struct Clipboard;
impl Clipboard {
pub fn new() -> Result<Clipboard, Box<dyn Error>> {
Ok(Self)
}
}
#[derive(Debug)]
#[allow(non_camel_case_types)]
pub enum iOSClipboardError {
Unimplemented,
}
impl std::fmt::Display for iOSClipboardError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "Unimplemented")
}
}
impl Error for iOSClipboardError {}
impl ClipboardProvider for clipboard_ios::Clipboard {
fn read(&self) -> Result<String, Box<dyn Error>> {
Err(Box::new(clipboard_ios::iOSClipboardError::Unimplemented))
}
}

16
src/platform/macos.rs Normal file
View file

@ -0,0 +1,16 @@
use crate::ClipboardProvider;
use raw_window_handle::HasRawWindowHandle;
use std::error::Error;
pub fn new_clipboard<W: HasRawWindowHandle>(
_window: &W,
) -> Result<Box<dyn ClipboardProvider>, Box<dyn Error>> {
Ok(Box::new(clipboard_macos::Clipboard::new()?))
}
impl ClipboardProvider for clipboard_macos::Clipboard {
fn read(&self) -> Result<String, Box<dyn Error>> {
self.read()
}
}

View file

@ -1,67 +0,0 @@
use crate::ClipboardProvider;
use raw_window_handle::HasRawWindowHandle;
use std::error::Error;
pub fn new_clipboard<W: HasRawWindowHandle>(
_window: &W,
) -> Result<Box<dyn ClipboardProvider>, Box<dyn Error>> {
#[cfg(target_os = "windows")]
{
Ok(Box::new(clipboard_windows::Clipboard::new()?))
}
#[cfg(target_os = "macos")]
{
Ok(Box::new(clipboard_macos::Clipboard::new()?))
}
#[cfg(target_os = "ios")]
{
Ok(Box::new(clipboard_ios::Clipboard::new()?))
}
}
#[cfg(target_os = "windows")]
impl ClipboardProvider for clipboard_windows::Clipboard {
fn read(&self) -> Result<String, Box<dyn Error>> {
self.read()
}
}
#[cfg(target_os = "macos")]
impl ClipboardProvider for clipboard_macos::Clipboard {
fn read(&self) -> Result<String, Box<dyn Error>> {
self.read()
}
}
#[cfg(target_os = "ios")]
mod clipboard_ios {
use std::error::Error;
pub struct Clipboard;
impl Clipboard {
pub fn new() -> Result<Clipboard, Box<dyn Error>> {
Ok(Self)
}
}
#[derive(Debug)]
#[allow(non_camel_case_types)]
pub enum iOSClipboardError {
Unimplemented,
}
impl std::fmt::Display for iOSClipboardError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "Unimplemented")
}
}
impl Error for iOSClipboardError { }
}
#[cfg(target_os = "ios")]
impl ClipboardProvider for clipboard_ios::Clipboard {
fn read(&self) -> Result<String, Box<dyn Error>> {
Err(Box::new(clipboard_ios::iOSClipboardError::Unimplemented))
}
}

18
src/platform/windows.rs Normal file
View file

@ -0,0 +1,18 @@
use crate::ClipboardProvider;
use raw_window_handle::HasRawWindowHandle;
use clipboard_win::{get_clipboard_string, set_clipboard_string};
use std::error::Error;
pub fn new_clipboard<W: HasRawWindowHandle>(
_window: &W,
) -> Result<Box<dyn ClipboardProvider>, Box<dyn Error>> {
Ok(Box::new(clipboard_windows::Clipboard::new()?))
}
impl ClipboardProvider for clipboard_windows::Clipboard {
fn fn read(&self) -> Result<String, Box<dyn Error>> {
Ok(get_clipboard_string()?)
}
}