Sha256: 138d2579e2d60610a26eac676997b2b894c9ff9b42f6468ead5705cc1799559f

Contents?: true

Size: 991 Bytes

Versions: 2

Compression:

Stored size: 991 Bytes

Contents

module VER
  class TilingLayout
    module CommonTiling
      DEFAULT = { master: 1, stacking: 3, center: 0.5 }

      def prepare(layout, given_options)
        options = DEFAULT.merge(given_options)
        slaves = layout.stack
        master, stacking = options.values_at(:master, :stacking)
        given_options.merge!(options)
        head, tail, hidden = slaves[0...master], slaves[master..stacking], slaves[(stacking + 1)..-1]
        return head, tail, hidden, options
      end

      def apply(layout, given_options = {})
        masters, stacked, hidden, options = prepare(layout, given_options)

        center = stacked.size == 0 ? 1.0 : options[:center]

        apply_hidden(hidden) if hidden
        apply_masters(masters, center) if masters
        apply_stacked(stacked, center) if stacked
      end

      def apply_hidden(windows)
        windows.each(&:place_forget)
      end

      def evolve(window, target)
        window.place(target)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ver-2010.08 lib/ver/layout/tiling/common.rb
ver-2010.02 lib/ver/layout/tiling/common.rb