From: root Date: Sat, 30 May 2009 08:47:07 +0000 (+0000) Subject: add new pastebin-macosx X-Git-Url: http://git.openbox.org/?a=commitdiff_plain;h=2a367da7defc6e81745d8e48ffd159fead172965;p=dana%2Furxvt.git add new pastebin-macosx --- diff --git a/Changes b/Changes index c17d5a19..1f3a817b 100644 --- a/Changes +++ b/Changes @@ -48,6 +48,8 @@ TODO: -letterspace option - make sure the alignment for fd passing control messages is correct and work around some NetBSD issues (Taylor R Campbell). - update to libptytty 1.3. + - replace maxosc-pastebin by a nicer version by Reza Jelveh, and move + the old version to macosx-pastebin-native. 9.06 Sat Nov 8 17:47:18 CET 2008 - NOTICE: this release updates terminfo/termcap. diff --git a/src/perl/macosx-clipboard b/src/perl/macosx-clipboard index 2a500f4d..344b9143 100644 --- a/src/perl/macosx-clipboard +++ b/src/perl/macosx-clipboard @@ -1,13 +1,12 @@ #! perl -w -# http://triplefusion.net/system/macosx-clipboard - # ---------------------------------------------------------------------- # File: macosx-clipboard # ---------------------------------------------------------------------- # # All portions of code are copyright by their respective author/s. # Copyright (c) 2006 Samuel Ljungkvist +# 2009 Reza Jelveh # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -30,46 +29,27 @@ # URxvt.keysym.M-c: perl:macosx-clipboard:copy # URxvt.keysym.M-v: perl:macosx-clipboard:paste -use Fcntl (); -use Foundation; -use locale; -use utf8; - -our($appkit, $pasteboard); - -$appkit = NSBundle->alloc->init->initWithPath_('/System/Library/Frameworks/AppKit.framework'); -$appkit->load if $appkit; - -if ($appkit->isLoaded) { - no strict 'refs'; - for my $class (qw(NSPasteboard)) { - @{$class . '::ISA'} = 'PerlObjCBridge'; - } -} else { - undef $appkit; -} +use Mac::Pasteboard; -$pasteboard = NSPasteboard->generalPasteboard; +my $pasteboard = new Mac::Pasteboard; sub copy { my ($self) = @_; - $pasteboard->declareTypes_owner_(NSArray->arrayWithObject_('NSStringPboardType'), undef); - $pasteboard->setString_forType_($self->selection, 'NSStringPboardType'); + $pasteboard->clear; + $pasteboard->copy ($self->selection); + () } sub paste { my ($self) = @_; - my ($type, $str); - - $type = $pasteboard->availableTypeFromArray_(NSArray->arrayWithObject_('NSStringPboardType')); - if ($type->isEqual_('NSStringPboardType')){ - $str = $pasteboard->stringForType_($type)->UTF8String; - $str =~ tr/\n/\r/; - utf8::decode($str); - $self->tt_write($self->locale_encode($str)); - } + + # $str = $pasteboard->stringForType_($type)->UTF8String; + my $str = $pasteboard->paste; + utf8::decode $str; + $self->tt_write ($self->locale_encode ($str)); + () } @@ -83,6 +63,7 @@ sub on_user_command { if ($cmd eq "macosx-clipboard:paste") { $self->paste; } + () } diff --git a/src/perl/macosx-clipboard-native b/src/perl/macosx-clipboard-native new file mode 100644 index 00000000..bec2d4d4 --- /dev/null +++ b/src/perl/macosx-clipboard-native @@ -0,0 +1,87 @@ +#! perl -w + +# http://triplefusion.net/system/macosx-clipboard + +# ---------------------------------------------------------------------- +# File: macosx-clipboard-native +# ---------------------------------------------------------------------- +# +# All portions of code are copyright by their respective author/s. +# Copyright (c) 2006 Samuel Ljungkvist +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# ---------------------------------------------------------------------- + +# Usage: + +# URxvt.perl-ext-common: macosx-clipboard +# URxvt.keysym.M-c: perl:macosx-clipboard:copy +# URxvt.keysym.M-v: perl:macosx-clipboard:paste + +use Fcntl (); +use Foundation; + +our $appkit = NSBundle->alloc->init->initWithPath_('/System/Library/Frameworks/AppKit.framework'); +$appkit->load if $appkit; + +if ($appkit->isLoaded) { + no strict 'refs'; + for my $class (qw(NSPasteboard)) { + @{$class . '::ISA'} = 'PerlObjCBridge'; + } +} else { + undef $appkit; +} + +our $pasteboard = NSPasteboard->generalPasteboard; + +sub copy { + my ($self) = @_; + + $pasteboard->declareTypes_owner_(NSArray->arrayWithObject_('NSStringPboardType'), undef); + $pasteboard->setString_forType_($self->selection, 'NSStringPboardType'); + + () +} + +sub paste { + my ($self) = @_; + my ($type, $str); + + $type = $pasteboard->availableTypeFromArray_(NSArray->arrayWithObject_('NSStringPboardType')); + if ($type->isEqual_('NSStringPboardType')){ + $str = $pasteboard->stringForType_($type)->UTF8String; + $str =~ tr/\n/\r/; + utf8::decode($str); + $self->tt_write($self->locale_encode($str)); + } + + () +} + +sub on_user_command { + my ($self, $cmd) = @_; + + if ($cmd eq "macosx-clipboard:copy") { + $self->copy; + } + + if ($cmd eq "macosx-clipboard:paste") { + $self->paste; + } + + () +} + diff --git a/src/urxvt.pm b/src/urxvt.pm index e8b6e0d3..7e1cb75d 100644 --- a/src/urxvt.pm +++ b/src/urxvt.pm @@ -375,6 +375,20 @@ the double C characters as comment start. Use C<\057\057> instead, which works regardless of wether xrdb is used to parse the resource file or not. +=item macosx-pastebin and macosx-pastebin-native + +These two modules implement an extended clipboard for Mac OS X. They are +used like this: + + URxvt.perl-ext-common: default,macosx-clipboard + URxvt.keysym.M-c: perl:macosx-clipboard:copy + URxvt.keysym.M-v: perl:macosx-clipboard:paste + +The difference between them is that the native variant requires a +perl from apple's devkit or so, and C requires the +C module, works with other perls, has fewer bugs, is +simpler etc. etc. + =item example-refresh-hooks Displays a very simple digital clock in the upper right corner of the