home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************************
- CStaticString.c
-
- Displays a Pascal string
-
- SUPERCLASS = CPane
-
- see header for more information.
-
- ******************************************************************************/
-
- #include "CStaticString.h"
- #include "CTextEnvirons.h"
- #include "TBUtilities.h"
- #include "CSmartWindow.h"
- #include "CError.h"
-
- /******************************************************************************/
- void CStaticString::IStaticString
- (CView *anEnclosure, CBureaucrat *aSupervisor,
- Int16 aWidth, Int16 aHeight, Int16 aHEncl, Int16 aVEncl,
- SizingOption aHSizing, SizingOption aVSizing, StringPtr initString)
- {
- CPane::IPane( anEnclosure, aSupervisor, aWidth, aHeight, aHEncl,
- aVEncl, aHSizing, aVSizing);
-
- if (initString)
- pStrCopy( initString, itsString);
- else itsString[0] = 0;
-
- eraseBehind = false;
- useWinFont = TRUE;
- itsStyle = 0;
-
- IStaticStringX();
-
- } /* CStaticString::IStaticString */
- /******************************************************************************/
- void CStaticString::IViewTemp(
- CView *anEnclosure, CBureaucrat *aSupervisor,
- Ptr viewData)
- {
- tStaticStringTemp *template;
- StringHandle stringH;
-
- template = (tStaticStringTemp *) viewData;
-
- inherited::IViewTemp( anEnclosure, aSupervisor, viewData);
-
- stringH = GetString( template->theStrID);
- CheckResource( (Handle) stringH);
-
- pStrCopy( *stringH, itsString);
- ReleaseResource( stringH);
-
- eraseBehind = template->eraseBehind != 0;
- useWinFont = template->useWinFont != 0;
- itsStyle = template->fontStyle;
-
- IStaticStringX();
-
- } /* CStaticString::IViewTemp */
- /******************************************************************************/
- void CStaticString::IStaticStringX( void)
- {
- TextInfoRec textEnvirons;
-
- textEnvirons.fontNumber = applFont;
- textEnvirons.theSize = 12;
- textEnvirons.theStyle = 0;
- textEnvirons.theMode = srcOr;
-
- if (!useWinFont)
- {
- itsEnvironment = new(CTextEnvirons);
- ((CTextEnvirons *)itsEnvironment)->ITextEnvirons();
- ((CTextEnvirons *)itsEnvironment)->SetTextInfo( &textEnvirons);
- }
- CalcFontInfo();
- AdjustSize();
-
- } /* CStaticString::IStaticStringX */
- /******************************************************************************/
- void CStaticString::CalcFontInfo( void)
- {
- FontInfo fInfo;
-
- if (!useWinFont)
- itsEnvironment->Restore(); /* set up text environment */
-
- GetFontInfo( &fInfo);
- theFontInfo = fInfo;
-
- } /* CStaticString::CalcFontInfo */
- /******************************************************************************/
- void CStaticString::AdjustSize( void)
- {
- Int16 sWidth;
- Rect r;
- CSmartWindow *window;
- GrafPtr savedPort;
-
- return;
-
- GetPort( &savedPort);
- Prepare();
- if (useWinFont)
- {
- window = (CSmartWindow *)GetWRefCon( macPort);
- window->RestoreEnvirons();
- TextFace( itsStyle);
- }
-
- HLock( this);
- sWidth = StringWidth( itsString)+3;
- HUnlock( this);
-
- if (sWidth != width)
- {
- SetRect( &r, 0, 0, sWidth - width, 0);
- ChangeSize( &r, TRUE);
- }
- SetPort( savedPort);
-
- } /* CStaticString::AdjustSize */
- /******************************************************************************/
- void CStaticString::SetStaticString( StringPtr theString)
- {
- pStrCopy( theString, itsString);
- AdjustSize();
- Refresh();
-
- } /* CStaticString::SetStaticString */
- /******************************************************************************/
- void CStaticString::GetStaticString( StringPtr theString)
- {
- if (theString)
- pStrCopy( itsString, theString);
-
- } /* CStaticString::GetStaticString */
- /******************************************************************************/
- void CStaticString::SetIndString( Int16 resID, Int16 index)
- {
- Str255 string;
-
- GetIndString( string, resID, index);
- SetStaticString( string);
-
- } /* CStaticString::SetIndString */
- /******************************************************************************/
- void CStaticString::SetFontNum( Int16 theFontNum)
- {
- TextInfoRec textEnvirons;
-
- if (useWinFont) return;
-
- ((CTextEnvirons *)itsEnvironment)->GetTextInfo( &textEnvirons);
-
- textEnvirons.fontNumber = theFontNum;
- ((CTextEnvirons *)itsEnvironment)->SetTextInfo( &textEnvirons);
- CalcFontInfo();
- AdjustSize();
-
- } /* CStaticString::SetFontNum */
- /******************************************************************************/
- void CStaticString::SetFontName( StringPtr theFontName)
- {
- TextInfoRec textEnvirons;
-
- if ((!theFontName) || (useWinFont)) return;
-
- ((CTextEnvirons *)itsEnvironment)->GetTextInfo( &textEnvirons);
-
- GetFontNumber( theFontName, &textEnvirons.fontNumber);
-
- if (textEnvirons.fontNumber > 0)
- ((CTextEnvirons *)itsEnvironment)->SetTextInfo( &textEnvirons);
- CalcFontInfo();
- AdjustSize();
-
- } /* CStaticString::SetFontName */
- /******************************************************************************/
- void CStaticString::SetTextSize( Int16 theSize)
- {
- TextInfoRec textEnvirons;
-
- if (useWinFont) return;
-
- ((CTextEnvirons *)itsEnvironment)->GetTextInfo( &textEnvirons);
- textEnvirons.theSize = theSize;
- ((CTextEnvirons *)itsEnvironment)->SetTextInfo( &textEnvirons);
- CalcFontInfo();
- AdjustSize();
-
- } /* CStaticString::SetTextSize */
- /******************************************************************************/
- void CStaticString::SetTextStyle( Int16 theStyle)
- {
- TextInfoRec textEnvirons;
-
- if (useWinFont) itsStyle = theStyle;
- else
- {
- ((CTextEnvirons *)itsEnvironment)->GetTextInfo( &textEnvirons);
- textEnvirons.theStyle = theStyle;
- ((CTextEnvirons *)itsEnvironment)->SetTextInfo( &textEnvirons);
- }
- CalcFontInfo();
- AdjustSize();
-
- } /* CStaticString::SetTextStyle */
- /******************************************************************************/
- void CStaticString::SetTextMode( Int16 theMode)
- {
- TextInfoRec textEnvirons;
-
- if (useWinFont) return;
-
- ((CTextEnvirons *)itsEnvironment)->GetTextInfo( &textEnvirons);
- textEnvirons.theMode = theMode;
- ((CTextEnvirons *)itsEnvironment)->SetTextInfo( &textEnvirons);
-
- } /* CStaticString::SetTextMode */
- /******************************************************************************/
- void CStaticString::Draw(Rect *area)
- {
- Rect r;
- CSmartWindow *window;
-
- inherited::Draw( area);
-
- if (eraseBehind)
- {
- r = frame;
- EraseRect( &r);
- }
- if (useWinFont)
- {
- window = (CSmartWindow *)GetWRefCon( macPort);
- window->RestoreEnvirons();
- TextFace( itsStyle);
- }
- MoveTo( 1, theFontInfo.ascent + 1);
- HLock( this);
- DrawString( itsString);
- HUnlock( this);
-
- } /* CStaticString::Draw */
- /******************************************************************************/
- void CStaticString::SetEraseBehind( Int16 doIt)
- {
- eraseBehind = doIt;
-
- } /* CStaticString::SetEraseBehind */
- /******************************************************************************/
-