1#
2#  tkextlib/tcllib/statusbar.rb
3#                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4#
5#   * Part of tcllib extension
6#   * statusbar widget
7#
8
9require 'tk'
10require 'tkextlib/tcllib.rb'
11
12# TkPackage.require('widget::statusbar', '1.2')
13TkPackage.require('widget::statusbar')
14
15module Tk::Tcllib
16  module Widget
17    class Statusbar < Tk::Tile::TFrame
18      PACKAGE_NAME = 'widget::statusbar'.freeze
19      def self.package_name
20        PACKAGE_NAME
21      end
22
23      def self.package_version
24        begin
25          TkPackage.require('widget::statusbar')
26        rescue
27          ''
28        end
29      end
30    end
31  end
32end
33
34class Tk::Tcllib::Widget::Statusbar
35  TkCommandNames = ['::widget::statusbar'.freeze].freeze
36
37  def __boolval_optkeys
38    super() << 'separator' << 'resize' << 'resizeseparator'
39  end
40  private :__boolval_optkeys
41
42  def create_self(keys)
43    if keys and keys != None
44      tk_call_without_enc(self.class::TkCommandNames[0], @path,
45                          *hash_kv(keys, true))
46    else
47      tk_call_without_enc(self.class::TkCommandNames[0], @path)
48    end
49  end
50  private :create_self
51
52  def getframe
53    window(tk_send_without_enc('getframe'))
54  end
55  alias get_frame getframe
56
57  def add(w, keys={})
58    window(tk_send_without_enc('setwidget', *(hash_kv(keys))))
59  end
60
61  def remove(*wins)
62    tk_send_without_enc('remove', *wins)
63    self
64  end
65
66  def remove_with_destroy(*wins)
67    tk_send_without_enc('remove', '-destroy', *wins)
68    self
69  end
70
71  def delete(*wins)
72    tk_send_without_enc('delete', *wins)
73    self
74  end
75
76  def items(pat=None)
77    tk_split_list(tk_send('items', pat))
78  end
79end
80