Methods
#
C
Class Public methods
_barmcmd(value, but, arr1, arr2)
# File ext/tk/sample/tkextlib/bwidget/basic.rb, line 164
def self._barmcmd(value, but, arr1, arr2)
  if TkComm.bool(value)
    but.configure(:armcommand=>proc{_butcmd('arm')},
                  :disarmcommand=>proc{_butcmd('disarm')},
                  :command=>'')
    [arr1, arr2].each{|arr|
      arr.configure(:armcommand=>proc{_butcmd('arm')},
                    :disarmcommand=>proc{_butcmd('disarm')},
                    :command=>'')
    }
  else
    but.configure(:armcommand=>'', :disarmcommand=>'',
                  :command=>proc{_butcmd('command')})
    [arr1, arr2].each{|arr|
      arr.configure(:armcommand=>'', :disarmcommand=>'',
                    :command=>proc{_butcmd('command')})
    }
  end
end
_brelief(relief, but, arr1, arr2)
# File ext/tk/sample/tkextlib/bwidget/basic.rb, line 153
def self._brelief(relief, but, arr1, arr2)
  but[:relief] = relief
  if relief.to_s != 'link'
    [arr1, arr2].each{|arr| arr[:relief] = relief}
  end
end
_bside(side, *args)
# File ext/tk/sample/tkextlib/bwidget/basic.rb, line 160
def self._bside(side, *args)
  args.each{|arr| arr[:dir] = side}
end
_bstate(state, but, arr1, arr2)
# File ext/tk/sample/tkextlib/bwidget/basic.rb, line 149
def self._bstate(state, but, arr1, arr2)
  [but, arr1, arr2].each{|b| b[:state] = state}
end
_butcmd(reason)
# File ext/tk/sample/tkextlib/bwidget/basic.rb, line 184
def self._butcmd(reason)
  unless @@after
    @@after = TkTimer.new(500, 1, proc{@@var['butcmd'] = ''})
  end
  @@after.stop
  if (reason == 'arm')
    @@count += 1
    @@var['butcmd'] = "#{reason} command called (#{@@count})"
  else
    @@count = 0
    @@var['butcmd'] = "#{reason} command called"
  end
  @@after.start
end
_button(parent)
# File ext/tk/sample/tkextlib/bwidget/basic.rb, line 70
def self._button(parent)
  frame = TkFrame.new(parent)
  but  = Tk::BWidget::Button.new(frame, :text=>'Press me!',
                                 :repeatdelay=>300,
                                 :command=>proc{_butcmd('command')},
                                 :helptext=>'This is a Button widget')

  sep1 = Tk::BWidget::Separator.new(frame, :orient=>:vertical)
  arr1 = Tk::BWidget::ArrowButton.new(frame, :type=>:button,
              :width=>25, :height=>25, :repeatdelay=>300,
              :command=>proc{_butcmd('command')},
              :helptext=>"This is an ArrowButton widget\nof type button")

  sep2 = Tk::BWidget::Separator.new(frame, :orient=>:vertical)
  arr2 = Tk::BWidget::ArrowButton.new(frame, :type=>:arrow,
              :width=>25, :height=>25, :relief=>:sunken,
              :ipadx=>0, :ipady=>0, :repeatdelay=>300,
              :command=>proc{_butcmd('command')},
              :helptext=>"This is an ArrowButton widget\nof type arrow")

  but.pack(:side=>:left, :padx=>4)
  sep1.pack(:side=>:left, :padx=>4, :fill=>:y)
  arr1.pack(:side=>:left, :padx=>4)
  sep2.pack(:side=>:left, :padx=>4, :fill=>:y)
  arr2.pack(:side=>:left, :padx=>4)
  frame.pack

  Tk::BWidget::Separator.new(parent,
                             :orient=>:horizontal).pack(:fill=>:x, :pady=>10)

  labf1 = Tk::BWidget::LabelFrame.new(parent, :text=>'Command',
                                      :side=>:top, :anchor=>:w,
                                      :relief=>:sunken, :borderwidth=>1)
  subf = labf1.get_frame
  chk1 = TkCheckbutton.new(subf, :text=>'Disabled',
                           :variable=>@@var.ref('bstate'),
                           :onvalue=>'disabled', :offvalue=>'normal',
                           :command=>proc{_bstate(@@var['bstate'],
                                                   but, arr1, arr2)})
  chk2 = TkCheckbutton.new(subf, :text=>"Use armcommand/\ndisarmcommand",
                           :variable=>@@var.ref('barmcmd'),
                           :command=>proc{_barmcmd(@@var['barmcmd'],
                                                   but, arr1, arr2)})
  Tk.pack(chk1, chk2, :anchor=>:w)

  label = TkLabel.new(parent, :textvariable=>@@var.ref('butcmd'),
                      :foreground=>'red').pack(:side=>:bottom, :pady=>4)

  labf2 = Tk::BWidget::LabelFrame.new(parent, :text=>'Direction',
                                      :side=>:top, :anchor=>:w,
                                      :relief=>:sunken, :borderwidth=>1)
  subf = labf2.get_frame
  @@var['bside'] = :top
  [:top, :left, :bottom, :right].each{|dir|
    TkRadiobutton.new(subf, :text=>"#{dir} arrow",
                      :variable=>@@var.ref('bside'), :value=>dir,
                      :command=>proc{_bside(@@var['bside'], arr1, arr2)}
                      ).pack(:anchor=>:w)
  }

  labf3 = Tk::BWidget::LabelFrame.new(parent, :text=>'Relief',
                                      :side=>:top, :anchor=>:w,
                                      :relief=>:sunken, :borderwidth=>1)
  subf = labf3.get_frame
  @@var['brelief'] = :raised
  [ %w(raised sunken ridge groove), %w(flat solid link)].each{|lrelief|
    f = TkFrame.new(subf)
    lrelief.each{|relief|
      TkRadiobutton.new(f, :text=>relief,
                        :variable=>@@var.ref('brelief'), :value=>relief,
                        :command=>proc{
                          _brelief(@@var['brelief'], but, arr1, arr2)
                        }).pack(:anchor=>:w)
    }
    f.pack(:side=>:left, :padx=>2, :anchor=>:n)
  }
  Tk.pack(labf1, labf2, labf3, :side=>:left, :fill=>:y, :padx=>4)
end
_entry(parent)
# File ext/tk/sample/tkextlib/bwidget/basic.rb, line 42
def self._entry(parent)
  ent = Tk::BWidget::Entry.new(parent, :text=>'Press enter',
                               :helptext=>'Entry widtet',
                               :command=>proc{
                                 @@var['entcmd'] = 'command called'
                                 Tk.after(500, proc{@@var['entcmd'] = ''})
                               })

  chk1 = TkCheckbutton.new(parent, :text=>'Disabled',
                           :variable=>@@var.ref(ent, 'state'),
                           :onvalue=>'disabled', :offvalue=>'normal',
                           :command=>proc{ent.state = @@var[ent, 'state']})

  chk2 = TkCheckbutton.new(parent, :text=>'Non editable',
                           :variable=>@@var.ref(ent, 'editable'),
                           :onvalue=>false, :offvalue=>true,
                           :command=>proc{
                             ent.editable = @@var[ent, 'editable']
                           })

  lab = TkLabel.new(parent, :textvariable=>@@var.ref('entcmd'),
                    :foreground=>'red')

  ent.pack(:pady=>4, :anchor=>:w)
  Tk.pack(chk1, chk2, :anchor=>:w)
  lab.pack(:pady=>4)
end
_label(parent)
# File ext/tk/sample/tkextlib/bwidget/basic.rb, line 31
def self._label(parent)
  lab = Tk::BWidget::Label.new(parent, :text=>'This is a Label widget',
                               :helptext=>'Label widget')
  chk = TkCheckbutton.new(parent, :text=>'Disabled',
                          :variable=>@@var.ref(lab, 'state'),
                          :onvalue=>'disabled', :offvalue=>'normal',
                          :command=>proc{lab[:state] = @@var[lab, 'state']})
  lab.pack(:anchor=>:w, :pady=>4)
  chk.pack(:anchor=>:w)
end
create(nb)
# File ext/tk/sample/tkextlib/bwidget/basic.rb, line 13
def self.create(nb)
  frame = nb.insert('end', 'demoBasic', :text=>'Basic')
  topf  = TkFrame.new(frame)

  titf1 = Tk::BWidget::TitleFrame.new(topf, :text=>'Label')
  titf2 = Tk::BWidget::TitleFrame.new(topf, :text=>'Entry')

  titf3 = Tk::BWidget::TitleFrame.new(frame, :text=>'Button and ArrowButton')

  _label(titf1.get_frame)
  _entry(titf2.get_frame)
  _button(titf3.get_frame)

  Tk.pack(titf1, titf2, :side=>:left, :fill=>:both, :padx=>4, :expand=>true)
  topf.pack(:pady=>2, :fill=>:x)
  titf3.pack(:pady=>2, :padx=>4, :fill=>:x)
end