00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef __FLEXILOG__H__
00013 #define __FLEXILOG__H__
00014 #include <wx/app.h>
00015 #include <wx/log.h>
00016 #include <wx/wfstream.h>
00017 #include <wx/txtstrm.h>
00018 #include <wx/textctrl.h>
00019 #include <wx/frame.h>
00020
00021 #define LOGFILE wxT("app.log")
00022
00023 #define LOGERROR(a) VRUT::FlexiLog::LogMessageFlexi((a), wxLOG_Error)
00024 #define LOGWARNING(a) VRUT::FlexiLog::LogMessageFlexi((a), wxLOG_Warning)
00025 #define LOGDEBUG(a) VRUT::FlexiLog::LogMessageFlexi((a), wxLOG_Debug)
00026 #define LOGVERBOSE(a) VRUT::FlexiLog::LogMessageFlexi((a), wxLOG_Info)
00027 #define LOG(a) VRUT::FlexiLog::LogMessageFlexi((a), wxLOG_Message)
00028
00029
00030 namespace VRUT
00031 {
00032 class Kernel;
00033
00035 class FlexiLog : public wxLogTextCtrl
00036 {
00037 protected:
00039 wxTextCtrl * textCtrl;
00041 wxFileOutputStream * dbgout;
00043 wxTextOutputStream * dout;
00045 bool logToTextCtrl;
00047 bool syncEveryMsg;
00049 Kernel * kernel;
00050
00051 public:
00053 FlexiLog(wxTextCtrl * _textCtrl);
00055 virtual ~FlexiLog();
00056
00058 static FlexiLog * GetInstance();
00060 static void LogMessageFlexi(const wxString & msg, wxLogLevel loglevel);
00062 static void SetTextCtrlLogging(bool enable)
00063 {
00064 FlexiLog * logInst = GetInstance();
00065 if (logInst)
00066 logInst->logToTextCtrl = enable;
00067 }
00068 void SyncEveryMsg(bool enable = true)
00069 {
00070 syncEveryMsg = enable;
00071 }
00073 wxTextCtrl * GetTextCtrl() const
00074 {
00075 return textCtrl;
00076 }
00081 virtual void DoLog(wxLogLevel level, const wxChar * msg, time_t timestamp);
00083 void SetStatusText(const wxString & status);
00085 void LogMessage(const wxString & msg, wxLogLevel loglevel);
00086
00087 friend class Kernel;
00088 };
00089 };
00090
00091
00092 #endif