class Uh::Layout
Constants
- ArgumentError
- COLORS
- Error
- RuntimeError
- VERSION
Attributes
bar_status[R]
colors[R]
history[R]
screens[R]
widgets[R]
Public Class Methods
new(**options)
click to toggle source
# File lib/uh/layout.rb, line 37 def initialize **options @screens = Container.new @widgets = [] @colors = COLORS @history = History.new @bar_status = options[:bar_status] @colors = @colors.merge options[:colors] if options.key? :colors end
Public Instance Methods
<<(client)
click to toggle source
# File lib/uh/layout.rb, line 72 def << client current_view.current_column_or_create << client current_column.current_client = client current_column.arrange_clients current_column.show_hide_clients client.focus update_widgets self end
Also aliased as: push
current_client()
click to toggle source
# File lib/uh/layout.rb, line 55 def current_client current_column and current_column.current_client end
expose(window)
click to toggle source
# File lib/uh/layout.rb, line 97 def expose window update_widgets end
handle_client_column_set(direction, mover: client_mover_for_current_view)
click to toggle source
# File lib/uh/layout.rb, line 162 def handle_client_column_set direction, mover: client_mover_for_current_view return unless current_client mover.move_current direction current_view.arrange_columns current_view.each_column &:show_hide_clients update_widgets end
handle_client_sel(direction)
click to toggle source
# File lib/uh/layout.rb, line 148 def handle_client_sel direction return unless current_client current_column.clients.sel direction current_column.show_hide_clients current_client.focus update_widgets end
handle_client_swap(direction)
click to toggle source
# File lib/uh/layout.rb, line 156 def handle_client_swap direction return unless current_client && current_column.clients.size >= 2 current_column.client_swap direction update_widgets end
handle_column_mode_toggle()
click to toggle source
# File lib/uh/layout.rb, line 141 def handle_column_mode_toggle return unless current_column current_column.mode_toggle current_column.arrange_clients current_column.show_hide_clients end
handle_column_sel(direction)
click to toggle source
# File lib/uh/layout.rb, line 134 def handle_column_sel direction return unless current_view.columns.any? current_view.columns.sel direction current_client.focus update_widgets end
handle_history_view_pred()
click to toggle source
# File lib/uh/layout.rb, line 170 def handle_history_view_pred handle_view_sel @history.last_view.id end
handle_screen_sel(direction)
click to toggle source
# File lib/uh/layout.rb, line 101 def handle_screen_sel direction screens.sel direction current_client.focus if current_client update_widgets end
handle_screen_set(direction)
click to toggle source
# File lib/uh/layout.rb, line 107 def handle_screen_set direction return unless current_client remove client = current_client screens.sel direction push client end
handle_view_sel(view_id)
click to toggle source
# File lib/uh/layout.rb, line 114 def handle_view_sel view_id view_id = view_id.to_s return unless current_view.id != view_id @history.record_view current_view current_view.hide current_screen.views.current = find_view_or_create view_id current_view.each_column &:show_hide_clients current_client.focus if current_client update_widgets end
handle_view_set(view_id)
click to toggle source
# File lib/uh/layout.rb, line 125 def handle_view_set view_id return unless current_client && current_view.id != view_id previous_view_id = current_view.id remove client = current_client handle_view_sel view_id push client handle_view_sel previous_view_id end
include?(client)
click to toggle source
# File lib/uh/layout.rb, line 59 def include? client screens.any? { |screen| screen.include? client } end
register(display)
click to toggle source
# File lib/uh/layout.rb, line 47 def register display Registrant.register self, display end
remove(client)
click to toggle source
# File lib/uh/layout.rb, line 83 def remove client screen, view, column = find_client client column.remove client view.arrange_columns column.show_hide_clients current_client.focus if current_client update_widgets end
suggest_geo()
click to toggle source
# File lib/uh/layout.rb, line 68 def suggest_geo (current_column or current_view).geo.dup end
to_s()
click to toggle source
# File lib/uh/layout.rb, line 51 def to_s Dumper.new(self).to_s end
update(client = nil)
click to toggle source
# File lib/uh/layout.rb, line 92 def update client = nil return if client && client.hidden? update_widgets end
update_widgets()
click to toggle source
# File lib/uh/layout.rb, line 63 def update_widgets @widgets.each &:update @widgets.each &:redraw end
Private Instance Methods
client_mover_for_current_view()
click to toggle source
# File lib/uh/layout.rb, line 196 def client_mover_for_current_view ClientColumnMover.new( current_view.columns, current_view.columns_max_count? ) end
find_client(client)
click to toggle source
# File lib/uh/layout.rb, line 176 def find_client client screens.each do |screen| screen.views.each do |view| view.each_column do |column| if column.include? client return screen, view, column end end end end end
find_view_or_create(view_id)
click to toggle source
# File lib/uh/layout.rb, line 188 def find_view_or_create view_id current_screen.views.find do |e| e.id == view_id end or View.new(view_id, current_screen.geo).tap do |view| current_screen.views << view end end