Sophie

Sophie

distrib > Mandriva > 2011.0 > x86_64 > by-pkgid > e4e5aca55b6d7244e6bae95bf4fde3ca > files > 150

lib64edelib-devel-2.0-1.x86_64.rpm

<!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">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>edelib: edelib/TableBase.h Source File</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />



</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">edelib
   &#160;<span id="projectnumber">2.0.0</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.6.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="headertitle">
<div class="title">edelib/TableBase.h</div>  </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//</span>
<a name="l00002"></a>00002 <span class="comment">// TableBase -- A table widget</span>
<a name="l00003"></a>00003 <span class="comment">//</span>
<a name="l00004"></a>00004 <span class="comment">// Copyright 2002 by Greg Ercolano.</span>
<a name="l00005"></a>00005 <span class="comment">// Copyright (c) 2004 O&#39;ksi&#39;D</span>
<a name="l00006"></a>00006 <span class="comment">//</span>
<a name="l00007"></a>00007 <span class="comment">// This library is free software; you can redistribute it and/or</span>
<a name="l00008"></a>00008 <span class="comment">// modify it under the terms of the GNU Library General Public</span>
<a name="l00009"></a>00009 <span class="comment">// License as published by the Free Software Foundation; either</span>
<a name="l00010"></a>00010 <span class="comment">// version 2 of the License, or (at your option) any later version.</span>
<a name="l00011"></a>00011 <span class="comment">//</span>
<a name="l00012"></a>00012 <span class="comment">// This library is distributed in the hope that it will be useful,</span>
<a name="l00013"></a>00013 <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00014"></a>00014 <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
<a name="l00015"></a>00015 <span class="comment">// Library General Public License for more details.</span>
<a name="l00016"></a>00016 <span class="comment">//</span>
<a name="l00017"></a>00017 <span class="comment">// You should have received a copy of the GNU Library General Public</span>
<a name="l00018"></a>00018 <span class="comment">// License along with this library; if not, write to the Free Software</span>
<a name="l00019"></a>00019 <span class="comment">// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307</span>
<a name="l00020"></a>00020 <span class="comment">// USA.</span>
<a name="l00021"></a>00021 <span class="comment">//</span>
<a name="l00022"></a>00022 <span class="comment">// Please report all bugs and problems to &quot;erco at seriss dot com&quot;.</span>
<a name="l00023"></a>00023 <span class="comment">//</span>
<a name="l00024"></a>00024 <span class="comment">// TODO:</span>
<a name="l00025"></a>00025 <span class="comment">//        o Auto scroll during dragged selection</span>
<a name="l00026"></a>00026 <span class="comment">//        o Keyboard navigation (up/down/left/right arrow)</span>
<a name="l00027"></a>00027 <span class="comment">//</span>
<a name="l00028"></a>00028 
<a name="l00029"></a>00029 <span class="preprocessor">#ifndef __EDELIB_TABLEBASE_H__</span>
<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#define __EDELIB_TABLEBASE_H__</span>
<a name="l00031"></a>00031 <span class="preprocessor"></span>
<a name="l00032"></a>00032 <span class="preprocessor">#include &quot;edelib-global.h&quot;</span>
<a name="l00033"></a>00033 
<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;sys/types.h&gt;</span>
<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;string.h&gt;</span>                             <span class="comment">// memcpy</span>
<a name="l00036"></a>00036 
<a name="l00037"></a>00037 <span class="preprocessor">#ifdef _WIN32</span>
<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor"># include &lt;malloc.h&gt;</span>                    <span class="comment">// WINDOWS: malloc/realloc</span>
<a name="l00039"></a>00039 <span class="preprocessor">#else</span>
<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor"># include &lt;stdlib.h&gt;</span>                    <span class="comment">// UNIX: malloc/realloc</span>
<a name="l00041"></a>00041 <span class="preprocessor">#endif</span>
<a name="l00042"></a>00042 <span class="preprocessor"></span>
<a name="l00043"></a>00043 <span class="preprocessor">#include &lt;FL/Fl.H&gt;</span>
<a name="l00044"></a>00044 <span class="preprocessor">#include &lt;FL/Fl_Group.H&gt;</span>
<a name="l00045"></a>00045 <span class="preprocessor">#include &lt;FL/Fl_Scroll.H&gt;</span>
<a name="l00046"></a>00046 <span class="preprocessor">#include &lt;FL/Fl_Box.H&gt;</span>
<a name="l00047"></a>00047 <span class="preprocessor">#include &lt;FL/Fl_Scrollbar.H&gt;</span>
<a name="l00048"></a>00048 
<a name="l00049"></a>00049 EDELIB_NS_BEGIN
<a name="l00050"></a>00050 
<a name="l00166"></a><a class="code" href="classedelib_1_1TableBase.html">00166</a> <span class="keyword">class </span>EDELIB_API <a class="code" href="classedelib_1_1TableBase.html" title="A base class for table widgets.">TableBase</a> : <span class="keyword">public</span> Fl_Group {
<a name="l00167"></a>00167 <span class="keyword">public</span>:
<a name="l00172"></a><a class="code" href="classedelib_1_1TableBase.html#a1026825877324847ba9b3c47f8dbe164">00172</a>         <span class="keyword">enum</span> <a class="code" href="classedelib_1_1TableBase.html#a1026825877324847ba9b3c47f8dbe164" title="What happened in table callback.">TableContext</a> {
<a name="l00173"></a>00173                 CONTEXT_NONE       = 0,
<a name="l00174"></a><a class="code" href="classedelib_1_1TableBase.html#a1026825877324847ba9b3c47f8dbe164a7986da5cc1d2d9aa0674099741700e13">00174</a>                 CONTEXT_STARTPAGE  = 0x01,      
<a name="l00175"></a><a class="code" href="classedelib_1_1TableBase.html#a1026825877324847ba9b3c47f8dbe164a7b6b97fc5efb11d469eed0fb4af1ba97">00175</a>                 CONTEXT_ENDPAGE    = 0x02,      
<a name="l00176"></a><a class="code" href="classedelib_1_1TableBase.html#a1026825877324847ba9b3c47f8dbe164a80f02b0970bdd7898814db7357e4ed25">00176</a>                 CONTEXT_ROW_HEADER = 0x04,      
<a name="l00177"></a><a class="code" href="classedelib_1_1TableBase.html#a1026825877324847ba9b3c47f8dbe164acfa2b41e08872a399aa50f10ba2f9a90">00177</a>                 CONTEXT_COL_HEADER = 0x08,      
<a name="l00178"></a><a class="code" href="classedelib_1_1TableBase.html#a1026825877324847ba9b3c47f8dbe164a7976b0a322b18c3a7c6180dbe64f22ee">00178</a>                 CONTEXT_CELL       = 0x10,      
<a name="l00179"></a><a class="code" href="classedelib_1_1TableBase.html#a1026825877324847ba9b3c47f8dbe164ae733a53ae1a5f138cf00af81151e2010">00179</a>                 CONTEXT_TABLE      = 0x20,      
<a name="l00180"></a><a class="code" href="classedelib_1_1TableBase.html#a1026825877324847ba9b3c47f8dbe164aa8e5cda2b23693a4084f6580a3833cc3">00180</a>                 CONTEXT_RC_RESIZE  = 0x40       
<a name="l00181"></a>00181         };
<a name="l00182"></a>00182 
<a name="l00183"></a>00183 <span class="keyword">private</span>:
<a name="l00184"></a>00184         <span class="keywordtype">int</span> _rows, _cols,                       <span class="comment">// total rows/cols</span>
<a name="l00185"></a>00185                 _row_header_w,                  <span class="comment">// width of row header</span>
<a name="l00186"></a>00186                 _col_header_h,                  <span class="comment">// height of column header</span>
<a name="l00187"></a>00187                 _row_position,                  <span class="comment">// last row_position set (not necessarily == toprow!)</span>
<a name="l00188"></a>00188                 _col_position;                  <span class="comment">// last col_position set (not necessarily == leftcol!)</span>
<a name="l00189"></a>00189 
<a name="l00190"></a>00190         <span class="keywordtype">char</span> _row_header,                       <span class="comment">// row header enabled?</span>
<a name="l00191"></a>00191                  _col_header,                   <span class="comment">// col header enabled?</span>
<a name="l00192"></a>00192                  _row_resize,                   <span class="comment">// row resizing enabled?</span>
<a name="l00193"></a>00193                  _col_resize;                   <span class="comment">// col resizing enabled?</span>
<a name="l00194"></a>00194         <span class="keywordtype">int</span>
<a name="l00195"></a>00195                  _row_resize_min,               <span class="comment">// row minimum resizing height (default=1)</span>
<a name="l00196"></a>00196                  _col_resize_min;               <span class="comment">// col minimum resizing width (default=1)</span>
<a name="l00197"></a>00197 
<a name="l00198"></a>00198         <span class="comment">// OPTIMIZATION: partial row/column redraw variables</span>
<a name="l00199"></a>00199         <span class="keywordtype">int</span> _redraw_toprow, _redraw_botrow,
<a name="l00200"></a>00200                 _redraw_leftcol, _redraw_rightcol;
<a name="l00201"></a>00201 
<a name="l00202"></a>00202         Fl_Color _row_header_color,
<a name="l00203"></a>00203                          _col_header_color;
<a name="l00204"></a>00204 
<a name="l00205"></a>00205         <span class="keywordtype">int</span> _auto_drag;
<a name="l00206"></a>00206         <span class="keywordtype">int</span> _selecting;
<a name="l00207"></a>00207 
<a name="l00212"></a>00212         <span class="keyword">class </span>IntVector {
<a name="l00213"></a>00213                 <span class="keyword">private</span>:
<a name="l00214"></a>00214                         <span class="keywordtype">int</span> *arr;
<a name="l00215"></a>00215                         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _size;
<a name="l00216"></a>00216 
<a name="l00217"></a>00217                         <span class="keywordtype">void</span> init() { arr = NULL; _size = 0; }
<a name="l00218"></a>00218                         <span class="keywordtype">void</span> copy(<span class="keywordtype">int</span> *newarr, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> newsize) { size(newsize); memcpy(arr, newarr, newsize * <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>)); }
<a name="l00219"></a>00219                 <span class="keyword">public</span>:
<a name="l00221"></a>00221                         IntVector() { init(); }
<a name="l00223"></a>00223                         ~IntVector() { <span class="keywordflow">if</span> ( arr ) free(arr); arr = NULL; }
<a name="l00225"></a>00225                         IntVector(IntVector&amp;o) { init(); copy(o.arr, o._size); }
<a name="l00227"></a>00227                         IntVector&amp; operator=(IntVector&amp;o) { init(); copy(o.arr, o._size); <span class="keywordflow">return</span>(*<span class="keyword">this</span>); }
<a name="l00229"></a>00229                         <span class="keywordtype">int</span> operator[](<span class="keywordtype">int</span> x)<span class="keyword"> const </span>{ <span class="keywordflow">return</span>(arr[x]); }
<a name="l00231"></a>00231                         <span class="keywordtype">int</span>&amp; operator[](<span class="keywordtype">int</span> x) { <span class="keywordflow">return</span>(arr[x]); }
<a name="l00233"></a>00233                         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size() { <span class="keywordflow">return</span>(_size); }
<a name="l00235"></a>00235                         <span class="keywordtype">void</span> size(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count) {
<a name="l00236"></a>00236                                 <span class="keywordflow">if</span> ( count != _size )
<a name="l00237"></a>00237                                 { arr = (<span class="keywordtype">int</span>*)realloc(arr, count * <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>)); _size = count; }
<a name="l00238"></a>00238                         }
<a name="l00240"></a>00240                         <span class="keywordtype">int</span> pop_back() { <span class="keywordtype">int</span> tmp = arr[_size-1]; _size--; <span class="keywordflow">return</span>(tmp); }
<a name="l00242"></a>00242                         <span class="keywordtype">void</span> push_back(<span class="keywordtype">int</span> val) { <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x = _size; size(_size+1); arr[x] = val; }
<a name="l00244"></a>00244                         <span class="keywordtype">int</span> back() { <span class="keywordflow">return</span>(arr[_size-1]); }
<a name="l00245"></a>00245         };
<a name="l00246"></a>00246 
<a name="l00247"></a>00247         IntVector
<a name="l00248"></a>00248                 _colwidths,                             <span class="comment">// column widths in pixels</span>
<a name="l00249"></a>00249                 _rowheights;                    <span class="comment">// row heights in pixels</span>
<a name="l00250"></a>00250 
<a name="l00251"></a>00251         Fl_Cursor _last_cursor;         <span class="comment">// last mouse cursor before changed to &#39;resize&#39; cursor</span>
<a name="l00252"></a>00252 
<a name="l00253"></a>00253         <span class="comment">// EVENT CALLBACK DATA</span>
<a name="l00254"></a>00254         TableContext _callback_context;         <span class="comment">// event context</span>
<a name="l00255"></a>00255         <span class="keywordtype">int</span> _callback_row, _callback_col;       <span class="comment">// event row/col</span>
<a name="l00256"></a>00256 
<a name="l00257"></a>00257         <span class="comment">// handle() state variables.</span>
<a name="l00258"></a>00258         <span class="comment">//        Put here instead of local statics in handle(), so more</span>
<a name="l00259"></a>00259         <span class="comment">//        than one TableBase can exist without crosstalk between them.</span>
<a name="l00260"></a>00260         <span class="comment">//</span>
<a name="l00261"></a>00261         <span class="keywordtype">int</span> _resizing_col,                                      <span class="comment">// column being dragged</span>
<a name="l00262"></a>00262                 _resizing_row,                                  <span class="comment">// row being dragged</span>
<a name="l00263"></a>00263                 _dragging_x,                                    <span class="comment">// starting x position for horiz drag</span>
<a name="l00264"></a>00264                 _dragging_y,                                    <span class="comment">// starting y position for vert drag</span>
<a name="l00265"></a>00265                 _last_row;                                              <span class="comment">// last row we FL_PUSH&#39;ed</span>
<a name="l00266"></a>00266 
<a name="l00267"></a>00267         <span class="comment">// Redraw single cell</span>
<a name="l00268"></a>00268         <span class="keywordtype">void</span> _redraw_cell(TableContext context, <span class="keywordtype">int</span> R, <span class="keywordtype">int</span> C);
<a name="l00269"></a>00269 
<a name="l00270"></a>00270         <span class="keywordtype">void</span> _start_auto_drag();
<a name="l00271"></a>00271         <span class="keywordtype">void</span> _stop_auto_drag();
<a name="l00272"></a>00272         <span class="keywordtype">void</span> _auto_drag_cb();
<a name="l00273"></a>00273         <span class="keyword">static</span> <span class="keywordtype">void</span> _auto_drag_cb2(<span class="keywordtype">void</span> *d);
<a name="l00274"></a>00274 
<a name="l00275"></a>00275 
<a name="l00276"></a>00276 <span class="keyword">protected</span>:
<a name="l00277"></a>00277 <span class="preprocessor">#ifndef SKIP_DOCS</span>
<a name="l00278"></a>00278 <span class="preprocessor"></span>        <span class="keyword">enum</span> ResizeFlag {
<a name="l00279"></a>00279                 RESIZE_NONE              = 0,
<a name="l00280"></a>00280                 RESIZE_COL_LEFT  = 1,
<a name="l00281"></a>00281                 RESIZE_COL_RIGHT = 2,
<a name="l00282"></a>00282                 RESIZE_ROW_ABOVE = 3,
<a name="l00283"></a>00283                 RESIZE_ROW_BELOW = 4
<a name="l00284"></a>00284         };
<a name="l00285"></a>00285 
<a name="l00286"></a>00286         <span class="keywordtype">int</span> table_w, table_h;                                           <span class="comment">// table&#39;s virtual size (in pixels)</span>
<a name="l00287"></a>00287         <span class="keywordtype">int</span> toprow, botrow,                                                     <span class="comment">// four corners of viewable table</span>
<a name="l00288"></a>00288                 leftcol, rightcol;
<a name="l00289"></a>00289 
<a name="l00290"></a>00290         <span class="comment">// selection</span>
<a name="l00291"></a>00291         <span class="keywordtype">int</span> current_row, current_col;
<a name="l00292"></a>00292         <span class="keywordtype">int</span> select_row, select_col;
<a name="l00293"></a>00293 
<a name="l00294"></a>00294         <span class="comment">// OPTIMIZATION: Precomputed scroll positions for the toprow/leftcol</span>
<a name="l00295"></a>00295         <span class="keywordtype">int</span> toprow_scrollpos,
<a name="l00296"></a>00296                 leftcol_scrollpos;
<a name="l00297"></a>00297 
<a name="l00298"></a>00298         <span class="comment">// Dimensions</span>
<a name="l00299"></a>00299         <span class="keywordtype">int</span> tix, tiy, tiw, tih,                                         <span class="comment">// data table inner dimension xywh</span>
<a name="l00300"></a>00300                 tox, toy, tow, toh,                                             <span class="comment">// data table outer dimension xywh</span>
<a name="l00301"></a>00301                 wix, wiy, wiw, wih;                                             <span class="comment">// widget inner dimension xywh</span>
<a name="l00302"></a>00302 
<a name="l00303"></a>00303         Fl_Scroll *table;                                                       <span class="comment">// container for child fltk widgets (if any)</span>
<a name="l00304"></a>00304         Fl_Scrollbar *vscrollbar,                                       <span class="comment">// vertical scrollbar</span>
<a name="l00305"></a>00305                                  *hscrollbar;                                   <span class="comment">// horizontal scrollbar</span>
<a name="l00306"></a>00306 
<a name="l00307"></a>00307         <span class="comment">// Fltk</span>
<a name="l00308"></a>00308         <span class="keywordtype">int</span> handle(<span class="keywordtype">int</span> e);                                                      <span class="comment">// fltk handle() override</span>
<a name="l00309"></a>00309 
<a name="l00310"></a>00310         <span class="comment">// Class maintenance</span>
<a name="l00311"></a>00311         <span class="keywordtype">void</span> recalc_dimensions();
<a name="l00312"></a>00312         <span class="keywordtype">void</span> table_resized();                                           <span class="comment">// table resized; recalc</span>
<a name="l00313"></a>00313         <span class="keywordtype">void</span> table_scrolled();                                          <span class="comment">// table scrolled; recalc</span>
<a name="l00314"></a>00314         <span class="keywordtype">void</span> get_bounds(TableContext context,           <span class="comment">// return x/y/w/h bounds for context</span>
<a name="l00315"></a>00315                                         <span class="keywordtype">int</span> &amp;X, <span class="keywordtype">int</span> &amp;Y, <span class="keywordtype">int</span> &amp;W, <span class="keywordtype">int</span> &amp;H);
<a name="l00316"></a>00316         <span class="keywordtype">void</span> change_cursor(Fl_Cursor newcursor);        <span class="comment">// change mouse cursor to some other shape</span>
<a name="l00317"></a>00317         TableContext cursor2rowcol(<span class="keywordtype">int</span> &amp;R, <span class="keywordtype">int</span> &amp;C, ResizeFlag &amp;resizeflag);
<a name="l00318"></a>00318                                                                                                 <span class="comment">// find r/c given current x/y event</span>
<a name="l00319"></a>00319         <span class="keywordtype">int</span> find_cell(TableContext context,                     <span class="comment">// find cell&#39;s x/y/w/h given r/c</span>
<a name="l00320"></a>00320                                  <span class="keywordtype">int</span> R, <span class="keywordtype">int</span> C, <span class="keywordtype">int</span> &amp;X, <span class="keywordtype">int</span> &amp;Y, <span class="keywordtype">int</span> &amp;W, <span class="keywordtype">int</span> &amp;H);
<a name="l00321"></a>00321         <span class="keywordtype">int</span> row_col_clamp(TableContext context, <span class="keywordtype">int</span> &amp;R, <span class="keywordtype">int</span> &amp;C);
<a name="l00322"></a>00322                                                                                                 <span class="comment">// clamp r/c to known universe</span>
<a name="l00323"></a>00323 
<a name="l00324"></a>00324         <span class="comment">// Called to draw cells</span>
<a name="l00325"></a>00325         <span class="keyword">virtual</span> <span class="keywordtype">void</span> draw_cell(TableContext context, <span class="keywordtype">int</span> R=0, <span class="keywordtype">int</span> C=0, 
<a name="l00326"></a>00326                                                    <span class="keywordtype">int</span> X=0, <span class="keywordtype">int</span> Y=0, <span class="keywordtype">int</span> W=0, <span class="keywordtype">int</span> H=0)
<a name="l00327"></a>00327                 { }                                                                             <span class="comment">// overridden by deriving class</span>
<a name="l00328"></a>00328 
<a name="l00329"></a>00329         <span class="keywordtype">long</span> row_scroll_position(<span class="keywordtype">int</span> row);                      <span class="comment">// find scroll position of row (in pixels)</span>
<a name="l00330"></a>00330         <span class="keywordtype">long</span> col_scroll_position(<span class="keywordtype">int</span> col);                      <span class="comment">// find scroll position of col (in pixels)</span>
<a name="l00331"></a>00331 
<a name="l00332"></a>00332         <span class="keywordtype">int</span> is_fltk_container()                                         <span class="comment">// does table contain fltk widgets?</span>
<a name="l00333"></a>00333                 { <span class="keywordflow">return</span>( Fl_Group::children() &gt; 3 ); } <span class="comment">// (ie. more than box and 2 scrollbars?)</span>
<a name="l00334"></a>00334 
<a name="l00335"></a>00335         <span class="keyword">static</span> <span class="keywordtype">void</span> scroll_cb(Fl_Widget*,<span class="keywordtype">void</span>*);        <span class="comment">// h/v scrollbar callback</span>
<a name="l00336"></a>00336 
<a name="l00337"></a>00337         <span class="keywordtype">void</span> damage_zone(<span class="keywordtype">int</span> r1, <span class="keywordtype">int</span> c1, <span class="keywordtype">int</span> r2, <span class="keywordtype">int</span> c2, <span class="keywordtype">int</span> r3 = 0, <span class="keywordtype">int</span> c3 = 0);
<a name="l00338"></a>00338 
<a name="l00339"></a>00339         <span class="keywordtype">void</span> redraw_range(<span class="keywordtype">int</span> trow, <span class="keywordtype">int</span> brow, <span class="keywordtype">int</span> lcol, <span class="keywordtype">int</span> rcol) {
<a name="l00340"></a>00340                 <span class="keywordflow">if</span> ( _redraw_toprow == -1 ) {
<a name="l00341"></a>00341                         <span class="comment">// Initialize redraw range</span>
<a name="l00342"></a>00342                         _redraw_toprow = trow;
<a name="l00343"></a>00343                         _redraw_botrow = brow;
<a name="l00344"></a>00344                         _redraw_leftcol = lcol;
<a name="l00345"></a>00345                         _redraw_rightcol = rcol;
<a name="l00346"></a>00346                 } <span class="keywordflow">else</span> {
<a name="l00347"></a>00347                         <span class="comment">// Extend redraw range</span>
<a name="l00348"></a>00348                         <span class="keywordflow">if</span> ( trow &lt; _redraw_toprow ) _redraw_toprow = trow;
<a name="l00349"></a>00349                         <span class="keywordflow">if</span> ( brow &gt; _redraw_botrow ) _redraw_botrow = brow;
<a name="l00350"></a>00350                         <span class="keywordflow">if</span> ( lcol &lt; _redraw_leftcol ) _redraw_leftcol = lcol;
<a name="l00351"></a>00351                         <span class="keywordflow">if</span> ( rcol &gt; _redraw_rightcol ) _redraw_rightcol = rcol;
<a name="l00352"></a>00352                 }
<a name="l00353"></a>00353 
<a name="l00354"></a>00354                 <span class="comment">// Indicate partial redraw needed of some cells</span>
<a name="l00355"></a>00355                 damage(FL_DAMAGE_CHILD);
<a name="l00356"></a>00356         }
<a name="l00357"></a>00357 
<a name="l00358"></a>00358         <span class="comment">// TODO: maybe _redraw_cell() put protected directly?</span>
<a name="l00359"></a>00359         <span class="keywordtype">void</span> redraw_cell(TableContext context, <span class="keywordtype">int</span> R, <span class="keywordtype">int</span> C) { _redraw_cell(context, R, C); }
<a name="l00360"></a>00360 <span class="preprocessor">#endif</span>
<a name="l00361"></a>00361 <span class="preprocessor"></span>
<a name="l00362"></a>00362 <span class="keyword">public</span>:
<a name="l00367"></a>00367         TableBase(<span class="keywordtype">int</span> X, <span class="keywordtype">int</span> Y, <span class="keywordtype">int</span> W, <span class="keywordtype">int</span> H, <span class="keyword">const</span> <span class="keywordtype">char</span> *l=0);
<a name="l00368"></a>00368 
<a name="l00372"></a>00372         ~TableBase();
<a name="l00373"></a>00373 
<a name="l00377"></a><a class="code" href="classedelib_1_1TableBase.html#aae048282c7011eedc2e0492f6421ea73">00377</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#aae048282c7011eedc2e0492f6421ea73">clear</a>() { rows(0); cols(0); }
<a name="l00378"></a>00378 
<a name="l00383"></a><a class="code" href="classedelib_1_1TableBase.html#ac6923421fdbde14ad2029adf65e14e1a">00383</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#ac6923421fdbde14ad2029adf65e14e1a">table_box</a>(Fl_Boxtype val) { table-&gt;box(val); table_resized(); }
<a name="l00384"></a>00384 
<a name="l00388"></a><a class="code" href="classedelib_1_1TableBase.html#ac0c7c5ecd037b580c0e0967ff8474b81">00388</a>         <span class="keyword">inline</span> Fl_Boxtype <a class="code" href="classedelib_1_1TableBase.html#ac0c7c5ecd037b580c0e0967ff8474b81">table_box</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span>(table-&gt;box()); }
<a name="l00389"></a>00389 
<a name="l00393"></a>00393         <span class="keyword">virtual</span> <span class="keywordtype">void</span> rows(<span class="keywordtype">int</span> val);
<a name="l00394"></a>00394 
<a name="l00398"></a><a class="code" href="classedelib_1_1TableBase.html#a8db75abaedab913d9c6a593539fbbd3e">00398</a>         <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classedelib_1_1TableBase.html#a8db75abaedab913d9c6a593539fbbd3e">rows</a>() { <span class="keywordflow">return</span> _rows; }
<a name="l00399"></a>00399 
<a name="l00403"></a>00403         <span class="keyword">virtual</span> <span class="keywordtype">void</span> cols(<span class="keywordtype">int</span> val);
<a name="l00404"></a>00404 
<a name="l00408"></a><a class="code" href="classedelib_1_1TableBase.html#abc3ae4a5cdee42ffebdfc435b8035a86">00408</a>         <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classedelib_1_1TableBase.html#abc3ae4a5cdee42ffebdfc435b8035a86">cols</a>() { <span class="keywordflow">return</span> _cols; }
<a name="l00409"></a>00409 
<a name="l00417"></a><a class="code" href="classedelib_1_1TableBase.html#a4b5191ddfbd201da8a2e99b79fda5012">00417</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#a4b5191ddfbd201da8a2e99b79fda5012">visible_cells</a>(<span class="keywordtype">int</span>&amp; r1, <span class="keywordtype">int</span>&amp; r2, <span class="keywordtype">int</span>&amp; c1, <span class="keywordtype">int</span>&amp; c2) { r1 = toprow; r2 = botrow; c1 = leftcol; c2 = rightcol; }
<a name="l00418"></a>00418 
<a name="l00422"></a><a class="code" href="classedelib_1_1TableBase.html#a81484715608b46d31821f48302b9feef">00422</a>         <span class="keywordtype">int</span> <a class="code" href="classedelib_1_1TableBase.html#a81484715608b46d31821f48302b9feef">is_interactive_resize</a>() { <span class="keywordflow">return</span> (_resizing_row != -1 || _resizing_col != -1); }
<a name="l00423"></a>00423 
<a name="l00428"></a><a class="code" href="classedelib_1_1TableBase.html#ad04a01985d460b252b88eb1767ff5060">00428</a>         <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#ad04a01985d460b252b88eb1767ff5060">row_resize</a>(<span class="keywordtype">int</span> flag) { _row_resize = flag; }
<a name="l00429"></a>00429 
<a name="l00433"></a><a class="code" href="classedelib_1_1TableBase.html#a5fc73159a86725cfefca622ac7c687c1">00433</a>         <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classedelib_1_1TableBase.html#a5fc73159a86725cfefca622ac7c687c1">row_resize</a>() { <span class="keywordflow">return</span> _row_resize; }
<a name="l00434"></a>00434 
<a name="l00439"></a><a class="code" href="classedelib_1_1TableBase.html#a97a9b25061f6f6f9e56da4e559d8e7e8">00439</a>         <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#a97a9b25061f6f6f9e56da4e559d8e7e8">col_resize</a>(<span class="keywordtype">int</span> flag) { _col_resize = flag; }
<a name="l00440"></a>00440 
<a name="l00444"></a><a class="code" href="classedelib_1_1TableBase.html#a50647b930711ded90f2b17634f1be9c5">00444</a>         <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classedelib_1_1TableBase.html#a50647b930711ded90f2b17634f1be9c5">col_resize</a>() { <span class="keywordflow">return</span> _col_resize; }
<a name="l00445"></a>00445 
<a name="l00449"></a><a class="code" href="classedelib_1_1TableBase.html#aef476f2c10403fc1372f68c96affb470">00449</a>         <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#aef476f2c10403fc1372f68c96affb470">col_resize_min</a>(<span class="keywordtype">int</span> val) { _col_resize_min = ( val &lt; 1 ) ? 1 : val; }
<a name="l00450"></a>00450 
<a name="l00454"></a><a class="code" href="classedelib_1_1TableBase.html#a9632428d4428c4d81b4d526a6e841f0e">00454</a>         <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classedelib_1_1TableBase.html#a9632428d4428c4d81b4d526a6e841f0e">col_resize_min</a>() { <span class="keywordflow">return</span> _col_resize_min; }
<a name="l00455"></a>00455 
<a name="l00459"></a><a class="code" href="classedelib_1_1TableBase.html#a3ec0ffe03057fbc1258b96f941d051ec">00459</a>         <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#a3ec0ffe03057fbc1258b96f941d051ec">row_resize_min</a>(<span class="keywordtype">int</span> val) { _row_resize_min = ( val &lt; 1 ) ? 1 : val; }
<a name="l00460"></a>00460 
<a name="l00464"></a><a class="code" href="classedelib_1_1TableBase.html#a499937417387dccd1d4ef518f19ff202">00464</a>         <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classedelib_1_1TableBase.html#a499937417387dccd1d4ef518f19ff202">row_resize_min</a>()     { <span class="keywordflow">return</span> _row_resize_min; }
<a name="l00465"></a>00465 
<a name="l00470"></a><a class="code" href="classedelib_1_1TableBase.html#a302efbc285d3c7de92f248cf52b4546f">00470</a>         <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#a302efbc285d3c7de92f248cf52b4546f">row_header</a>(<span class="keywordtype">int</span> flag) { _row_header = flag; table_resized(); redraw(); }
<a name="l00471"></a>00471 
<a name="l00475"></a><a class="code" href="classedelib_1_1TableBase.html#a32077a08cdd181e77c21d985a02a27cb">00475</a>         <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classedelib_1_1TableBase.html#a32077a08cdd181e77c21d985a02a27cb">row_header</a>() { <span class="keywordflow">return</span> _row_header; }
<a name="l00476"></a>00476 
<a name="l00481"></a><a class="code" href="classedelib_1_1TableBase.html#ab4673f7a931cdf3e753b4b603c1b4d98">00481</a>         <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#ab4673f7a931cdf3e753b4b603c1b4d98">col_header</a>(<span class="keywordtype">int</span> flag) { _col_header = flag; table_resized(); redraw(); }
<a name="l00482"></a>00482 
<a name="l00486"></a><a class="code" href="classedelib_1_1TableBase.html#a3fdce3d751ecd575ef3bb53fbfde6a20">00486</a>         <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classedelib_1_1TableBase.html#a3fdce3d751ecd575ef3bb53fbfde6a20">col_header</a>() { <span class="keywordflow">return</span>(_col_header); }
<a name="l00487"></a>00487 
<a name="l00491"></a><a class="code" href="classedelib_1_1TableBase.html#a75ad271da21d5503f3c9c32cfbfa0f8c">00491</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#a75ad271da21d5503f3c9c32cfbfa0f8c">col_header_height</a>(<span class="keywordtype">int</span> height) { _col_header_h = height; table_resized(); redraw(); }
<a name="l00492"></a>00492 
<a name="l00496"></a><a class="code" href="classedelib_1_1TableBase.html#aad986593f847e64df3fa65989cb9b005">00496</a>         <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classedelib_1_1TableBase.html#aad986593f847e64df3fa65989cb9b005">col_header_height</a>() { <span class="keywordflow">return</span> _col_header_h; }
<a name="l00497"></a>00497 
<a name="l00501"></a><a class="code" href="classedelib_1_1TableBase.html#afe4bd79ad8150956df4d0d433af403ee">00501</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#afe4bd79ad8150956df4d0d433af403ee">row_header_width</a>(<span class="keywordtype">int</span> width) { _row_header_w = width; table_resized(); redraw(); }
<a name="l00502"></a>00502 
<a name="l00506"></a><a class="code" href="classedelib_1_1TableBase.html#a6cae8b6f9d7a9ebed2a59db4cd3b5b7a">00506</a>         <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classedelib_1_1TableBase.html#a6cae8b6f9d7a9ebed2a59db4cd3b5b7a">row_header_width</a>() { <span class="keywordflow">return</span> _row_header_w; }
<a name="l00507"></a>00507 
<a name="l00511"></a><a class="code" href="classedelib_1_1TableBase.html#a5131ae3e634a1922ca0fe0ee2646623b">00511</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#a5131ae3e634a1922ca0fe0ee2646623b">row_header_color</a>(Fl_Color val) { _row_header_color = val; redraw(); }
<a name="l00512"></a>00512 
<a name="l00516"></a><a class="code" href="classedelib_1_1TableBase.html#aa997f69301f207522c3cc4120781861f">00516</a>         <span class="keyword">inline</span> Fl_Color <a class="code" href="classedelib_1_1TableBase.html#aa997f69301f207522c3cc4120781861f">row_header_color</a>() { <span class="keywordflow">return</span> _row_header_color; }
<a name="l00517"></a>00517 
<a name="l00521"></a><a class="code" href="classedelib_1_1TableBase.html#a23f2006f7b30e3e6db2eb6a2c693b5dd">00521</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#a23f2006f7b30e3e6db2eb6a2c693b5dd">col_header_color</a>(Fl_Color val) { _col_header_color = val; redraw(); }
<a name="l00522"></a>00522 
<a name="l00526"></a><a class="code" href="classedelib_1_1TableBase.html#ac3c09bfb12210f2968c549792bc79bbf">00526</a>         <span class="keyword">inline</span> Fl_Color <a class="code" href="classedelib_1_1TableBase.html#ac3c09bfb12210f2968c549792bc79bbf">col_header_color</a>() { <span class="keywordflow">return</span> _col_header_color; }
<a name="l00527"></a>00527 
<a name="l00532"></a>00532         <span class="keywordtype">void</span> row_height(<span class="keywordtype">int</span> row, <span class="keywordtype">int</span> height);
<a name="l00533"></a>00533 
<a name="l00537"></a><a class="code" href="classedelib_1_1TableBase.html#a2c0262cb3d449dfdb9132988b5c822aa">00537</a>         <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classedelib_1_1TableBase.html#a2c0262cb3d449dfdb9132988b5c822aa">row_height</a>(<span class="keywordtype">int</span> row) { <span class="keywordflow">return</span> ((row&lt;0 || row&gt;=(<span class="keywordtype">int</span>)_rowheights.size()) ? 0 : _rowheights[row]); }
<a name="l00538"></a>00538 
<a name="l00543"></a>00543         <span class="keywordtype">void</span> col_width(<span class="keywordtype">int</span> col, <span class="keywordtype">int</span> width);
<a name="l00544"></a>00544 
<a name="l00548"></a><a class="code" href="classedelib_1_1TableBase.html#a30d62f6cbe73a2bd624135adf17a6d45">00548</a>         <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classedelib_1_1TableBase.html#a30d62f6cbe73a2bd624135adf17a6d45">col_width</a>(<span class="keywordtype">int</span> col) { <span class="keywordflow">return</span> ((col&lt;0 || col&gt;=(<span class="keywordtype">int</span>)_colwidths.size()) ? 0 : _colwidths[col]); }
<a name="l00549"></a>00549 
<a name="l00553"></a><a class="code" href="classedelib_1_1TableBase.html#ab2b65bb82376c2700421c33ba639732c">00553</a>         <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#ab2b65bb82376c2700421c33ba639732c">row_height_all</a>(<span class="keywordtype">int</span> height) { <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> r=0; r&lt;rows(); r++ ) row_height(r, height); }
<a name="l00554"></a>00554 
<a name="l00558"></a><a class="code" href="classedelib_1_1TableBase.html#abf1376bc69974cb9b6a263603f1ac8f7">00558</a>         <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#abf1376bc69974cb9b6a263603f1ac8f7">col_width_all</a>(<span class="keywordtype">int</span> width) { <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> c=0; c&lt;cols(); c++ ) col_width(c, width); }
<a name="l00559"></a>00559 
<a name="l00563"></a>00563         <span class="keywordtype">void</span> row_position(<span class="keywordtype">int</span> row);
<a name="l00564"></a>00564 
<a name="l00568"></a><a class="code" href="classedelib_1_1TableBase.html#a34b0488b0042fd72ff7ea2841184392d">00568</a>         <span class="keywordtype">int</span> <a class="code" href="classedelib_1_1TableBase.html#a34b0488b0042fd72ff7ea2841184392d">row_position</a>() { <span class="keywordflow">return</span> _row_position; }
<a name="l00569"></a>00569 
<a name="l00573"></a>00573         <span class="keywordtype">void</span> col_position(<span class="keywordtype">int</span> col);
<a name="l00574"></a>00574 
<a name="l00578"></a><a class="code" href="classedelib_1_1TableBase.html#aa2427ebc6290bc8b4a080f2778171127">00578</a>         <span class="keywordtype">int</span> <a class="code" href="classedelib_1_1TableBase.html#aa2427ebc6290bc8b4a080f2778171127">col_position</a>() { <span class="keywordflow">return</span> _col_position; }
<a name="l00579"></a>00579 
<a name="l00583"></a><a class="code" href="classedelib_1_1TableBase.html#aeec104237fde6e62c7cfbbf9552da813">00583</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#aeec104237fde6e62c7cfbbf9552da813">top_row</a>(<span class="keywordtype">int</span> row) { row_position(row); }
<a name="l00584"></a>00584 
<a name="l00588"></a><a class="code" href="classedelib_1_1TableBase.html#a7b6291391fac506498a88eaab6fd190b">00588</a>         <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classedelib_1_1TableBase.html#a7b6291391fac506498a88eaab6fd190b">top_row</a>() { <span class="keywordflow">return</span> row_position(); }
<a name="l00589"></a>00589 
<a name="l00593"></a>00593         <span class="keywordtype">int</span> is_selected(<span class="keywordtype">int</span> r, <span class="keywordtype">int</span> c);
<a name="l00594"></a>00594 
<a name="l00601"></a>00601         <span class="keywordtype">void</span> get_selection(<span class="keywordtype">int</span>&amp; s_top, <span class="keywordtype">int</span>&amp; s_left, <span class="keywordtype">int</span>&amp; s_bottom, <span class="keywordtype">int</span>&amp; s_right);
<a name="l00602"></a>00602 
<a name="l00609"></a>00609         <span class="keywordtype">void</span> set_selection(<span class="keywordtype">int</span> s_top, <span class="keywordtype">int</span> s_left, <span class="keywordtype">int</span> s_bottom, <span class="keywordtype">int</span> s_right);
<a name="l00610"></a>00610 
<a name="l00616"></a>00616         <span class="keywordtype">int</span> move_cursor(<span class="keywordtype">int</span> R, <span class="keywordtype">int</span> C);
<a name="l00617"></a>00617 
<a name="l00621"></a>00621         <span class="keywordtype">void</span> resize(<span class="keywordtype">int</span> X, <span class="keywordtype">int</span> Y, <span class="keywordtype">int</span> W, <span class="keywordtype">int</span> H);
<a name="l00622"></a>00622 
<a name="l00626"></a>00626         <span class="keywordtype">void</span> draw(<span class="keywordtype">void</span>);
<a name="l00627"></a>00627 
<a name="l00631"></a><a class="code" href="classedelib_1_1TableBase.html#af4c4c97aa08a7979bf4c2b27f56cb7bb">00631</a>         <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#af4c4c97aa08a7979bf4c2b27f56cb7bb">init_sizes</a>() { table-&gt;init_sizes(); table-&gt;redraw(); }
<a name="l00632"></a>00632 
<a name="l00636"></a><a class="code" href="classedelib_1_1TableBase.html#affe56bb479d74e9f6975f9ad3f2a107b">00636</a>         <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#affe56bb479d74e9f6975f9ad3f2a107b">add</a>(Fl_Widget&amp; widget) { table-&gt;add(widget); }
<a name="l00637"></a>00637 
<a name="l00641"></a><a class="code" href="classedelib_1_1TableBase.html#a8661184c017f323c0a41572b5117088c">00641</a>         <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#a8661184c017f323c0a41572b5117088c">add</a>(Fl_Widget* widget) { table-&gt;add(widget); }
<a name="l00642"></a>00642 
<a name="l00646"></a><a class="code" href="classedelib_1_1TableBase.html#ab10c725cef29d2470c509d53b48bc351">00646</a>         <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#ab10c725cef29d2470c509d53b48bc351">insert</a>(Fl_Widget&amp; widget, <span class="keywordtype">int</span> n) { table-&gt;insert(widget,n); }
<a name="l00647"></a>00647 
<a name="l00651"></a><a class="code" href="classedelib_1_1TableBase.html#a8e70b8334c5593d8de488ab683aa38c3">00651</a>         <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#a8e70b8334c5593d8de488ab683aa38c3">insert</a>(Fl_Widget&amp; widget1, Fl_Widget* widget2) { table-&gt;insert(widget1,widget2); }
<a name="l00652"></a>00652 
<a name="l00656"></a><a class="code" href="classedelib_1_1TableBase.html#ab7d568439331e45e6541742d184e7ed4">00656</a>         <span class="keywordtype">void</span> <span class="keyword">remove</span>(Fl_Widget&amp; widget) { table-&gt;remove(widget); }
<a name="l00657"></a>00657 
<a name="l00661"></a><a class="code" href="classedelib_1_1TableBase.html#ab0bdf5cca484fb2ba637c39384b27fb2">00661</a>         <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#ab0bdf5cca484fb2ba637c39384b27fb2">begin</a>() { table-&gt;begin(); }
<a name="l00662"></a>00662 
<a name="l00666"></a><a class="code" href="classedelib_1_1TableBase.html#aaf81d3fdaf258088d7692fa70cece087">00666</a>         <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#aaf81d3fdaf258088d7692fa70cece087">end</a>() {
<a name="l00667"></a>00667                 table-&gt;end();
<a name="l00668"></a>00668 
<a name="l00669"></a>00669                 <span class="comment">// HACK: Avoid showing Fl_Scroll; seems to erase screen</span>
<a name="l00670"></a>00670                 <span class="comment">//               causing unnecessary flicker, even if its box() is FL_NO_BOX.</span>
<a name="l00671"></a>00671                 <span class="comment">//</span>
<a name="l00672"></a>00672                 <span class="keywordflow">if</span> ( table-&gt;children() &gt; 2 ) 
<a name="l00673"></a>00673                         table-&gt;show();
<a name="l00674"></a>00674                 <span class="keywordflow">else</span> 
<a name="l00675"></a>00675                         table-&gt;hide();
<a name="l00676"></a>00676 
<a name="l00677"></a>00677                 Fl_Group::current((Fl_Group*)(Fl_Group::parent()));
<a name="l00678"></a>00678         }
<a name="l00679"></a>00679 
<a name="l00680"></a>00680 <span class="preprocessor">#ifndef SKIP_DOCS</span>
<a name="l00681"></a>00681 <span class="preprocessor"></span>        Fl_Widget * <span class="keyword">const</span> *array() { <span class="keywordflow">return</span> table-&gt;array(); }
<a name="l00682"></a>00682         Fl_Widget *child(<span class="keywordtype">int</span> n)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> table-&gt;child(n); }
<a name="l00683"></a>00683         <span class="keywordtype">int</span> children()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> table-&gt;children()-2; }    <span class="comment">// -2: skip Fl_Scroll&#39;s h/v scrollbar widgets</span>
<a name="l00684"></a>00684         <span class="keywordtype">int</span> find(<span class="keyword">const</span> Fl_Widget *widget)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> table-&gt;find(widget); }
<a name="l00685"></a>00685         <span class="keywordtype">int</span> find(<span class="keyword">const</span> Fl_Widget &amp;widget)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> table-&gt;find(widget); }
<a name="l00686"></a>00686 <span class="preprocessor">#endif</span>
<a name="l00687"></a>00687 <span class="preprocessor"></span>
<a name="l00692"></a><a class="code" href="classedelib_1_1TableBase.html#a00363101219cbad63f84d521f375d783">00692</a>         <span class="keywordtype">int</span> <a class="code" href="classedelib_1_1TableBase.html#a00363101219cbad63f84d521f375d783">callback_row</a>() { <span class="keywordflow">return</span> _callback_row; }
<a name="l00693"></a>00693 
<a name="l00698"></a><a class="code" href="classedelib_1_1TableBase.html#aa02812338364a05b228a339a20b12a08">00698</a>         <span class="keywordtype">int</span> <a class="code" href="classedelib_1_1TableBase.html#aa02812338364a05b228a339a20b12a08">callback_col</a>() { <span class="keywordflow">return</span> _callback_col; }
<a name="l00699"></a>00699 
<a name="l00703"></a><a class="code" href="classedelib_1_1TableBase.html#ad5ae00cf02d2cc719700c6d3c28fdbab">00703</a>         <a class="code" href="classedelib_1_1TableBase.html#a1026825877324847ba9b3c47f8dbe164" title="What happened in table callback.">TableContext</a> <a class="code" href="classedelib_1_1TableBase.html#ad5ae00cf02d2cc719700c6d3c28fdbab">callback_context</a>() { <span class="keywordflow">return</span> _callback_context; }
<a name="l00704"></a>00704 
<a name="l00708"></a><a class="code" href="classedelib_1_1TableBase.html#a3bc2a13d214f5901914dc62472b408b0">00708</a>         <span class="keywordtype">void</span> <a class="code" href="classedelib_1_1TableBase.html#a3bc2a13d214f5901914dc62472b408b0">do_callback</a>(<a class="code" href="classedelib_1_1TableBase.html#a1026825877324847ba9b3c47f8dbe164" title="What happened in table callback.">TableContext</a> context, <span class="keywordtype">int</span> row, <span class="keywordtype">int</span> col) {
<a name="l00709"></a>00709                 _callback_context = context;
<a name="l00710"></a>00710                 _callback_row = row;
<a name="l00711"></a>00711                 _callback_col = col;
<a name="l00712"></a>00712                 Fl_Widget::do_callback();
<a name="l00713"></a>00713         }
<a name="l00714"></a>00714 };
<a name="l00715"></a>00715 
<a name="l00716"></a>00716 EDELIB_NS_END
<a name="l00717"></a>00717 <span class="preprocessor">#endif</span>
</pre></div></div><!-- contents -->


<hr class="footer"/><address class="footer"><small>
Generated on Tue Jun 5 2012 17:49:02 for edelib by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.6.1
</small></address>

</body>
</html>