ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/perl/selection-pastebin
Revision: 1.6
Committed: Wed Jan 18 10:31:37 2006 UTC (18 years, 4 months ago) by root
Branch: MAIN
Changes since 1.5: +2 -1 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 elmex 1.1 #! perl
2    
3     my $timers = {};
4     my $pastebin_cmd;
5     my $pastebin_url;
6    
7     sub upload_paste {
8     my ($self) = @_;
9    
10 root 1.2 require Digest::MD5;
11 elmex 1.1
12     my $txt = $self->selection;
13 root 1.2 my $filename = Digest::MD5::md5_hex ($txt) . ".txt";
14 elmex 1.1
15     my $tmpfile = "/tmp/$filename";
16    
17     my $msg = "uploaded $filename";
18    
19 root 1.6 if (open my $o, ">$tmpfile") {
20     chmod 0644, $tmpfile;
21 elmex 1.1 print $o $txt;
22     close $o;
23     } else {
24     $msg = "couldn't write $tmpfile: $!";
25     }
26    
27     my $cmd = $pastebin_cmd;
28     $cmd =~ s/%/$tmpfile/;
29    
30     if (system ($cmd) == 0) {
31     my $url = $pastebin_url;
32     $url =~ s/%/$filename/;
33    
34     $self->selection ($url);
35     } else {
36     $msg = "couldn't upload, '$cmd' failed";
37     }
38    
39 elmex 1.4 unlink $tmpfile;
40    
41 elmex 1.1 my $ov = $timers->{ov} = $self->overlay (-1, 0, length ($msg), 1, urxvt::OVERLAY_RSTYLE, 0);
42     $ov->set (0, 0, $msg);
43    
44     $timers->{t1} =
45     urxvt::timer
46     ->new
47     ->start ((int urxvt::NOW) + 5) # make sure we update "on" the second
48     ->interval (1)
49     ->cb (sub { delete $timers->{ov}; delete $timers->{t1}; });
50     }
51    
52 root 1.5 sub on_start {
53     my ($self) = @_;
54     $pastebin_cmd = $self->x_resource ("selection-pastebin.cmd")
55     || "scp -p % ruth:/var/www/www.ta-sa.org/files/txt/";
56    
57     $pastebin_url = $self->x_resource ("selection-pastebin.url")
58     || "http://www.ta-sa.org/files/txt/%";
59    
60     push @urxvt::ext::selection_popup::hook, sub {
61     ("pastebin upload" => sub { $self->upload_paste })
62     };
63    
64     ()
65     }
66    
67 elmex 1.1 sub on_keyboard_command {
68     my ($self, $cmd) = @_;
69    
70 root 1.5 if ($cmd eq "selection-pastebin:remote-pastebin") {
71     $self->upload_paste;
72     }
73 elmex 1.1
74     ()
75     }
76