Bug 1872 - Most Non-Modal dialogs do not update buttons when language changed
This commit is contained in:
parent
0ab7645105
commit
20ace313fa
|
@ -294,3 +294,16 @@ void AudacityLogger::OnSave(wxCommandEvent & WXUNUSED(e))
|
|||
}
|
||||
}
|
||||
|
||||
void AudacityLogger::UpdatePrefs()
|
||||
{
|
||||
if (mFrame) {
|
||||
bool shown = mFrame->IsShown();
|
||||
if (shown) {
|
||||
Show(false);
|
||||
}
|
||||
mFrame.reset();
|
||||
if (shown) {
|
||||
Show(true);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -19,13 +19,17 @@
|
|||
#include "Experimental.h"
|
||||
|
||||
#include "MemoryX.h"
|
||||
#include "Prefs.h"
|
||||
#include <wx/log.h> // to inherit
|
||||
#include <wx/event.h> // to inherit wxEvtHandler
|
||||
|
||||
class wxFrame;
|
||||
class wxTextCtrl;
|
||||
|
||||
class AudacityLogger final : public wxEvtHandler, public wxLog {
|
||||
class AudacityLogger final : public wxEvtHandler,
|
||||
public wxLog,
|
||||
public PrefsListener
|
||||
{
|
||||
public:
|
||||
|
||||
// Get the singleton instance or null
|
||||
|
@ -52,6 +56,9 @@ class AudacityLogger final : public wxEvtHandler, public wxLog {
|
|||
void OnClear(wxCommandEvent & e);
|
||||
void OnSave(wxCommandEvent & e);
|
||||
|
||||
// PrefsListener implementation
|
||||
void UpdatePrefs() override;
|
||||
|
||||
Destroy_ptr<wxFrame> mFrame;
|
||||
wxTextCtrl *mText;
|
||||
wxString mBuffer;
|
||||
|
|
|
@ -66,6 +66,9 @@
|
|||
#include "widgets/WindowAccessible.h"
|
||||
#endif
|
||||
|
||||
#define MacrosPaletteTitle XO("Macros Palette")
|
||||
#define ManageMacrosTitle XO("Manage Macros")
|
||||
|
||||
#define MacrosListID 7001
|
||||
#define CommandsListID 7002
|
||||
#define ApplyToProjectID 7003
|
||||
|
@ -82,7 +85,7 @@ END_EVENT_TABLE()
|
|||
|
||||
ApplyMacroDialog::ApplyMacroDialog(
|
||||
wxWindow * parent, AudacityProject &project, bool bInherited):
|
||||
wxDialogWrapper(parent, wxID_ANY, XO("Macros Palette"),
|
||||
wxDialogWrapper(parent, wxID_ANY, MacrosPaletteTitle,
|
||||
wxDefaultPosition, wxDefaultSize,
|
||||
wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
|
||||
, mMacroCommands{ project }
|
||||
|
@ -93,8 +96,8 @@ ApplyMacroDialog::ApplyMacroDialog(
|
|||
mbExpanded = false;
|
||||
if( bInherited )
|
||||
return;
|
||||
SetLabel(XO("Macros Palette")); // Provide visual label
|
||||
SetName(XO("Macros Palette")); // Provide audible label
|
||||
SetLabel(MacrosPaletteTitle); // Provide visual label
|
||||
SetName(MacrosPaletteTitle); // Provide audible label
|
||||
Populate();
|
||||
|
||||
}
|
||||
|
@ -758,9 +761,6 @@ void MacrosWindow::UpdateMenus()
|
|||
|
||||
void MacrosWindow::UpdateDisplay( bool bExpanded )
|
||||
{
|
||||
if( bExpanded == mbExpanded )
|
||||
return;
|
||||
|
||||
if( !SaveChanges() )
|
||||
return;
|
||||
|
||||
|
@ -1318,5 +1318,11 @@ void MacrosWindow::OnKeyDown(wxKeyEvent &event)
|
|||
|
||||
TranslatableString MacrosWindow::WindowTitle() const
|
||||
{
|
||||
return mbExpanded ? XO("Manage Macros") : XO("Macros Palette");
|
||||
return mbExpanded ? ManageMacrosTitle : MacrosPaletteTitle;
|
||||
}
|
||||
|
||||
// PrefsListener implementation
|
||||
void MacrosWindow::UpdatePrefs()
|
||||
{
|
||||
UpdateDisplay(mbExpanded);
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include <wx/defs.h>
|
||||
|
||||
#include "BatchCommands.h"
|
||||
#include "Prefs.h"
|
||||
|
||||
class wxWindow;
|
||||
class wxTextCtrl;
|
||||
|
@ -47,7 +48,6 @@ class ApplyMacroDialog : public wxDialogWrapper {
|
|||
void ApplyMacroToProject( int iMacro, bool bHasGui=true );
|
||||
void ApplyMacroToProject( const CommandID & MacroID, bool bHasGui=true );
|
||||
|
||||
|
||||
// These will be reused in the derived class...
|
||||
wxListCtrl *mList;
|
||||
wxListCtrl *mMacros;
|
||||
|
@ -69,7 +69,8 @@ protected:
|
|||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
class MacrosWindow final : public ApplyMacroDialog
|
||||
class MacrosWindow final : public ApplyMacroDialog,
|
||||
public PrefsListener
|
||||
{
|
||||
public:
|
||||
MacrosWindow(
|
||||
|
@ -125,6 +126,9 @@ private:
|
|||
void InsertCommandAt(int item);
|
||||
bool SaveChanges();
|
||||
|
||||
// PrefsListener implementation
|
||||
void UpdatePrefs() override;
|
||||
|
||||
AudacityProject &mProject;
|
||||
|
||||
wxButton *mRemove;
|
||||
|
|
|
@ -89,6 +89,8 @@ the mouse around.
|
|||
#include "widgets/WindowAccessible.h"
|
||||
#endif
|
||||
|
||||
#define FrequencyAnalysisTitle XO("Frequency Analysis")
|
||||
|
||||
DEFINE_EVENT_TYPE(EVT_FREQWINDOW_RECALC);
|
||||
|
||||
enum {
|
||||
|
@ -197,6 +199,27 @@ FrequencyPlotDialog::FrequencyPlotDialog(wxWindow * parent, wxWindowID id,
|
|||
mRate = 0;
|
||||
mDataLen = 0;
|
||||
|
||||
gPrefs->Read(wxT("/FrequencyPlotDialog/DrawGrid"), &mDrawGrid, true);
|
||||
gPrefs->Read(wxT("/FrequencyPlotDialog/SizeChoice"), &mSize, 3);
|
||||
|
||||
int alg;
|
||||
gPrefs->Read(wxT("/FrequencyPlotDialog/AlgChoice"), &alg, 0);
|
||||
mAlg = static_cast<SpectrumAnalyst::Algorithm>(alg);
|
||||
|
||||
gPrefs->Read(wxT("/FrequencyPlotDialog/FuncChoice"), &mFunc, 3);
|
||||
gPrefs->Read(wxT("/FrequencyPlotDialog/AxisChoice"), &mAxis, 1);
|
||||
|
||||
Populate();
|
||||
}
|
||||
|
||||
FrequencyPlotDialog::~FrequencyPlotDialog()
|
||||
{
|
||||
}
|
||||
|
||||
void FrequencyPlotDialog::Populate()
|
||||
{
|
||||
SetTitle(FrequencyAnalysisTitle);
|
||||
|
||||
TranslatableStrings algChoices{
|
||||
XO("Spectrum") ,
|
||||
XO("Standard Autocorrelation") ,
|
||||
|
@ -240,20 +263,11 @@ FrequencyPlotDialog::FrequencyPlotDialog(wxWindow * parent, wxWindowID id,
|
|||
mArrowCursor = std::make_unique<wxCursor>(wxCURSOR_ARROW);
|
||||
mCrossCursor = std::make_unique<wxCursor>(wxCURSOR_CROSS);
|
||||
|
||||
gPrefs->Read(wxT("/FrequencyPlotDialog/DrawGrid"), &mDrawGrid, true);
|
||||
|
||||
long size;
|
||||
gPrefs->Read(wxT("/FrequencyPlotDialog/SizeChoice"), &mSize, 3);
|
||||
// reinterpret one of the verbatim strings above as a number
|
||||
sizeChoices[mSize].MSGID().GET().ToLong(&size);
|
||||
mWindowSize = size;
|
||||
|
||||
int alg;
|
||||
gPrefs->Read(wxT("/FrequencyPlotDialog/AlgChoice"), &alg, 0);
|
||||
mAlg = static_cast<SpectrumAnalyst::Algorithm>(alg);
|
||||
|
||||
gPrefs->Read(wxT("/FrequencyPlotDialog/FuncChoice"), &mFunc, 3);
|
||||
gPrefs->Read(wxT("/FrequencyPlotDialog/AxisChoice"), &mAxis, 1);
|
||||
gPrefs->Read(ENV_DB_KEY, &dBRange, ENV_DB_RANGE);
|
||||
if(dBRange < 90.)
|
||||
dBRange = 90.;
|
||||
|
@ -532,10 +546,6 @@ FrequencyPlotDialog::FrequencyPlotDialog(wxWindow * parent, wxWindowID id,
|
|||
#endif
|
||||
}
|
||||
|
||||
FrequencyPlotDialog::~FrequencyPlotDialog()
|
||||
{
|
||||
}
|
||||
|
||||
void FrequencyPlotDialog::OnGetURL(wxCommandEvent & WXUNUSED(event))
|
||||
{
|
||||
// Original help page is back on-line (March 2016), but the manual should be more reliable.
|
||||
|
@ -1106,6 +1116,49 @@ void FrequencyPlotDialog::OnRecalc(wxCommandEvent & WXUNUSED(event))
|
|||
Recalc();
|
||||
}
|
||||
|
||||
void FrequencyPlotDialog::UpdatePrefs()
|
||||
{
|
||||
bool shown = IsShown();
|
||||
if (shown) {
|
||||
Show(false);
|
||||
}
|
||||
|
||||
auto zoomSlider = mZoomSlider->GetValue();
|
||||
auto drawGrid = mGridOnOff->GetValue();
|
||||
auto sizeChoice = mSizeChoice->GetStringSelection();
|
||||
auto algChoice = mAlgChoice->GetSelection();
|
||||
auto funcChoice = mFuncChoice->GetSelection();
|
||||
auto axisChoice = mAxisChoice->GetSelection();
|
||||
|
||||
SetSizer(nullptr);
|
||||
DestroyChildren();
|
||||
|
||||
Populate();
|
||||
|
||||
mZoomSlider->SetValue(zoomSlider);
|
||||
|
||||
mDrawGrid = drawGrid;
|
||||
mGridOnOff->SetValue(drawGrid);
|
||||
|
||||
long windowSize = 0;
|
||||
sizeChoice.ToLong(&windowSize);
|
||||
mWindowSize = windowSize;
|
||||
mSizeChoice->SetStringSelection(sizeChoice);
|
||||
|
||||
mAlg = static_cast<SpectrumAnalyst::Algorithm>(algChoice);
|
||||
mAlgChoice->SetSelection(algChoice);
|
||||
|
||||
mFunc = funcChoice;
|
||||
mFuncChoice->SetSelection(funcChoice);
|
||||
|
||||
mAxis = axisChoice;
|
||||
mAxisChoice->SetSelection(axisChoice);
|
||||
|
||||
if (shown) {
|
||||
Show(true);
|
||||
}
|
||||
}
|
||||
|
||||
BEGIN_EVENT_TABLE(FreqPlot, wxWindow)
|
||||
EVT_ERASE_BACKGROUND(FreqPlot::OnErase)
|
||||
EVT_PAINT(FreqPlot::OnPaint)
|
||||
|
@ -1149,7 +1202,7 @@ AudacityProject::AttachedWindows::RegisteredFactory sFrequencyWindowKey{
|
|||
[]( AudacityProject &parent ) -> wxWeakRef< wxWindow > {
|
||||
auto &window = ProjectWindow::Get( parent );
|
||||
return safenew FrequencyPlotDialog(
|
||||
&window, -1, parent, XO("Frequency Analysis"),
|
||||
&window, -1, parent, FrequencyAnalysisTitle,
|
||||
wxPoint{ 150, 150 }
|
||||
);
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include <vector>
|
||||
#include <wx/font.h> // member variable
|
||||
#include <wx/statusbr.h> // to inherit
|
||||
#include "Prefs.h"
|
||||
#include "SampleFormat.h"
|
||||
#include "SpectrumAnalyst.h"
|
||||
#include "widgets/wxPanelWrapper.h" // to inherit
|
||||
|
@ -52,7 +53,8 @@ private:
|
|||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
class FrequencyPlotDialog final : public wxDialogWrapper
|
||||
class FrequencyPlotDialog final : public wxDialogWrapper,
|
||||
public PrefsListener
|
||||
{
|
||||
public:
|
||||
FrequencyPlotDialog(wxWindow *parent, wxWindowID id,
|
||||
|
@ -63,6 +65,8 @@ public:
|
|||
bool Show( bool show = true ) override;
|
||||
|
||||
private:
|
||||
void Populate();
|
||||
|
||||
void GetAudio();
|
||||
|
||||
void PlotMouseEvent(wxMouseEvent & event);
|
||||
|
@ -88,6 +92,9 @@ private:
|
|||
void DrawPlot();
|
||||
void DrawBackground(wxMemoryDC & dc);
|
||||
|
||||
// PrefsListener implementation
|
||||
void UpdatePrefs() override;
|
||||
|
||||
private:
|
||||
bool mDrawGrid;
|
||||
int mSize;
|
||||
|
|
|
@ -67,8 +67,10 @@ BEGIN_EVENT_TABLE(HistoryDialog, wxDialogWrapper)
|
|||
EVT_BUTTON(wxID_HELP, HistoryDialog::OnGetURL)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
#define HistoryTitle XO("History")
|
||||
|
||||
HistoryDialog::HistoryDialog(AudacityProject *parent, UndoManager *manager):
|
||||
wxDialogWrapper(FindProjectFrame( parent ), wxID_ANY, XO("History"),
|
||||
wxDialogWrapper(FindProjectFrame( parent ), wxID_ANY, HistoryTitle,
|
||||
wxDefaultPosition, wxDefaultSize,
|
||||
wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER )
|
||||
{
|
||||
|
@ -79,13 +81,33 @@ HistoryDialog::HistoryDialog(AudacityProject *parent, UndoManager *manager):
|
|||
mSelected = 0;
|
||||
mAudioIOBusy = false;
|
||||
|
||||
auto imageList = std::make_unique<wxImageList>(9, 16);
|
||||
imageList->Add(wxIcon(empty9x16_xpm));
|
||||
imageList->Add(wxIcon(arrow_xpm));
|
||||
|
||||
//------------------------- Main section --------------------
|
||||
// Construct the GUI.
|
||||
ShuttleGui S(this, eIsCreating);
|
||||
Populate(S);
|
||||
|
||||
wxTheApp->Bind(EVT_AUDIOIO_PLAYBACK,
|
||||
&HistoryDialog::OnAudioIO,
|
||||
this);
|
||||
|
||||
wxTheApp->Bind(EVT_AUDIOIO_CAPTURE,
|
||||
&HistoryDialog::OnAudioIO,
|
||||
this);
|
||||
|
||||
Clipboard::Get().Bind(
|
||||
EVT_CLIPBOARD_CHANGE, &HistoryDialog::UpdateDisplay, this);
|
||||
parent->Bind(EVT_UNDO_PUSHED, &HistoryDialog::UpdateDisplay, this);
|
||||
parent->Bind(EVT_UNDO_MODIFIED, &HistoryDialog::UpdateDisplay, this);
|
||||
parent->Bind(EVT_UNDO_OR_REDO, &HistoryDialog::UpdateDisplay, this);
|
||||
parent->Bind(EVT_UNDO_RESET, &HistoryDialog::UpdateDisplay, this);
|
||||
parent->Bind(EVT_UNDO_PURGE, &HistoryDialog::UpdateDisplay, this);
|
||||
}
|
||||
|
||||
void HistoryDialog::Populate(ShuttleGui & S)
|
||||
{
|
||||
auto imageList = std::make_unique<wxImageList>(9, 16);
|
||||
imageList->Add(wxIcon(empty9x16_xpm));
|
||||
imageList->Add(wxIcon(arrow_xpm));
|
||||
|
||||
S.SetBorder(5);
|
||||
S.StartVerticalLay(true);
|
||||
|
@ -150,26 +172,11 @@ HistoryDialog::HistoryDialog(AudacityProject *parent, UndoManager *manager):
|
|||
S.EndVerticalLay();
|
||||
// ----------------------- End of main section --------------
|
||||
|
||||
Layout();
|
||||
Fit();
|
||||
SetMinSize(GetSize());
|
||||
mList->SetColumnWidth(0, mList->GetClientSize().x - mList->GetColumnWidth(1));
|
||||
mList->SetTextColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT));
|
||||
|
||||
wxTheApp->Bind(EVT_AUDIOIO_PLAYBACK,
|
||||
&HistoryDialog::OnAudioIO,
|
||||
this);
|
||||
|
||||
wxTheApp->Bind(EVT_AUDIOIO_CAPTURE,
|
||||
&HistoryDialog::OnAudioIO,
|
||||
this);
|
||||
|
||||
Clipboard::Get().Bind(
|
||||
EVT_CLIPBOARD_CHANGE, &HistoryDialog::UpdateDisplay, this);
|
||||
parent->Bind(EVT_UNDO_PUSHED, &HistoryDialog::UpdateDisplay, this);
|
||||
parent->Bind(EVT_UNDO_MODIFIED, &HistoryDialog::UpdateDisplay, this);
|
||||
parent->Bind(EVT_UNDO_OR_REDO, &HistoryDialog::UpdateDisplay, this);
|
||||
parent->Bind(EVT_UNDO_RESET, &HistoryDialog::UpdateDisplay, this);
|
||||
parent->Bind(EVT_UNDO_PURGE, &HistoryDialog::UpdateDisplay, this);
|
||||
}
|
||||
|
||||
void HistoryDialog::OnAudioIO(wxCommandEvent& evt)
|
||||
|
@ -378,6 +385,26 @@ void HistoryDialog::OnSize(wxSizeEvent & WXUNUSED(event))
|
|||
mList->EnsureVisible(mSelected);
|
||||
}
|
||||
|
||||
// PrefsListener implementation
|
||||
void HistoryDialog::UpdatePrefs()
|
||||
{
|
||||
bool shown = IsShown();
|
||||
if (shown) {
|
||||
Show(false);
|
||||
}
|
||||
|
||||
SetSizer(nullptr);
|
||||
DestroyChildren();
|
||||
|
||||
SetTitle(HistoryTitle);
|
||||
ShuttleGui S(this, eIsCreating);
|
||||
Populate(S);
|
||||
|
||||
if (shown) {
|
||||
Show(true);
|
||||
}
|
||||
}
|
||||
|
||||
// Remaining code hooks this add-on into the application
|
||||
#include "commands/CommandContext.h"
|
||||
#include "commands/CommandManager.h"
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#ifndef __AUDACITY_HISTORY_WINDOW__
|
||||
#define __AUDACITY_HISTORY_WINDOW__
|
||||
|
||||
#include "Prefs.h"
|
||||
#include "widgets/wxPanelWrapper.h" // to inherit
|
||||
|
||||
class wxButton;
|
||||
|
@ -22,7 +23,9 @@ class AudacityProject;
|
|||
class ShuttleGui;
|
||||
class UndoManager;
|
||||
|
||||
class HistoryDialog final : public wxDialogWrapper {
|
||||
class HistoryDialog final : public wxDialogWrapper,
|
||||
public PrefsListener
|
||||
{
|
||||
|
||||
public:
|
||||
HistoryDialog(AudacityProject * parent, UndoManager *manager);
|
||||
|
@ -32,6 +35,8 @@ class HistoryDialog final : public wxDialogWrapper {
|
|||
bool Show( bool show = true ) override;
|
||||
|
||||
private:
|
||||
void Populate(ShuttleGui & S);
|
||||
|
||||
void OnAudioIO(wxCommandEvent & evt);
|
||||
void DoUpdate();
|
||||
void UpdateLevels();
|
||||
|
@ -46,6 +51,9 @@ class HistoryDialog final : public wxDialogWrapper {
|
|||
void OnCompact(wxCommandEvent & event);
|
||||
void OnGetURL(wxCommandEvent & event);
|
||||
|
||||
// PrefsListener implementation
|
||||
void UpdatePrefs() override;
|
||||
|
||||
AudacityProject *mProject;
|
||||
UndoManager *mManager;
|
||||
wxListCtrl *mList;
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include "Prefs.h" // for RTL_WORKAROUND
|
||||
#include "Project.h"
|
||||
#include "ProjectAudioIO.h"
|
||||
#include "ProjectFileIO.h"
|
||||
#include "ViewInfo.h"
|
||||
|
||||
#include <wx/radiobut.h>
|
||||
|
@ -32,6 +33,8 @@
|
|||
#include <Carbon/Carbon.h>
|
||||
#endif
|
||||
|
||||
#define AudacityKaraokeTitle XO("Audacity Karaoke%s")
|
||||
|
||||
enum {
|
||||
kID_RadioButton_BouncingBall = 10101,
|
||||
kID_RadioButton_Highlight,
|
||||
|
@ -46,13 +49,7 @@ END_EVENT_TABLE()
|
|||
const wxSize gSize = wxSize(LYRICS_DEFAULT_WIDTH, LYRICS_DEFAULT_HEIGHT);
|
||||
|
||||
LyricsWindow::LyricsWindow(AudacityProject *parent)
|
||||
: wxFrame( &GetProjectFrame( *parent ), -1,
|
||||
wxString::Format(_("Audacity Karaoke%s"),
|
||||
((parent->GetProjectName().empty()) ?
|
||||
wxT("") :
|
||||
wxString::Format(
|
||||
wxT(" - %s"),
|
||||
parent->GetProjectName()))),
|
||||
: wxFrame( &GetProjectFrame( *parent ), -1, {},
|
||||
wxPoint(100, 300), gSize,
|
||||
//v Bug in wxFRAME_FLOAT_ON_PARENT:
|
||||
// If both the project frame and LyricsWindow are minimized and you restore LyricsWindow,
|
||||
|
@ -68,6 +65,14 @@ LyricsWindow::LyricsWindow(AudacityProject *parent)
|
|||
// #endif
|
||||
mProject = parent;
|
||||
|
||||
SetWindowTitle();
|
||||
auto titleChanged = [&](wxCommandEvent &evt)
|
||||
{
|
||||
SetWindowTitle();
|
||||
evt.Skip();
|
||||
};
|
||||
wxTheApp->Bind( EVT_PROJECT_TITLE_CHANGE, titleChanged );
|
||||
|
||||
// loads either the XPM or the windows resource, depending on the platform
|
||||
#if !defined(__WXMAC__) && !defined(__WXX11__)
|
||||
{
|
||||
|
@ -169,6 +174,22 @@ void LyricsWindow::OnTimer(wxCommandEvent &event)
|
|||
event.Skip();
|
||||
}
|
||||
|
||||
void LyricsWindow::SetWindowTitle()
|
||||
{
|
||||
wxString name = mProject->GetProjectName();
|
||||
if (!name.empty())
|
||||
{
|
||||
name.Prepend(wxT(" - "));
|
||||
}
|
||||
|
||||
SetTitle(AudacityKaraokeTitle.Format(name).Translation());
|
||||
}
|
||||
|
||||
void LyricsWindow::UpdatePrefs()
|
||||
{
|
||||
SetWindowTitle();
|
||||
}
|
||||
|
||||
// Remaining code hooks this add-on into the application
|
||||
#include "commands/CommandContext.h"
|
||||
#include "commands/CommandManager.h"
|
||||
|
|
|
@ -14,10 +14,14 @@
|
|||
|
||||
#include <wx/frame.h> // to inherit
|
||||
|
||||
#include "Prefs.h"
|
||||
|
||||
class AudacityProject;
|
||||
class LyricsPanel;
|
||||
|
||||
class LyricsWindow final : public wxFrame {
|
||||
class LyricsWindow final : public wxFrame,
|
||||
public PrefsListener
|
||||
{
|
||||
|
||||
public:
|
||||
LyricsWindow(AudacityProject* parent);
|
||||
|
@ -31,6 +35,11 @@ class LyricsWindow final : public wxFrame {
|
|||
void OnStyle_Highlight(wxCommandEvent &evt);
|
||||
void OnTimer(wxCommandEvent &event);
|
||||
|
||||
void SetWindowTitle();
|
||||
|
||||
// PrefsListener implementation
|
||||
void UpdatePrefs() override;
|
||||
|
||||
AudacityProject *mProject;
|
||||
LyricsPanel *mLyricsPanel;
|
||||
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
#include "ProjectAudioIO.h"
|
||||
#include "ProjectAudioManager.h"
|
||||
#include "ProjectHistory.h"
|
||||
#include "ProjectFileIO.h"
|
||||
#include "ProjectSettings.h"
|
||||
#include "ProjectWindow.h"
|
||||
#include "SelectUtilities.h"
|
||||
|
@ -61,6 +62,8 @@
|
|||
|
||||
#include "commands/CommandManager.h"
|
||||
|
||||
#define AudacityMixerBoardTitle XO("Audacity Mixer Board%s")
|
||||
|
||||
// class MixerTrackSlider
|
||||
|
||||
BEGIN_EVENT_TABLE(MixerTrackSlider, ASlider)
|
||||
|
@ -1405,15 +1408,19 @@ const wxSize kDefaultSize =
|
|||
wxSize(MIXER_BOARD_MIN_WIDTH, MIXER_BOARD_MIN_HEIGHT);
|
||||
|
||||
MixerBoardFrame::MixerBoardFrame(AudacityProject* parent)
|
||||
: wxFrame( &GetProjectFrame( *parent ), -1,
|
||||
wxString::Format(_("Audacity Mixer Board%s"),
|
||||
((parent->GetProjectName().empty()) ?
|
||||
wxT("") :
|
||||
wxString::Format(wxT(" - %s"),
|
||||
parent->GetProjectName()))),
|
||||
: wxFrame( &GetProjectFrame( *parent ), -1, {},
|
||||
wxDefaultPosition, kDefaultSize,
|
||||
wxDEFAULT_FRAME_STYLE | wxFRAME_FLOAT_ON_PARENT)
|
||||
, mProject(parent)
|
||||
{
|
||||
SetWindowTitle();
|
||||
auto titleChanged = [&](wxCommandEvent &evt)
|
||||
{
|
||||
SetWindowTitle();
|
||||
evt.Skip();
|
||||
};
|
||||
wxTheApp->Bind( EVT_PROJECT_TITLE_CHANGE, titleChanged );
|
||||
|
||||
mMixerBoard = safenew MixerBoard(parent, this, wxDefaultPosition, kDefaultSize);
|
||||
|
||||
this->SetSizeHints(MIXER_BOARD_MIN_WIDTH, MIXER_BOARD_MIN_HEIGHT);
|
||||
|
@ -1487,6 +1494,18 @@ void MixerBoardFrame::Recreate( AudacityProject *pProject )
|
|||
mMixerBoard->SetSize( siz );
|
||||
|
||||
this->SetSize( siz2 );
|
||||
SetWindowTitle();
|
||||
}
|
||||
|
||||
void MixerBoardFrame::SetWindowTitle()
|
||||
{
|
||||
wxString name = mProject->GetProjectName();
|
||||
if (!name.empty())
|
||||
{
|
||||
name.Prepend(wxT(" - "));
|
||||
}
|
||||
|
||||
SetTitle(AudacityMixerBoardTitle.Format(name).Translation());
|
||||
}
|
||||
|
||||
// Remaining code hooks this add-on into the application
|
||||
|
|
|
@ -279,6 +279,9 @@ private:
|
|||
void OnSize(wxSizeEvent &evt);
|
||||
void OnKeyEvent(wxKeyEvent &evt);
|
||||
|
||||
void SetWindowTitle();
|
||||
|
||||
AudacityProject *mProject;
|
||||
public:
|
||||
MixerBoard* mMixerBoard;
|
||||
|
||||
|
|
|
@ -52,11 +52,14 @@ class OldStyleCommandType;
|
|||
class ScreenFrameTimer;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
#define ScreenCaptureFrameTitle XO("Screen Capture Frame")
|
||||
|
||||
// ANSWER-ME: Should this derive from wxDialogWrapper instead?
|
||||
class ScreenshotBigDialog final : public wxFrame
|
||||
class ScreenshotBigDialog final : public wxFrame,
|
||||
public PrefsListener
|
||||
{
|
||||
public:
|
||||
|
||||
// constructors and destructors
|
||||
ScreenshotBigDialog(
|
||||
wxWindow *parent, wxWindowID id, AudacityProject &project);
|
||||
|
@ -96,6 +99,9 @@ class ScreenshotBigDialog final : public wxFrame
|
|||
void OnMedTracks(wxCommandEvent & event);
|
||||
void OnTallTracks(wxCommandEvent & event);
|
||||
|
||||
// PrefsListener implementation
|
||||
void UpdatePrefs() override;
|
||||
|
||||
AudacityProject &mProject;
|
||||
|
||||
std::unique_ptr<ScreenshotCommand> CreateCommand();
|
||||
|
@ -278,7 +284,7 @@ std::unique_ptr<ScreenshotCommand> ScreenshotBigDialog::CreateCommand()
|
|||
|
||||
ScreenshotBigDialog::ScreenshotBigDialog(
|
||||
wxWindow * parent, wxWindowID id, AudacityProject &project)
|
||||
: wxFrame(parent, id, _("Screen Capture Frame"),
|
||||
: wxFrame(parent, id, ScreenCaptureFrameTitle.Translation(),
|
||||
wxDefaultPosition, wxDefaultSize,
|
||||
|
||||
#if !defined(__WXMSW__)
|
||||
|
@ -503,26 +509,30 @@ void ScreenshotBigDialog::PopulateOrExchange(ShuttleGui & S)
|
|||
|
||||
bool ScreenshotBigDialog::ProcessEvent(wxEvent & e)
|
||||
{
|
||||
int id = e.GetId();
|
||||
|
||||
// If split into two parts to make for easier breakpoint
|
||||
// when testing timer.
|
||||
if (mDelayCheckBox &&
|
||||
mDelayCheckBox->GetValue() &&
|
||||
e.IsCommandEvent() &&
|
||||
e.GetEventType() == wxEVT_COMMAND_BUTTON_CLICKED)
|
||||
if (!IsFrozen())
|
||||
{
|
||||
if( id >= IdAllDelayedEvents && id <= IdLastDelayedEvent &&
|
||||
e.GetEventObject() != NULL) {
|
||||
mTimer = std::make_unique<ScreenFrameTimer>(this, e);
|
||||
mTimer->Start(5000, true);
|
||||
return true;
|
||||
int id = e.GetId();
|
||||
|
||||
// If split into two parts to make for easier breakpoint
|
||||
// when testing timer.
|
||||
if (mDelayCheckBox &&
|
||||
mDelayCheckBox->GetValue() &&
|
||||
e.IsCommandEvent() &&
|
||||
e.GetEventType() == wxEVT_COMMAND_BUTTON_CLICKED)
|
||||
{
|
||||
if( id >= IdAllDelayedEvents && id <= IdLastDelayedEvent &&
|
||||
e.GetEventObject() != NULL) {
|
||||
mTimer = std::make_unique<ScreenFrameTimer>(this, e);
|
||||
mTimer->Start(5000, true);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (e.IsCommandEvent() && e.GetEventObject() == NULL) {
|
||||
e.SetEventObject(this);
|
||||
}
|
||||
}
|
||||
|
||||
if (e.IsCommandEvent() && e.GetEventObject() == NULL) {
|
||||
e.SetEventObject(this);
|
||||
}
|
||||
return wxFrame::ProcessEvent(e);
|
||||
}
|
||||
|
||||
|
@ -790,3 +800,16 @@ void ScreenshotBigDialog::OnTallTracks(wxCommandEvent & WXUNUSED(event))
|
|||
{
|
||||
SizeTracks(85);
|
||||
}
|
||||
|
||||
void ScreenshotBigDialog::UpdatePrefs()
|
||||
{
|
||||
Freeze();
|
||||
|
||||
SetSizer(nullptr);
|
||||
DestroyChildren();
|
||||
|
||||
SetTitle(ScreenCaptureFrameTitle.Translation());
|
||||
Populate();
|
||||
|
||||
Thaw();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue