tablewindow.c

Go to the documentation of this file.
00001 
00002 /*  $Id: tablewindow.c 355 2005-01-11 22:48:55Z andreradke $    */
00003 
00004 /******************************************************************************
00005 
00006     UserLand Frontier(tm) -- High performance Web content management,
00007     object database, system-level and Internet scripting environment,
00008     including source code editing and debugging.
00009 
00010     Copyright (C) 1992-2004 UserLand Software, Inc.
00011 
00012     This program is free software; you can redistribute it and/or modify
00013     it under the terms of the GNU General Public License as published by
00014     the Free Software Foundation; either version 2 of the License, or
00015     (at your option) any later version.
00016 
00017     This program is distributed in the hope that it will be useful,
00018     but WITHOUT ANY WARRANTY; without even the implied warranty of
00019     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00020     GNU General Public License for more details.
00021 
00022     You should have received a copy of the GNU General Public License
00023     along with this program; if not, write to the Free Software
00024     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00025 
00026 ******************************************************************************/
00027 
00028  
00029 
00030 #include "frontier.h"
00031 #include "standard.h"
00032 
00033 #include "cursor.h"
00034 #include "memory.h"
00035 #include "file.h"
00036 #include "quickdraw.h"
00037 #include "strings.h"
00038 #include "kb.h"
00039 #include "mouse.h"
00040 #include "ops.h"
00041 #include "popup.h"
00042 #include "resources.h"
00043 #include "scrap.h"
00044 
00045 #include "scrollbar.h"
00046 #include "search.h"
00047 #include "frontierwindows.h"
00048 #include "windowlayout.h"
00049 #include "zoom.h"
00050 
00051 #include "shell.h"
00052 #include "shellhooks.h"
00053 #include "shellundo.h"
00054 #include "lang.h"
00055 #include "langexternal.h"
00056 #include "tableinternal.h"
00057 #include "tabledisplay.h"
00058 #include "tablestructure.h"
00059 #include "tableverbs.h"
00060 #include "cancoon.h"
00061 #include "opinternal.h"
00062 #include "opverbs.h"
00063 #include "claybrowser.h"
00064 #include "claybrowserstruc.h"
00065 //#include "browserverbs.h"
00066 #include "kernelverbdefs.h"
00067 
00068 
00069 // 5.0a25 dmb: wire off Zoom button
00070 #undef iconrectheight
00071 #undef iconrectwidth
00072 #define iconrectheight 0
00073 #define iconrectwidth 0
00074 
00075 
00076 WindowPtr tableformatswindow = nil;
00077 
00078 hdlwindowinfo tableformatswindowinfo = nil;
00079 
00080 hdltableformats tableformatsdata = nil;
00081 
00082 
00083 
00084 boolean tableverbsetglobals (void) {
00085     
00086     /*
00087     5.0b15 dmb: handle nil tableformatsdata
00088     */
00089 
00090     if (tableformatsdata == nil) {
00091         
00092         opsetoutline (nil);
00093 
00094         return (false);
00095         }
00096 
00097     opsetoutline ((**tableformatsdata).houtline); 
00098     
00099     outlinewindow = tableformatswindow;
00100     
00101     outlinewindowinfo = tableformatswindowinfo;
00102     
00103     if (outlinedata != nil)
00104         opeditsetglobals ();
00105 
00106     return (true);
00107     } /*tableverbsetglobals*/
00108 
00109 
00110 #define tabletopmargin 3
00111 
00112 
00113 static boolean tableverbresetrects (hdlwindowinfo hw) {
00114     
00115     register short scrollbarwidth;
00116     register hdltableformats hc = (hdltableformats) (**hw).hdata;
00117     hdloutlinerecord ho;
00118     Rect rcontent;
00119     Rect r;
00120     Rect tablerect, titlerect, wholerect;
00121     short msgheight;
00122     short titleheight = 12;
00123     #define seprectheight 4 /*height of rectangle separating titles from table content*/
00124     
00125     if (hc != nil) { // don't check outlinedata if tableformats aren't even attached yet
00126         
00127         ho = (**hc).houtline;
00128         
00129         if (ho == nil) // this emulates original return when outlinedata was nil
00130             return (false);
00131         
00132         if (isclaydisplay (hc))
00133             titleheight = 0;
00134         else
00135             titleheight = (**ho).defaultlineheight;
00136         }
00137     
00138     rcontent = (**hw).contentrect;
00139     
00140     /*set up some values for all rect computations*/ {
00141     
00142         scrollbarwidth = getscrollbarwidth ();
00143         
00144         msgheight = popupheight; 
00145         }
00146     
00147     /*do info.growiconrect*/ {
00148         
00149         shellcalcgrowiconrect (rcontent, hw);
00150         }
00151     
00152     /*do wholerect*/ {
00153         
00154         r = rcontent;
00155         
00156         r.top += tabletopmargin; /*three pixels between titles and top of window*/
00157         
00158         r.bottom -= msgheight + windowmargin;
00159         
00160         r.left += windowmargin;
00161         
00162         r.right -= windowmargin + iconrectwidth + windowmargin + scrollbarwidth;
00163         
00164         wholerect = r;
00165         }
00166     
00167     tablerect = wholerect;
00168     
00169     /*do titlerect*/ {
00170         
00171         titlerect = tablerect; /*set top, left, right*/
00172         
00173         titlerect.bottom = titlerect.top + titleheight;
00174         
00175         tablerect.top = titlerect.bottom + seprectheight;
00176         }
00177     
00178     if (hc != nil) {
00179         
00180         (**hc).wholerect = wholerect;
00181         
00182         (**hc).tablerect = tablerect;
00183         
00184         (**hc).titlerect = titlerect;
00185         }
00186     
00187     /*do kindpopuprect*/ {
00188         
00189         r.left = tablerect.left + 3; /*flush with left edge of icons*/
00190         
00191         r.right = r.left + popupwidth;
00192         
00193         r.top = tablerect.bottom + ((rcontent.bottom - tablerect.bottom - msgheight) / 2);
00194         
00195         r.bottom = r.top + msgheight;
00196         
00197         if (hc != nil)
00198             (**hc).kindpopuprect = r; 
00199         }
00200         
00201     /*do sortpopuprect*/ {
00202         
00203         r.left = r.right + popupbetweenwidth;
00204         
00205         r.right = r.left + popupwidth;
00206         
00207         if (hc != nil)
00208             (**hc).sortpopuprect = r;
00209         }
00210         
00211     /*do messagerect*/ {
00212         
00213         r.left = r.right + popupbetweenwidth;
00214         
00215         r.right = tablerect.right + scrollbarwidth;
00216         
00217         (**hw).messagerect = r; 
00218         }
00219         
00220     /*do iconrect*/ {
00221     
00222         r.top = tablerect.top;
00223         
00224         r.bottom = r.top + iconrectheight;
00225         
00226         r.right = rcontent.right - windowmargin;
00227         
00228         r.left = r.right - iconrectwidth;
00229         
00230         if (iconrectwidth > 0)
00231             insetrect (&r, -4, 0); /*a little extra width for title*/
00232         
00233         if (hc != nil)
00234             (**hc).iconrect = r; 
00235         }
00236         
00237     /*do vertscrollbar*/ {
00238         
00239         r = tablerect; /*the space occupied by the grid of cells*/
00240         
00241         r.left = r.right; /*scrollbar is just to right of grid*/
00242         
00243         r.right = r.left + scrollbarwidth;
00244         
00245         setscrollbarrect ((**hw).vertscrollbar, r);
00246         
00247         showscrollbar ((**hw).vertscrollbar);
00248         }
00249     
00250     return (true);
00251     } /*tableverbresetrects*/
00252     
00253 
00254 static boolean tableverbgetcontentsize (long *width, long *height) {
00255     
00256     short pixels;
00257     
00258     tablegetoutlinesize (width, height);
00259     
00260     pixels = tabletopmargin + windowmargin + popupheight + 4;
00261     
00262     *height += pixels;
00263     
00264     pixels = windowmargin + windowmargin + iconrectwidth + windowmargin + getscrollbarwidth ();
00265     
00266     *width += pixels;
00267     
00268     return (true);
00269     } /*tableverbgetcontentsize*/
00270 
00271 
00272 static void tableverbresize (void) {
00273     
00274     hdltableformats hf = tableformatsdata;
00275     Rect r;
00276     
00277     if (hf != nil) {
00278 
00279         r = (**hf).wholerect;
00280         
00281     //  eraserect (r);
00282         
00283     //  tabledirty ();
00284         
00285         r = (**hf).tablerect;
00286         
00287         #ifdef gray3Dlook
00288             insetrect (&r, -2, -2);
00289         #else
00290             insetrect (&r, 1, 1);
00291         #endif
00292                 
00293         opresize (r);
00294         
00295         tablerecalccolwidths (false); // 5.0a5 dmb: don't insist on recalc
00296                 
00297         #ifdef WIN95VERSION
00298             opupdatenow ();
00299         #endif
00300         }
00301     } /*tableverbresize*/
00302 
00303 
00304 static boolean tableverbsetfont (void) {
00305     
00306     opsetfont ((**outlinewindowinfo).selectioninfo.fontnum);
00307     
00308     shelladjustaftergrow (tableformatswindow); /*PBS 7.0b52: Get col. titles caught up.*/
00309     
00310     return (true);
00311     } /*tableverbsetfont*/
00312 
00313 
00314 static boolean tableverbsetsize (void) {
00315     
00316     opsetsize ((**outlinewindowinfo).selectioninfo.fontsize);
00317 
00318     shelladjustaftergrow (tableformatswindow); /*PBS 7.0b52: Get col. titles caught up.*/
00319     
00320     return (true);
00321     } /*tableverbsetsize*/
00322 
00323 
00324 static boolean tablesetselectioninfo (void) {
00325     
00326     if (outlinedata == nil)
00327         return (false);
00328         
00329     return (opsetselectioninfo ());
00330     } /*tablesetselectioninfo*/
00331 
00332 
00333 static boolean tableverbgettargetdata (short id) {
00334     
00335     /*
00336     a verb is about to be executed that acts on the indicated external type, or 
00337     on any shell window if id == -1.
00338     
00339     return true if we can handle verbs of that type and are able to set the 
00340     relevant globals
00341     */
00342     
00343     switch (id) {
00344         
00345         case -1:
00346             return (!debuggingcurrentprocess () || !(**tablegetlinkedhashtable ()).fllocaltable);
00347         
00348         case idtableprocessor:
00349         case idoutlineprocessor:
00350         #ifdef xmlfeatures
00351             case idxmlprocessor:
00352         #endif
00353             return (true);
00354         
00355         case idwordprocessor:
00356             return (opeditsetglobals ());
00357         
00358         default:
00359             return (false);
00360         }
00361     } /*tableverbgettargetdata*/
00362 
00363 
00364 static void tableverbidle (void) {
00365     
00366     if (outlinedata == nil)
00367         return;
00368 
00369     if (tablechecksortorder ())
00370         tableupdatecoltitles (false);
00371     
00372     if (tablecheckzoombutton ())
00373         tabledrawzoombutton (false);
00374     
00375     browsercommitchanges ();
00376     
00377     opidle ();
00378     } /*tableverbeventloopidle*/
00379 
00380 
00381 static boolean tablegetvariableroutine (ptrvoid refcon) {
00382     
00383     hdlexternalvariable *hvariable = (hdlexternalvariable *) refcon;
00384     hdlhashtable ht;
00385     
00386     if (tableformatsdata == nil)
00387         return (false);
00388     
00389     ht = (hdlhashtable) (**tableformatsdata).htable;
00390     
00391     *hvariable = (hdlexternalvariable) (**ht).hashtablerefcon;
00392     
00393     return (true);
00394     } /*tablegetvariableroutine*/
00395 
00396 
00397 boolean tableverbclose (void) {
00398     
00399     hdltableformats hf = tableformatsdata;
00400     hdlhashtable ht;
00401     hdloutlinerecord ho = outlinedata;
00402     
00403     if (hf == nil) //already closed & disposed?
00404         return (true);
00405     
00406     ht = (hdlhashtable) (**hf).htable;
00407     
00408 //  tableverbcheckwindowrect (ho);
00409     
00410     killundo (); /*must toss undos before they're stranded*/
00411     
00412 //  flmustexiteditmode = true;
00413     
00414     tableexiteditmode ();
00415     
00416     assert ((**hf).editval == nil);
00417     
00418     if (tableoutlineneedssaving ()) { /*we have to keep the in-memory version around*/
00419         
00420         (**ho).flwindowopen = false;
00421         
00422         opcloseoutline (); /*prepare for dormancy, not in a window anymore*/
00423         }
00424     else {
00425         tabledisposeoutline (hf);
00426         }
00427     
00428     killundo (); /*toss any newly-generated undos*/
00429     
00430     tablewindowclosed ((hdlexternalvariable) (**ht).hashtablerefcon);
00431     
00432     shellclosechildwindows (tableformatswindowinfo); /*close our sub-windows first*/
00433     
00434     tablecheckwindowrect (ht);
00435     
00436     (**ht).flwindowopen = false;
00437     
00438     return (true);  
00439     } /*tableverbclose*/
00440 
00441 
00442 static boolean tableverbchildclose (WindowPtr w) {
00443     
00444     /*
00445     a child window of the table is closing.  
00446     
00447     for now (6/12/90) just call the close routine on the child window.
00448     
00449     9/24/91 dmb: pass through return value from child
00450     */
00451     
00452     boolean fl;
00453     
00454     shellpushglobals (w);
00455     
00456     fl = (*shellglobals.closeroutine) ();
00457     
00458     shellpopglobals ();
00459     
00460     return (fl);
00461     } /*tableverbchildclose*/
00462 
00463 
00464 static void tableverbupdate (void) {
00465     
00466     tableupdate ();
00467     
00468     } /*tableverbupdate*/
00469 
00470 
00471 static void tableverbactivate (boolean flactivate) {
00472     
00473     if (outlinedata == NULL) // we're not completely set up yet
00474         return;
00475 
00476     opactivate (flactivate);
00477     
00478     (**tableformatsdata).flactive = flactivate;
00479     
00480     tabledrawzoombutton (false); /*its appearance might depend on activation state*/
00481     } /*tableverbactivate*/
00482 
00483 
00484 static boolean tableverbtitleclick (Point pt) {
00485     
00486     if (cmdkeydown () || ismouserightclick()) {
00487         
00488         tableclienttitlepopuphit (pt, (hdlexternalvariable) tablegetlinkedtablevariable ());
00489         
00490         return (true);
00491         }
00492     
00493     if (!mousedoubleclick ())
00494         return (false);
00495     
00496     tablesurface ();
00497     
00498     return (true); /*consumed*/
00499     } /*tableverbtitleclick*/
00500 
00501 
00502 static boolean tableverbadjustcursor (Point pt) {
00503     
00504     register hdltableformats hf = tableformatsdata;
00505     short col;
00506     
00507     if (pointinrect (pt, (**hf).tablerect)) {
00508         
00509         if (tablefindcolumnguide (pt, &col)) {
00510             
00511             setcursortype (cursorisverticalrails);
00512             
00513             return (true);
00514             }
00515                 
00516         return (opsetcursor (pt));
00517         }
00518     
00519     if (adjustpopupcursor (pt, (**hf).kindpopuprect))
00520         return (true);
00521     
00522     if (adjustpopupcursor (pt, (**hf).sortpopuprect))
00523         return (true);
00524     
00525     setcursortype (cursorisarrow);
00526     
00527     return (true);
00528     } /*tableverbadjustcursor*/
00529 
00530 
00531 static boolean tableverbmousedown (Point pt, tyclickflags flags) {
00532     
00533     register hdltableformats hf = tableformatsdata;
00534     short col;
00535     
00536     if (pointinrect (pt, (**hf).titlerect))
00537         return (tabletitleclick (pt));
00538         
00539     if (pointinrect (pt, (**hf).iconrect)) {
00540         
00541         if (!(**hf).fliconenabled)
00542             return (true);
00543         
00544         return (tablezoombuttonhit ());
00545         }
00546     
00547     if (pointinrect (pt, (**hf).kindpopuprect)) 
00548         return (tablekindpopuphit (pt));
00549     
00550     if (pointinrect (pt, (**hf).sortpopuprect)) 
00551         return (tablesortpopuphit (pt));
00552     
00553     if (pointinrect (pt, (**hf).tablerect))  {
00554     
00555         if (tablefindcolumnguide (pt, &col))
00556             return (tableadjustcolwidth (pt, col));
00557         
00558         return (opmousedown (pt, flags));
00559         }
00560     
00561     /*
00562     ouch ();
00563     */
00564     
00565     return (true);
00566     } /*tableverbmousedown*/
00567 
00568 
00569 static void tableedittabkey () {
00570     
00571     short col = (**tableformatsdata).editcol;
00572     
00573     if (keyboardstatus.flshiftkey)
00574         --col;
00575     else
00576         ++col;
00577     
00578     if (tablecelliseditable ((**outlinedata).hbarcursor, col)) {
00579         
00580         (**tableformatsdata).focuscol = col;
00581         
00582         opunloadeditbuffer ();
00583         
00584         oploadeditbuffer ();
00585         
00586         opeditselectall ();
00587         }
00588     else
00589         sysbeep ();
00590     } /*tableedittabkey*/
00591 
00592 
00593 static boolean tableverbkeystroke (void) {
00594     
00595     /*
00596     5.0a17 dmb: for Win, Backspace surfaces
00597 
00598     5.0b18 dmb: for Win, control key always does window surface
00599     */
00600 
00601     boolean flcmdkey = keyboardstatus.flcmdkey;
00602     
00603     #ifdef WIN95VERSION
00604         if ((keyboardstatus.chkb == chbackspace) && (keyboardstatus.flshiftkey || !opistextmode ())) {
00605             
00606             if (keyboardstatus.flshiftkey || !opmotionkey (left, 1, false)) //can't move to parent*/
00607                 if (!tablesurface ())           //can't surface to parent
00608                     shellouch ();
00609             
00610             return (true);
00611             }
00612     #endif
00613     
00614     if ((keyboardstatus.chkb == chreturn) && opistextmode ()) {
00615         
00616         opsettextmode (false);
00617         
00618         return (true);
00619         }
00620 
00621     if (keyboardstatus.chkb == chtab) { // cycle through columns
00622         
00623         if ((**outlinedata).fltextmode) {
00624             
00625             tableedittabkey ();
00626             
00627             return (true);
00628             }
00629         }
00630     
00631     if ((keyboardstatus.chkb == chenter) && flcmdkey) {
00632         
00633         if (keyboardstatus.flshiftkey)
00634             return (tablesurface ());
00635         else
00636             return (tabledive ());
00637         }
00638     
00639     return (opkeystroke ());
00640     } /*tableverbkeystroke*/
00641 
00642 
00643 static boolean tableverbpaste (void) {
00644     
00645     Handle hscrap;
00646     tyscraptype type;
00647     
00648     if (!shellgetscrap (&hscrap, &type))
00649         return (false);
00650     
00651     if (type == hashscraptype)
00652         return (oppaste ());
00653     else
00654         return (tablepasteroutine ());
00655     } /*tableverbpaste*/
00656 
00657 
00658 static boolean tableverbruncursor (void) {
00659     
00660     if (!tablecursorisrunnable ())
00661         return (false);
00662     
00663     return (tableruncursor ());
00664     } /*tableverbruncursor*/
00665 
00666 
00667 static boolean tableverbcmdkeyfilter (char chkb) {
00668 
00669     if (outlinedata == nil)
00670         return (true);
00671     
00672     return (opcmdkeyfilter (chkb));
00673     } /*tableverbcmdkeyfilter*/
00674 
00675 
00676 static short beforeprintcolwidths [maxtablecols];
00677 
00678 
00679 static boolean tablebeginprint (void) {
00680     
00681     hdltableformats hf = tableformatsdata;
00682     
00683     moveleft ((**hf).colwidths, beforeprintcolwidths, sizeof (short) * maxtablecols);
00684     
00685     opbeginprint ();
00686     
00687     /*
00688     (**hf).tablerect = (**outlinedata).outlinerect;
00689     
00690     clearbytes ((**hf).colwidths,  sizeof (short) * maxtablecols);
00691     
00692     tablerecalccolwidths (true);
00693     */
00694 
00695     return (true);
00696     } /*tablebeginprint*/
00697 
00698 
00699 static boolean tableendprint (void) {
00700     
00701     opendprint ();
00702     
00703     opsetdisplaydefaults (outlinedata); //need to reset lineheights before next call
00704     
00705     tableverbresetrects (tableformatswindowinfo);
00706 
00707     tableverbresize ();
00708     
00709     moveleft (beforeprintcolwidths, (**tableformatsdata).colwidths, sizeof (short) * maxtablecols);
00710     
00711     return (true);
00712     } /*tableendprint*/
00713 
00714 
00715 boolean tablebeforeprintpage (void) {
00716     
00717     hdltableformats hf = tableformatsdata;
00718     
00719     (**hf).tablerect = (**outlinedata).outlinerect;
00720     
00721     clearbytes ((**hf).colwidths,  sizeof (short) * maxtablecols);
00722     
00723     tablerecalccolwidths (true);
00724     
00725     return (true);
00726     } /*tablebeforeprintpage*/
00727 
00728 
00729 boolean tableafterprintpage (void) {
00730     
00731     moveleft (beforeprintcolwidths, (**tableformatsdata).colwidths, sizeof (short) * maxtablecols);
00732     
00733     return (true);
00734     } /*tableafterprintpage*/
00735 
00736 
00737 boolean tablestart (void) {
00738     
00739     /*
00740     set up callback routines record, and link our data into the shell's 
00741     data structure.
00742     */
00743     
00744     ptrcallbacks tablecallbacks;
00745     register ptrcallbacks cb;
00746     
00747     assert (sizeof (tytablevariable) == 16L);
00748     
00749     tableinitverbs ();
00750     
00751     shellpushscraphook (&tablescraphook);
00752 
00753     shellnewcallbacks (&tablecallbacks);
00754     
00755     cb = tablecallbacks; /*copy into register*/
00756     
00757     loadconfigresource (idtableconfig, &(*cb).config);
00758     
00759     (*cb).configresnum = idtableconfig;
00760         
00761     (*cb).windowholder = &tableformatswindow;
00762     
00763     (*cb).dataholder = (Handle *) &tableformatsdata;
00764     
00765     (*cb).infoholder = &tableformatswindowinfo;
00766     
00767     (*cb).setglobalsroutine = &tableverbsetglobals;
00768     
00769     (*cb).pushroutine = &oppushglobals;
00770 
00771     (*cb).poproutine = &oppopglobals;
00772     
00773 #ifdef version42orgreater
00774     
00775     (*cb).disposerecordroutine = ccdisposefilerecord;
00776     
00777     (*cb).saveroutine = ccsavespecialfile;
00778 
00779 #endif
00780     
00781     (*cb).updateroutine = &tableverbupdate;
00782     
00783     (*cb).activateroutine = &tableverbactivate;
00784     
00785     (*cb).getcontentsizeroutine = &tableverbgetcontentsize;
00786     
00787     (*cb).resetrectsroutine = &tableverbresetrects;
00788     
00789     (*cb).resizeroutine = &tableverbresize;
00790     
00791     (*cb).scrollroutine = &opscroll;
00792     
00793     (*cb).setscrollbarroutine = &opresetscrollbars;
00794     
00795     (*cb).mouseroutine = &tableverbmousedown;
00796 
00797     (*cb).rmouseroutine = &oprmousedown; /*7.0b13 PBS: right-click in tables*/
00798 
00799     (*cb).keystrokeroutine = &tableverbkeystroke;
00800     
00801     (*cb).titleclickroutine = &tableverbtitleclick;
00802     
00803     (*cb).cutroutine = &opcut;
00804     
00805     (*cb).copyroutine = &opcopy;
00806     
00807     (*cb).pasteroutine = &tableverbpaste;
00808     
00809     (*cb).clearroutine = &opclear;
00810     
00811     (*cb).selectallroutine = &opselectall;
00812     
00813     (*cb).closeroutine = &tableverbclose;
00814     
00815     (*cb).childcloseroutine = &tableverbchildclose;
00816     
00817     (*cb).getundoglobalsroutine = &tableeditgetundoglobals;
00818     
00819     (*cb).setundoglobalsroutine = &tableeditsetundoglobals;
00820     
00821     (*cb).idleroutine = &tableverbidle;
00822     
00823     (*cb).adjustcursorroutine = &tableverbadjustcursor;
00824     
00825     (*cb).gettargetdataroutine = &tableverbgettargetdata;
00826     
00827     (*cb).getvariableroutine = &tablegetvariableroutine;
00828     
00829     (*cb).settextmoderoutine = &opsettextmode;
00830     
00831     (*cb).fontroutine = &tableverbsetfont;
00832     
00833     (*cb).sizeroutine = &tableverbsetsize;
00834     
00835     (*cb).setselectioninforoutine = &tablesetselectioninfo;
00836     
00837     (*cb).searchroutine = &tableverbsearch;
00838     
00839     (*cb).executeroutine = &tableverbruncursor;
00840     
00841     (*cb).setprintinfoproutine = &opsetprintinfo;
00842     
00843     (*cb).beginprintroutine = &tablebeginprint;
00844     
00845     (*cb).endprintroutine = &tableendprint;
00846     
00847     (*cb).printroutine = &opprint;
00848     
00849     (*cb).cmdkeyfilterroutine = &tableverbcmdkeyfilter;
00850     
00851     return (true);
00852     } /*tablestart*/
00853 
00854 
00855 
00856 

Generated on Wed May 31 18:20:03 2006 for frontierkernel 10.1.10a by  doxygen 1.4.6