class XTabbedWindow

Attributes

tabs[R]
window[R]

Public Class Methods

new(name, new_tab: "Ctrl+t", scan_tabs: true, next_tab: "Ctrl+Tab", location_key: 'Ctrl+l') click to toggle source

next_tab values e.g. Ctrl+Tab (default), Ctrl+Alt+Page_Up

# File lib/xtabbedwindow.rb, line 16
def initialize(name, new_tab: "Ctrl+t", scan_tabs: true, 
               next_tab: "Ctrl+Tab", location_key: 'Ctrl+l')

  @new_tab, @next_tab, @location_key = new_tab, next_tab, location_key
  a = WMCtrl.instance.windows
  @window = a.detect {|x| x.title =~ /#{name}/i}

  if @window
    sleep 0.3
    @window.activate
  end
  
  @tabs = []

  read_tabs() if scan_tabs

end

Public Instance Methods

goto_tab(pattern) { |: return| ... } click to toggle source
# File lib/xtabbedwindow.rb, line 34
def goto_tab(pattern)

  regex = pattern.is_a?(String) ? /^#{pattern}/i : pattern    
  
  return true if title() =~ regex
  
  read_tabs if @tabs.empty?

  a = @tabs
  r = a.grep(regex)

  if r.empty? and pattern.is_a? String then
    regex = /#{pattern}/i
    r = a.grep(regex)
  end

  if r.empty? then
          
    new_tab()
    
    # open the document
    XDo::Keyboard.char(@location_key)
    
    block_given? ? yield : return
    
  else

    i = a.index(r.first)

    @window.activate
    sleep 0.1

    XDo::Keyboard.char("Alt+1")
    sleep 0.1
    i.times { XDo::Keyboard.char(@next_tab) }
    
    true
  
  end

end
include?(obj)
Alias for: tab?
new_tab() click to toggle source
# File lib/xtabbedwindow.rb, line 76
def new_tab()
  @window.activate
  sleep 0.05
  XDo::Keyboard.char(@new_tab)    
  sleep 0.3
end
next_tab() click to toggle source
# File lib/xtabbedwindow.rb, line 83
def next_tab()
  sleep 0.05
  XDo::Keyboard.char(@next_tab)
end
read_tabs() click to toggle source
# File lib/xtabbedwindow.rb, line 88
def read_tabs()
  
  @window.activate
  XDo::Keyboard.char("Alt+1")

  start_tab_title = title()
  @tabs = [start_tab_title]
  
  next_tab()
  window_title = title()

  while window_title != start_tab_title do

    @tabs << window_title
    next_tab()
    window_title = title()

  end

  @tabs

end
tab?(obj) click to toggle source
# File lib/xtabbedwindow.rb, line 111
def tab?(obj)
  
  read_tabs if @tabs.empty?
  regex = obj.is_a?(String) ? /^#{obj}|#{obj}/ : obj
  @tabs.grep(regex).any?
  
end
Also aliased as: include?
title() click to toggle source
# File lib/xtabbedwindow.rb, line 121
def title()
  sleep 0.05
  XDo::XWindow.from_active.title
end