Annotation of DewFind/LogFile.cpp, revision 1.1.1.1

1.1       nick        1: // LogFile.cpp: implementation of the LogFile class.
                      2: //
                      3: //////////////////////////////////////////////////////////////////////
                      4: #include "stdafx.h"
                      5: #include "LogFile.h"
                      6: 
                      7: #ifdef _DEBUG
                      8: #undef THIS_FILE
                      9: static char THIS_FILE[]=__FILE__;
                     10: #define new DEBUG_NEW
                     11: #endif
                     12: 
                     13: //*****************************************************************************************************************************
                     14: //---------------------------------------------------------------PUBLIC-------------------------------------------------------
                     15: //*****************************************************************************************************************************
                     16: //
                     17: 
                     18: LogFile::LogFile()
                     19: {
                     20:        loaded_ = false;
                     21: }
                     22: 
                     23: LogFile::~LogFile()
                     24: {
                     25:        Close();
                     26: }
                     27: 
                     28: void LogFile::ToggleStatus(bool onoff)
                     29: {
                     30:   status_ = onoff;
                     31: }
                     32: 
                     33: int LogFile::Init(const CString sFile)
                     34: {
                     35: 
                     36:     //Make sure log file is not already open
                     37:     if (loaded_)
                     38:         return false;
                     39: 
                     40:     //Open file
                     41:     if (status_ == true)
                     42:        {
                     43: 
                     44:                hFile_ = CreateFile (sFile, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,0);
                     45: 
                     46:                
                     47:                if (hFile_ == INVALID_HANDLE_VALUE)
                     48:                        return false;
                     49: 
                     50: 
                     51:                //Set file loaded flag
                     52:                loaded_ = true;
                     53: 
                     54:                //Set filename
                     55:                fileName_ = sFile;
                     56: 
                     57:                //Write RTF header
                     58:                WriteString ("{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0 Courier New;}}\\fs20\n");
                     59: 
                     60:                //Write colour table
                     61:                WriteString ("{\\colortbl;\n");                     //Black
                     62:                WriteString ("\\red255\\green255\\blue255;\n");     //White
                     63:                WriteString ("\\red128\\green128\\blue128;\n");     //Grey
                     64:                WriteString ("\\red255\\green0\\blue0;\n");         //Red
                     65:                WriteString ("\\red0\\green255\\blue0;\n");         //Green
                     66:                WriteString ("\\red0\\green0\\blue255;\n");         //Blue
                     67:                WriteString ("\\red0\\green255\\blue255;\n");       //Cyan
                     68:                WriteString ("\\red255\\green255\\blue0;\n");       //Yellow
                     69:                WriteString ("\\red255\\green0\\blue255;\n");       //Magenta
                     70:                WriteString ("\\red128\\green0\\blue0;\n");         //Dark Red
                     71:                WriteString ("\\red0\\green128\\blue0;\n");         //Dark Green
                     72:                WriteString ("\\red0\\green0\\blue128;\n");         //Dark Blue
                     73:                WriteString ("\\red255\\green128\\blue128;\n");     //Light Red
                     74:                WriteString ("\\red128\\green255\\blue128;\n");     //Light Green
                     75:                WriteString ("\\red128\\green128\\blue255;\n");     //Light Blue
                     76:                WriteString ("\\red255\\green128\\blue0;\n");       //Orange
                     77:                WriteString ("}\n");
                     78: 
                     79:                //Success
                     80:        };
                     81:     return true;
                     82: };
                     83:        
                     84: int LogFile::Close()
                     85: {
                     86:        if (!loaded_)
                     87:         return false;
                     88: 
                     89:     //Write closing line
                     90:     //LogString ("");
                     91:     //LogString ("[B]Log Closed.[/B]");
                     92: 
                     93:     //Write closing brace
                     94:     WriteString ("}");
                     95: 
                     96:     //Close file
                     97:     CloseHandle (hFile_);
                     98: 
                     99:     //Clear file loaded flag
                    100:     loaded_ = FALSE;
                    101: 
                    102:     //Success
                    103:     return true;
                    104: 
                    105: };
                    106: 
                    107: 
                    108: bool LogFile::GetState()
                    109: {
                    110:     return(loaded_);
                    111: };
                    112: 
                    113: 
                    114: 
                    115: bool LogFile::LogString(CString sText)
                    116: {
                    117:        if (!loaded_)
                    118:         return false;
                    119: 
                    120:     //Format string
                    121:     sText = DoFormatting (sText);
                    122: 
                    123:     //Write string to file
                    124:     WriteString (sText);
                    125: 
                    126:     //Success
                    127:     return true;
                    128: };
                    129: 
                    130: bool LogFile::LogMessage(const CString sSource, CString sMessage, const int x,MESSAGETYPE messageType)
                    131: {
                    132:        CString tmp;
                    133:        tmp.Format(" %i",x);
                    134:        sMessage = sMessage + " " + tmp;
                    135: 
                    136:        return(LogMessage(sSource,sMessage,messageType));
                    137: }
                    138: 
                    139: bool LogFile::LogMessage(const CString sSource, const CString sMessage, MESSAGETYPE messageType)
                    140: {
                    141:        CString str;
                    142: 
                    143:        switch(messageType)
                    144:        {
                    145:        case MSG_SUCCESS:
                    146:                str = "[BLUE]";
                    147:                break;
                    148:        case MSG_INFO:
                    149:                str = "[GREY]";
                    150:                break;
                    151:        case MSG_WARN:
                    152:                str = "[ORANGE]";
                    153:                break;
                    154:        case MSG_ERROR:
                    155:                str = "[RED]";
                    156:                break;
                    157:        };
                    158: 
                    159:        str += "[B]<";
                    160:        str += sSource;
                    161:        str += ">[/B]";
                    162:        str += sMessage;
                    163: 
                    164:        return(LogString(str));
                    165: };
                    166: 
                    167: //-------------------------------------PRIVATE-------------------------------------------------------
                    168: 
                    169: 
                    170: void LogFile::WriteString(const CString sText)
                    171: {
                    172:     if (status_ == true)
                    173:        {
                    174:                DWORD bytesWritten;
                    175:                char sTextX[100];
                    176:                strcpy(sTextX,sText);
                    177:                WriteFile (hFile_, sTextX, (int) sText.GetLength(), &bytesWritten, NULL);
                    178:        };
                    179: };
                    180: 
                    181: 
                    182: CString LogFile::DoFormatting (CString sText)
                    183: {
                    184:        //Special Characters
                    185:        sText.Replace("\\","\\\\");
                    186:        sText.Replace("{","\\{");
                    187:        sText.Replace("}","\\}");
                    188:        
                    189:        //Colors
                    190:     sText.Replace("[BLACK]", "\\cf0 ");
                    191:     sText.Replace("[WHITE]", "\\cf1 ");
                    192:     sText.Replace("[GREY]", "\\cf2 ");
                    193:     
                    194:        sText.Replace("[RED]", "\\cf3 ");
                    195:     sText.Replace("[GREEN]", "\\cf4 ");
                    196:     sText.Replace("[BLUE]", "\\cf5 ");
                    197:     
                    198:        sText.Replace("[CYAN]", "\\cf6 ");
                    199:     sText.Replace("[YELLOW]", "\\cf7 ");
                    200:     sText.Replace("[MAGENTA]", "\\cf8 ");
                    201:     sText.Replace("[DARK_RED]", "\\cf9 ");
                    202:     sText.Replace("[DARK_GREEN]", "\\cf10 ");
                    203:     sText.Replace("[DARK_BLUE]", "\\cf11 ");
                    204:     sText.Replace("[LIGHT_RED]", "\\cf12 ");
                    205:     sText.Replace("[LIGHT_GREEN]", "\\cf13 ");
                    206:     sText.Replace("[LIGHT_BLUE]", "\\cf14 ");
                    207:     sText.Replace("[ORANGE]", "\\cf15 ");
                    208: 
                    209:        // Text Style
                    210:     sText.Replace("[PLAIN]","\\plain ");
                    211:        sText.Replace("[B]","\\b ");
                    212:     sText.Replace("[/B]","\\b0 ");
                    213:        sText.Replace("[I]","\\i ");
                    214:     sText.Replace("[/I]","\\i0 ");
                    215:     sText.Replace("[U]","\\ul ");
                    216:     sText.Replace("[/U]","\\ul0 ");
                    217:     sText.Replace("[S]","\\strike ");
                    218:     sText.Replace("[/S]","\\strike0 ");
                    219:        sText.Replace("[SUB]","\\sub ");
                    220:     sText.Replace("[/SUB]","\\sub0 ");
                    221:     sText.Replace("[SUPER]","\\super ");
                    222:     sText.Replace("[/SUPER]","\\super0 ");
                    223:     sText.Replace("[LEFT]", "\\ql ");
                    224:     sText.Replace("[RIGHT]", "\\qr ");
                    225:     sText.Replace("[CENTER]", "\\qc ");
                    226:     sText.Replace("[FULL]", "\\qj ");
                    227:     sText.Replace("[TITLE]", "\\fs40 ");
                    228:     sText.Replace("[/TITLE]", "\\fs20 ");
                    229:     sText.Replace("[H]", "\\fs24 ");
                    230:     sText.Replace("[/H]", "\\fs20 ");
                    231:        
                    232:        
                    233:        sText = "{\\pard " + sText;
                    234:        sText = sText + "\\par}\n";
                    235:        return(sText);
                    236: };
                    237: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>