#include "wx/textfile.h"
#include "wx/statline.h"
-#if wxUSE_LOG
-
#ifdef __WXMSW__
// for OutputDebugString()
#include "wx/msw/private.h"
#endif // Windows
-// may be defined to 0 for old behavior (using wxMessageBox) - shouldn't be
-// changed normally (that's why it's here and not in setup.h)
-#define wxUSE_LOG_DIALOG 1
-
#if wxUSE_LOG_DIALOG
#include "wx/listctrl.h"
#include "wx/imaglist.h"
#include "wx/image.h"
-#else // !wxUSE_TEXTFILE
+#else // !wxUSE_LOG_DIALOG
#include "wx/msgdlg.h"
#endif // wxUSE_LOG_DIALOG/!wxUSE_LOG_DIALOG
// private functions
// ----------------------------------------------------------------------------
-#if wxUSE_FILE
+#if wxUSE_FILE && wxUSE_FILEDLG
// pass an uninitialized file object, the function will ask the user for the
// filename and try to open it, returns TRUE on success (file was opened),
// ----------------------------------------------------------------------------
// we use a global variable to store the frame pointer for wxLogStatus - bad,
-// but it's he easiest way
+// but it's the easiest way
static wxFrame *gs_pFrame; // FIXME MT-unsafe
// ============================================================================
else // more than one message
{
#if wxUSE_LOG_DIALOG
+
wxLogDialog dlg(parent,
m_aMessages, m_aSeverity, m_aTimes,
title, style);
case wxLOG_Debug:
#ifdef __WXDEBUG__
{
- #ifdef __WXMSW__
+ #if defined(__WXMSW__) && !defined(__WXMICROWIN__)
// don't prepend debug/trace here: it goes to the
// debug window anyhow, but do put a timestamp
wxString str;
wxHSCROLL |
wxTE_READONLY);
+#if wxUSE_MENUS
// create menu
wxMenuBar *pMenuBar = new wxMenuBar;
wxMenu *pMenu = new wxMenu;
pMenu->Append(Menu_Close, _("&Close"), _("Close this window"));
pMenuBar->Append(pMenu, _("&Log"));
SetMenuBar(pMenuBar);
+#endif // wxUSE_MENUS
#if wxUSE_STATUSBAR
// status bar for menu prompts
#if wxUSE_FILE
void wxLogFrame::OnSave(wxCommandEvent& WXUNUSED(event))
{
+#if wxUSE_FILEDLG
wxString filename;
wxFile file;
int rc = OpenLogFile(file, &filename);
else {
wxLogStatus(this, _("Log saved to the file '%s'."), filename.c_str());
}
+#endif
}
#endif // wxUSE_FILE
// wxLogWindow
// -----------
+
wxLogWindow::wxLogWindow(wxFrame *pParent,
const wxChar *szTitle,
bool bShow,
bool bDoPass)
{
- m_bPassMessages = bDoPass;
+ PassMessages(bDoPass);
m_pLogFrame = new wxLogFrame(pParent, this, szTitle);
- m_pOldLog = wxLog::SetActiveTarget(this);
if ( bShow )
m_pLogFrame->Show(TRUE);
m_pLogFrame->Show(bShow);
}
-void wxLogWindow::Flush()
-{
- if ( m_pOldLog != NULL )
- m_pOldLog->Flush();
-
- m_bHasMessages = FALSE;
-}
-
void wxLogWindow::DoLog(wxLogLevel level, const wxChar *szString, time_t t)
{
// first let the previous logger show it
- if ( m_pOldLog != NULL && m_bPassMessages ) {
- // bogus cast just to access protected DoLog
- ((wxLogWindow *)m_pOldLog)->DoLog(level, szString, t);
- }
+ wxLogPassThrough::DoLog(level, szString, t);
if ( m_pLogFrame ) {
switch ( level ) {
wxLogWindow::~wxLogWindow()
{
- delete m_pOldLog;
-
// may be NULL if log frame already auto destroyed itself
delete m_pLogFrame;
}
void wxLogDialog::OnSave(wxCommandEvent& WXUNUSED(event))
{
+#if wxUSE_FILEDLG
wxFile file;
int rc = OpenLogFile(file);
if ( rc == -1 )
if ( !ok )
wxLogError(_("Can't save log contents to file."));
+#endif
}
#endif // wxUSE_FILE
#endif // wxUSE_LOG_DIALOG
-#if wxUSE_FILE
+#if wxUSE_FILE && wxUSE_FILEDLG
// pass an uninitialized file object, the function will ask the user for the
// filename and try to open it, returns TRUE on success (file was opened),