Bug1239: Correct time rulers after importing files (with File>Open) ...

... The fisheye stuff was to blame.
This commit is contained in:
Paul Licameli 2016-01-26 17:37:16 -05:00
parent 8ce18979c8
commit 17c9369286
9 changed files with 30 additions and 23 deletions

View File

@ -342,8 +342,9 @@ void BenchmarkDialog::OnRun( wxCommandEvent & WXUNUSED(event))
HoldPrint(true);
ZoomInfo zoomInfo(0.0, ZoomInfo::GetDefaultZoom());
DirManager *d = new DirManager();
TrackFactory *fact = new TrackFactory(d);
TrackFactory *fact = new TrackFactory(d, &zoomInfo);
WaveTrack *t = fact->NewWaveTrack(int16Sample);
Track *tmp = NULL;

View File

@ -6258,7 +6258,7 @@ void AudacityProject::OnNewTimeTrack()
return;
}
TimeTrack *t = new TimeTrack(mDirManager);
TimeTrack *t = mTrackFactory->NewTimeTrack();
SelectNone();

View File

@ -1043,7 +1043,7 @@ AudacityProject::AudacityProject(wxWindow * parent, wxWindowID id,
// Create tags object
mTags = new Tags();
mTrackFactory = new TrackFactory(mDirManager);
mTrackFactory = new TrackFactory(mDirManager, &mViewInfo);
int widths[] = {0, GetControlToolBar()->WidthForStatusBar(mStatusBar), -1, 150};
mStatusBar->SetStatusWidths(4, widths);

View File

@ -31,11 +31,12 @@
TimeTrack *TrackFactory::NewTimeTrack()
{
return new TimeTrack(mDirManager);
return new TimeTrack(mDirManager, mZoomInfo);
}
TimeTrack::TimeTrack(DirManager *projDirManager):
TimeTrack::TimeTrack(DirManager *projDirManager, const ZoomInfo *zoomInfo):
Track(projDirManager)
, mZoomInfo(zoomInfo)
{
mHeight = 100;
@ -55,7 +56,7 @@ TimeTrack::TimeTrack(DirManager *projDirManager):
SetName(GetDefaultName());
mRuler = new Ruler;
mRuler->SetUseZoomInfo(0);
mRuler->SetUseZoomInfo(0, mZoomInfo);
mRuler->SetLabelEdges(false);
mRuler->SetFormat(Ruler::TimeFormat);
@ -65,6 +66,7 @@ TimeTrack::TimeTrack(DirManager *projDirManager):
TimeTrack::TimeTrack(TimeTrack &orig):
Track(orig)
, mZoomInfo(orig.mZoomInfo)
{
Init(orig); // this copies the TimeTrack metadata (name, range, etc)
@ -80,7 +82,7 @@ TimeTrack::TimeTrack(TimeTrack &orig):
///@TODO: Give Ruler:: a copy-constructor instead of this?
mRuler = new Ruler;
mRuler->SetUseZoomInfo(0);
mRuler->SetUseZoomInfo(0, mZoomInfo);
mRuler->SetLabelEdges(false);
mRuler->SetFormat(Ruler::TimeFormat);

View File

@ -27,7 +27,7 @@ class TimeTrack: public Track {
public:
TimeTrack(DirManager * projDirManager);
TimeTrack(DirManager * projDirManager, const ZoomInfo *zoomInfo);
/** @brief Copy-Constructor - create a new TimeTrack:: which is an independent copy of the original
*
* Calls TimeTrack::Init() to copy the track metadata, then does a bunch of manipulations on the
@ -117,6 +117,7 @@ class TimeTrack: public Track {
void testMe();
private:
const ZoomInfo *const mZoomInfo;
Envelope *mEnvelope;
Ruler *mRuler;
double mRangeLower;

View File

@ -35,6 +35,7 @@ class LabelTrack;
class TimeTrack;
class WaveTrack;
class AudacityProject;
class ZoomInfo;
WX_DEFINE_USER_EXPORTED_ARRAY(Track*, TrackArray, class AUDACITY_DLL_API);
WX_DEFINE_USER_EXPORTED_ARRAY(WaveTrack*, WaveTrackArray, class AUDACITY_DLL_API);
@ -446,12 +447,14 @@ class AUDACITY_DLL_API TrackList:public wxEvtHandler
class AUDACITY_DLL_API TrackFactory
{
private:
TrackFactory(DirManager *dirManager):
TrackFactory(DirManager *dirManager, const ZoomInfo *zoomInfo):
mDirManager(dirManager)
, mZoomInfo(zoomInfo)
{
}
DirManager *mDirManager;
DirManager *const mDirManager;
const ZoomInfo *const mZoomInfo;
friend class AudacityProject;
friend class BenchmarkDialog;

View File

@ -432,7 +432,7 @@ void TranscriptionToolBar::PlayAtSpeed(bool looped, bool cutPreview)
// Create a TimeTrack if we haven't done so already
if (!mTimeTrack) {
mTimeTrack = new TimeTrack(p->GetDirManager());
mTimeTrack = p->GetTrackFactory()->NewTimeTrack();
if (!mTimeTrack) {
return;
}

View File

@ -155,7 +155,7 @@ Ruler::Ruler()
mTwoTone = false;
mUseZoomInfo = false;
mUseZoomInfo = NULL;
}
Ruler::~Ruler()
@ -973,8 +973,8 @@ void Ruler::Update()
void Ruler::Update(TimeTrack* timetrack)// Envelope *speedEnv, long minSpeed, long maxSpeed )
{
const ZoomInfo *zoomInfo = NULL;
if (mUseZoomInfo && !mLog && mOrientation == wxHORIZONTAL)
zoomInfo = &GetActiveProject()->GetZoomInfo();
if (!mLog && mOrientation == wxHORIZONTAL)
zoomInfo = mUseZoomInfo;
// This gets called when something has been changed
// (i.e. we've been invalidated). Recompute all
@ -1577,10 +1577,10 @@ void Ruler::Label::Draw(wxDC&dc, bool twoTone) const
}
}
void Ruler::SetUseZoomInfo(int leftOffset)
void Ruler::SetUseZoomInfo(int leftOffset, const ZoomInfo *zoomInfo)
{
mLeftOffset = leftOffset;
mUseZoomInfo = true;
mUseZoomInfo = zoomInfo;
}
//
@ -1680,6 +1680,7 @@ AdornedRulerPanel::AdornedRulerPanel(AudacityProject* parent,
const wxSize& size,
ViewInfo *viewinfo)
: wxPanel(parent, id, pos, size)
, mViewInfo(viewinfo)
{
SetLabel( _("Timeline") );
SetName(GetLabel());
@ -1707,8 +1708,6 @@ AdornedRulerPanel::AdornedRulerPanel(AudacityProject* parent,
mMouseEventState = mesNone;
mIsDragging = false;
mViewInfo = viewinfo;
mOuter = GetClientRect();
mInner = mOuter;
@ -1717,7 +1716,7 @@ AdornedRulerPanel::AdornedRulerPanel(AudacityProject* parent,
mInner.width -= 2; // -2 for left and right bevels
mInner.height -= 3; // -3 for top and bottom bevels and bottom line
mRuler.SetUseZoomInfo(mLeftOffset);
mRuler.SetUseZoomInfo(mLeftOffset, mViewInfo);
mRuler.SetBounds(mInner.GetLeft(),
mInner.GetTop(),
mInner.GetRight(),
@ -2457,7 +2456,7 @@ void AdornedRulerPanel::DoDrawSelection(wxDC * dc)
void AdornedRulerPanel::SetLeftOffset(int offset)
{
mLeftOffset = offset;
mRuler.SetUseZoomInfo(offset);
mRuler.SetUseZoomInfo(offset, mViewInfo);
}
void AdornedRulerPanel::DrawCursor(double time)

View File

@ -26,6 +26,7 @@ class TimeTrack;
class SnapManager;
class NumberScale;
class TrackList;
class ZoomInfo;
class AUDACITY_DLL_API Ruler {
public:
@ -127,7 +128,7 @@ class AUDACITY_DLL_API Ruler {
void SetCustomMajorLabels(wxArrayString *label, int numLabel, int start, int step);
void SetCustomMinorLabels(wxArrayString *label, int numLabel, int start, int step);
void SetUseZoomInfo(int leftOffset);
void SetUseZoomInfo(int leftOffset, const ZoomInfo *zoomInfo);
//
// Drawing
@ -231,7 +232,7 @@ private:
int mGridLineLength; // end
wxString mUnits;
bool mTwoTone;
bool mUseZoomInfo;
const ZoomInfo *mUseZoomInfo;
int mLeftOffset;
NumberScale *mpNumberScale;
@ -335,7 +336,7 @@ private:
bool mIsWE;
Ruler mRuler;
ViewInfo *mViewInfo;
ViewInfo *const mViewInfo;
AudacityProject *mProject;
TrackList *mTracks;