]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/logg.cpp
implement support for button bitmaps (normal state only for now) for wxGTK
[wxWidgets.git] / src / generic / logg.cpp
index 80aab72d473abe71b372c27b542c38a55524dbdb..6d5ea29f6162b2ae1a053217f70d06e1b3a33b58 100644 (file)
@@ -51,6 +51,7 @@
 #include "wx/artprov.h"
 #include "wx/collpane.h"
 #include "wx/arrstr.h"
+#include "wx/msgout.h"
 
 #if wxUSE_THREADS
     #include "wx/thread.h"
@@ -127,7 +128,6 @@ public:
 #if CAN_SAVE_FILES
     void OnSave(wxCommandEvent& event);
 #endif // CAN_SAVE_FILES
-    void OnListSelect(wxListEvent& event);
     void OnListItemActivated(wxListEvent& event);
 
 private:
@@ -171,7 +171,7 @@ private:
     static size_t ms_maxLength;
 
     DECLARE_EVENT_TABLE()
-    DECLARE_NO_COPY_CLASS(wxLogDialog)
+    wxDECLARE_NO_COPY_CLASS(wxLogDialog);
 };
 
 BEGIN_EVENT_TABLE(wxLogDialog, wxDialog)
@@ -182,7 +182,6 @@ BEGIN_EVENT_TABLE(wxLogDialog, wxDialog)
 #if CAN_SAVE_FILES
     EVT_BUTTON(wxID_SAVE,   wxLogDialog::OnSave)
 #endif // CAN_SAVE_FILES
-    EVT_LIST_ITEM_SELECTED(wxID_ANY, wxLogDialog::OnListSelect)
     EVT_LIST_ITEM_ACTIVATED(wxID_ANY, wxLogDialog::OnListItemActivated)
 END_EVENT_TABLE()
 
@@ -235,7 +234,7 @@ void wxVLogStatus(wxFrame *pFrame, const wxString& format, va_list argptr)
 #else
     wxLog::OnLog(wxLOG_Status, msg, time(NULL));
 #endif
-    gs_pFrame = (wxFrame *) NULL;
+    gs_pFrame = NULL;
   }
 }
 
@@ -340,7 +339,8 @@ wxLogGui::DoShowMultipleLogMessages(const wxArrayString& messages,
 #else // !wxUSE_LOG_DIALOG
     // start from the most recent message
     wxString message;
-    str.reserve(nMsgCount*100);
+    const size_t nMsgCount = messages.size();
+    message.reserve(nMsgCount*100);
     for ( size_t n = nMsgCount; n > 0; n-- ) {
         message << m_aMessages[n - 1] << wxT("\n");
     }
@@ -435,32 +435,6 @@ void wxLogGui::DoLog(wxLogLevel level, const wxString& szString, time_t t)
 #endif // wxUSE_STATUSBAR
             break;
 
-        case wxLOG_Trace:
-        case wxLOG_Debug:
-            #ifdef __WXDEBUG__
-            {
-                wxString str;
-                TimeStamp(&str);
-                str += szString;
-
-                #if defined(__WXMSW__) && !defined(__WXMICROWIN__)
-                    // don't prepend debug/trace here: it goes to the
-                    // debug window anyhow
-                    str += wxT("\r\n");
-                    OutputDebugString(str.wx_str());
-                #else
-                    // send them to stderr
-                    wxFprintf(stderr, wxT("[%s] %s\n"),
-                              level == wxLOG_Trace ? wxT("Trace")
-                                                   : wxT("Debug"),
-                              str.c_str());
-                    fflush(stderr);
-                #endif
-            }
-            #endif // __WXDEBUG__
-
-            break;
-
         case wxLOG_FatalError:
             // show this one immediately
             wxMessageBox(szString, _("Fatal error"), wxICON_HAND);
@@ -492,6 +466,11 @@ void wxLogGui::DoLog(wxLogLevel level, const wxString& szString, time_t t)
             m_aTimes.Add((long)t);
             m_bHasMessages = true;
             break;
+
+        default:
+            // let the base class deal with debug/trace messages as well as any
+            // custom levels
+            wxLog::DoLog(level, szString, t);
     }
 }
 
@@ -560,7 +539,7 @@ private:
 
 
     DECLARE_EVENT_TABLE()
-    DECLARE_NO_COPY_CLASS(wxLogFrame)
+    wxDECLARE_NO_COPY_CLASS(wxLogFrame);
 };
 
 BEGIN_EVENT_TABLE(wxLogFrame, wxFrame)
@@ -793,7 +772,7 @@ bool wxLogWindow::OnFrameClose(wxFrame * WXUNUSED(frame))
 
 void wxLogWindow::OnFrameDelete(wxFrame * WXUNUSED(frame))
 {
-    m_pLogFrame = (wxLogFrame *)NULL;
+    m_pLogFrame = NULL;
 }
 
 wxLogWindow::~wxLogWindow()
@@ -938,6 +917,9 @@ wxLogDialog::wxLogDialog(wxWindow *parent,
 
 void wxLogDialog::CreateDetailsControls(wxWindow *parent)
 {
+    wxString fmt = wxLog::GetTimestamp();
+    bool hasTimeStamp = !fmt.IsEmpty();
+
     // create the list ctrl now
     m_listctrl = new wxListCtrl(parent, wxID_ANY,
                                 wxDefaultPosition, wxDefaultSize,
@@ -954,7 +936,9 @@ void wxLogDialog::CreateDetailsControls(wxWindow *parent)
     // no need to translate these strings as they're not shown to the
     // user anyhow (we use wxLC_NO_HEADER style)
     m_listctrl->InsertColumn(0, _T("Message"));
-    m_listctrl->InsertColumn(1, _T("Time"));
+
+    if (hasTimeStamp)
+        m_listctrl->InsertColumn(1, _T("Time"));
 
     // prepare the imagelist
     static const int ICON_SIZE = 16;
@@ -989,14 +973,7 @@ void wxLogDialog::CreateDetailsControls(wxWindow *parent)
 
     m_listctrl->SetImageList(imageList, wxIMAGE_LIST_SMALL);
 
-    // and fill it
-    wxString fmt = wxLog::GetTimestamp();
-    if ( !fmt )
-    {
-        // default format
-        fmt = _T("%c");
-    }
-
+    // fill the listctrl
     size_t count = m_messages.GetCount();
     for ( size_t n = 0; n < count; n++ )
     {
@@ -1028,12 +1005,15 @@ void wxLogDialog::CreateDetailsControls(wxWindow *parent)
         msg = EllipsizeString(msg);
 
         m_listctrl->InsertItem(n, msg, image);
-        m_listctrl->SetItem(n, 1, TimeStamp(fmt, (time_t)m_times[n]));
+
+        if (hasTimeStamp)
+            m_listctrl->SetItem(n, 1, TimeStamp(fmt, (time_t)m_times[n]));
     }
 
     // let the columns size themselves
     m_listctrl->SetColumnWidth(0, wxLIST_AUTOSIZE);
-    m_listctrl->SetColumnWidth(1, wxLIST_AUTOSIZE);
+    if (hasTimeStamp)
+        m_listctrl->SetColumnWidth(1, wxLIST_AUTOSIZE);
 
     // calculate an approximately nice height for the listctrl
     int height = GetCharHeight()*(count + 4);
@@ -1052,14 +1032,6 @@ void wxLogDialog::CreateDetailsControls(wxWindow *parent)
     m_listctrl->SetSize(wxDefaultCoord, wxMin(height, heightMax));
 }
 
-void wxLogDialog::OnListSelect(wxListEvent& event)
-{
-    // we can't just disable the control because this looks ugly under Windows
-    // (wrong bg colour, no scrolling...), but we still want to disable
-    // selecting items - it makes no sense here
-    m_listctrl->SetItemState(event.GetIndex(), 0, wxLIST_STATE_SELECTED);
-}
-
 void wxLogDialog::OnListItemActivated(wxListEvent& event)
 {
     // show the activated item in a message box
@@ -1170,7 +1142,7 @@ static int OpenLogFile(wxFile& file, wxString *pFilename, wxWindow *parent)
 
     // open file
     // ---------
-    bool bOk = false;
+    bool bOk;
     if ( wxFile::Exists(filename) ) {
         bool bAppend = false;
         wxString strMsg;