From 9e89aaa477369b20a06f4b9f636d7fd543c4c985 Mon Sep 17 00:00:00 2001 From: Christian Duerr Date: Sun, 28 Apr 2019 20:21:39 +0000 Subject: Switch from copypasta to rust-clipboard This switches our own `copypasta` crate with the more standardized `clipboard` library, which allows us to get rid of the `xclip` dependency on X11. Additionally, this lays the foundation for native Wayland clipboard support once the clipboard crate is updated (or a fork is created). Fixes #5. --- copypasta/src/lib.rs | 88 ---------------------------------------------------- 1 file changed, 88 deletions(-) delete mode 100644 copypasta/src/lib.rs (limited to 'copypasta/src/lib.rs') diff --git a/copypasta/src/lib.rs b/copypasta/src/lib.rs deleted file mode 100644 index d591a04f..00000000 --- a/copypasta/src/lib.rs +++ /dev/null @@ -1,88 +0,0 @@ -//! A cross-platform clipboard library - -#![deny(clippy::all, clippy::if_not_else, clippy::enum_glob_use, clippy::wrong_pub_self_convention)] - -// This has to be here due to macro_use -#[cfg(target_os = "macos")] -#[macro_use] -extern crate objc; - -#[cfg(windows)] -extern crate clipboard; - -/// An enumeration describing available clipboard buffers -pub enum Buffer { - Primary, - Selection, -} - -/// Types that can get the system clipboard contents -pub trait Load: Sized { - /// Errors encountered when working with a clipboard. Each implementation is - /// allowed to define its own error type, but it must conform to std error. - type Err: ::std::error::Error + Send + Sync + 'static; - - /// Create a clipboard - fn new() -> Result; - - /// Get the primary clipboard contents. - fn load_primary(&self) -> Result; - - /// Get the clipboard selection contents. - /// - /// On most platforms, this doesn't mean anything. A default implementation - /// is provided which uses the primary clipboard. - #[inline] - fn load_selection(&self) -> Result { - self.load_primary() - } - - fn load(&self, buffer: Buffer) -> Result { - match buffer { - Buffer::Selection => self.load_selection(), - Buffer::Primary => self.load_primary(), - } - } -} - -/// Types that can set the system clipboard contents -/// -/// Note that some platforms require the clipboard context to stay active in -/// order to load the contents from other applications. -pub trait Store: Load { - /// Sets the primary clipboard contents - fn store_primary(&mut self, contents: S) -> Result<(), Self::Err> - where - S: Into; - - /// Sets the secondary clipboard contents - fn store_selection(&mut self, contents: S) -> Result<(), Self::Err> - where - S: Into; - - /// Store into the specified `buffer`. - fn store(&mut self, contents: S, buffer: Buffer) -> Result<(), Self::Err> - where - S: Into, - { - match buffer { - Buffer::Selection => self.store_selection(contents), - Buffer::Primary => self.store_primary(contents), - } - } -} - -#[cfg(any(target_os = "linux", target_os = "freebsd", target_os = "openbsd"))] -mod x11; -#[cfg(any(target_os = "linux", target_os = "freebsd", target_os = "openbsd"))] -pub use x11::{Clipboard, Error}; - -#[cfg(target_os = "macos")] -mod macos; -#[cfg(target_os = "macos")] -pub use macos::{Clipboard, Error}; - -#[cfg(windows)] -mod windows; -#[cfg(windows)] -pub use crate::windows::{Clipboard, Error}; -- cgit