<!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> » <span class='title'><a href="../Rumai.html" title="Rumai (module)">Rumai</a></span> » <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>(&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'>></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'>></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'><<</span> <span class='id peak'>peak</span> <span class='kw'>if</span> <span class='id peak'>peak</span> <span class='op'>></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'>></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'><</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'><</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'>></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'><</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>(&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'>&</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'>&</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'>"</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'>"</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'>"</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'>"</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>