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>