- void OnIdle(wxIdleEvent&);
-
- // accessors
- wxTextCtrl *TextCtrl() const { return m_pTextCtrl; }
-
-private:
- enum
- {
- Menu_Close = 100,
- Menu_Save,
- Menu_Clear
- };
-
- // instead of closing just hide the window to be able to Show() it later
- void DoClose() { Show(FALSE); }
-
- wxTextCtrl *m_pTextCtrl;
- wxLogWindow *m_log;
-
- DECLARE_EVENT_TABLE()
-};
-
-BEGIN_EVENT_TABLE(wxLogFrame, wxFrame)
- // wxLogWindow menu events
- EVT_MENU(Menu_Close, wxLogFrame::OnClose)
- EVT_MENU(Menu_Save, wxLogFrame::OnSave)
- EVT_MENU(Menu_Clear, wxLogFrame::OnClear)
-
- EVT_CLOSE(wxLogFrame::OnCloseWindow)
-END_EVENT_TABLE()
-
-wxLogFrame::wxLogFrame(wxFrame *pParent, wxLogWindow *log, const char *szTitle)
- : wxFrame(pParent, -1, szTitle)
-{
- m_log = log;
-
- // @@ kludge: wxSIMPLE_BORDER is simply to prevent wxWindows from creating
- // a rich edit control instead of a normal one we want in wxMSW
- m_pTextCtrl = new wxTextCtrl(this, -1, wxEmptyString, wxDefaultPosition,
- wxDefaultSize,
- //wxSIMPLE_BORDER |
- wxTE_MULTILINE |
- wxHSCROLL |
- wxTE_READONLY);
-
- // create menu
- wxMenuBar *pMenuBar = new wxMenuBar;
- wxMenu *pMenu = new wxMenu;
- pMenu->Append(Menu_Save, _("&Save..."), _("Save log contents to file"));
- pMenu->Append(Menu_Clear, _("C&lear"), _("Clear the log contents"));
- pMenu->AppendSeparator();
- pMenu->Append(Menu_Close, _("&Close"), _("Close this window"));
- pMenuBar->Append(pMenu, _("&Log"));
- SetMenuBar(pMenuBar);
-
- // status bar for menu prompts
- CreateStatusBar();
-
- m_log->OnFrameCreate(this);
-}
-
-void wxLogFrame::OnClose(wxCommandEvent& WXUNUSED(event))
-{
- DoClose();
-}
-
-void wxLogFrame::OnCloseWindow(wxCloseEvent& WXUNUSED(event))
-{
- DoClose();
-}
-
-void wxLogFrame::OnSave(wxCommandEvent& WXUNUSED(event))
-{
- // get the file name
- // -----------------
- const char *szFileName = wxSaveFileSelector("log", "txt", "log.txt");
- if ( szFileName == NULL ) {
- // cancelled
- return;
- }
-
- // open file
- // ---------
- wxFile file;
- bool bOk = FALSE;
- if ( wxFile::Exists(szFileName) ) {
- bool bAppend = FALSE;
- wxString strMsg;
- strMsg.Printf(_("Append log to file '%s' "
- "(choosing [No] will overwrite it)?"), szFileName);
- switch ( wxMessageBox(strMsg, _("Question"), wxYES_NO | wxCANCEL) ) {
- case wxYES:
- bAppend = TRUE;
- break;
-
- case wxNO:
- bAppend = FALSE;
- break;
-
- case wxCANCEL:
- return;
-
- default:
- wxFAIL_MSG(_("invalid message box return value"));
- }
-
- if ( bAppend ) {
- bOk = file.Open(szFileName, wxFile::write_append);
- }
- else {
- bOk = file.Create(szFileName, TRUE /* overwrite */);
- }
- }
- else {
- bOk = file.Create(szFileName);
- }
-
- // retrieve text and save it
- // -------------------------
-#ifdef __WXGTK__
- // @@@@ TODO: no GetNumberOfLines and GetLineText in wxGTK yet
- wxLogError(_("Sorry, this function is not implemented under GTK"));