107 lines
2.9 KiB
Rust
107 lines
2.9 KiB
Rust
//! This module provides some basic wrappers for Pasteboard functionality. It's currently not an
|
|
//! exhaustive clone, but feel free to pull request accordingly!
|
|
|
|
use crate::foundation::NSString;
|
|
|
|
/// Constants for the standard system pasteboard names.
|
|
#[derive(Debug, Copy, Clone)]
|
|
pub enum PasteboardName {
|
|
/// The dragging/dropping pasteboard.
|
|
Drag,
|
|
|
|
/// The find pasteboard.
|
|
Find,
|
|
|
|
/// The font pasteboard.
|
|
Font,
|
|
|
|
/// The general pasteboard.
|
|
General,
|
|
|
|
/// The ruler pasteboard.
|
|
Ruler
|
|
}
|
|
|
|
impl From<PasteboardName> for NSString {
|
|
fn from(name: PasteboardName) -> Self {
|
|
NSString::new(match name {
|
|
PasteboardName::Drag => "Apple CFPasteboard drag",
|
|
PasteboardName::Find => "Apple CFPasteboard find",
|
|
PasteboardName::Font => "Apple CFPasteboard font",
|
|
PasteboardName::General => "Apple CFPasteboard general",
|
|
PasteboardName::Ruler => "Apple CFPasteboard ruler"
|
|
})
|
|
}
|
|
}
|
|
|
|
/// Represents different Pasteboard types that can be referred to.
|
|
#[derive(Debug, Copy, Clone)]
|
|
pub enum PasteboardType {
|
|
/// URL data for one file or resource.
|
|
URL,
|
|
|
|
/// Color data.
|
|
Color,
|
|
|
|
/// A file URL.
|
|
FileURL,
|
|
|
|
/// Font and character information.
|
|
Font,
|
|
|
|
/// Type for HTML content.
|
|
HTML,
|
|
|
|
/// Multiple text selection.
|
|
MultipleTextSelection,
|
|
|
|
/// PDF data.
|
|
PDF,
|
|
|
|
/// PNG image data.
|
|
PNG,
|
|
|
|
/// Rich Text Format (RTF) data.
|
|
RTF,
|
|
|
|
/// RTFD formatted file contents.
|
|
RTFD,
|
|
|
|
/// Paragraph formatting information.
|
|
Ruler,
|
|
|
|
/// Sound data.
|
|
Sound,
|
|
|
|
/// String data.
|
|
String,
|
|
|
|
/// Tab-separated fields of text.
|
|
TabularText,
|
|
|
|
/// Tag Image File Format (TIFF) data.
|
|
TIFF
|
|
}
|
|
|
|
impl From<PasteboardType> for NSString {
|
|
fn from(pboard_type: PasteboardType) -> Self {
|
|
NSString::new(match pboard_type {
|
|
PasteboardType::URL => "public.url",
|
|
PasteboardType::Color => "com.apple.cocoa.pasteboard.color",
|
|
PasteboardType::FileURL => "public.file-url",
|
|
PasteboardType::Font => "com.apple.cocoa.pasteboard.character-formatting",
|
|
PasteboardType::HTML => "public.html",
|
|
PasteboardType::MultipleTextSelection => "com.apple.cocoa.pasteboard.multiple-text-selection",
|
|
PasteboardType::PDF => "com.adobe.pdf",
|
|
PasteboardType::PNG => "public.png",
|
|
PasteboardType::RTF => "public.rtf",
|
|
PasteboardType::RTFD => "com.apple.flat-rtfd",
|
|
PasteboardType::Ruler => "com.apple.cocoa.pasteboard.paragraph-formatting",
|
|
PasteboardType::Sound => "com.apple.cocoa.pasteboard.sound",
|
|
PasteboardType::String => "public.utf8-plain-text",
|
|
PasteboardType::TabularText => "public.utf8-tab-separated-values-text",
|
|
PasteboardType::TIFF => "public.tiff",
|
|
})
|
|
}
|
|
}
|