Class: TkTimer (Ruby 2.2.4)
Description: Class : TkTimer - Ruby 2.2.4

- Home
- Core 2.2.4
- Std-lib 2.2.4
- Downloads

Support for the Ruby 2.2 series has ended. See here for reference.

### Home Classes Methods

### In Files

- tk/lib/tk/timer.rb

### Parent

Object

### Methods

- ::callback
- ::info
- ::new
- ::start
- #add_procs
- #at_end
- #cancel
- #cancel_on_exception=
- #cancel_on_exception?
- #cb_call
- #continue
- #current_status
- #delete_at
- #delete_procs
- #do_callback
- #eventloop_tkwait
- #eventloop_wait
- #get_procs
- #info
- #loop_rest
- #loop_rest=
- #mutex
- #reset
- #restart
- #running?
- #set_callback
- #set_interval
- #set_next_callback
- #set_procs
- #set_start_proc
- #skip
- #start
- #stop
- #thread_tkwait
- #thread_wait
- #tkwait
- #wait

### Included Modules

- TkCore

### Class/Module Index

Quicksearch

- Arc
- Bitmap
- BitmapImage
- Checkbutton
- CloneMenu
- Font
- Grid
- INTERP
- Labelframe
- Line
- MenuButton
- MultiTkIp
- MultiTkIp::Command_Queue
- MultiTkIp::ThreadGroup
- MultiTkIp_OK
- MultiTkIp_PseudoToplevel_Evaluable
- Object
- Object::TkNamedVirtualEvent
- Object::TkSystemMenu
- Object::Ttk
- OptionMenuButton
- Oval
- Pack
- Panedwindow
- PhotoImage
- Place
- Polygon
- Radiobutton
- Rectangle
- RemoteTkIp
- Selection
- Spinbox
- TclTk
- TclTkCallback
- TclTkCommand
- TclTkImage
- TclTkInterpreter
- TclTkIp
- TclTkLib
- TclTkLib::EventFlag
- TclTkLib::RELEASE_TYPE
- TclTkLib::VarAccessFlag
- TclTkLibCommand
- TclTkObject
- TclTkVariable
- TclTkWidget
- TextItem
- Tk
- Tk::BLT
- Tk::BLT::Barchart
- Tk::BLT::Bitmap
- Tk::BLT::Busy
- Tk::BLT::Busy::Shield
- Tk::BLT::Container
- Tk::BLT::CutBuffer
- Tk::BLT::DnD
- Tk::BLT::DragDrop
- Tk::BLT::DragDrop::DnD_Handle
- Tk::BLT::DragDrop::PackageCommand
- Tk::BLT::DragDrop::PackageCommand::ValidateArgs
- Tk::BLT::DragDrop::SiteCommand
- Tk::BLT::DragDrop::SiteCommand::ValidateArgs
- Tk::BLT::DragDrop::Token
- Tk::BLT::EPS
- Tk::BLT::Graph
- Tk::BLT::GraphCommand
- Tk::BLT::Hiertable
- Tk::BLT::Htext
- Tk::BLT::PlotComponent
- Tk::BLT::PlotComponent::Axis
- Tk::BLT::PlotComponent::Bar
- Tk::BLT::PlotComponent::BitmapMarker
- Tk::BLT::PlotComponent::Crosshairs
- Tk::BLT::PlotComponent::Element
- Tk::BLT::PlotComponent::GridLine
- Tk::BLT::PlotComponent::ImageMarker
- Tk::BLT::PlotComponent::Legend
- Tk::BLT::PlotComponent::Line
- Tk::BLT::PlotComponent::LineMarker
- Tk::BLT::PlotComponent::Marker
- Tk::BLT::PlotComponent::OptKeys
- Tk::BLT::PlotComponent::Pen
- Tk::BLT::PlotComponent::PolygonMarker
- Tk::BLT::PlotComponent::Postscript
- Tk::BLT::PlotComponent::TextMarker
- Tk::BLT::PlotComponent::WindowMarker
- Tk::BLT::Printer
- Tk::BLT::Spline
- Tk::BLT::Stripchart
- Tk::BLT::Table
- Tk::BLT::Table::TableContainer
- Tk::BLT::Tabnotebook
- Tk::BLT::Tabnotebook::Tab
- Tk::BLT::Tabset
- Tk::BLT::Tabset::NamedTab
- Tk::BLT::Tabset::Tab
- Tk::BLT::Ted
- Tk::BLT::Tile
- Tk::BLT::Tile::Button
- Tk::BLT::Tile::CheckButton
- Tk::BLT::Tile::Checkbutton
- Tk::BLT::Tile::Frame
- Tk::BLT::Tile::Label
- Tk::BLT::Tile::RadioButton
- Tk::BLT::Tile::Radiobutton
- Tk::BLT::Tile::Scrollbar
- Tk::BLT::Tile::Toplevel
- Tk::BLT::Tree
- Tk::BLT::Tree::Node
- Tk::BLT::Tree::Notify
- Tk::BLT::Tree::Tag
- Tk::BLT::Tree::Trace
- Tk::BLT::Treeview
- Tk::BLT::Treeview::ConfigMethod
- Tk::BLT::Treeview::FindExecFlagValue
- Tk::BLT::Treeview::FindExecFlagValue::ValidateArgs
- Tk::BLT::Treeview::Node
- Tk::BLT::Treeview::OpenCloseCommand
- Tk::BLT::Treeview::OpenCloseCommand::ValidateArgs
- Tk::BLT::Treeview::Tag
- Tk::BLT::Treeview::TagOrID_Methods
- Tk::BLT::Vector
- Tk::BLT::VectorAccess
- Tk::BLT::Watch
- Tk::BLT::WinOp
- Tk::BLT::Winop
- Tk::BWidget
- Tk::BWidget::ArrowButton
- Tk::BWidget::Bitmap
- Tk::BWidget::Button
- Tk::BWidget::ButtonBox
- Tk::BWidget::ComboBox
- Tk::BWidget::Dialog
- Tk::BWidget::DragSite
- Tk::BWidget::DropSite
- Tk::BWidget::DynamicHelp
- Tk::BWidget::Entry
- Tk::BWidget::Label
- Tk::BWidget::LabelEntry
- Tk::BWidget::LabelFrame
- Tk::BWidget::ListBox
- Tk::BWidget::ListBox::Event_for_Items
- Tk::BWidget::ListBox::Item
- Tk::BWidget::MainFrame
- Tk::BWidget::MessageDlg
- Tk::BWidget::NoteBook
- Tk::BWidget::NoteBook::Event_for_Tabs
- Tk::BWidget::PagesManager
- Tk::BWidget::PanedWindow
- Tk::BWidget::PanelFrame
- Tk::BWidget::PasswdDlg
- Tk::BWidget::ProgressBar
- Tk::BWidget::ProgressDlg
- Tk::BWidget::ScrollView
- Tk::BWidget::ScrollableFrame
- Tk::BWidget::ScrolledWindow
- Tk::BWidget::SelectColor
- Tk::BWidget::SelectColor::Dialog
- Tk::BWidget::SelectColor::MenuButton
- Tk::BWidget::SelectColor::Menubutton
- Tk::BWidget::SelectFont
- Tk::BWidget::SelectFont::Dialog
- Tk::BWidget::SelectFont::Toolbar
- Tk::BWidget::Separator
- Tk::BWidget::SpinBox
- Tk::BWidget::StatusBar
- Tk::BWidget::TitleFrame
- Tk::BWidget::Tree
- Tk::BWidget::Tree::Event_for_Items
- Tk::BWidget::Tree::Node
- Tk::BWidget::Widget
- Tk::BinaryString
- Tk::Busy
- Tk::Button
- Tk::Canvas
- Tk::CheckButton
- Tk::Clock
- Tk::EncodedString
- Tk::Encoding
- Tk::Entry
- Tk::Frame
- Tk::HTML_Widget
- Tk::HTML_Widget::ClippingWindow
- Tk::ICONS
- Tk::Img
- Tk::Img::BMP
- Tk::Img::DTED
- Tk::Img::GIF
- Tk::Img::ICO
- Tk::Img::JPEG
- Tk::Img::PCX
- Tk::Img::PIXMAP
- Tk::Img::PNG
- Tk::Img::PPM
- Tk::Img::PS
- Tk::Img::Raw
- Tk::Img::SGI
- Tk::Img::SUN
- Tk::Img::TGA
- Tk::Img::TIFF
- Tk::Img::WINDOW
- Tk::Img::XBM
- Tk::Img::XPM
- Tk::Itcl
- Tk::Itcl::ItclObject
- Tk::ItemValidateConfigure
- Tk::Itk
- Tk::Itk::Archetype
- Tk::Itk::Component
- Tk::Itk::Toplevel
- Tk::Itk::Widget
- Tk::Iwidgets
- Tk::Iwidgets::Buttonbox
- Tk::Iwidgets::Calendar
- Tk::Iwidgets::Calendar::CalendarCommand
- Tk::Iwidgets::Calendar::CalendarCommand::ValidateArgs
- Tk::Iwidgets::Canvasprintbox
- Tk::Iwidgets::Canvasprintdialog
- Tk::Iwidgets::Checkbox
- Tk::Iwidgets::Combobox
- Tk::Iwidgets::Dateentry
- Tk::Iwidgets::Datefield
- Tk::Iwidgets::Dialog
- Tk::Iwidgets::Dialogshell
- Tk::Iwidgets::Disjointlistbox
- Tk::Iwidgets::Entryfield
- Tk::Iwidgets::Entryfield::EntryfieldValidate
- Tk::Iwidgets::Entryfield::EntryfieldValidate::ValidateArgs
- Tk::Iwidgets::Extbutton
- Tk::Iwidgets::Extfileselectionbox
- Tk::Iwidgets::Extfileselectiondialog
- Tk::Iwidgets::Feedback
- Tk::Iwidgets::Fileselectionbox
- Tk::Iwidgets::Fileselectiondialog
- Tk::Iwidgets::Finddialog
- Tk::Iwidgets::Hierarchy
- Tk::Iwidgets::Hierarchy::IconCommand
- Tk::Iwidgets::Hierarchy::IconCommand::ValidateArgs
- Tk::Iwidgets::Hierarchy::IndicatorCommand
- Tk::Iwidgets::Hierarchy::IndicatorCommand::ValidateArgs
- Tk::Iwidgets::Hierarchy::QueryCommand
- Tk::Iwidgets::Hierarchy::QueryCommand::ValidateArgs
- Tk::Iwidgets::Hyperhelp
- Tk::Iwidgets::Labeledframe
- Tk::Iwidgets::Labeledwidget
- Tk::Iwidgets::Mainwindow
- Tk::Iwidgets::Menubar
- Tk::Iwidgets::Messagebox
- Tk::Iwidgets::Messagedialog
- Tk::Iwidgets::Notebook
- Tk::Iwidgets::Optionmenu
- Tk::Iwidgets::Panedwindow
- Tk::Iwidgets::Promptdialog
- Tk::Iwidgets::Pushbutton
- Tk::Iwidgets::Radiobox
- Tk::Iwidgets::Scopedobject
- Tk::Iwidgets::Scrolledcanvas
- Tk::Iwidgets::Scrolledframe
- Tk::Iwidgets::Scrolledhtml
- Tk::Iwidgets::Scrolledlistbox
- Tk::Iwidgets::Scrolledtext
- Tk::Iwidgets::Scrolledwidget
- Tk::Iwidgets::Selectionbox
- Tk::Iwidgets::Selectiondialog
- Tk::Iwidgets::Shell
- Tk::Iwidgets::Spindate
- Tk::Iwidgets::Spinint
- Tk::Iwidgets::Spinner
- Tk::Iwidgets::Spinner::EntryfieldValidate
- Tk::Iwidgets::Spinner::EntryfieldValidate::ValidateArgs
- Tk::Iwidgets::Spintime
- Tk::Iwidgets::Tabnotebook
- Tk::Iwidgets::Tabset
- Tk::Iwidgets::Timeentry
- Tk::Iwidgets::Timefield
- Tk::Iwidgets::Toolbar
- Tk::Iwidgets::Watch
- Tk::Label
- Tk::LabelFrame
- Tk::Listbox
- Tk::Mac
- Tk::Mac::IconBitmap
- Tk::MacResource
- Tk::Menu
- Tk::Menu::TkInternalFunction
- Tk::MenuClone
- Tk::Menubutton
- Tk::Message
- Tk::OptionMenubutton
- Tk::OptionMenubutton::OptionMenu
- Tk::OptionObj
- Tk::PanedWindow
- Tk::RadioButton
- Tk::Root
- Tk::Scale
- Tk::Scrollable
- Tk::Scrollbar
- Tk::Spinbox
- Tk::Spinbox::SpinCommand
- Tk::Spinbox::SpinCommand::ValidateArgs
- Tk::SysMenu_Apple
- Tk::SysMenu_Help
- Tk::SysMenu_System
- Tk::SystemMenu
- Tk::TOPLEVEL_ALIASES
- Tk::TclX
- Tk::TclX::XPG3_MsgCat
- Tk::Tcllib
- Tk::Tcllib::Autoscroll
- Tk::Tcllib::CText
- Tk::Tcllib::ChatWidget
- Tk::Tcllib::Crosshair
- Tk::Tcllib::Cursor
- Tk::Tcllib::DateField
- Tk::Tcllib::Datefield
- Tk::Tcllib::Diagrams
- Tk::Tcllib::GetString_Dialog
- Tk::Tcllib::History
- Tk::Tcllib::ICO
- Tk::Tcllib::IP6_Entry
- Tk::Tcllib::IPEntry
- Tk::Tcllib::IPEntry6
- Tk::Tcllib::IP_Entry
- Tk::Tcllib::IP_Entry6
- Tk::Tcllib::KHIM
- Tk::Tcllib::KHIM::Help
- Tk::Tcllib::Ntext
- Tk::Tcllib::Plotchart
- Tk::Tcllib::Plotchart::Barchart
- Tk::Tcllib::Plotchart::Barchart3D
- Tk::Tcllib::Plotchart::Boxplot
- Tk::Tcllib::Plotchart::ChartMethod
- Tk::Tcllib::Plotchart::Ganttchart
- Tk::Tcllib::Plotchart::Histogram
- Tk::Tcllib::Plotchart::HorizontalBarchart
- Tk::Tcllib::Plotchart::IsometricPlot
- Tk::Tcllib::Plotchart::Isometricplot
- Tk::Tcllib::Plotchart::Piechart
- Tk::Tcllib::Plotchart::Plot3D
- Tk::Tcllib::Plotchart::PlotSeries
- Tk::Tcllib::Plotchart::PolarPlot
- Tk::Tcllib::Plotchart::Polarplot
- Tk::Tcllib::Plotchart::Radialchart
- Tk::Tcllib::Plotchart::RibbonChart3D
- Tk::Tcllib::Plotchart::RightAxis
- Tk::Tcllib::Plotchart::Stripchart
- Tk::Tcllib::Plotchart::TXPlot
- Tk::Tcllib::Plotchart::Timechart
- Tk::Tcllib::Plotchart::XLogYPlot
- Tk::Tcllib::Plotchart::XYPlot
- Tk::Tcllib::Style
- Tk::Tcllib::Swaplist_Dialog
- Tk::Tcllib::TableList
- Tk::Tcllib::TableList_Tile
- Tk::Tcllib::Tablelist
- Tk::Tcllib::TablelistItemConfig
- Tk::Tcllib::Tablelist_Tile
- Tk::Tcllib::Tkpiechart
- Tk::Tcllib::Tkpiechart::BoxLabeler
- Tk::Tcllib::Tkpiechart::ConfigMethod
- Tk::Tcllib::Tkpiechart::Label
- Tk::Tcllib::Tkpiechart::PeripheralLabeler
- Tk::Tcllib::Tkpiechart::Pie
- Tk::Tcllib::Tkpiechart::PieChartObj
- Tk::Tcllib::Tkpiechart::Slice
- Tk::Tcllib::Tooltip
- Tk::Tcllib::Validator
- Tk::Tcllib::Widget
- Tk::Tcllib::Widget::Calendar
- Tk::Tcllib::Widget::Canvas_Sqmap
- Tk::Tcllib::Widget::Canvas_Zoom
- Tk::Tcllib::Widget::DateEntry
- Tk::Tcllib::Widget::Dateentry
- Tk::Tcllib::Widget::Dialog
- Tk::Tcllib::Widget::MenuEntry
- Tk::Tcllib::Widget::Menuentry
- Tk::Tcllib::Widget::PanelFrame
- Tk::Tcllib::Widget::Panelframe
- Tk::Tcllib::Widget::Ruler
- Tk::Tcllib::Widget::ScreenRuler
- Tk::Tcllib::Widget::Screenruler
- Tk::Tcllib::Widget::ScrolledWindow
- Tk::Tcllib::Widget::Scrolledwindow
- Tk::Tcllib::Widget::Statusbar
- Tk::Tcllib::Widget::SuperFrame
- Tk::Tcllib::Widget::Toolbar
- Tk::Tcllib::Widget::ToolbarItem
- Tk::Tcllib::Widget::ToolbarItemConfig
- Tk::Text
- Tk::Text::IndexModMethods
- Tk::Text::IndexString
- Tk::Text::Peer
- Tk::Tile
- Tk::Tile::Button
- Tk::Tile::CheckButton
- Tk::Tile::Checkbutton
- Tk::Tile::Combobox
- Tk::Tile::Dialog
- Tk::Tile::Entry
- Tk::Tile::Font
- Tk::Tile::Frame
- Tk::Tile::KeyNav
- Tk::Tile::Label
- Tk::Tile::LabelFrame
- Tk::Tile::Labelframe
- Tk::Tile::MenuButton
- Tk::Tile::Menubutton
- Tk::Tile::Notebook
- Tk::Tile::ParseStyleLayout
- Tk::Tile::Progress
- Tk::Tile::Progressbar
- Tk::Tile::RadioButton
- Tk::Tile::Radiobutton
- Tk::Tile::Scale
- Tk::Tile::Scrollbar
- Tk::Tile::Separator
- Tk::Tile::SizeGrip
- Tk::Tile::Sizegrip
- Tk::Tile::Spinbox
- Tk::Tile::Square
- Tk::Tile::Style
- Tk::Tile::TButton
- Tk::Tile::TCheckButton
- Tk::Tile::TCheckbutton
- Tk::Tile::TCombobox
- Tk::Tile::TEntry
- Tk::Tile::TFrame
- Tk::Tile::TLabel
- Tk::Tile::TLabelFrame
- Tk::Tile::TLabelframe
- Tk::Tile::TMenuButton
- Tk::Tile::TMenubutton
- Tk::Tile::TNotebook
- Tk::Tile::TPaned
- Tk::Tile::TProgress
- Tk::Tile::TProgressbar
- Tk::Tile::TRadioButton
- Tk::Tile::TRadiobutton
- Tk::Tile::TScale
- Tk::Tile::TScrollbar
- Tk::Tile::TSeparator
- Tk::Tile::TSpinbox
- Tk::Tile::TSpinbox::SpinCommand
- Tk::Tile::TSpinbox::SpinCommand::ValidateArgs
- Tk::Tile::TSquare
- Tk::Tile::TileWidget
- Tk::Tile::Treeview
- Tk::Tile::Treeview::Item
- Tk::Tile::Treeview::Root
- Tk::Tile::Treeview::Tag
- Tk::Tile::TreeviewConfig
- Tk::Tile::XScrollbar
- Tk::Tile::YScrollbar
- Tk::TkDND
- Tk::TkDND::DND
- Tk::TkDND::DND_Subst
- Tk::TkDND::Shape
- Tk::TkSystemMenu
- Tk::TkTable
- Tk::TkTable::BrowseCommand
- Tk::TkTable::BrowseCommand::ValidateArgs
- Tk::TkTable::CellCommand
- Tk::TkTable::CellCommand::ValidateArgs
- Tk::TkTable::CellTag
- Tk::TkTable::ConfigMethod
- Tk::TkTable::NamedCellTag
- Tk::TkTable::SelectionCommand
- Tk::TkTable::SelectionCommand::ValidateArgs
- Tk::TkTable::ValidateCommand
- Tk::TkTable::ValidateCommand::ValidateArgs
- Tk::TkTrans
- Tk::Toplevel
- Tk::TreeCtrl
- Tk::TreeCtrl::BindCallback
- Tk::TreeCtrl::BitmapElement
- Tk::TreeCtrl::BorderElement
- Tk::TreeCtrl::Column
- Tk::TreeCtrl::ConfigMethod
- Tk::TreeCtrl::Element
- Tk::TreeCtrl::ImageElement
- Tk::TreeCtrl::Item
- Tk::TreeCtrl::NotifyEvent
- Tk::TreeCtrl::RectangleElement
- Tk::TreeCtrl::Style
- Tk::TreeCtrl_Widget
- Tk::Trofs
- Tk::Ttk
- Tk::UTF8_String
- Tk::ValidateConfigure
- Tk::Vu
- Tk::Vu::Bargraph
- Tk::Vu::ChartsConfig
- Tk::Vu::Dial
- Tk::Vu::NamedPieSlice
- Tk::Vu::Pie
- Tk::Vu::PieSlice
- Tk::Vu::PieSliceConfigMethod
- Tk::Vu::TkcBarchart
- Tk::Vu::TkcSticker
- Tk::Vu::TkcStripchart
- Tk::WinDDE
- Tk::WinRegistry
- Tk::Winico
- Tk::Winico::Winico_callback
- Tk::Winico::Winico_callback::ValidateArgs
- Tk::Wm
- Tk::Wm_for_General
- Tk::XScrollable
- Tk::XScrollbar
- Tk::X_Scrollable
- Tk::YScrollable
- Tk::YScrollbar
- Tk::Y_Scrollable
- TkAfter
- TkBgError
- TkBindCore
- TkBindTag
- TkBindTagAll
- TkBitmapImage
- TkCallbackBreak
- TkCallbackContinue
- TkCallbackEntry
- TkCallbackRedo
- TkCallbackRetry
- TkCallbackReturn
- TkCallbackThrow
- TkCanvasItemConfig
- TkClipboard
- TkComm
- TkComposite
- TkConfigMethod
- TkConsole
- TkCore
- TkCore::Tk_OBJECT_TABLE
- TkDatabaseClass
- TkDialog
- TkDialog2
- TkDialogObj
- TkEvent
- TkEvent::Event
- TkEvent::Event::Grp
- TkEvent::Event::StateMask
- TkEvent::Event::TypeNum
- TkFont
- TkFont::Chooser
- TkFont::CoreMethods
- TkFont::DescendantFont
- TkFont::Fontchooser
- TkGrid
- TkImage
- TkItemConfigMethod
- TkItemConfigOptkeys
- TkItemFontOptkeys
- TkKernel
- TkKinput
- TkListItemConfig
- TkLocalJumpError
- TkManageFocus
- TkMenuEntryConfig
- TkMenuSpec
- TkMenubar
- TkMsgCat
- TkMsgCatalog
- TkNamedFont
- TkNamespace
- TkNamespace::Ensemble
- TkNamespace::NsCode
- TkNamespace::ScopeArgs
- TkObject
- TkOption
- TkOptionDB
- TkOptionDB::Priority
- TkPack
- TkPackage
- TkPalette
- TkPhotoImage
- TkPixmapImage
- TkPlace
- TkRTTimer
- TkResourceDB
- TkScrollbox
- TkSelection
- TkTextImage
- TkTextMark
- TkTextMarkAnchor
- TkTextMarkCurrent
- TkTextMarkInsert
- TkTextNamedMark
- TkTextNamedTag
- TkTextTag
- TkTextTagConfig
- TkTextTagSel
- TkTextWin
- TkTextWindow
- TkTimer
- TkTreatFont
- TkTreatItemFont
- TkTreatTagFont
- TkUtil
- TkUtil::CallbackSubst
- TkUtil::CallbackSubst::Info
- TkValidateCommand
- TkValidateCommand::ValidateArgs
- TkValidation
- TkValidation::ValidateCmd
- TkValidation::ValidateCmd::Action
- TkVarAccess
- TkVariable
- TkVirtualEvent
- TkVirtualEvent::PreDefVirtEvent
- TkVirtualEvent::TkNamedVirtualEvent
- TkWarning
- TkWarning2
- TkWarningObj
- TkWidget
- TkWindow
- TkWinfo
- TkXIM
- TkcArc
- TkcBitmap
- TkcGroup
- TkcImage
- TkcItem
- TkcLine
- TkcNamedTag
- TkcOval
- TkcPolygon
- TkcRectangle
- TkcTag
- TkcTagAccess
- TkcTagAll
- TkcTagCurrent
- TkcTagString
- TkcText
- TkcWindow
- TktImage
- TktMark
- TktMarkAnchor
- TktMarkCurrent
- TktMarkInsert
- TktNamedMark
- TktNamedTag
- TktTag
- TktTagSel
- TktWindow
- Variable
- VirtualEvent
- WindowItem
- Winfo
- unknown

No matching classes.

# TkTimer

### Constants

DEFAULT_IGNORE_EXCEPTIONS
TkCommandNames
Tk_CBID
Tk_CBTBL

### Attributes

after_id[R]
after_script[R]
current_args[R]
current_interval[R]
current_proc[R]
current_sleep[R]
loop_exec[RW]
return_value[R]

### Public Class Methods

callback(obj_id) click to toggle source

                   # File tk/lib/tk/timer.rb, line 39
    def self.callback(obj_id)
      ex_obj = Tk_CBTBL[obj_id]
      return "" if ex_obj == nil; # canceled
      ex_obj.cb_call
    end

info(obj = nil) click to toggle source

                   # File tk/lib/tk/timer.rb, line 45
    def self.info(obj = nil)
      if obj
        if obj.kind_of?(TkTimer)
          if obj.after_id
            inf = tk_split_list(tk_call_without_enc('after','info',obj.after_id))
            [Tk_CBTBL[inf[0][1]], inf[1]]
          else
            nil
          end
        else
          fail ArgumentError, "TkTimer object is expected"
        end
      else
        tk_call_without_enc('after', 'info').split(' ').collect!{|id|
          ret = Tk_CBTBL.find{|key,val| val.after_id == id}
          (ret == nil)? id: ret[1]
        }
      end
    end

new(*args, &b) click to toggle source

                   # File tk/lib/tk/timer.rb, line 147
    def initialize(*args, &b)
      Tk_CBID.mutex.synchronize{
        # @id = Tk_CBID.join('')
        @id = Tk_CBID.join(TkCore::INTERP._ip_id_)
        Tk_CBID[1].succ!
      }

      @wait_var = TkVariable.new(0)

      @at_end_proc = nil

      @cb_cmd = TkCore::INTERP.get_cb_entry(self.method(:do_callback))

      @set_next = true

      @init_sleep = 0
      @init_proc = nil
      @init_args = []

      @current_script = []
      @current_proc = nil
      @current_args = nil
      @return_value = nil

      @sleep_time = 0
      @current_sleep = 0
      @loop_exec = 0
      @do_loop = 0
      @loop_proc = []
      @proc_max = 0
      @current_pos = 0

      @after_id = nil
      @after_script = nil

      @cancel_on_exception = DEFAULT_IGNORE_EXCEPTIONS
      # Unless @cancel_on_exception, Ruby/Tk shows an error dialog box when
      # an excepsion is raised on TkTimer callback procedure.
      # If @cancel_on_exception is an array of exception classes and the raised
      # exception is included in the array, Ruby/Tk cancels executing TkTimer
      # callback procedures silently (TkTimer#cancel is called and no dialog is
      # shown).

      if b
        case args.size
        when 0
          add_procs(b)
        when 1
          args << -1 << b
        else
          args << b
        end
      end

      set_procs(*args) if args != []

      @running = false
      @in_callback = false
    end

start(*args, &b) click to toggle source

class methods

                   # File tk/lib/tk/timer.rb, line 35
    def self.start(*args, &b)
      self.new(*args, &b).start
    end

### Public Instance Methods

add_procs(*procs) click to toggle source

                   # File tk/lib/tk/timer.rb, line 312
    def add_procs(*procs)
      procs.each{|e|
        # if e.kind_of?(Proc)
        if TkComm._callback_entry?(e)
          @loop_proc.push([e])
        else
          @loop_proc.push(e)
        end
      }
      @proc_max = @loop_proc.size

      self
    end

at_end(*arg, &b) click to toggle source

                   # File tk/lib/tk/timer.rb, line 485
    def at_end(*arg, &b)
      if arg.empty?
        if b
          @at_end_proc = b
        else
          # no proc
          return @at_end_proc
        end
      else
        fail ArgumentError, "wrong number of arguments" if arg.length != 1 || b
        @at_end_proc = arg[0]
      end
      self
    end

cancel() click to toggle source

                   # File tk/lib/tk/timer.rb, line 438
    def cancel
      @running = false
      # @wait_var.value = 0
      __at_end__
      tk_call 'after', 'cancel', @after_id if @after_id
      @after_id = nil

      Tk_CBTBL.delete(@id) ;# for GC
      self
    end

Also aliased as: stop
cancel_on_exception=(mode) click to toggle source

                   # File tk/lib/tk/timer.rb, line 240
    def cancel_on_exception=(mode)
      if mode.kind_of?(Array)
        @cancel_on_exception = mode
      elsif mode
        @cancel_on_exception = DEFAULT_IGNORE_EXCEPTIONS
      else
        @cancel_on_exception = false
      end
      #self
    end

cancel_on_exception?() click to toggle source

                   # File tk/lib/tk/timer.rb, line 236
    def cancel_on_exception?
      @cancel_on_exception
    end

cb_call() click to toggle source

                   # File tk/lib/tk/timer.rb, line 223
    def cb_call
      @cb_cmd.call
    end

continue(wait=nil) click to toggle source

                   # File tk/lib/tk/timer.rb, line 450
    def continue(wait=nil)
      fail RuntimeError, "is already running" if @running
      return restart() if @current_script.empty?
      sleep, cmd = @current_script
      fail RuntimeError, "no procedure to continue" unless cmd
      if wait
        unless wait.kind_of?(Integer)
          fail ArgumentError, "expect Integer for 1st argument"
        end
        sleep = wait
      end
      Tk_CBTBL[@id] = self
      @running = true
      @after_id = tk_call_without_enc('after', sleep, cmd)
      self
    end

current_status() click to toggle source

                   # File tk/lib/tk/timer.rb, line 231
    def current_status
      [@running, @current_sleep, @current_proc, @current_args,
        @do_loop, @cancel_on_exception]
    end

delete_at(n) click to toggle source

                   # File tk/lib/tk/timer.rb, line 342
    def delete_at(n)
      @loop_proc.delete_at(n)
      @proc_max = @loop_proc.size
      cancel if @proc_max == 0
      self
    end

delete_procs(*procs) click to toggle source

                   # File tk/lib/tk/timer.rb, line 326
    def delete_procs(*procs)
      procs.each{|e|
        # if e.kind_of?(Proc)
        if TkComm._callback_entry?(e)
          @loop_proc.delete([e])
        else
          @loop_proc.delete(e)
        end
      }
      @proc_max = @loop_proc.size

      cancel if @proc_max == 0

      self
    end

do_callback() click to toggle source

instance methods

                   # File tk/lib/tk/timer.rb, line 69
    def do_callback
      @in_callback = true
      @after_id = nil
      begin
        @return_value = @current_proc.call(self)
      rescue SystemExit
        exit(0)
      rescue Interrupt
        exit!(1)
      rescue Exception => e
        if @cancel_on_exception &&
            @cancel_on_exception.find{|exc| e.kind_of?(exc)}
          cancel
          @return_value = e
          @in_callback = false
          return e
        else
          fail e
        end
      end
      if @set_next
        set_next_callback(@current_args)
      else
        @set_next = true
      end
      @in_callback = false
      @return_value
    end

eventloop_tkwait() click to toggle source

                   # File tk/lib/tk/timer.rb, line 529
    def eventloop_tkwait
      wait(false, true)
    end

eventloop_wait(check_root = false) click to toggle source

                   # File tk/lib/tk/timer.rb, line 520
    def eventloop_wait(check_root = false)
      wait(false, check_root)
    end

get_procs() click to toggle source

                   # File tk/lib/tk/timer.rb, line 227
    def get_procs
      [@init_sleep, @init_proc, @init_args, @sleep_time, @loop_exec, @loop_proc]
    end

info() click to toggle source

                   # File tk/lib/tk/timer.rb, line 476
    def info
      if @after_id
        inf = tk_split_list(tk_call_without_enc('after', 'info', @after_id))
        [Tk_CBTBL[inf[0][1]], inf[1]]
      else
        nil
      end
    end

loop_rest() click to toggle source

                   # File tk/lib/tk/timer.rb, line 255
    def loop_rest
      @do_loop
    end

loop_rest=(rest) click to toggle source

                   # File tk/lib/tk/timer.rb, line 259
    def loop_rest=(rest)
      @do_loop = rest
      #self
    end

mutex() click to toggle source

                   # File tk/lib/tk/timer.rb, line 16
    def mutex; @mutex; end

reset(*reset_args) click to toggle source

                   # File tk/lib/tk/timer.rb, line 411
    def reset(*reset_args)
      restart() if @running

      if @init_proc
        @return_value = @init_proc.call(self)
      else
        @return_value = nil
      end

      @current_pos   = 0
      @current_args  = @init_args
      @current_script = []

      @set_next = false if @in_callback

      self
    end

restart(*restart_args, &b) click to toggle source

                   # File tk/lib/tk/timer.rb, line 429
    def restart(*restart_args, &b)
      cancel if @running
      if restart_args.empty? && !b
        start(@init_sleep, @init_proc, *@init_args)
      else
        start(*restart_args, &b)
      end
    end

running?() click to toggle source

                   # File tk/lib/tk/timer.rb, line 251
    def running?
      @running
    end

set_callback(sleep, args=nil) click to toggle source

                   # File tk/lib/tk/timer.rb, line 98
    def set_callback(sleep, args=nil)
      if TkCore::INTERP.deleted?
        self.cancel
        return self
      end
      @after_script = "rb_after #{@id}"
      @current_args = args
      @current_script = [sleep, @after_script]
      @after_id = tk_call_without_enc('after', sleep, @after_script)
      self
    end

set_interval(interval) click to toggle source

                   # File tk/lib/tk/timer.rb, line 264
    def set_interval(interval)
      #if interval != 'idle' && interval != :idle \
      #  && !interval.kind_of?(Integer) && !interval.kind_of?(Proc)
      if interval != 'idle' && interval != :idle \
        && !interval.kind_of?(Integer) && !TkComm._callback_entry?(interval)
        fail ArgumentError, "expect Integer or Proc"
      end
      @sleep_time = interval
    end

set_next_callback(args) click to toggle source

                   # File tk/lib/tk/timer.rb, line 110
    def set_next_callback(args)
      if @running == false || @proc_max == 0 || @do_loop == 0
        Tk_CBTBL.delete(@id) ;# for GC
        @running = false
        # @wait_var.value = 0
        __at_end__
        return
      end
      if @current_pos >= @proc_max
        if @do_loop < 0 || (@do_loop -= 1) > 0
          @current_pos = 0
        else
          Tk_CBTBL.delete(@id) ;# for GC
          @running = false
          # @wait_var.value = 0
          __at_end__
          return
        end
      end

      @current_args = args

      # if @sleep_time.kind_of?(Proc)
      if TkComm._callback_entry?(@sleep_time)
        sleep = @sleep_time.call(self)
      else
        sleep = @sleep_time
      end
      @current_sleep = sleep

      cmd, *cmd_args = @loop_proc[@current_pos]
      @current_pos += 1
      @current_proc = cmd

      set_callback(sleep, cmd_args)
    end

set_procs(interval, loop_exec, *procs) click to toggle source

                   # File tk/lib/tk/timer.rb, line 274
    def set_procs(interval, loop_exec, *procs)
      #if interval != 'idle' && interval != :idle \
      #   && !interval.kind_of?(Integer) && !interval.kind_of?(Proc)
      if interval != 'idle' && interval != :idle \
        && !interval.kind_of?(Integer) && !TkComm._callback_entry?(interval)
        fail ArgumentError, "expect Integer or Proc for 1st argument"
      end
      @sleep_time = interval

      @loop_proc = []
      procs.each{|e|
        # if e.kind_of?(Proc)
        if TkComm._callback_entry?(e)
          @loop_proc.push([e])
        else
          @loop_proc.push(e)
        end
      }
      @proc_max = @loop_proc.size
      @current_pos = 0

      if loop_exec.kind_of?(Integer) && loop_exec < 0
        @loop_exec = -1
      elsif loop_exec == true
        @loop_exec = -1
      elsif loop_exec == nil || loop_exec == false || loop_exec == 0
        @loop_exec = 0
      else
        if not loop_exec.kind_of?(Integer)
          fail ArgumentError, "expect Integer for 2nd argument"
        end
        @loop_exec = loop_exec
      end
      @do_loop = @loop_exec

      self
    end

set_start_proc(sleep=nil, init_proc=nil, *init_args, &b) click to toggle source

                   # File tk/lib/tk/timer.rb, line 349
    def set_start_proc(sleep=nil, init_proc=nil, *init_args, &b)
      # set parameters for 'restart'
      sleep = @init_sleep unless sleep

      if sleep != 'idle' && sleep != :idle && !sleep.kind_of?(Integer)
        fail ArgumentError, "expect Integer or 'idle' for 1st argument"
      end

      @init_sleep = sleep
      @init_proc = init_proc
      @init_args = init_args

      @init_proc = b if !@init_proc && b
      @init_proc = proc{|*args| } if @init_sleep > 0 && !@init_proc

      self
    end

skip() click to toggle source

                   # File tk/lib/tk/timer.rb, line 467
    def skip
      fail RuntimeError, "is not running now" unless @running
      cancel
      Tk_CBTBL[@id] = self
      @running = true
      set_next_callback(@current_args)
      self
    end

start(*init_args, &b) click to toggle source

                   # File tk/lib/tk/timer.rb, line 367
    def start(*init_args, &b)
      return nil if @running

      Tk_CBTBL[@id] = self
      @do_loop = @loop_exec
      @current_pos = 0
      @return_value = nil
      @after_id = nil

      @init_sleep = 0
      @init_proc  = nil
      @init_args  = nil

      argc = init_args.size
      if argc > 0
        sleep = init_args.shift
        if sleep != 'idle' && sleep != :idle && !sleep.kind_of?(Integer)
          fail ArgumentError, "expect Integer or 'idle' for 1st argument"
        end
        @init_sleep = sleep
      end
      @init_proc = init_args.shift if argc > 1
      @init_args = init_args if argc > 2

      @init_proc = b if !@init_proc && b
      @init_proc = proc{|*args| } if @init_sleep > 0 && !@init_proc

      @current_sleep = @init_sleep
      @running = true
      if @init_proc
        # if not @init_proc.kind_of?(Proc)
        if !TkComm._callback_entry?(@init_proc)
          fail ArgumentError, "Argument '#{@init_proc}' need to be Proc"
        end
        @current_proc = @init_proc
        set_callback(@init_sleep, @init_args)
        @set_next = false if @in_callback
      else
        set_next_callback(@init_args)
      end

      self
    end

stop() click to toggle source
Alias for: cancel
thread_tkwait() click to toggle source

                   # File tk/lib/tk/timer.rb, line 532
    def thread_tkwait
      wait(true, true)
    end

thread_wait(check_root = false) click to toggle source

                   # File tk/lib/tk/timer.rb, line 523
    def thread_wait(check_root = false)
      wait(true, check_root)
    end

tkwait(on_thread = true) click to toggle source

                   # File tk/lib/tk/timer.rb, line 526
    def tkwait(on_thread = true)
      wait(on_thread, true)
    end

wait(on_thread = true, check_root = false) click to toggle source

                   # File tk/lib/tk/timer.rb, line 500
    def wait(on_thread = true, check_root = false)
      if $SAFE >= 4
        fail SecurityError, "can't wait timer at $SAFE >= 4"
      end

      unless @running
        if @return_value.kind_of?(Exception)
          fail @return_value
        else
          return @return_value
        end
      end

      @wait_var.wait(on_thread, check_root)
      if @return_value.kind_of?(Exception)
        fail @return_value
      else
        @return_value
      end
    end