2
# tkextlib/tcllib/swaplist.rb
3
# by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
5
# * Part of tcllib extension
6
# * A dialog which allows a user to move options between two lists
10
require 'tkextlib/tcllib.rb'
12
# TkPackage.require('swaplist', '0.1')
13
TkPackage.require('swaplist')
16
class Swaplist_Dialog < TkWindow
17
PACKAGE_NAME = 'swaplist'.freeze
22
def self.package_version
24
TkPackage.require('swaplist')
33
class Tk::Tcllib::Swaplist_Dialog
34
TkCommandNames = ['::swaplist::swaplist'.freeze].freeze
35
WidgetClassName = 'Swaplist'.freeze
36
WidgetClassNames[WidgetClassName] = self
39
dialog = self.new(*args)
41
[dialog.status, dialog.value]
43
def self.display(*args)
48
# args = (parent=nil, complete_list=[], selected_list=[], keys=nil)
50
if keys.kind_of?(Hash)
51
@selected_list = args.pop
52
@complete_list = args.pop
53
@keys = _symbolkey2str(keys)
57
@complete_list = args.pop
61
@selected_list = [] unless @selected_list
62
@complete_list = [] unless @complete_list
64
@variable = TkVariable.new
77
@status = bool(tk_call(self.class::TkCommandNames[0],
79
@complete_list, @selected_list,
95
if slot == 'complete_list'
97
elsif slot == 'selected_list'
104
def configure(slot, value=None)
105
if slot.kind_of?(Hash)
106
slot.each{|k, v| configure(k, v)}
109
value = _symbolkey2str(value) if value.kind_of?(Hash)
110
if value && value != None
111
if slot == 'complete_list'
112
@complete_list = value
113
elsif slot == 'selected_list'
114
@selected_list = value
119
if slot == 'complete_list'
121
elsif slot == 'selected_list'
131
def configinfo(slot = nil)
134
if slot == 'complete_list'
135
[ slot, nil, nil, nil, @complete_list ]
136
elsif slot == 'selected_list'
137
[ slot, nil, nil, nil, @selected_list ]
139
[ slot, nil, nil, nil, @keys[slot] ]
142
@keys.collect{|k, v| [ k, nil, nil, nil, v ] } \
143
<< [ 'complete_list', nil, nil, nil, @complete_list ] \
144
<< [ 'selected_list', nil, nil, nil, @selected_list ]