1#
2# tk/clipboard.rb : methods to treat clipboard
3#
4require 'tk'
5
6module TkClipboard
7  include Tk
8  extend Tk
9
10  TkCommandNames = ['clipboard'.freeze].freeze
11
12  def self.clear(win=nil)
13    if win
14      tk_call_without_enc('clipboard', 'clear', '-displayof', win)
15    else
16      tk_call_without_enc('clipboard', 'clear')
17    end
18  end
19  def self.clear_on_display(win)
20    tk_call_without_enc('clipboard', 'clear', '-displayof', win)
21  end
22
23  def self.get(type=nil)
24    if type
25      tk_call_without_enc('clipboard', 'get', '-type', type)
26    else
27      tk_call_without_enc('clipboard', 'get')
28    end
29  end
30  def self.get_on_display(win, type=nil)
31    if type
32      tk_call_without_enc('clipboard', 'get', '-displayof', win, '-type', type)
33    else
34      tk_call_without_enc('clipboard', 'get', '-displayof', win)
35    end
36  end
37
38  def self.set(data, keys=nil)
39    clear
40    append(data, keys)
41  end
42  def self.set_on_display(win, data, keys=nil)
43    clear(win)
44    append_on_display(win, data, keys)
45  end
46
47  def self.append(data, keys=nil)
48    args = ['clipboard', 'append']
49    args.concat(hash_kv(keys))
50    args.concat(['--', data])
51    tk_call(*args)
52  end
53  def self.append_on_display(win, data, keys=nil)
54    args = ['clipboard', 'append', '-displayof', win]
55    args.concat(hash_kv(keys))
56    args.concat(['--', data])
57    tk_call(*args)
58  end
59
60  def clear
61    TkClipboard.clear_on_display(self)
62    self
63  end
64  def get(type=nil)
65    TkClipboard.get_on_display(self, type)
66  end
67  def set(data, keys=nil)
68    TkClipboard.set_on_display(self, data, keys)
69    self
70  end
71  def append(data, keys=nil)
72    TkClipboard.append_on_display(self, data, keys)
73    self
74  end
75end
76