summaryrefslogtreecommitdiff
path: root/scripts/context/ruby/base/pdf.rb
blob: 5aec06fc50c0ce835103b6be52a2e360913f9e03 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
module PDFview

    @files      = Hash.new
    @opencalls  = Hash.new
    @closecalls = Hash.new
    @allcalls   = Hash.new

    @method     = 'default' # 'xpdf'

    @opencalls['default']  = "pdfopen  --file" # "pdfopen --back --file"
    @opencalls['xpdf']     = "xpdfopen"

    @closecalls['default'] = "pdfclose --file"
    @closecalls['xpdf']    = nil

    @allcalls['default']   = "pdfclose --all"
    @allcalls['xpdf']      = nil

    def PDFview.setmethod(method)
        @method = method
    end

    def PDFview.open(*list)
        begin
            [*list].flatten.each do |file|
                filename = fullname(file)
                if FileTest.file?(filename) then
                    if @opencalls[@method] then
                        result = `#{@opencalls[@method]} #{filename} 2>&1`
                        @files[filename] = true
                    end
                end
            end
        rescue
        end
    end

    def PDFview.close(*list)
        [*list].flatten.each do |file|
            filename = fullname(file)
            begin
                if @files.key?(filename) then
                    if @closecalls[@method] then
                        result = `#{@closecalls[@method]} #{filename} 2>&1`
                    end
                else
                    closeall
                    return
                end
            rescue
            end
            @files.delete(filename)
        end
    end

    def PDFview.closeall
        begin
            if @allcalls[@method] then
                result = `#{@allcalls[@method]} 2>&1`
            end
        rescue
        end
        @files.clear
    end

    def PDFview.fullname(name)
        name + if name =~ /\.pdf$/ then '' else '.pdf' end
    end

end

# PDFview.open("t:/document/show-exa.pdf")
# PDFview.open("t:/document/show-gra.pdf")
# PDFview.close("t:/document/show-exa.pdf")
# PDFview.close("t:/document/show-gra.pdf")