1#
2#   tk/macpkg.rb : methods for Tcl/Tk packages for Macintosh
3#                     2000/11/22 by Hidetoshi Nagai <nagai@ai.kyutech.ac.jp>
4#
5#     ATTENTION !!
6#         This is NOT TESTED. Because I have no test-environment.
7#
8#
9require 'tk'
10
11module Tk
12  def Tk.load_tclscript_rsrc(resource_name, file=None)
13    # Mac only
14    tk_call('source', '-rsrc', resource_name, file)
15  end
16
17  def Tk.load_tclscript_rsrcid(resource_id, file=None)
18    # Mac only
19    tk_call('source', '-rsrcid', resource_id, file)
20  end
21end
22
23module Tk::MacResource
24end
25#TkMacResource = Tk::MacResource
26#Tk.__set_toplevel_aliases__(:Tk, Tk::MacResource, :TkMacResource)
27Tk.__set_loaded_toplevel_aliases__('tk/macpkg.rb', :Tk, Tk::MacResource,
28                                   :TkMacResource)
29
30module Tk::MacResource
31  extend Tk
32  extend Tk::MacResource
33
34  TkCommandNames = ['resource'.freeze].freeze
35
36  PACKAGE_NAME = 'resource'.freeze
37  def self.package_name
38    PACKAGE_NAME
39  end
40
41  tk_call_without_enc('package', 'require', 'resource')
42
43  def close(rsrcRef)
44    tk_call('resource', 'close', rsrcRef)
45  end
46
47  def delete(rsrcType, opts=nil)
48    tk_call('resource', 'delete', *(hash_kv(opts) << rsrcType))
49  end
50
51  def files(rsrcRef=nil)
52    if rsrcRef
53      tk_call('resource', 'files', rsrcRef)
54    else
55      tk_split_simplelist(tk_call('resource', 'files'))
56    end
57  end
58
59  def list(rsrcType, rsrcRef=nil)
60    tk_split_simplelist(tk_call('resource', 'list', rsrcType, rsrcRef))
61  end
62
63  def open(fname, access=nil)
64    tk_call('resource', 'open', fname, access)
65  end
66
67  def read(rsrcType, rsrcID, rsrcRef=nil)
68    tk_call('resource', 'read', rsrcType, rsrcID, rsrcRef)
69  end
70
71  def types(rsrcRef=nil)
72    tk_split_simplelist(tk_call('resource', 'types', rsrcRef))
73  end
74
75  def write(rsrcType, data, opts=nil)
76    tk_call('resource', 'write', *(hash_kv(opts) << rsrcType << data))
77  end
78
79  module_function :close, :delete, :files, :list, :open, :read, :types, :write
80end
81