1 #
2 # tk/winpkg.rb : methods for Tcl/Tk packages for Microsoft Windows
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 require 'tk'
9
10 module Tk::WinDDE
11 end
12 #TkWinDDE = Tk::WinDDE
13 Tk.__set_toplevel_aliases__(:Tk, Tk::WinDDE, :TkWinDDE)
14
15 module Tk::WinDDE
16 extend Tk
17 extend Tk::WinDDE
18
19 TkCommandNames = ['dde'.freeze].freeze
20
21 PACKAGE_NAME = 'dde'.freeze
22 def self.package_name
23 PACKAGE_NAME
24 end
25
26 if self.const_defined? :FORCE_VERSION
27 tk_call_without_enc('package', 'require', 'dde', FORCE_VERSION)
28 else
29 tk_call_without_enc('package', 'require', 'dde')
30 end
31
32 #def servername(topic=None)
33 # tk_call('dde', 'servername', topic)
34 #end
35 def servername(*args)
36 if args.size == 0
37 tk_call('dde', 'servername')
38 else
39 if args[-1].kind_of?(Hash) # dde 1.2 +
40 keys = _symbolkey2str(args.pop)
41 force = (keys.delete('force'))? '-force': None
42 exact = (keys.delete('exact'))? '-exact': None
43 if keys.size == 0
44 tk_call('dde', 'servername', force, exact)
45 elsif args.size == 0
46 tk_call('dde', 'servername', force, exact, *hash_kv(keys))
47 else
48 tk_call('dde', 'servername', force, exact,
49 *((hash_kv(keys) << '--') + args))
50 end
51 else
52 tk_call('dde', 'servername', *args)
53 end
54 end
55 end
56
57 def execute(service, topic, data)
58 tk_call('dde', 'execute', service, topic, data)
59 end
60
61 def async_execute(service, topic, data)
62 tk_call('dde', '-async', 'execute', service, topic, data)
63 end
64
65 def poke(service, topic, item, data)
66 tk_call('dde', 'poke', service, topic, item, data)
67 end
68
69 def request(service, topic, item)
70 tk_call('dde', 'request', service, topic, item)
71 end
72
73 def binary_request(service, topic, item)
74 tk_call('dde', 'request', '-binary', service, topic, item)
75 end
76
77 def services(service, topic)
78 tk_call('dde', 'services', service, topic)
79 end
80
81 def eval(topic, cmd, *args)
82 tk_call('dde', 'eval', topic, cmd, *args)
83 end
84
85 def async_eval(topic, cmd, *args)
86 tk_call('dde', 'eval', -async, topic, cmd, *args)
87 end
88
89 module_function :servername, :execute, :async_execute,
90 :poke, :request, :services, :eval
91 end
92
93 module Tk::WinRegistry
94 end
95 #TkWinRegistry = Tk::WinRegistry
96 Tk.__set_toplevel_aliases__(:Tk, Tk::WinRegistry, :TkWinRegistry)
97
98 module Tk::WinRegistry
99 extend Tk
100 extend Tk::WinRegistry
101
102 TkCommandNames = ['registry'.freeze].freeze
103
104 if self.const_defined? :FORCE_VERSION
105 tk_call('package', 'require', 'registry', FORCE_VERSION)
106 else
107 tk_call('package', 'require', 'registry')
108 end
109
110 def broadcast(keynam, timeout=nil)
111 if timeout
112 tk_call('registry', 'broadcast', keynam, '-timeout', timeout)
113 else
114 tk_call('registry', 'broadcast', keynam)
115 end
116 end
117
118 def delete(keynam, valnam=None)
119 tk_call('registry', 'delete', keynam, valnam)
120 end
121
122 def get(keynam, valnam)
123 tk_call('registry', 'get', keynam, valnam)
124 end
125
126 def keys(keynam, pattern=nil)
127 lst = tk_split_simplelist(tk_call('registry', 'keys', keynam))
128 if pattern
129 lst.find_all{|key| key =~ pattern}
130 else
131 lst
132 end
133 end
134
135 def set(keynam, valnam=None, data=None, dattype=None)
136 tk_call('registry', 'set', keynam, valnam, data, dattype)
137 end
138
139 def type(keynam, valnam)
140 tk_call('registry', 'type', keynam, valnam)
141 end
142
143 def values(keynam, pattern=nil)
144 lst = tk_split_simplelist(tk_call('registry', 'values', keynam))
145 if pattern
146 lst.find_all{|val| val =~ pattern}
147 else
148 lst
149 end
150 end
151
152 module_function :delete, :get, :keys, :set, :type, :values
153 end