This is the successor to Clipper... Clipper... Clipper, a popular & well-linked CA-Clipper website which I started in 1995 and which went offline in 2002
Monday, February 14, 2011
Building a Harbour+gtWvg Project using hbmk2
http://cch4clipper.blogspot.com/2009/04/using-harbourwvg-part-i.html
Having discovered the simplicity of using hbmk2 to compile a 32-bit version of DBU which runs in a true 32-bit Window, I tried to rebuild my previous gtWvg project. I succeeded to generate an EXE but on launching, it just starts and exit straightaway.
Fortunately. Pritpal came to my assistance and suggested adding the following to FAS4WVG.HBP
-inc
-mt
-w3
-es2
-gtwvg
-gui
and Hip Hip Hooray, I can now build a Harbour+gtWvg project without an IDE :-)
Tuesday, April 14, 2009
Can GTWVG work with xHarbour ?
Initially, I thought why not as Ron Pinkas was the one who mentioned about WVG in a response to me in the xHarbour Builder News Group. At that time, I was using the September 2008 Edition of xHarbour.com distro.
Today, Sudip Bhattacharyya revealed an email discussion with Pritpal regarding this matter.
Q. Is there any way to use xHarbour+wvg?
QUOTE by Pritpal Bedi
WVG as of now is not compilable with xHarbour. It is multi-windows, multi-threaded approach and some very fine new concepts which are only available in Harbour.
I had ported WVG to xHarbour but about 1.5 years before. That version is workable but you have to compile it with your own tools. Just look for xharbour/contrib/gtwvg folder in CVS.
Due to its limitations I am not contributing to xHarbour any more.
UNQUOTE
Sunday, April 12, 2009
How to create a new window with Harbour + WVG ?
Based on my understanding, you can create and ultimately destroy a new Window by making a function call such as :-
MyNewWindow('Reindexing','MyIcon','N/W')
#include "hbgtinfo.ch"
FUNCTION MyNewWindow(cWindowCaption,cIconFile,cColor )
LOCAL oCrt
oCrt := WvgCrt():New( , , { -4,-4 }, { maxrow()-4,maxCol()-4}, , .t. )
oCrt:lModal := .T.
oCrt:icon := cIconFile
oCrt:create()
oCrt:resizable :=.T.
SETCOLOR(cColor)
CLS
// Needs #include "hbgtinfo.ch"
hb_gtinfo(HB_GTI_WINTITLE,cWindowCaption)
/* Your Clipper Codes goes here */
oCrt:destroy()
RETURN nil
Using Harbour+WVG +xMate - Part IV - CONCLUSION
How about adding features to the Console Window itself ?
This is how you change the caption and application icon :-
//This ensures that window is physically existent when any operation on console are requested.
CLS
// Add icon
hb_gtInfo( HB_GTI_ICONFILE, "ksred.ico" )
// Add Window Caption
hb_gtInfo( HB_GTI_WINTITLE, "FAS4WVG - Clipper... Clipper... Clipper" )
Is there a GUI Alert() that is fully compatible with CA-Clipper Alert() ?
Why not, with Pritpal's excellent programming skills, ALERT("Reindex ALL Files ?, {"No","Yes"}) gives you this Windows Dialog :-
Please note that the GUI Alert() available in the April 2009 Edition of xHarbour.com distro simply maps to MessageBox with OK as the only option. So if your code is nChoice:=ALERT("Reindex ALL Files ?, {"No","Yes"}), Pressing OK will never Reindex !
You will have no such issue with Pritpal's Harbour Ready to use Distro.
Actual Reindexing in action ...
CONCLUSION :
To quote Pritpal from one of of his email response
" GTWVG is meant to update your Clipper code to have Windows look and
feel without any code changes, just addition of few lines. If it were to mimick exact
GUI behavior then there are many other options, but you end up writing practically
everything, which is simply difficult if not impossible.
This is a matter of focus. "
What do we wish to achieve for our keyboard-loving customers ?
Well, we need to break the DOS barriers and avoid the need for the customers to be retrained in their daily usage of their mission-critical applications.
So, if you wish to avoid lots of re-programming your Clipper Codes and only want to provide your keyboard-loving customers with a simple GUI but clearly 32-bits Windows solution, IMHO, Pritpal's Harbour Ready to Use Distro that includes Harbour +WVG +xMate is the way to go...
If your needs are more onerous, may I suggest HMG or HMG Extended ?
Good Luck !
BTW, this is the final part of Using Harbour+WVG +xMate but I will continue to write on my experience with Harbour Ready to Use + GTWVG aka WVG
Saturday, April 11, 2009
Using Harbour+WVG +xMate - Part III
dispbox( 1, 0, 3, 79, B_DOUBLE )
dispbox( 22, 0, 24, 79, B_DOUBLE )
with :-
Wvg_BoxGroupRaised( 2, 1, 2, 77)
Wvg_BoxGroupRaised( 23, 1, 23, 77)
// Instruct GT to Repaint the Screen with GUI elements
Wvt_InvalidateRect( 0, 0, maxrow(), maxcol() )
The result is as follows :-
I then changed the default color to GREY to accentuate the 3D look and feel and added a
Wvg_BoxGroupRaised( 4, 1, 20, 77) for a centralised work area
You can see the DBEDIT() within a Boxraised(4,1,20,77) as follows :-
Same DBEDIT() but within a WVG_BoxRecessed
Next on Part IV
Friday, April 10, 2009
Using Harbour+WVG +xMate - Part II
Pretty disappointing, huh ! What you are looking at is a true 32 bit Windows application in a DOS window but how to convince your clients that this is indeed a Win32 executable ? This is where Pritpal Bedi comes to the rescue with his WVG library.
So where do we start to guify our Win32 'DOS looking" executable ?
This is what I have done, JUST add right after MAIN()
HB_GTSYS()
where
Function HB_GTSYS()
REQUEST HB_GT_WVG_DEFAULT
REQUEST HB_GT_WVT
REQUEST HB_GT_WGU
Return NIL
That's it !
Notice that the caption now shows FAS4WVG and not the Dos Prompt + path to FAS4WVG.
Hip... Hip... Hooray, no more DOS window !
Next on Part III
Thursday, April 9, 2009
Using Harbour+WVG +xMate - Part I
I did consider using WVW but since Budyanto does not have time to update his great GUI library, I decided to take a serious look at Harbour + WVG.
After playing with the xMate that came with Pritpal Bedi's Ready to use Harbour Distro, I finally managed to compile and build a Harbour+WVG version of FAS4DOS codenamed FAS4WVG. This is what I have done :-
1. Installed Pritpal's Ready to Use Harbour which resulted in a folder being created ie
c:\harbour_dev with the following sub-folders
dev_exes
dev_libs
dev_projects
dev_sources
harbour
mingw
xmate
2. I then copied the previously converted FAS4DOS codes (from 5.2e to xHarbour) into a new folder FAS4WVG under the dev_projects folder. I did this in order to save time as all UNRESOLVED EXTERNALS had already been dealt with as per my previous articles "Migrating from CA-Clipper 5.2e to xHarbour Part I, II & III "
Please note that there is also a default demowvg folder already there for your reference.
3. Moving to the xMate Directory, I launched xMate and created a new Project
4. What is important here is to choose
a) Project Type, default Executable
b) Environment (wvgMINGW, wvgBCC, wvgMSC, wvgWATCOM)
Nb. Only MINGW comes with this Pritpal's Distro
c) You may also choose to Import based on a Clipper Blinker/Exospace link script
5. Click OK and
a) Input Project name, in my case FAS4WVG
b) Input HOME Folder (where your project files reside)
c) Add Project Files
c) Save and both the XMate Editor and Project Manager are launched
6. Under the xMate Project Manager, you can choose to :-
a) Build Project
b) Build and Launch Project
c) Rebuild Project
d) Rebuild and Launch Project
e) Launch Project
f) Compile single source
g) Compile all sources
7. I then clicked (b) and starting getting errors mainly due to ambiguous references relating to getlists which I resolved by adding LOCAL getlist:={}
8. Then, I got the 'FATAL : Unknown Error - Check Output Console'
9. I then clicked the icon that had a ? over it and saw that I had a few errors such as
a) Unresolved external references
b) Duplicate decalarations
By checking to my original Blinker Link Script, I realised that I had inadvertently left out a prg whilst including a couple of redundant prgs.
10. Once resolved , bingo, FAS4WVG was finally built and launched
Next to add GUI features ...
Monday, March 16, 2009
GTWVG : Update by Pritpal Bedi
Here is the ChangeLog entry I committed today, may it interest you anyway;
2009-03-15 16;42 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
* harbour/contrib/gtwvg/hbgtwvg.ch
+ #define HB_GTI_SETPOSANDSIZE
+ #define HB_GTI_HB_GTI_REFRESH
+ Two more events to manage new CUI-GUI objects.
+ #define GOBJ_OBJSTATE_*
+ #define GOBJ_OBJDATA_*
+ #define GOBJ_IMAGESOURCE_*
+ Constants to manage CUI=GUI objects.
* harbour/contrib/gtwvg/gtwvg.h
* harbour/contrib/gtwvg/wvggui.h
! Updated to be compilable for WinCE builds.
* harbour/contrib/gtwvg/gtwvg.c
! Updated to honor WinCE builds.
! Implemented double-buffering of console. Now flickering
should be the topic of the past.
* harbour/contrib/gtwvg/wvggui.c
! Updated to honor WinCE builds.
* harbour/contrib/gtwvg/wvgcuig.c
+ Implemented a highly optimized GUI controls for CUI consoles.
Implementation includes auto-destruction, data-substitution,
enable/disable feast, etc. These controls are almost identical
which are available with Wvt_Draw*() namespace but with a
great difference that these are tied to the urrent GT and
are handelled transparently by the GT itself. Developer
has only to define it. The only requirement is that
SaveScreen()/RestScreen() needs to be changed to new
Modal GT window. Appln screens will never get blurred. It
also employs optimized double-buffering and hence almost
eliminates screen flickering.
* harbour/contrib/gtwvg/wvgcore.c
* harbour/contrib/gtwvg/wvgsink.c
* harbour/contrib/gtwvg/wvgutils.c
* harbour/contrib/gtwvg/wvgwin.c
! Updated to honor WinCE builds.
* harbour/contrib/gtwvg/wvgcrt.prg
! A couple of methods fine-tuned.
! Modal GT’s more responsive to user needs.
* harbour/contrib/gtwvg/tests/demowvg.prg
! Demonstrated the latest implemention of CUI-GUI controls. See below.
Please try
Also note the usage of Modal GT to simulate Alert() in new window.
Every GUI object returns a handle to it which may be used to
change its parameters.
; TOFIX( WINCE BUILDS ) - GetSystemDirectory()
/* IMPLEMENTATION OF CUI-GUI CONTROLS - A CODE PREVIEW
#xTranslate Alert( => MyAlert(
PROCEDURE GCUIConsole( oCrt )
LOCAL dDate ;= date()
LOCAL cName ;= pad( ’Some Usefule Name’ , 35 )
LOCAL cAdd1 ;= pad( ’Linda Goldman Avenue’, 35 )
LOCAL cAdd2 ;= pad( ’Excellent Street’ , 35 )
LOCAL cAdd3 ;= pad( ’Suit #415’ , 35 )
LOCAL nSlry ;= 9000
LOCAL nColGet ;= 8
LOCAL GetList ;= {}
LOCAL cLabel ;= "VOUCH, that GROWS with you"
LOCAL oTab, oStat, hBoxR, hTxt
SET SCOREBOARD OFF
SetColor( "N/W,N/GR*,,,N/W*" )
CLS
hb_gtInfo( HB_GTI_WINTITLE, "WVG Simplified yet Powerful CUI-GUI Console!" )
@ MaxRow(), 0 SAY PadC( "Navigate the Gets", maxcol()+1 ) COLOR "W+/B"
@ 2, nColGet SAY "<>"
@ 5, nColGet SAY "<" + PadC( "Name" , 33 ) + ">"
@ 8, nColGet SAY "<" + PadC( "Address", 33 ) + ">"
@ 15, nColGet SAY "<>"
@ 3, nColGet GET dDate ;
WHEN {|| Wvg_SetGObjData( hTxt, 1, FetchText( 1 ) ) } ;
Valid {|| Wvg_SetGObjData( hTxt, 6, RGB( 255,0,0 ) ), .t. }
@ 6, nColGet GET cName ;
WHEN {|| Wvg_SetGObjData( hTxt, 1, FetchText( 2 ) ) } ;
Valid {|| Wvg_SetGObjData( hTxt, 6, RGB( 255,255,0 ) ), ;
Wvg_SetGObjState( hBoxR, 3 ), .t. }
@ 9, nColGet GET cAdd1 ;
WHEN {|| Wvg_SetGObjData( hTxt, 1, FetchText( 3 ) ) } ;
Valid {|| Wvg_SetGObjData( hTxt, 6, RGB( 255,0,255 ) ), .t. }
@ 11, nColGet GET cAdd2 ;
WHEN {|| Wvg_SetGObjData( hTxt, 1, FetchText( 4 ) ) } ;
Valid {|| Wvg_SetGObjData( hTxt, 6, RGB( 255,255,255 ) ), ;
Wvg_SetGObjState( hBoxR, 1 ), .t. }
@ 13, nColGet GET cAdd3 ;
WHEN {|| Wvg_SetGObjData( hTxt, 6, RGB( 198,21,140 ) ), .t. }
@ 16, nColGet GET nSlry PICTURE "@Z 9999999.99" ;
WHEN {|| Wvg_SetGObjData( hTxt, 6, RGB( 0,0,0 ) ), .t. }
// The only additional calls to render your console GUI
//
// The GETLIST ; This can be embedded via @ GET preprocessor command
aEval( GetList, {|oGet| Wvg_BoxGet( oGet;Row, oGet;Col, Len( Transform( oGet;VarGet(), oGet;Picture ) ) ) } )
//
hBoxR ;= Wvg_BoxRaised( 1,2,18,49, {-5,-5,5,5} )
//
Wvg_BoxRecessed( 1,2,18,49 )
//
// Wvg_BoxGroup( 2,4,17,47 )
//
Wvg_BoxGroupRaised( 2,4,17,47, {-7,-7,7,7} )
//
hTxt ;= Wvg_TextBox( 3,57,16,75, {10,10,-10,-10}, ’This is first TextBox Line!’, 2, 2 )
//
Wvg_Image( 15,36,16,42, {-3,-3,3,3}, GOBJ_IMAGESOURCE_FILE, ’Vouch1.bmp’ )
//
Wvg_BoxRaised( 15,36,16,42,{-2,-2,2,2} )
//
Wvg_ShadedRect( 1,54,18,79, { -5,-5,5,5 }, 0, {65000,21000,7000,56000}, {255,32255,16000,32500} )
//
Wvg_BoxRaised( 1,54,18,79, {-5,-5,5,5} )
// Instruct GT to Repaint the Screen with GUI elements.
oCrt;refresh()
// Issue the read
READ
Alert( ’How did you like the "Alert" replacement?’, { ’WOW’,’OK’,’OOps’} )
RETURN
/*----------------------------------------------------------------------*/
#xUntranslate alert( =>
FUNCTION MyAlert( cMsg, aOpt )
LOCAL nSel, oCrt
oCrt ;= WvgCrt();New( , , { -1,-1 }, { 9, MaxCol()-6 }, , .t. )
oCrt;lModal ;= .t.
oCrt;icon ;= "dia_excl.ico"
oCrt;create()
oCrt;resizable ;= .t.
SetColor( ’N/W’ )
CLS
hb_gtInfo( HB_GTI_WINTITLE, cMsg )
nSel ;= Alert( cMsg, aOpt )
oCrt;destroy()
RETURN nSel
#xTranslate Alert( => MyAlert(
/*----------------------------------------------------------------------*/
STATIC FUNCTION FetchText( nMode )
LOCAL cText
DO CASE
CASE nMode == 1
cText ;= ’Do you know Harbour is gaining a popularity what Clipper enjoyed at one time! ’
cText += ’Enjoy it.’
CASE nMode == 2
cText ;= ’Do you know Harbour can host pure console, cui+gui console, pure gui consoles applications? ’
cText += ’This demonstration is a proof of that.’
CASE nMode == 3
cText ;= ’Do you know Harbour is a multi-gt, multi-window, multi-thread compiler far superior than others in the market! ’
cText += ’And is FREE.’
CASE nMode == 4
cText ;= ’Enjoy and contribute to the project any way you can. Develop, Debug, Support, and spread a word of mouth!’
ENDCASE
RETURN cText
/*----------------------------------------------------------------------*/
*/
;TODO - Write a comprehensive help to exploit CUI-GUI functionality.
Will do in a few days.
Here is the output;
Wednesday, March 4, 2009
Harbour Ready-to-use : Pritpal Bedi
http://www.vouch.info/downloads/HarbourDev_10523_2009-03-04.exe
This is Harbour's ready-to-use distibution planned to be released once in a month including the changes committed to SVN till the date of release. This is not the rule. I may post more than once in a month if there are major commits and/or some important feature is added/modified.
This distro is aimed at newbies who find it difficult to start with Harbour though everybody can take advantage to the maximum.
Please note that this is not an official release. So you may expect bumps here-and-there. My efforts will focus on the facts that release maintain a standard to let the applns compile properly.
Every release will bear the "Revision No" and "Date" in its setup name as -
HarbourDev_10523_2009-03-04.exe which will facilitate to identify upto which commit this release contain.
The tree structure ( outlined below ) can be used for production level development scenario. It contains batch files to get Harbour binaries
from SVN tree for four compilers. As you can now compile your applns with different compilers, this enhances your productivity level to judge which compiler is giving you the fastest and optimum appln.
To keep the tasks simple, I am assuming drive "C" the development drive where Harbour SVN tree and "harbour_dev" tree is hosted. All paths in the
batch files and xMate project files points to c:\harbour and C:\harbour_dev.
This distribution includes only binaries. Please download SVN tree if you need sources or want to play with the latest commits. It is not necessary
for your applications.
In case you decide to have latest SVN binaries then host it on drive C as module name "harbour". Then invoke one of the makegnu_*.bat, depending
on the compiler of your choice. It will place harbour binaries in respective subfolder of "c:\harbour_dev".
This distribution includes MINGW compiler under c:\harbour_dev\mingw folder as its root. So one is able to build appln for this compiler without any extra effort. You can download other compilers and place them in respective folders in c:\harbour_dev, i.e., Borland's BCC under c:\harbour_dev\bcc ( no suffix after bcc ), Sybase's Open Watcom under c:\harbour_dev\watcom, Microsoft's Visual C++ under c:\harbour_dev\msvc. Once installed, just invole respective makegnu_*.bat. Harbour binaries will be in place.
As I has been working with xMate since its birth way back in 2004, I have choosen it to be Project Builder for this distribution. You are free to deploy whatever you are accustomed to.
As a demo appln I have selected harbour/contrib/gtwvg/tests/demowvg.prg. This demo unfolds Harbour power in depth plus different ways one can employ to migrate his/her Clipper applications to GUI world strating with
intermediatery semi GUI proto and culminating to pure GUI proto. This demo also deploys the in-development Xbase++ Parts clone whaich may attract your attention. Moreoever, this demo demonstrates MT ( multi-threading ) and multi-window GT which can be a big productivity boost right from the begining.
Following is the tree structure this disto contains.
c:\harbour_dev\
harbour\
bcc\
bin
include
lib
msvc\
bin
include
lib
mingw\
bin
include
lib
watcom\
bin
include
lib
bcc\
* distro tree
msvc\
* tree
mingw\
* tree
watcom\
* tree
xmate\
*.files | folders
/
wvgBCC.env ( tied with demowvgBCC.xhp )
wvgMSVC.env ( tied with demowvgMSVC.xhp )
wvgMINGW.env ( tied with demowvgMINGW.xhp )
wvgWATCOM.env ( tied with demowvgWATCOM.xhp )
dev_projects\
demowvg\
demowvgBCC.xhp
demowvgMSVC.xhp
demowvgMINGW.xhp
demowvgWATCOM.xhp
demoxbp\
demoxbp.xhp
* folders
developers_own_folders\
developer_project.xhp
dev_sources\
demowvg\
*.files
tests\
*.files
dev_libs\
# All together - it is a better design
dev_exes\
# All together of by project
May be it is dependant on other resource files
ChangeLog ( Harbour SVN ChangeLog : Binaries Upto : Top Few Lines )
make.exe ( mingw32-make.exe )
bcc32.cfg ( Bcc Compiler Confuration : bcc\bin )
tlink32.cfg ( BCC Linker Configuration : bcc\bin )
wlink.lnk ( Watcom Linker Configuration : watcom\binnt )
[ invoke it to get latest Harbour SVN binaries ]
/
makegnu_BCC.bat
makegnu_MSVC.bat
makegnu_MINGW.bat
makegnu_WATCOM.bat
Enjoy
Pritpal Bedi, a student of software analysis and design
http://www.vouch32.com | Home of Vouch32 ActiveX Server
http://www.vouchcac.com/vouch32/vouch32.htm | A Free Windows Extended
Utilities Library for Clipper, Xbase++ and (x)Harbour
http://www.help.vouch.info | Online Vouch Help
http://www.harbour.vouch.info | Online Harbour Help
Welcome to Clipper... Clipper... Clipper
In 1997, then using Delphi 3, I had already created 32-bits Windows applications for HRIS, ERP and CRM. In 2007, using Ruby on Rails, an AJAX powered CRM site running on Apache & MySQL was created and I am now using Visual Studio .Net 2008 to create web-based projects and Delphi 7 for Win32 applications using SQL2005 & DBFCDX.
So, why then am I reviving the Original Clipper... Clipper... Clipper via a Blog as CA-Clipper is a programming language for the DOS world ? Believe it or not, there are still some clients using my mission-critical CA-Clipper applications for DOS installed in the late 80's and up to the mid 90's. This is testimony to CA-Clipper's robustness as a language :-)
With the widespread introduction of Windows 7 64-bits as the standard O/S for new Windows based PCs & Notebooks, CA-Clipper EXE simply will not work and it has become imperative for Clipper programmers to migrate immediately to Harbour to build 32/64 bits EXEs
Since 28th January 2009, this blog has been read by 134,389 (10/3/11 - 39,277) unique visitors (of which 45,151 (10/3/11 - 13,929) are returning visitors) from 103 countries and 1,574 cities & towns in Europe (37; 764 cities), North America (3; 373 cities) , Central America & Caribeans (6; 13 cities), South America(10; 226 cities), Africa & Middle-East (12; 44 cities) , Asia-Pacific (21; 175 cities). So, obviously Clipper is Alive & Well : -)
TIA & Enjoy ! (10th October 2012, 11:05; 13th November 2015)
Original Welcome Page for Clipper... Clipper... Clipper
This site started out as a teeny-weeny section of Who the heck is Chee Chong Hwa ? and has graduated into a full blown web site of more than 140 pages (actually hundreds of A4 size pages) ! This is due to its growing popularity and tremendous encouragements from visiting Clipperheads from 100 countries worldwide, from North America, Central America, Caribbean, South America, Europe, Middle-East, Africa and Asia-Pacific. Thanx Clipperheads, you all made this happen !
What is Clipper ?
You may ask, what is this Clipper stuff ? Could Clipper be something to do with sailing as it is the name of a very fast sailing American ship in the 19th century ?Well, Clipper or to be precise, CA-Clipper is the premier PC-Software development tool for DOS. It was first developed by Nantucket Corporation initially as a compiler for dBase3+ programs. Since then, CA-Clipper has evolved away from its x-base roots with the introduction of lexical scoping & pre-defined objects like TBrowse. As at today, the most stable version ofClipper is 5.2e while the latest version, 5.3a was introduced on 21 May 1996.
As at 11th November, 1996, an unofficial 5.3a fixes file was made available by Jo French. See the About CA-Clipper 5.3a section for more details. BTW, Jo French uploaded the revised 5.3a fixes file on 20th November, 1996.
Latest News
The latest news is that CA has finally released the long-awaited 5.3b patch on 21 May, 1997.
For 5.3b users, you must a take a look at Jo French's comments on unfixed bugs in 5.3b.
BTW, have you used Click ? If you're a serious Clipperprogrammer and need an excellent code formatter, Click is a natural choice. How to get it ? Simple, access Phil Barnett's site via my Cool Clipper Sites.
32-bits Clipper for Windows ?
Have you tried Xbase ++ ? Well, I have and compared to Delphi (my current Windows programming tool of choice), I'm still sticking to Delphi.Anyway, you should visit the Alaska Home Page. Give it a chance and then draw your own conclusions !.
The Harbour Project
Is this the future of Xbase ? Take a look at at the Harbour ProjectYou are Visitor # ...
According to counter.digits.com, you are visitor since 3 June 1996.
If you like or dislike what you see on this website, please drop me a line by clicking the email button at the bottom of this page or better still, by filling out the form in my guest book. If you are not sure what to write,click here to take a look at what other Clipperheads have to say.