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

AUP3: UP-33 History window shows misleading "space used"

I've added compact and help buttons.
This commit is contained in:
Leland Lucius 2020-08-01 21:41:49 -05:00
parent c29c6b1b15
commit 9f058dc308
3 changed files with 42 additions and 11 deletions

View File

@ -43,6 +43,8 @@ undo memory so as to free up space.
#include "ProjectFileIO.h"
#include "ProjectHistory.h"
#include "ShuttleGui.h"
#include "widgets/AudacityMessageBox.h"
#include "widgets/HelpSystem.h"
enum {
ID_AVAIL = 1000,
@ -50,7 +52,8 @@ enum {
ID_TOTAL,
ID_LEVELS,
ID_DISCARD,
ID_DISCARD_CLIPBOARD
ID_DISCARD_CLIPBOARD,
ID_COMPACT
};
BEGIN_EVENT_TABLE(HistoryDialog, wxDialogWrapper)
@ -59,6 +62,8 @@ BEGIN_EVENT_TABLE(HistoryDialog, wxDialogWrapper)
EVT_LIST_ITEM_SELECTED(wxID_ANY, HistoryDialog::OnItemSelected)
EVT_BUTTON(ID_DISCARD, HistoryDialog::OnDiscard)
EVT_BUTTON(ID_DISCARD_CLIPBOARD, HistoryDialog::OnDiscardClipboard)
EVT_BUTTON(ID_COMPACT, HistoryDialog::OnCompact)
EVT_BUTTON(wxID_HELP, HistoryDialog::OnGetURL)
END_EVENT_TABLE()
HistoryDialog::HistoryDialog(AudacityProject *parent, UndoManager *manager):
@ -126,19 +131,15 @@ HistoryDialog::HistoryDialog(AudacityProject *parent, UndoManager *manager):
mClipboard = S
.ConnectRoot(wxEVT_KEY_DOWN, &HistoryDialog::OnChar)
.AddTextBox(XXO("Clipboard space used"), wxT("0"), 10);
S.Id(ID_DISCARD_CLIPBOARD).AddButton(XXO("Discard"));
.AddTextBox(XXO("Clip&board space used"), wxT("0"), 10);
S.Id(ID_DISCARD_CLIPBOARD).AddButton(XXO("D&iscard"));
}
S.EndMultiColumn();
}
S.EndStatic();
S.StartHorizontalLay(wxALIGN_RIGHT, false);
{
S.SetBorder(10);
S.Id(wxID_OK).AddButton(XXO("&OK"), wxALIGN_CENTER, true);
}
S.EndHorizontalLay();
mCompact = safenew wxButton(this, ID_COMPACT, _("&Compact"));
S.AddStandardButtons(eOkButton | eHelpButton, mCompact);
}
S.EndVerticalLay();
// ----------------------- End of main section --------------
@ -179,6 +180,7 @@ void HistoryDialog::OnAudioIO(wxCommandEvent& evt)
mAudioIOBusy = false;
mDiscard->Enable(!mAudioIOBusy);
mCompact->Enable(!mAudioIOBusy);
}
void HistoryDialog::UpdateDisplay(wxEvent& e)
@ -274,6 +276,31 @@ void HistoryDialog::OnDiscardClipboard(wxCommandEvent & WXUNUSED(event))
Clipboard::Get().Clear();
}
void HistoryDialog::OnCompact(wxCommandEvent & WXUNUSED(event))
{
auto &projectFileIO = ProjectFileIO::Get(*mProject);
projectFileIO.ReopenProject();
auto baseFile = wxFileName(projectFileIO.GetFileName());
auto walFile = wxFileName(projectFileIO.GetFileName() + wxT("-wal"));
auto before = baseFile.GetSize() + walFile.GetSize();
projectFileIO.Compact(nullptr, true);
auto after = baseFile.GetSize() + walFile.GetSize();
AudacityMessageBox(
XO("Compacting actually freed %s of disk space.")
.Format(Internat::FormatSize((before - after).GetValue())),
XO("History"));
}
void HistoryDialog::OnGetURL(wxCommandEvent & WXUNUSED(event))
{
HelpSystem::ShowHelp(this, wxT("View_Menu#history"));
}
void HistoryDialog::OnItemSelected(wxListEvent &event)
{
if (mAudioIOBusy) {

View File

@ -42,6 +42,8 @@ class HistoryDialog final : public wxDialogWrapper {
void OnItemSelected(wxListEvent & event);
void OnDiscard(wxCommandEvent & event);
void OnDiscardClipboard(wxCommandEvent & event);
void OnCompact(wxCommandEvent & event);
void OnGetURL(wxCommandEvent & event);
AudacityProject *mProject;
UndoManager *mManager;
@ -51,6 +53,7 @@ class HistoryDialog final : public wxDialogWrapper {
wxTextCtrl *mAvail;
wxSpinCtrl *mLevels;
wxButton *mDiscard;
wxButton *mCompact;
int mSelected;
bool mAudioIOBusy;

View File

@ -1022,8 +1022,9 @@ void ProjectFileIO::Compact(const std::shared_ptr<TrackList> &tracks, bool force
wxString backName = origName + "_compact_back";
wxString tempName = origName + "_compact_temp";
// Copy the original database to a new database while pruning unused sample blocks
if (CopyTo(tempName, XO("Compacting project"), mTemporary, true, tracks))
// Copy the original database to a new database. Only prune sample blocks if
// we have a tracklist.
if (CopyTo(tempName, XO("Compacting project"), mTemporary, tracks != nullptr, tracks))
{
// Must close the database to rename it
if (CloseConnection())