cacao/src/pasteboard/types.rs
2020-03-26 18:06:11 -07:00

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",
})
}
}