<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta name="Content-Type" content="text/html; charset=utf-8" />
<title>Class: Rumai::View</title>
<link rel="stylesheet" href="../css/style.css" type="text/css" media="screen" charset="utf-8" />
<link rel="stylesheet" href="../css/common.css" type="text/css" media="screen" charset="utf-8" />

<script type="text/javascript" charset="utf-8">
  relpath = '..';
  if (relpath != '') relpath += '/';
</script>
<script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/app.js"></script>

  </head>
  <body>
    <script type="text/javascript" charset="utf-8">
      if (window.top.frames.main) document.body.className = 'frames';
    </script>
    
    <div id="header">
      <div id="menu">
  
    <a href="../_index.html">Index (V)</a> &raquo; 
    <span class='title'><a href="../Rumai.html" title="Rumai (module)">Rumai</a></span>
     &raquo; 
    <span class="title">View</span>
  
  
  <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
</div>

      <div id="search">
  <a id="class_list_link" href="#">Class List</a>
  <a id="method_list_link" href="#">Method List</a>
  <a id ="file_list_link" href="#">File List</a>
</div>

      <div class="clear"></div>
    </div>
    
    <iframe id="search_frame"></iframe>
    
    <div id="content"><h1>Class: Rumai::View 
  
  
</h1>

<dl class="box">
  
    <dt class="r1">Inherits:</dt>
    <dd class="r1">
      <span class="inheritName"><a href="WidgetNode.html" title="Rumai::WidgetNode (class)">WidgetNode</a></span>
      
        <ul class="fullTree">
          <li><a href="../Object.html" title="Object (class)">Object</a></li>
          
            <li class="next"><a href="Node.html" title="Rumai::Node (class)">Node</a></li>
          
            <li class="next"><a href="WidgetNode.html" title="Rumai::WidgetNode (class)">WidgetNode</a></li>
          
            <li class="next">Rumai::View</li>
          
        </ul>
        <a href="#" class="inheritanceTree">show all</a>
      
      </dd>
    
  
  
    
  
    
      <dt class="r2">Includes:</dt>
      <dd class="r2">Enumerable, <a href="Chain.html" title="Rumai::Chain (module)">Chain</a>, <a href="ClientContainer.html" title="Rumai::ClientContainer (module)">ClientContainer</a>, <a href="WidgetImpl.html" title="Rumai::WidgetImpl (module)">WidgetImpl</a></dd>
      
    
  
  
  
    <dt class="r1 last">Defined in:</dt>
    <dd class="r1 last">lib/rumai/wm.rb</dd>
  
</dl>
<div class="clear"></div>

<h2>Overview</h2><div class="docstring">
  <div class="discussion">
    <p>
The visualization of a tag.
</p>


  </div>
</div>
<div class="tags">
  
</div>

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

  
    <h2>Class Method Summary</h2>

    <ul class="summary">
      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#curr-class_method" title="curr (class method)">+ (Object) <strong>curr</strong> </a>
    

    
  </span>
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>
Returns the currently focused view.
</p>
</div></span>
  
</li>

      
    </ul>
  
    <h2>Instance Method Summary</h2>

    <ul class="summary">
      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#area_ids-instance_method" title="#area_ids (instance method)">- (Object) <strong>area_ids</strong> </a>
    

    
  </span>
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>
Returns the IDs of all areas in this view.
</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#area_of_client-instance_method" title="#area_of_client (instance method)">- (Object) <strong>area_of_client</strong>(client_or_id) </a>
    

    
  </span>
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>
Returns the area which contains the given client in this view.
</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#areas-instance_method" title="#areas (instance method)">- (Object) <strong>areas</strong> </a>
    

    
  </span>
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>
Returns all areas in this view.
</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#arrange_as_larswm-instance_method" title="#arrange_as_larswm (instance method)">- (Object) <strong>arrange_as_larswm</strong> </a>
    

    
  </span>
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>
Arranges the clients in this view, while maintaining their relative order,
in the tiling fashion of LarsWM.
</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#arrange_in_diamond-instance_method" title="#arrange_in_diamond (instance method)">- (Object) <strong>arrange_in_diamond</strong> </a>
    

    
  </span>
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>
Arranges the clients in this view, while maintaining their relative order,
in a (at best) equilateral triangle.
</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#arrange_in_grid-instance_method" title="#arrange_in_grid (instance method)">- (Object) <strong>arrange_in_grid</strong>(max_clients_per_column = nil) </a>
    

    
  </span>
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>
Arranges the clients in this view, while maintaining their relative order,
in a (at best) square grid.
</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#arrange_in_stacks-instance_method" title="#arrange_in_stacks (instance method)">- (Object) <strong>arrange_in_stacks</strong>(num_stacks) </a>
    

    
  </span>
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>
Arranges the clients in this view, while maintaining their relative order,
in the given number of columns.
</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#chain-instance_method" title="#chain (instance method)">- (Object) <strong>chain</strong> </a>
    

    
  </span>
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>
Returns a list of all views.
</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#client_ids-instance_method" title="#client_ids (instance method)">- (Object) <strong>client_ids</strong>(area_id = '\S+') </a>
    

    
  </span>
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>
Returns the IDs of the clients contained in the given area within this
view.
</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#columns-instance_method" title="#columns (instance method)">- (Object) <strong>columns</strong> </a>
    

    
      (also: #managed_areas)
    
  </span>
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>
Returns all columns (managed areas) in this view.
</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#each-instance_method" title="#each (instance method)">- (Object) <strong>each</strong>(&amp;block) </a>
    

    
  </span>
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>
Iterates through each area in this view.
</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#each_column-instance_method" title="#each_column (instance method)">- (Object) <strong>each_column</strong>(starting_column_id = 1) </a>
    

    
      (also: #each_managed_area)
    
  </span>
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>
Resiliently iterates through possibly destructive changes to each column.
</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#floating_area-instance_method" title="#floating_area (instance method)">- (Object) <strong>floating_area</strong> </a>
    

    
  </span>
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>
Returns the floating area of this view.
</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#focus-instance_method" title="#focus (instance method)">- (Object) <strong>focus</strong> </a>
    

    
  </span>
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>
Focuses this view.
</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#initialize-instance_method" title="#initialize (instance method)">- (View) <strong>initialize</strong>(view_id) </a>
    

    
  </span>
  
    <span class="note title constructor">constructor</span>
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>
A new instance of View.
</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#manifest-instance_method" title="#manifest (instance method)">- (Object) <strong>manifest</strong> </a>
    

    
  </span>
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>
Returns the manifest of all areas and clients in this view.
</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#select-instance_method" title="#select (instance method)">- (Object) <strong>select</strong>(direction) </a>
    

    
  </span>
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>
Moves the focus from the current client in the given direction.
</p>
</div></span>
  
</li>

      
    </ul>
  


  
  
  
  
  
  
  
  <h3 class="inherited">Methods included from <a href="WidgetImpl.html" title="Rumai::WidgetImpl (module)">WidgetImpl</a></h3>
  <p class="inherited"><a href="WidgetImpl.html#%3D%3D-instance_method" title="Rumai::WidgetImpl#== (method)">#==</a>, <a href="WidgetImpl.html#current%3F-instance_method" title="Rumai::WidgetImpl#current? (method)">#current?</a></p>

  
  
  
  
  
  
  
  <h3 class="inherited">Methods included from <a href="Chain.html" title="Rumai::Chain (module)">Chain</a></h3>
  <p class="inherited"><a href="Chain.html#next-instance_method" title="Rumai::Chain#next (method)">#next</a>, <a href="Chain.html#prev-instance_method" title="Rumai::Chain#prev (method)">#prev</a></p>

  
  
  
  
  
  
  
  <h3 class="inherited">Methods included from <a href="ClientContainer.html" title="Rumai::ClientContainer (module)">ClientContainer</a></h3>
  <p class="inherited"><a href="ClientContainer.html#clients-instance_method" title="Rumai::ClientContainer#clients (method)">#clients</a>, <a href="ClientContainer.html#grouping-instance_method" title="Rumai::ClientContainer#grouping (method)">#grouping</a></p>

  
  
  
  
  
  
  
  
  
  
  
  
  
  <h3 class="inherited">Methods included from <a href="WidgetImpl.html" title="Rumai::WidgetImpl (module)">WidgetImpl</a></h3>
  <p class="inherited"><a href="WidgetImpl.html#%3D%3D-instance_method" title="Rumai::WidgetImpl#== (method)">#==</a>, <a href="WidgetImpl.html#current%3F-instance_method" title="Rumai::WidgetImpl#current? (method)">#current?</a></p>

  
  
  
  
  
  
  
  <h3 class="inherited">Methods inherited from <a href="Node.html" title="Rumai::Node (class)">Node</a></h3>
  <p class="inherited"><a href="Node.html#%5B%5D-instance_method" title="Rumai::Node#[] (method)">#[]</a>, <a href="Node.html#children-instance_method" title="Rumai::Node#children (method)">#children</a>, <a href="Node.html#clear-instance_method" title="Rumai::Node#clear (method)">#clear</a>, <a href="Node.html#create-instance_method" title="Rumai::Node#create (method)">#create</a>, <a href="Node.html#directory%3F-instance_method" title="Rumai::Node#directory? (method)">#directory?</a>, <a href="Node.html#each_line-instance_method" title="Rumai::Node#each_line (method)">#each_line</a>, <a href="Node.html#entries-instance_method" title="Rumai::Node#entries (method)">#entries</a>, <a href="Node.html#exist%3F-instance_method" title="Rumai::Node#exist? (method)">#exist?</a>, <a href="Node.html#method_missing-instance_method" title="Rumai::Node#method_missing (method)">#method_missing</a>, <a href="Node.html#open-instance_method" title="Rumai::Node#open (method)">#open</a>, <a href="Node.html#parent-instance_method" title="Rumai::Node#parent (method)">#parent</a>, <a href="Node.html#read-instance_method" title="Rumai::Node#read (method)">#read</a>, <a href="Node.html#remove-instance_method" title="Rumai::Node#remove (method)">#remove</a>, <a href="Node.html#stat-instance_method" title="Rumai::Node#stat (method)">#stat</a>, <a href="Node.html#write-instance_method" title="Rumai::Node#write (method)">#write</a></p>

  <div id="constructor_details" class="method_details_list">
  <h2>Constructor Details</h2>
  
    <div class="method_details first">
  <p class="signature first" id="initialize-instance_method">
  
    - (<tt><a href="" title="Rumai::View (class)">View</a></tt>) <strong>initialize</strong>(view_id) 
  

  
</p><div class="docstring">
  <div class="discussion">
    <p>
A new instance of View
</p>


  </div>
</div>
<div class="tags">
  
</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


758
759
760</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/rumai/wm.rb', line 758</span>

<span class='kw'>def</span> <span class='id initialize'>initialize</span> <span class='id view_id'>view_id</span>
  <span class='kw'>super</span> <span class='id view_id'>view_id</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/tag</span><span class='tstring_end'>'</span></span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
  
</div>
<div id="method_missing_details" class="method_details_list">
  <h2>Dynamic Method Handling</h2>
  <p class="notice super">
    This class handles dynamic methods through the <tt>method_missing</tt> method
    
      in the class <a href="Node.html#method_missing-instance_method" title="Rumai::Node#method_missing (method)">Rumai::Node</a>
    
  </p>
  
</div>


  <div id="class_method_details" class="method_details_list">
    <h2>Class Method Details</h2>
    
    
      <div class="method_details first">
  <p class="signature first" id="curr-class_method">
  
    + (<tt><a href="../Object.html" title="Object (class)">Object</a></tt>) <strong>curr</strong> 
  

  
</p><div class="docstring">
  <div class="discussion">
    <p>
Returns the currently focused view.
</p>


  </div>
</div>
<div class="tags">
  
</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


719
720
721</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/rumai/wm.rb', line 719</span>

<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id curr'>curr</span>
  <span class='id new'>new</span> <span class='const'>FOCUSED_WIDGET_ID</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
  </div>

  <div id="instance_method_details" class="method_details_list">
    <h2>Instance Method Details</h2>
    
    
      <div class="method_details first">
  <p class="signature first" id="area_ids-instance_method">
  
    - (<tt><a href="../Object.html" title="Object (class)">Object</a></tt>) <strong>area_ids</strong> 
  

  
</p><div class="docstring">
  <div class="discussion">
    <p>
Returns the IDs of all areas in this view.
</p>


  </div>
</div>
<div class="tags">
  
</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


804
805
806</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/rumai/wm.rb', line 804</span>

<span class='kw'>def</span> <span class='id area_ids'>area_ids</span>
  <span class='id manifest'>manifest</span><span class='period'>.</span><span class='id scan'>scan</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^# (\d+)</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id flatten'>flatten</span><span class='period'>.</span><span class='id unshift'>unshift</span><span class='lparen'>(</span><span class='const'>FLOATING_AREA_ID</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <p class="signature " id="area_of_client-instance_method">
  
    - (<tt><a href="../Object.html" title="Object (class)">Object</a></tt>) <strong>area_of_client</strong>(client_or_id) 
  

  
</p><div class="docstring">
  <div class="discussion">
    <p>
Returns the area which contains the given client in this view.
</p>


  </div>
</div>
<div class="tags">
  
</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


787
788
789
790
791
792
793
794
795
796
797
798
799</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/rumai/wm.rb', line 787</span>

<span class='kw'>def</span> <span class='id area_of_client'>area_of_client</span> <span class='id client_or_id'>client_or_id</span>
  <span class='id arg'>arg</span> <span class='op'>=</span>
    <span class='kw'>if</span> <span class='id client_or_id'>client_or_id</span><span class='period'>.</span><span class='id respond_to?'>respond_to?</span> <span class='symbol'>:id</span>
      <span class='id client_or_id'>client_or_id</span><span class='period'>.</span><span class='id id'>id</span>
    <span class='kw'>else</span>
      <span class='id client_or_id'>client_or_id</span>
    <span class='kw'>end</span>

  <span class='id manifest'>manifest</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(\S+) </span><span class='embexpr_beg'>#{</span><span class='id arg'>arg</span><span class='rbrace'>}</span><span class='regexp_end'>/</span></span>
  <span class='kw'>if</span> <span class='id area_id'>area_id</span> <span class='op'>=</span> <span class='backref'>$1</span>
    <span class='const'>Area</span><span class='period'>.</span><span class='id new'>new</span> <span class='id area_id'>area_id</span><span class='comma'>,</span> <span class='kw'>self</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <p class="signature " id="areas-instance_method">
  
    - (<tt><a href="../Object.html" title="Object (class)">Object</a></tt>) <strong>areas</strong> 
  

  
</p><div class="docstring">
  <div class="discussion">
    <p>
Returns all areas in this view.
</p>


  </div>
</div>
<div class="tags">
  
</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


811
812
813</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/rumai/wm.rb', line 811</span>

<span class='kw'>def</span> <span class='id areas'>areas</span>
  <span class='id area_ids'>area_ids</span><span class='period'>.</span><span class='id map!'>map!</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id i'>i</span><span class='op'>|</span> <span class='const'>Area</span><span class='period'>.</span><span class='id new'>new</span> <span class='id i'>i</span><span class='comma'>,</span> <span class='kw'>self</span> <span class='rbrace'>}</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <p class="signature " id="arrange_as_larswm-instance_method">
  
    - (<tt><a href="../Object.html" title="Object (class)">Object</a></tt>) <strong>arrange_as_larswm</strong> 
  

  
</p><div class="docstring">
  <div class="discussion">
    <p>
Arranges the clients in this view, while maintaining their relative order,
in the tiling fashion of LarsWM.
</p>
<p>
Only the first client in the primary column is kept; all others are evicted
to the <b>top</b> of the secondary column. Any subsequent columns are
squeezed into the <b>bottom</b> of the secondary column.
</p>


  </div>
</div>
<div class="tags">
  
</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


865
866
867
868
869
870
871
872
873
874
875
876
877
878
879</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/rumai/wm.rb', line 865</span>

<span class='kw'>def</span> <span class='id arrange_as_larswm'>arrange_as_larswm</span>
  <span class='id maintain_focus'>maintain_focus</span> <span class='kw'>do</span>
    <span class='comment'># keep only one client in the primary column
</span>    <span class='id main'>main</span> <span class='op'>=</span> <span class='const'>Area</span><span class='period'>.</span><span class='id new'>new</span><span class='lparen'>(</span><span class='int'>1</span><span class='comma'>,</span> <span class='kw'>self</span><span class='rparen'>)</span>
    <span class='id main'>main</span><span class='period'>.</span><span class='id length'>length</span> <span class='op'>=</span> <span class='int'>1</span>
    <span class='id main'>main</span><span class='period'>.</span><span class='id layout'>layout</span> <span class='op'>=</span> <span class='symbol'>:default</span>

    <span class='comment'># collapse remaining areas into secondary column
</span>    <span class='id extra'>extra</span> <span class='op'>=</span> <span class='id squeeze_columns'>squeeze_columns</span><span class='lparen'>(</span><span class='int'>1</span><span class='op'>..</span><span class='op'>-</span><span class='int'>1</span><span class='rparen'>)</span>

    <span class='kw'>if</span> <span class='id dock'>dock</span> <span class='op'>=</span> <span class='id extra'>extra</span><span class='period'>.</span><span class='id first'>first</span>
      <span class='id dock'>dock</span><span class='period'>.</span><span class='id layout'>layout</span> <span class='op'>=</span> <span class='symbol'>:default</span>
    <span class='kw'>end</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <p class="signature " id="arrange_in_diamond-instance_method">
  
    - (<tt><a href="../Object.html" title="Object (class)">Object</a></tt>) <strong>arrange_in_diamond</strong> 
  

  
</p><div class="docstring">
  <div class="discussion">
    <p>
Arranges the clients in this view, while maintaining their relative order,
in a (at best) equilateral triangle. However, the resulting arrangement
appears like a diamond because wmii does not waste screen space.
</p>


  </div>
</div>
<div class="tags">
  
</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/rumai/wm.rb', line 938</span>

<span class='kw'>def</span> <span class='id arrange_in_diamond'>arrange_in_diamond</span>
  <span class='id num_clients'>num_clients</span> <span class='op'>=</span> <span class='id num_managed_clients'>num_managed_clients</span>
  <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id num_clients'>num_clients</span> <span class='op'>&gt;</span> <span class='int'>1</span>

  <span class='comment'># determine dimensions of the rising sub-triangle
</span>  <span class='id rise'>rise</span> <span class='op'>=</span> <span class='id num_clients'>num_clients</span> <span class='op'>/</span> <span class='int'>2</span>

  <span class='id span'>span</span> <span class='op'>=</span> <span class='id sum'>sum</span> <span class='op'>=</span> <span class='int'>0</span>
  <span class='int'>1</span><span class='period'>.</span><span class='id upto'>upto</span> <span class='id rise'>rise</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id h'>h</span><span class='op'>|</span>
    <span class='kw'>if</span> <span class='id sum'>sum</span> <span class='op'>+</span> <span class='id h'>h</span> <span class='op'>&gt;</span> <span class='id rise'>rise</span>
      <span class='kw'>break</span>
    <span class='kw'>else</span>
      <span class='id sum'>sum</span> <span class='op'>+=</span> <span class='id h'>h</span>
      <span class='id span'>span</span> <span class='op'>+=</span> <span class='int'>1</span>
    <span class='kw'>end</span>
  <span class='kw'>end</span>

  <span class='id peak'>peak</span> <span class='op'>=</span> <span class='id num_clients'>num_clients</span> <span class='op'>-</span> <span class='lparen'>(</span><span class='id sum'>sum</span> <span class='op'>*</span> <span class='int'>2</span><span class='rparen'>)</span>

  <span class='comment'># describe the overall triangle as a sequence of heights
</span>  <span class='id rise_seq'>rise_seq</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='int'>1</span><span class='op'>..</span><span class='id span'>span</span><span class='rparen'>)</span><span class='period'>.</span><span class='id to_a'>to_a</span>
  <span class='id fall_seq'>fall_seq</span> <span class='op'>=</span> <span class='id rise_seq'>rise_seq</span><span class='period'>.</span><span class='id reverse'>reverse</span>

  <span class='id heights'>heights</span> <span class='op'>=</span> <span class='id rise_seq'>rise_seq</span>
  <span class='id heights'>heights</span> <span class='op'>&lt;&lt;</span> <span class='id peak'>peak</span> <span class='kw'>if</span> <span class='id peak'>peak</span> <span class='op'>&gt;</span> <span class='int'>0</span>
  <span class='id heights'>heights</span><span class='period'>.</span><span class='id concat'>concat</span> <span class='id fall_seq'>fall_seq</span>

  <span class='comment'># apply the heights
</span>  <span class='id maintain_focus'>maintain_focus</span> <span class='kw'>do</span>
    <span class='id each_column'>each_column</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id col'>col</span><span class='op'>|</span>
      <span class='kw'>if</span> <span class='id h'>h</span> <span class='op'>=</span> <span class='id heights'>heights</span><span class='period'>.</span><span class='id shift'>shift</span>
        <span class='id col'>col</span><span class='period'>.</span><span class='id length'>length</span> <span class='op'>=</span> <span class='id h'>h</span>
        <span class='id col'>col</span><span class='period'>.</span><span class='id layout'>layout</span> <span class='op'>=</span> <span class='symbol'>:default</span>
      <span class='kw'>end</span>
    <span class='kw'>end</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <p class="signature " id="arrange_in_grid-instance_method">
  
    - (<tt><a href="../Object.html" title="Object (class)">Object</a></tt>) <strong>arrange_in_grid</strong>(max_clients_per_column = nil) 
  

  
</p><div class="docstring">
  <div class="discussion">
    <p>
Arranges the clients in this view, while maintaining their relative order,
in a (at best) square grid.
</p>


  </div>
</div>
<div class="tags">
  
</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/rumai/wm.rb', line 885</span>

<span class='kw'>def</span> <span class='id arrange_in_grid'>arrange_in_grid</span> <span class='id max_clients_per_column'>max_clients_per_column</span> <span class='op'>=</span> <span class='kw'>nil</span>
  <span class='comment'># compute client distribution
</span>  <span class='kw'>unless</span> <span class='id max_clients_per_column'>max_clients_per_column</span>
    <span class='id num_clients'>num_clients</span> <span class='op'>=</span> <span class='id num_managed_clients'>num_managed_clients</span>
    <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id num_clients'>num_clients</span> <span class='op'>&gt;</span> <span class='int'>0</span>

    <span class='id num_columns'>num_columns</span> <span class='op'>=</span> <span class='const'>Math</span><span class='period'>.</span><span class='id sqrt'>sqrt</span><span class='lparen'>(</span><span class='id num_clients'>num_clients</span><span class='rparen'>)</span>
    <span class='id max_clients_per_column'>max_clients_per_column</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id num_clients'>num_clients</span> <span class='op'>/</span> <span class='id num_columns'>num_columns</span><span class='rparen'>)</span><span class='period'>.</span><span class='id round'>round</span>
  <span class='kw'>end</span>

  <span class='kw'>return</span> <span class='kw'>if</span> <span class='id max_clients_per_column'>max_clients_per_column</span> <span class='op'>&lt;</span> <span class='int'>1</span>

  <span class='comment'># apply the distribution
</span>  <span class='id maintain_focus'>maintain_focus</span> <span class='kw'>do</span>
    <span class='id each_column'>each_column</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id a'>a</span><span class='op'>|</span>
      <span class='id a'>a</span><span class='period'>.</span><span class='id length'>length</span> <span class='op'>=</span> <span class='id max_clients_per_column'>max_clients_per_column</span>
      <span class='id a'>a</span><span class='period'>.</span><span class='id layout'>layout</span> <span class='op'>=</span> <span class='symbol'>:default</span>
    <span class='kw'>end</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <p class="signature " id="arrange_in_stacks-instance_method">
  
    - (<tt><a href="../Object.html" title="Object (class)">Object</a></tt>) <strong>arrange_in_stacks</strong>(num_stacks) 
  

  
</p><div class="docstring">
  <div class="discussion">
    <p>
Arranges the clients in this view, while maintaining their relative order,
in the given number of columns.
</p>


  </div>
</div>
<div class="tags">
  
</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/rumai/wm.rb', line 910</span>

<span class='kw'>def</span> <span class='id arrange_in_stacks'>arrange_in_stacks</span> <span class='id num_stacks'>num_stacks</span>
  <span class='kw'>return</span> <span class='kw'>if</span> <span class='id num_stacks'>num_stacks</span> <span class='op'>&lt;</span> <span class='int'>1</span>

  <span class='comment'># compute client distribution
</span>  <span class='id num_clients'>num_clients</span> <span class='op'>=</span> <span class='id num_managed_clients'>num_managed_clients</span>
  <span class='kw'>return</span> <span class='kw'>unless</span> <span class='id num_clients'>num_clients</span> <span class='op'>&gt;</span> <span class='int'>0</span>

  <span class='id stack_length'>stack_length</span> <span class='op'>=</span> <span class='id num_clients'>num_clients</span> <span class='op'>/</span> <span class='id num_stacks'>num_stacks</span>
  <span class='kw'>return</span> <span class='kw'>if</span> <span class='id stack_length'>stack_length</span> <span class='op'>&lt;</span> <span class='int'>1</span>

  <span class='comment'># apply the distribution
</span>  <span class='id maintain_focus'>maintain_focus</span> <span class='kw'>do</span>
    <span class='id each_column'>each_column</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id a'>a</span><span class='op'>|</span>
      <span class='id a'>a</span><span class='period'>.</span><span class='id length'>length</span> <span class='op'>=</span> <span class='id stack_length'>stack_length</span>
      <span class='id a'>a</span><span class='period'>.</span><span class='id layout'>layout</span> <span class='op'>=</span> <span class='symbol'>:stack</span>
    <span class='kw'>end</span>

    <span class='id squeeze_columns'>squeeze_columns</span> <span class='id num_stacks'>num_stacks</span><span class='op'>-</span><span class='int'>1</span><span class='op'>..</span><span class='op'>-</span><span class='int'>1</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <p class="signature " id="chain-instance_method">
  
    - (<tt><a href="../Object.html" title="Object (class)">Object</a></tt>) <strong>chain</strong> 
  

  
</p><div class="docstring">
  <div class="discussion">
    <p>
Returns a list of all views.
</p>


  </div>
</div>
<div class="tags">
  
</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


735
736
737</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/rumai/wm.rb', line 735</span>

<span class='kw'>def</span> <span class='id chain'>chain</span>
  <span class='const'>Rumai</span><span class='period'>.</span><span class='id views'>views</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <p class="signature " id="client_ids-instance_method">
  
    - (<tt><a href="../Object.html" title="Object (class)">Object</a></tt>) <strong>client_ids</strong>(area_id = '\S+') 
  

  
</p><div class="docstring">
  <div class="discussion">
    <p>
Returns the IDs of the clients contained in the given area within this
view.
</p>


  </div>
</div>
<div class="tags">
  
</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


745
746
747</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/rumai/wm.rb', line 745</span>

<span class='kw'>def</span> <span class='id client_ids'>client_ids</span> <span class='id area_id'>area_id</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>\S+</span><span class='tstring_end'>'</span></span>
  <span class='id manifest'>manifest</span><span class='period'>.</span><span class='id scan'>scan</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^</span><span class='embexpr_beg'>#{</span><span class='id area_id'>area_id</span><span class='rbrace'>}</span><span class='tstring_content'> (0x\S+)</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id flatten'>flatten</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <p class="signature " id="columns-instance_method">
  
    - (<tt><a href="../Object.html" title="Object (class)">Object</a></tt>) <strong>columns</strong> 
  

  
    <span class="aliases">Also known as:
    <span class="names"><span id='managed_areas-instance_method'>managed_areas</span></span>
    </span>
  
</p><div class="docstring">
  <div class="discussion">
    <p>
Returns all columns (managed areas) in this view.
</p>


  </div>
</div>
<div class="tags">
  
</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


825
826
827</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/rumai/wm.rb', line 825</span>

<span class='kw'>def</span> <span class='id columns'>columns</span>
  <span class='id areas'>areas</span><span class='lbracket'>[</span><span class='int'>1</span><span class='op'>..</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <p class="signature " id="each-instance_method">
  
    - (<tt><a href="../Object.html" title="Object (class)">Object</a></tt>) <strong>each</strong>(&amp;block) 
  

  
</p><div class="docstring">
  <div class="discussion">
    <p>
Iterates through each area in this view.
</p>


  </div>
</div>
<div class="tags">
  
</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


754
755
756</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/rumai/wm.rb', line 754</span>

<span class='kw'>def</span> <span class='id each'>each</span> <span class='op'>&amp;</span><span class='id block'>block</span>
  <span class='id areas'>areas</span><span class='period'>.</span><span class='id each'>each</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id block'>block</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <p class="signature " id="each_column-instance_method">
  
    - (<tt><a href="../Object.html" title="Object (class)">Object</a></tt>) <strong>each_column</strong>(starting_column_id = 1) 
  

  
    <span class="aliases">Also known as:
    <span class="names"><span id='each_managed_area-instance_method'>each_managed_area</span></span>
    </span>
  
</p><div class="docstring">
  <div class="discussion">
    <p>
Resiliently iterates through possibly destructive changes to each column.
That is, if the given block creates new columns, then those will also be
processed in the iteration.
</p>


  </div>
</div>
<div class="tags">
  
</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


836
837
838
839
840
841
842
843
844
845
846
847
848
849</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/rumai/wm.rb', line 836</span>

<span class='kw'>def</span> <span class='id each_column'>each_column</span> <span class='id starting_column_id'>starting_column_id</span> <span class='op'>=</span> <span class='int'>1</span>
  <span class='id i'>i</span> <span class='op'>=</span> <span class='id starting_column_id'>starting_column_id</span>
  <span class='id loop'>loop</span> <span class='kw'>do</span>
    <span class='id a'>a</span> <span class='op'>=</span> <span class='const'>Area</span><span class='period'>.</span><span class='id new'>new</span> <span class='id i'>i</span><span class='comma'>,</span> <span class='kw'>self</span>

    <span class='kw'>if</span> <span class='id a'>a</span><span class='period'>.</span><span class='id exist?'>exist?</span>
      <span class='kw'>yield</span> <span class='id a'>a</span>
    <span class='kw'>else</span>
      <span class='kw'>break</span>
    <span class='kw'>end</span>

    <span class='id i'>i</span> <span class='op'>+=</span> <span class='int'>1</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <p class="signature " id="floating_area-instance_method">
  
    - (<tt><a href="../Object.html" title="Object (class)">Object</a></tt>) <strong>floating_area</strong> 
  

  
</p><div class="docstring">
  <div class="discussion">
    <p>
Returns the floating area of this view.
</p>


  </div>
</div>
<div class="tags">
  
</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


818
819
820</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/rumai/wm.rb', line 818</span>

<span class='kw'>def</span> <span class='id floating_area'>floating_area</span>
  <span class='const'>Area</span><span class='period'>.</span><span class='id floating'>floating</span> <span class='kw'>self</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <p class="signature " id="focus-instance_method">
  
    - (<tt><a href="../Object.html" title="Object (class)">Object</a></tt>) <strong>focus</strong> 
  

  
</p><div class="docstring">
  <div class="discussion">
    <p>
Focuses this view.
</p>


  </div>
</div>
<div class="tags">
  
</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


726
727
728</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/rumai/wm.rb', line 726</span>

<span class='kw'>def</span> <span class='id focus'>focus</span>
  <span class='const'>IXP_FS_ROOT</span><span class='period'>.</span><span class='id ctl'>ctl</span><span class='period'>.</span><span class='id write'>write</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>view </span><span class='embexpr_beg'>#{</span><span class='ivar'>@id</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <p class="signature " id="manifest-instance_method">
  
    - (<tt><a href="../Object.html" title="Object (class)">Object</a></tt>) <strong>manifest</strong> 
  

  
</p><div class="docstring">
  <div class="discussion">
    <p>
Returns the manifest of all areas and clients in this view.
</p>


  </div>
</div>
<div class="tags">
  
</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


769
770
771</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/rumai/wm.rb', line 769</span>

<span class='kw'>def</span> <span class='id manifest'>manifest</span>
  <span class='id index'>index</span><span class='period'>.</span><span class='id read'>read</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <p class="signature " id="select-instance_method">
  
    - (<tt><a href="../Object.html" title="Object (class)">Object</a></tt>) <strong>select</strong>(direction) 
  

  
</p><div class="docstring">
  <div class="discussion">
    <p>
Moves the focus from the current client in the given direction.
</p>


  </div>
</div>
<div class="tags">
  
</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


776
777
778</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/rumai/wm.rb', line 776</span>

<span class='kw'>def</span> <span class='id select'>select</span> <span class='id direction'>direction</span>
  <span class='id ctl'>ctl</span><span class='period'>.</span><span class='id write'>write</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>select </span><span class='embexpr_beg'>#{</span><span class='id direction'>direction</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
  </div>

</div>
    
    <div id="footer">
  Generated on Mon Mar 22 22:23:55 2010 by 
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool">yard</a>
  0.5.4 (ruby-1.9.1).
</div>

  </body>
</html>