summaryrefslogtreecommitdiff
path: root/ext/tk/lib/tk/macpkg.rb
blob: 3975c5255c6773b857392eb7214854c9f6b05391 (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
76
77
#
#   tk/macpkg.rb : methods for Tcl/Tk packages for Macintosh
#                     2000/11/22 by Hidetoshi Nagai <nagai@ai.kyutech.ac.jp>
#
#     ATTENTION !!
#         This is NOT TESTED. Because I have no test-environment.
#
#
require 'tk'

module Tk
  def Tk.load_tclscript_rsrc(resource_name, file=None)
    # Mac only
    tk_call('source', '-rsrc', resource_name, file)
  end

  def Tk.load_tclscript_rsrcid(resource_id, file=None)
    # Mac only
    tk_call('source', '-rsrcid', resource_id, file)
  end
end

module Tk::MacResource
end
TkMacResource = Tk::MacResource

module Tk::MacResource
  extend Tk
  extend Tk::MacResource

  TkCommandNames = ['resource'.freeze].freeze

  PACKAGE_NAME = 'resource'.freeze
  def self.package_name
    PACKAGE_NAME
  end

  tk_call_without_enc('package', 'require', 'resource')

  def close(rsrcRef)
    tk_call('resource', 'close', rsrcRef)
  end

  def delete(rsrcType, opts=nil)
    tk_call('resource', 'delete', *(hash_kv(opts) << rsrcType))
  end

  def files(rsrcRef=nil)
    if rsrcRef
      tk_call('resource', 'files', rsrcRef)
    else
      tk_split_simplelist(tk_call('resource', 'files'))
    end
  end

  def list(rsrcType, rsrcRef=nil)
    tk_split_simplelist(tk_call('resource', 'list', rsrcType, rsrcRef))
  end

  def open(fname, access=nil)
    tk_call('resource', 'open', fname, access)
  end

  def read(rsrcType, rsrcID, rsrcRef=nil)
    tk_call('resource', 'read', rsrcType, rsrcID, rsrcRef)
  end

  def types(rsrcRef=nil)
    tk_split_simplelist(tk_call('resource', 'types', rsrcRef))
  end

  def write(rsrcType, data, opts=nil)
    tk_call('resource', 'write', *(hash_kv(opts) << rsrcType << data))
  end

  module_function :close, :delete, :files, :list, :open, :read, :types, :write
end