home *** CD-ROM | disk | FTP | other *** search
- /* Project emedit
- Early Morning Software
- Copyright ⌐ 1994. All Rights Reserved.
-
- SUBSYSTEM: emedit.exe Application
- FILE: mdtmssgb.cpp
- AUTHOR: Ted Stockwell
-
-
- OVERVIEW
- ========
- Source file for implementation of emeditMessageBar (TMessageBar).
- */
-
- #include <owl\owlpch.h>
- #pragma hdrstop
-
- #include "mdtmssgb.h"
-
- #define INDICATOR_INSERT 0
- #define INDICATOR_MODIFIED 1
- #define INDICATOR_POSITION 2
- static char* IndicatorStrings[]= { "Insert", "Modified", "Line XXXXXXX of XXXXXXX : Column XXXXX" };
-
-
- //{{emeditMessageBar Implementation}}
-
-
- emeditMessageBar::emeditMessageBar (TWindow* parent):
- TMessageBar(parent)
- {
- // INSERT>> Your constructor code here.
- XPosition= YPosition= Count= 1;
- Spacing.Value = 2; // 1/4 em quad
-
- //
- // we want one border height along the top and bottom and 1/2 an em quad
- // along the left and right so we will set pixels and compute the lengths
- // ourselves
- //
- Margins.Units = TMargins::Pixels;
- Margins.Left = Margins.Right = LayoutUnitsToPixels(4);
- Margins.Top = Margins.Bottom = GetSystemMetrics(SM_CYBORDER);
-
- Gadgets->SetBorderStyle(TGadget::Recessed); // Set border style for first gadget
-
- //
- // create text gadgets for mode indicators
- //
- InsertGadget= GetIndicatorGadget(INDICATOR_INSERT);
- ModifyGadget= GetIndicatorGadget(INDICATOR_MODIFIED);
- PositionGadget= GetIndicatorGadget(INDICATOR_POSITION);
-
- SetInsertIndicator( TRUE );
- SetModifyIndicator( FALSE );
- SetPositionIndicator( FALSE );
- }
-
-
- emeditMessageBar::~emeditMessageBar ()
- {
- Destroy();
-
- // INSERT>> Your destructor code here.
-
- }
-
-
-
- TTextGadget* emeditMessageBar::GetIndicatorGadget( int i ) {
- TScreenDC dc;
- dc.SelectObject(*Font);
- const int SMALL_MARGIN = 1;
- TSize extent;
- int left, top, right, bottom;
- TTextGadget* gadget = new TTextGadget(0, TGadget::Recessed,
- TTextGadget::Left,
- strlen(IndicatorStrings[i]));
- TMargins margins = gadget->GetMargins();
-
- //
- // use small left and right margins
- //
- margins.Left = margins.Right = SMALL_MARGIN;
- gadget->SetMargins(margins);
-
- //
- // turn off shrink wrapping for the width and choose a width that is
- // custom fit for the string
- //
- dc.GetTextExtent(IndicatorStrings[i], strlen(IndicatorStrings[i]), extent);
- gadget->SetShrinkWrap(FALSE, TRUE);
- TMessageBar::Insert(*gadget);
- gadget->GetOuterSizes(left, right, top, bottom);
- extent.cx += left + right;
- gadget->SetSize(extent);
- return gadget;
- }
-
-
- void emeditMessageBar::SetInsertIndicator( BOOL on) {
- if (GetInsertIndicator() != on)
- InsertGadget->SetText(on ? IndicatorStrings[INDICATOR_INSERT] : 0);
- }
-
-
-
- void emeditMessageBar::SetModifyIndicator( BOOL on ) {
- if (GetModifyIndicator() != on)
- ModifyGadget->SetText(on ? IndicatorStrings[INDICATOR_MODIFIED] : 0);
- }
-
-
- BOOL emeditMessageBar::GetInsertIndicator() {
- BOOL on= FALSE;
- const char* const T= InsertGadget->GetText();
- if (T)
- if (strcmp(T, IndicatorStrings[INDICATOR_INSERT]) == 0)
- on= TRUE;
- return on;
- }
-
-
-
- BOOL emeditMessageBar::GetModifyIndicator() {
- BOOL on= FALSE;
- const char* const T= ModifyGadget->GetText();
- if (T)
- if (strcmp(T, IndicatorStrings[INDICATOR_MODIFIED]) == 0)
- on= TRUE;
- return on;
- }
-
-
-
- void emeditMessageBar::GetPositionIndicator( long& X, long& Y, long& C ) {
- X= XPosition;
- Y= YPosition;
- C= Count;
- }
-
-
-
- void emeditMessageBar::SetPositionIndicator( long X, long Y, long cnt ) {
- if (X != XPosition || Y != YPosition || cnt != Count) {
- const char* gtext= 0;
- string S= "Line ";
- if (0 < X && 0 < Y && 0 < cnt) {
- char B[34];
- S+= ltoa( Y, B, 10 );
- S+= " of ";
- S+= ltoa( cnt, B, 10 );
- S+= " : Column ";
- S+= ltoa( X, B, 10 );
- gtext= S.c_str();
- XPosition= X;
- YPosition= Y;
- Count= cnt;
- } else {
- XPosition= 0;
- YPosition= 0;
- Count= 0;
- }
- PositionGadget->SetText(gtext);
- }
- }
-
-
-
-
-
-
-