File: tk/scrollable.rb

Overview
Module Structure
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: Tk#6
extends
  Encoding ( Unknown-Module )
  Tk   
includes
  TkCore   
has properties
constant: X_Scrollable #75
constant: Y_Scrollable #76
  module: XScrollable#7
has properties
method: xscrollcommand / 1 #8
method: xview / 1 #14
method: xview_moveto / 1 #22
method: xview_scroll / 1 #25
method: xscrollbar / 1 #29
  module: YScrollable#41
has properties
method: yscrollcommand / 1 #42
method: yview / 1 #48
method: yview_moveto / 1 #56
method: yview_scroll / 1 #59
method: yscrollbar / 1 #63
  module: Scrollable#78
includes
  XScrollable ( Tk )
  YScrollable ( Tk )

Code

   1  #
   2  # tk/scrollable.rb : module for scrollable widget
   3  #
   4  require 'tk'
   5 
   6  module Tk
   7    module XScrollable
   8      def xscrollcommand(cmd=Proc.new)
   9        configure_cmd 'xscrollcommand', cmd
  10        # Tk.update  # avoid scrollbar trouble
  11        self
  12      end
  13 
  14      def xview(*index)
  15        if index.size == 0
  16          list(tk_send_without_enc('xview'))
  17        else
  18          tk_send_without_enc('xview', *index)
  19          self
  20        end
  21      end
  22      def xview_moveto(*index)
  23        xview('moveto', *index)
  24      end
  25      def xview_scroll(*index)
  26        xview('scroll', *index)
  27      end
  28 
  29      def xscrollbar(bar=nil)
  30        if bar
  31          @xscrollbar = bar
  32          @xscrollbar.orient 'horizontal'
  33          self.xscrollcommand {|*arg| @xscrollbar.set(*arg)}
  34          @xscrollbar.command {|*arg| self.xview(*arg)}
  35          Tk.update  # avoid scrollbar trouble
  36        end
  37        @xscrollbar
  38      end
  39    end
  40 
  41    module YScrollable
  42      def yscrollcommand(cmd=Proc.new)
  43        configure_cmd 'yscrollcommand', cmd
  44        # Tk.update  # avoid scrollbar trouble
  45        self
  46      end
  47 
  48      def yview(*index)
  49        if index.size == 0
  50          list(tk_send_without_enc('yview'))
  51        else
  52          tk_send_without_enc('yview', *index)
  53          self
  54        end
  55      end
  56      def yview_moveto(*index)
  57        yview('moveto', *index)
  58      end
  59      def yview_scroll(*index)
  60        yview('scroll', *index)
  61      end
  62 
  63      def yscrollbar(bar=nil)
  64        if bar
  65          @yscrollbar = bar
  66          @yscrollbar.orient 'vertical'
  67          self.yscrollcommand {|*arg| @yscrollbar.set(*arg)}
  68          @yscrollbar.command {|*arg| self.yview(*arg)}
  69          Tk.update  # avoid scrollbar trouble
  70        end
  71        @yscrollbar
  72      end
  73    end
  74 
  75    X_Scrollable = XScrollable
  76    Y_Scrollable = YScrollable
  77 
  78    module Scrollable
  79      include XScrollable
  80      include YScrollable
  81    end
  82  end