1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-08-16 08:34:10 +02:00

Remove a naked new in AudacityLogger.cpp

This commit is contained in:
Paul Licameli 2016-08-12 22:45:20 -04:00
parent b6241c46d3
commit 2024c8b319
2 changed files with 16 additions and 19 deletions

View File

@ -51,7 +51,6 @@ AudacityLogger::AudacityLogger()
: wxEvtHandler(), : wxEvtHandler(),
wxLog() wxLog()
{ {
mFrame = NULL;
mText = NULL; mText = NULL;
mUpdated = false; mUpdated = false;
} }
@ -97,48 +96,44 @@ void AudacityLogger::DoLogText(const wxString & str)
void AudacityLogger::Destroy() void AudacityLogger::Destroy()
{ {
if (mFrame) { if (mFrame) {
wxFrame *frame = mFrame; mFrame->Disconnect(LoggerID_Save,
mFrame = NULL;
mText = NULL;
frame->Disconnect(LoggerID_Save,
wxEVT_COMMAND_BUTTON_CLICKED, wxEVT_COMMAND_BUTTON_CLICKED,
wxCommandEventHandler(AudacityLogger::OnSave), wxCommandEventHandler(AudacityLogger::OnSave),
NULL, NULL,
this); this);
frame->Disconnect(LoggerID_Clear, mFrame->Disconnect(LoggerID_Clear,
wxEVT_COMMAND_BUTTON_CLICKED, wxEVT_COMMAND_BUTTON_CLICKED,
wxCommandEventHandler(AudacityLogger::OnClear), wxCommandEventHandler(AudacityLogger::OnClear),
NULL, NULL,
this); this);
frame->Disconnect(LoggerID_Close, mFrame->Disconnect(LoggerID_Close,
wxEVT_COMMAND_BUTTON_CLICKED, wxEVT_COMMAND_BUTTON_CLICKED,
wxCommandEventHandler(AudacityLogger::OnClose), wxCommandEventHandler(AudacityLogger::OnClose),
NULL, NULL,
this); this);
frame->Disconnect(LoggerID_Save, mFrame->Disconnect(LoggerID_Save,
wxEVT_COMMAND_MENU_SELECTED, wxEVT_COMMAND_MENU_SELECTED,
wxCommandEventHandler(AudacityLogger::OnSave), wxCommandEventHandler(AudacityLogger::OnSave),
NULL, NULL,
this); this);
frame->Disconnect(LoggerID_Clear, mFrame->Disconnect(LoggerID_Clear,
wxEVT_COMMAND_MENU_SELECTED, wxEVT_COMMAND_MENU_SELECTED,
wxCommandEventHandler(AudacityLogger::OnClear), wxCommandEventHandler(AudacityLogger::OnClear),
NULL, NULL,
this); this);
frame->Disconnect(LoggerID_Close, mFrame->Disconnect(LoggerID_Close,
wxEVT_COMMAND_MENU_SELECTED, wxEVT_COMMAND_MENU_SELECTED,
wxCommandEventHandler(AudacityLogger::OnClose), wxCommandEventHandler(AudacityLogger::OnClose),
NULL, NULL,
this); this);
frame->Disconnect(wxEVT_CLOSE_WINDOW, mFrame->Disconnect(wxEVT_CLOSE_WINDOW,
wxCloseEventHandler(AudacityLogger::OnCloseWindow), wxCloseEventHandler(AudacityLogger::OnCloseWindow),
NULL, NULL,
this); this);
frame->Destroy(); mFrame.reset();
} }
} }
@ -165,7 +160,8 @@ void AudacityLogger::Show(bool show)
} }
// This is the first use, so create the frame // This is the first use, so create the frame
wxFrame *frame = new wxFrame(NULL, wxID_ANY, _("Audacity Log")); Destroy_ptr<wxFrame> frame
{ safenew wxFrame(NULL, wxID_ANY, _("Audacity Log")) };
frame->SetName(frame->GetTitle()); frame->SetName(frame->GetTitle());
frame->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE)); frame->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE));
@ -185,7 +181,7 @@ void AudacityLogger::Show(bool show)
} }
// Log text // Log text
ShuttleGui S(frame, eIsCreating); ShuttleGui S(frame.get(), eIsCreating);
S.SetStyle(wxNO_BORDER | wxTAB_TRAVERSAL); S.SetStyle(wxNO_BORDER | wxTAB_TRAVERSAL);
S.Prop(true).StartPanel(); S.Prop(true).StartPanel();
@ -254,7 +250,7 @@ void AudacityLogger::Show(bool show)
NULL, NULL,
this); this);
mFrame = frame; mFrame = std::move( frame );
mFrame->Show(); mFrame->Show();
@ -302,7 +298,7 @@ void AudacityLogger::OnSave(wxCommandEvent & WXUNUSED(e))
wxT("txt"), wxT("txt"),
wxT("*.txt"), wxT("*.txt"),
wxFD_SAVE | wxFD_OVERWRITE_PROMPT | wxRESIZE_BORDER, wxFD_SAVE | wxFD_OVERWRITE_PROMPT | wxRESIZE_BORDER,
mFrame); mFrame.get());
if (fName == wxEmptyString) { if (fName == wxEmptyString) {
return; return;
@ -312,7 +308,7 @@ void AudacityLogger::OnSave(wxCommandEvent & WXUNUSED(e))
wxMessageBox(_("Couldn't save log to file: ") + fName, wxMessageBox(_("Couldn't save log to file: ") + fName,
_("Warning"), _("Warning"),
wxICON_EXCLAMATION, wxICON_EXCLAMATION,
mFrame); mFrame.get());
return; return;
} }
} }

View File

@ -16,6 +16,7 @@
#include "Audacity.h" #include "Audacity.h"
#include "MemoryX.h"
#include <wx/event.h> #include <wx/event.h>
#include <wx/log.h> #include <wx/log.h>
#include <wx/frame.h> #include <wx/frame.h>
@ -46,7 +47,7 @@ class AudacityLogger final : public wxEvtHandler, public wxLog {
void OnClear(wxCommandEvent & e); void OnClear(wxCommandEvent & e);
void OnSave(wxCommandEvent & e); void OnSave(wxCommandEvent & e);
wxFrame *mFrame; Destroy_ptr<wxFrame> mFrame;
wxTextCtrl *mText; wxTextCtrl *mText;
wxString mBuffer; wxString mBuffer;
bool mUpdated; bool mUpdated;