~ubuntu-branches/ubuntu/trusty/ruby1.9/trusty

« back to all changes in this revision

Viewing changes to ext/tk/lib/tkextlib/tcllib/swaplist.rb

  • Committer: Bazaar Package Importer
  • Author(s): Lucas Nussbaum
  • Date: 2006-05-08 22:23:12 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20060508222312-w2wqeaz030ifi59j
Tags: 1.9.0+20060423-3ubuntu1
* Resynchronized with Debian.
* Only change from Debian is the addition of
  debian/patches/903_sparc_fix_define.patch to fix illegal instructions
  at runtime on sparc. (change from 1.9.0+20050921-1ubuntu1)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
2
#  tkextlib/tcllib/swaplist.rb
 
3
#                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
 
4
#
 
5
#   * Part of tcllib extension
 
6
#   * A dialog which allows a user to move options between two lists
 
7
#
 
8
 
 
9
require 'tk'
 
10
require 'tkextlib/tcllib.rb'
 
11
 
 
12
# TkPackage.require('swaplist', '0.1')
 
13
TkPackage.require('swaplist')
 
14
 
 
15
module Tk::Tcllib
 
16
  class Swaplist_Dialog < TkWindow
 
17
    PACKAGE_NAME = 'swaplist'.freeze
 
18
    def self.package_name
 
19
      PACKAGE_NAME
 
20
    end
 
21
 
 
22
    def self.package_version
 
23
      begin
 
24
        TkPackage.require('swaplist')
 
25
      rescue
 
26
        ''
 
27
      end
 
28
    end
 
29
  end
 
30
end
 
31
 
 
32
 
 
33
class Tk::Tcllib::Swaplist_Dialog
 
34
  TkCommandNames = ['::swaplist::swaplist'.freeze].freeze
 
35
  WidgetClassName = 'Swaplist'.freeze
 
36
  WidgetClassNames[WidgetClassName] = self
 
37
 
 
38
  def self.show(*args)
 
39
    dialog = self.new(*args)
 
40
    dialog.show
 
41
    [dialog.status, dialog.value]
 
42
  end
 
43
  def self.display(*args)
 
44
    self.show(*args)
 
45
  end
 
46
 
 
47
  def initialize(*args) 
 
48
    # args = (parent=nil, complete_list=[], selected_list=[], keys=nil)
 
49
    keys = args.pop
 
50
    if keys.kind_of?(Hash)
 
51
      @selected_list = args.pop
 
52
      @complete_list = args.pop
 
53
      @keys = _symbolkey2str(keys)
 
54
      args.push(keys)
 
55
    else
 
56
      @selected_list = keys
 
57
      @complete_list = args.pop
 
58
      @keys = {}
 
59
    end
 
60
 
 
61
    @selected_list = [] unless @selected_list
 
62
    @complete_list = [] unless @complete_list
 
63
 
 
64
    @variable = TkVariable.new
 
65
    @status = nil
 
66
 
 
67
    super(*args)
 
68
  end
 
69
 
 
70
  def create_self(keys)
 
71
    # dummy
 
72
  end
 
73
  private :create_self
 
74
 
 
75
  def show
 
76
    @variable.value = ''
 
77
    @status = bool(tk_call(self.class::TkCommandNames[0], 
 
78
                           @path, @variable, 
 
79
                           @complete_list, @selected_list, 
 
80
                           *hash_kv(@keys)))
 
81
  end
 
82
  alias display show
 
83
 
 
84
  def status
 
85
    @status
 
86
  end
 
87
 
 
88
  def value
 
89
    @variable.list
 
90
  end
 
91
  alias selected value
 
92
 
 
93
  def cget(slot)
 
94
    slot = slot.to_s
 
95
    if slot == 'complete_list'
 
96
      @complete_list
 
97
    elsif slot == 'selected_list'
 
98
      @selected_list
 
99
    else
 
100
      @keys[slot]
 
101
    end
 
102
  end
 
103
 
 
104
  def configure(slot, value=None)
 
105
    if slot.kind_of?(Hash)
 
106
      slot.each{|k, v| configure(k, v)}
 
107
    else
 
108
      slot = slot.to_s
 
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
 
115
        else
 
116
          @keys[slot] = value
 
117
        end
 
118
      else
 
119
        if slot == 'complete_list'
 
120
          @complete_list = []
 
121
        elsif slot == 'selected_list'
 
122
          @selected_list = []
 
123
        else
 
124
          @keys.delete(slot)
 
125
        end
 
126
      end
 
127
    end
 
128
    self
 
129
  end
 
130
 
 
131
  def configinfo(slot = nil)
 
132
    if slot
 
133
      slot = slot.to_s
 
134
      if slot == 'complete_list'
 
135
        [ slot, nil, nil, nil, @complete_list ]
 
136
      elsif slot == 'selected_list'
 
137
        [ slot, nil, nil, nil, @selected_list ]
 
138
      else
 
139
        [ slot, nil, nil, nil, @keys[slot] ]
 
140
      end
 
141
    else
 
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 ]
 
145
    end
 
146
  end
 
147
end