Update of /cvsroot/audacity/audacity-src/src
In directory sc8-pr-cvs11.sourceforge.net:/tmp/cvs-serv24783
Modified Files:
Tag: Audacity_UmixIt
Menus.cpp MixerBoard.cpp Prefs.cpp Project.cpp TrackPanel.cpp
AudacityBranding.h Menus.h MixerBoard.h Project.h TrackPanel.h
Log Message:
Mixer Board updates to be XOR Track Panel display for UmixIt, but stay a
separate wxFrame for standard build.
Plus some cleanups/fixes.
Index: Project.h
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/Project.h,v
retrieving revision 1.70.2.3.2.4
retrieving revision 1.70.2.3.2.5
diff -u -d -r1.70.2.3.2.4 -r1.70.2.3.2.5
--- Project.h 2 Feb 2007 01:36:07 -0000 1.70.2.3.2.4
+++ Project.h 28 Mar 2007 02:19:27 -0000 1.70.2.3.2.5
@@ -58,6 +58,7 @@
class HistoryWindow;
class LyricsWindow;
class MixerBoard;
+class MixerBoardFrame;
class Importer;
class AudacityProject;
@@ -138,7 +139,11 @@
int GetAudioIOToken();
void SetAudioIOToken(int token);
LyricsWindow* GetLyricsWindow() { return mLyricsWindow; };
+
MixerBoard* GetMixerBoard() { return mMixerBoard; };
+ #if (AUDACITY_BRANDING != BRAND_UMIXIT)
+ MixerBoardFrame* GetMixerBoardFrame() { return mMixerBoardFrame; };
+ #endif
bool IsActive();
@@ -346,7 +351,11 @@
bool mIconized;
HistoryWindow *mHistoryWindow;
LyricsWindow *mLyricsWindow;
- MixerBoard *mMixerBoard;
+
+ MixerBoard* mMixerBoard;
+ #if (AUDACITY_BRANDING != BRAND_UMIXIT)
+ MixerBoardFrame* mMixerBoardFrame;
+ #endif
ToolBarArray mToolBarArray;
int mTotalToolBarHeight;
Index: TrackPanel.h
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/TrackPanel.h,v
retrieving revision 1.64.2.3.2.1
retrieving revision 1.64.2.3.2.2
diff -u -d -r1.64.2.3.2.1 -r1.64.2.3.2.2
--- TrackPanel.h 10 Feb 2007 04:06:53 -0000 1.64.2.3.2.1
+++ TrackPanel.h 28 Mar 2007 02:19:27 -0000 1.64.2.3.2.2
@@ -138,7 +138,7 @@
void OnTimer();
int GetRulerHeight();
- int GetLeftOffset() const { return GetLabelWidth() + 1;}
+ int GetLeftOffset() const;
void GetTracksUsableArea(int *width, int *height) const;
@@ -150,6 +150,10 @@
const wxRect *rect = (const wxRect *) NULL);
void DisplaySelection();
+ #if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ void ShowRulerOnly(const bool bShowRulerOnly = true);
+ #endif
+
void SetSelectionFormat(int iformat);
void SetSnapTo(int snapto);
@@ -293,6 +297,9 @@
AdornedRulerPanel *mRuler;
+ #if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ bool mShowRulerOnly;
+ #endif
TrackArtist *mTrackArtist;
Index: MixerBoard.h
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/Attic/MixerBoard.h,v
retrieving revision 1.1.2.6
retrieving revision 1.1.2.7
diff -u -d -r1.1.2.6 -r1.1.2.7
--- MixerBoard.h 22 Mar 2007 02:21:57 -0000 1.1.2.6
+++ MixerBoard.h 28 Mar 2007 02:19:27 -0000 1.1.2.7
@@ -29,10 +29,8 @@
class WaveTrack;
class MixerTrackCluster : public wxPanel {
- DECLARE_DYNAMIC_CLASS(MixerTrackCluster)
-
public:
- MixerTrackCluster(wxScrolledWindow* parent,
+ MixerTrackCluster(wxWindow* parent,
MixerBoard* grandParent, AudacityProject* project,
WaveTrack* pLeftTrack, WaveTrack* pRightTrack = NULL,
const wxPoint& pos = wxDefaultPosition,
@@ -56,8 +54,9 @@
wxColour GetTrackColor();
// event handlers
- void OnKeyEvent(wxKeyEvent & event);
- void OnPaint(wxPaintEvent &evt);
+ void OnKeyEvent(wxKeyEvent& event);
+ void OnMouseEvent(wxMouseEvent& event);
+ void OnPaint(wxPaintEvent& evt);
void OnButton_Mute(wxCommandEvent& event);
void OnButton_Solo(wxCommandEvent& event);
@@ -100,11 +99,45 @@
WX_DECLARE_OBJARRAY(MusicalInstrument, MusicalInstrumentArray);
+
+// wxScrolledWindow ignores mouse clicks in client area,
+// but they don't get passed to Mixerboard.
+// We need to catch them to deselect all track clusters.
+class MixerBoardScrolledWindow : public wxScrolledWindow {
+public:
+ MixerBoardScrolledWindow(AudacityProject* project,
+ MixerBoard* parent, wxWindowID id = -1,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxHSCROLL | wxVSCROLL);
+
+private:
+ void OnMouseEvent(wxMouseEvent& event);
+
+private:
+ MixerBoard* mMixerBoard;
+ AudacityProject* mProject;
+
+public:
+ DECLARE_EVENT_TABLE()
+};
+
+
class TrackList;
-class MixerBoard : public wxFrame {
+// MixerBoard is a window that can either be in MixerBoardFrame or
AudacityProject frame.
+#if (AUDACITY_BRANDING != BRAND_UMIXIT)
+ class MixerBoardFrame;
+#endif
+
+class MixerBoard : public wxWindow {
+#if (AUDACITY_BRANDING != BRAND_UMIXIT)
+ friend class MixerBoardFrame;
+#endif
+
public:
- MixerBoard(AudacityProject* parent,
+ MixerBoard(AudacityProject* pProject,
+ wxFrame* parent,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize);
~MixerBoard();
@@ -138,8 +171,6 @@
void LoadMusicalInstruments();
// event handlers
- void OnCloseWindow(wxCloseEvent &WXUNUSED(event));
- void OnMaximize(wxMaximizeEvent &event);
void OnSize(wxSizeEvent &evt);
@@ -158,16 +189,35 @@
int mMuteSoloWidth;
private:
- MixerTrackClusterArray mMixerTrackClusters;
- MusicalInstrumentArray mMusicalInstruments;
- AudacityProject* mProject;
- wxScrolledWindow* mScrolledWindow; // Holds the MixerTrackClusters
and handles scrolling.
- unsigned int mSoloCount;
- double mT;
- TrackList* mTracks;
+ MixerTrackClusterArray mMixerTrackClusters;
+ MusicalInstrumentArray mMusicalInstruments;
+ AudacityProject* mProject;
+ MixerBoardScrolledWindow* mScrolledWindow; // Holds the MixerTrackClusters
and handles scrolling.
+ unsigned int mSoloCount;
+ double mT;
+ TrackList* mTracks;
public:
DECLARE_EVENT_TABLE()
};
+#if (AUDACITY_BRANDING != BRAND_UMIXIT)
+ class MixerBoardFrame : public wxFrame {
+ public:
+ MixerBoardFrame(AudacityProject* parent);
+ ~MixerBoardFrame();
+ private:
+ // event handlers
+ void OnCloseWindow(wxCloseEvent &WXUNUSED(event));
+ void OnMaximize(wxMaximizeEvent &event);
+ void OnSize(wxSizeEvent &evt);
+
+ public:
+ MixerBoard* mMixerBoard;
+
+ public:
+ DECLARE_EVENT_TABLE()
+ };
+#endif
+
#endif // __AUDACITY_MIXER_BOARD__
Index: AudacityBranding.h
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/Attic/AudacityBranding.h,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -d -r1.1.2.1 -r1.1.2.2
--- AudacityBranding.h 22 Mar 2007 02:07:45 -0000 1.1.2.1
+++ AudacityBranding.h 28 Mar 2007 02:19:26 -0000 1.1.2.2
@@ -2,7 +2,7 @@
Audacity: A Digital Audio Editor
- Branding.h
+ AudacityBranding.h
Vaughan Johnson, March 2007
@@ -25,7 +25,7 @@
#define AUDACITY_BRANDING BRAND_UMIXIT
//vvvvv OR do it this way:
-//#undef AUDACITY_BRANDING_BRANDNAME // standard version
+//#define AUDACITY_BRANDING BRAND_AUDACITY // standard version
#define AUDACITY_BRANDING_BRANDNAME wxT("UmixIt")
#define AUDACITY_BRANDING_BRANDURL wxT("http://www.umixit.com/")
Index: TrackPanel.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/TrackPanel.cpp,v
retrieving revision 1.212.2.15.2.7
retrieving revision 1.212.2.15.2.8
diff -u -d -r1.212.2.15.2.7 -r1.212.2.15.2.8
--- TrackPanel.cpp 22 Mar 2007 02:21:56 -0000 1.212.2.15.2.7
+++ TrackPanel.cpp 28 Mar 2007 02:19:26 -0000 1.212.2.15.2.8
@@ -877,6 +877,10 @@
mRuler = new AdornedRulerPanel();
+ #if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ mShowRulerOnly = true;
+ #endif
+
mTimeCount = 0;
mTimer.parent = this;
mTimer.Start(50, FALSE);
@@ -984,6 +988,11 @@
{
GetSize(width, height);
+ #if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ if (mShowRulerOnly)
+ return;
+ #endif
+
*width -= GetLabelWidth();
// AS: MAGIC NUMBER: What does 2 represent?
@@ -1308,6 +1317,17 @@
}
}
+#if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ // from Project.cpp defs
+ #ifdef __WXMAC__
+ const int sbarSpaceWidth = 15;
+ #elif defined(__WXMSW__)
+ const int sbarSpaceWidth = 16;
+ #else // wxGTK, wxMOTIF, wxX11
+ const int sbarSpaceWidth = 15;
+ #endif
+#endif
+
// AS: This updates the indicator (on a timer tick) that shows
// where the current play or record position is. To do this,
// we cheat a little. The indicator is drawn during the ruler
@@ -1338,6 +1358,10 @@
int width, height;
GetSize(&width, &height);
+ #if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ if (mShowRulerOnly)
+ width += sbarSpaceWidth;
+ #endif
height = GetRulerHeight();
bool bIsClientDC = false;
@@ -1347,8 +1371,11 @@
dc = new wxClientDC(this);
}
- //Draw the line across all tracks specifying where play is
- DrawTrackIndicator(dc);
+ #if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ if (!mShowRulerOnly)
+ #endif
+ //Draw the line across all tracks specifying where play is
+ DrawTrackIndicator(dc);
wxMemoryDC memDC;
@@ -1390,6 +1417,15 @@
dc.BeginDrawing();
+ #if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ if (mShowRulerOnly)
+ {
+ DrawRuler(&dc);
+ dc.EndDrawing();
+ return;
+ }
+ #endif
+
DrawTracks(&dc);
DrawRuler(&dc);
RemoveStaleIndicators(&upd);
@@ -1411,6 +1447,13 @@
int width, height;
GetSize(&width, &height);
+ #if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ if (mShowRulerOnly)
+ {
+ width += sbarSpaceWidth;
+ height = this->GetRulerHeight();
+ }
+ #endif
if (width != mPrevWidth || height != mPrevHeight || !mBitmap) {
mPrevWidth = width;
mPrevHeight = height;
@@ -1425,6 +1468,15 @@
memDC.SelectObject(*mBitmap);
+ #if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ if (mShowRulerOnly)
+ {
+ DrawRuler(&memDC);
+ dc.Blit(0, 0, width, height, &memDC, 0, 0, wxCOPY, FALSE);
+ return;
+ }
+ #endif
+
DrawTracks(&memDC);
DrawRuler(&memDC);
RemoveStaleIndicators(&upd);
@@ -3835,6 +3887,14 @@
return AdornedRulerPanel::GetRulerHeight();
}
+int TrackPanel::GetLeftOffset() const
+{
+ #if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ if (mShowRulerOnly)
+ return 1;
+ #endif
+ return GetLabelWidth() + 1;
+}
//
@@ -4084,11 +4144,18 @@
GetSize( &r.width, &r.height );
r.x = 0;
r.y = 0;
+ #if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ if (mShowRulerOnly)
+ r.width += sbarSpaceWidth;
+ #endif
r.height = GetRulerHeight() - 1;
mRuler->SetSize( r );
mRuler->SetLeftOffset( GetLeftOffset() );
+ #if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ if (mShowRulerOnly)
+ mRuler->SetLeftOffset(0);
+ #endif
-
bool bRecording = (gAudioIO->GetNumCaptureChannels() ? false : true);
mRuler->DrawAdornedRuler( dc, mViewInfo, text, bIndicators, bRecording );
@@ -4606,6 +4673,12 @@
mListener->TP_DisplaySelection();
}
+#if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ void TrackPanel::ShowRulerOnly(const bool bShowRulerOnly /*= true*/)
+ {
+ mShowRulerOnly = bShowRulerOnly;
+ }
+#endif
/**********************************************************************
Index: Menus.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/Menus.cpp,v
retrieving revision 1.151.2.26.2.4
retrieving revision 1.151.2.26.2.5
diff -u -d -r1.151.2.26.2.4 -r1.151.2.26.2.5
--- Menus.cpp 22 Mar 2007 02:18:56 -0000 1.151.2.26.2.4
+++ Menus.cpp 28 Mar 2007 02:19:25 -0000 1.151.2.26.2.5
@@ -366,8 +366,11 @@
c->AddItem("UndoHistory", _("&History..."), FN(OnHistory));
c->AddSeparator();
c->AddItem("Lyrics", _("&Lyrics..."), FN(OnLyrics));
- c->AddItem("Mixer Board", _("&Mixer Board..."),
FN(OnMixerBoard));
- c->AddItem("Track Panel", _("&Track Panel..."),
FN(OnTrackPanel));
+ #if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ c->AddItem("Mixer Board", _("&Track Panel"),
FN(OnMixerBoard));
+ #else
+ c->AddItem("Mixer Board", _("&Mixer Board..."),
FN(OnMixerBoard));
+ #endif
c->AddSeparator();
c->AddItem("FloatControlTB", _("Float Control Toolbar"),
FN(OnFloatControlToolBar));
c->AddItem("FloatEditTB", _("Float Edit Toolbar"),
FN(OnFloatEditToolBar));
@@ -2111,6 +2114,7 @@
mViewInfo.sel1 = mTracks->GetEndTime();
mTrackPanel->Refresh(false);
+ mMixerBoard->Refresh(false);
}
void AudacityProject::OnSelectCursorEnd()
@@ -2596,16 +2600,26 @@
void AudacityProject::OnMixerBoard()
{
- if (!mMixerBoard)
- mMixerBoard = new MixerBoard(this);
-
- mMixerBoard->Show();
+ #if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ // For UmixIt, Mixer Board is XOR Track Panel.
+ bool bWantTrackPanel = mMixerBoard->IsShown();
+ mMixerBoard->Show(!bWantTrackPanel);
+ mTrackPanel->ShowRulerOnly(!bWantTrackPanel);
+ mHsbar->Show(bWantTrackPanel);
+ mVsbar->Show(bWantTrackPanel);
+ this->HandleResize();
+
+ mCommandManager.Modify("Mixer Board", bWantTrackPanel ? _("&Mixer
Board") : _("&Track Panel"));
+ #else
+ if (!mMixerBoardFrame)
+ {
+ mMixerBoardFrame = new MixerBoardFrame(this);
+ mMixerBoard = mMixerBoardFrame->mMixerBoard;
+ }
+ mMixerBoardFrame->Show();
+ #endif
}
-void AudacityProject::OnTrackPanel()
-{
- mTrackPanel->Show();
-}
//
// Project Menu
Index: MixerBoard.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/Attic/MixerBoard.cpp,v
retrieving revision 1.1.2.14
retrieving revision 1.1.2.15
diff -u -d -r1.1.2.14 -r1.1.2.15
--- MixerBoard.cpp 22 Mar 2007 02:18:56 -0000 1.1.2.14
+++ MixerBoard.cpp 28 Mar 2007 02:19:25 -0000 1.1.2.15
@@ -49,6 +49,7 @@
BEGIN_EVENT_TABLE(MixerTrackCluster, wxPanel)
EVT_CHAR(MixerTrackCluster::OnKeyEvent)
+ EVT_MOUSE_EVENTS(MixerTrackCluster::OnMouseEvent)
EVT_COMMAND(ID_TOGGLEBUTTON_MUTE, wxEVT_COMMAND_BUTTON_CLICKED,
MixerTrackCluster::OnButton_Mute)
EVT_COMMAND(ID_TOGGLEBUTTON_SOLO, wxEVT_COMMAND_BUTTON_CLICKED,
MixerTrackCluster::OnButton_Solo)
EVT_PAINT(MixerTrackCluster::OnPaint)
@@ -57,9 +58,7 @@
EVT_COMMAND_SCROLL(ID_SLIDER_GAIN, MixerTrackCluster::OnSliderScroll_Gain)
END_EVENT_TABLE()
-IMPLEMENT_CLASS(MixerTrackCluster, wxPanel)
-
-MixerTrackCluster::MixerTrackCluster(wxScrolledWindow* parent,
+MixerTrackCluster::MixerTrackCluster(wxWindow* parent,
MixerBoard* grandParent,
AudacityProject* project,
WaveTrack* pLeftTrack, WaveTrack*
pRightTrack /*= NULL*/,
const wxPoint& pos /*=
wxDefaultPosition*/,
@@ -231,7 +230,10 @@
wxSize scrolledWindowClientSize = this->GetParent()->GetClientSize();
int newClusterHeight =
scrolledWindowClientSize.GetHeight() -
- wxSystemSettings::GetMetric(wxSYS_HSCROLL_Y) + //
wxScrolledWindow::GetClientSize doesn't account for its scrollbar size.
+
+ // wxScrolledWindow::GetClientSize doesn't account for its scrollbar
size.
+ wxSystemSettings::GetMetric(wxSYS_HSCROLL_Y) +
+
kDoubleInset;
this->SetSize(-1, newClusterHeight);
@@ -369,6 +371,27 @@
mProject->HandleKeyDown(event);
}
+void MixerTrackCluster::OnMouseEvent(wxMouseEvent& event)
+{
+ if (event.ButtonUp())
+ {
+ if (!event.ShiftDown())
+ // exclusive select
+ mProject->SelectNone();
+
+ mLeftTrack->SetSelected(true);
+ if (mRightTrack)
+ mRightTrack->SetSelected(true);
+
+ if (event.ShiftDown())
+ // Inclusive select, so refresh only this one.
+ this->Refresh(false);
+ else
+ // Exclusive select, so refresh all.
+ mMixerBoard->Refresh(false);
+ }
+}
+
void MixerTrackCluster::OnPaint(wxPaintEvent &evt)
{
wxPaintDC dc(this);
@@ -383,7 +406,29 @@
wxSize clusterSize = this->GetSize();
wxRect bev(0, 0, clusterSize.GetWidth() - 1, clusterSize.GetHeight() - 1);
- AColor::Bevel(dc, true, bev);
+ if (mLeftTrack->GetSelected())
+ {
+ wxPen highlightPen;
+ for (unsigned int i = 0; i < 2; i++)
+ {
+ //#if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ // highlightPen.SetColour(*wxCYAN);
+ // dc.SetPen(highlightPen);
+ // dc.DrawLine(bev.x, bev.y, bev.x + bev.width, bev.y); // top
+ // dc.DrawLine(bev.x, bev.y, bev.x, bev.y + bev.height); // left
+ // highlightPen.SetColour(*wxBLUE);
+ // dc.SetPen(highlightPen);
+ // dc.DrawLine(bev.x + bev.width, bev.y, bev.x + bev.width, bev.y +
bev.height); // right
+ // dc.DrawLine(bev.x, bev.y + bev.height, bev.x + bev.width + 1,
bev.y + bev.height); // bottom
+ // bev.Inflate(-1, -1);
+ //#else
+ bev.Inflate(-1, -1);
+ AColor::Bevel(dc, false, bev);
+ //#endif
+ }
+ }
+ else
+ AColor::Bevel(dc, true, bev);
dc.EndDrawing();
}
@@ -510,6 +555,40 @@
WX_DEFINE_OBJARRAY(MusicalInstrumentArray);
+// class MixerBoardScrolledWindow
+
+// wxScrolledWindow ignores mouse clicks in client area,
+// but they don't get passed to Mixerboard.
+// We need to catch them to deselect all track clusters.
+
+BEGIN_EVENT_TABLE(MixerBoardScrolledWindow, wxScrolledWindow)
+ EVT_MOUSE_EVENTS(MixerBoardScrolledWindow::OnMouseEvent)
+END_EVENT_TABLE()
+
+MixerBoardScrolledWindow::MixerBoardScrolledWindow(AudacityProject* project,
+ MixerBoard* parent,
wxWindowID id /*= -1*/,
+ const wxPoint& pos /*=
wxDefaultPosition*/,
+ const wxSize& size /*=
wxDefaultSize*/,
+ long style /*= wxHSCROLL |
wxVSCROLL*/) :
+ wxScrolledWindow(parent, id, pos, size, style)
+{
+ mMixerBoard = parent;
+ mProject = project;
+}
+
+void MixerBoardScrolledWindow::OnMouseEvent(wxMouseEvent& event)
+{
+ if (event.ButtonUp())
+ {
+ //v Even when I implement MixerBoard::OnMouseEvent and call event.Skip()
+ // here, MixerBoard::OnMouseEvent never gets called.
+ // So, added mProject to MixerBoardScrolledWindow and just directly do
what's needed here.
+ mProject->SelectNone();
+ mMixerBoard->Refresh(false);
+ }
+}
+
+
// class MixerBoard
#define MIXER_BOARD_MIN_HEIGHT 500
@@ -521,27 +600,15 @@
kDoubleInset, // plus final right margin
MIXER_BOARD_MIN_HEIGHT);
-BEGIN_EVENT_TABLE(MixerBoard, wxFrame)
- EVT_CLOSE(MixerBoard::OnCloseWindow)
- EVT_MAXIMIZE(MixerBoard::OnMaximize)
+BEGIN_EVENT_TABLE(MixerBoard, wxWindow)
EVT_SIZE(MixerBoard::OnSize)
END_EVENT_TABLE()
-MixerBoard::MixerBoard(AudacityProject* parent,
+MixerBoard::MixerBoard(AudacityProject* pProject,
+ wxFrame* parent,
const wxPoint& pos /*= wxDefaultPosition*/,
const wxSize& size /*= wxDefaultSize*/) :
- wxFrame(parent, -1,
- wxString::Format(_("Audacity Mixer Board%s"),
- ((parent->GetName() == wxEmptyString) ?
- wxT("") :
- wxString::Format(wxT(" - %s"),
-
parent->GetName().c_str()).c_str())),
- pos, size,
- wxDEFAULT_FRAME_STYLE
- #ifndef __WXMAC__
- | ((parent == NULL) ? 0x0 : wxFRAME_FLOAT_ON_PARENT)
- #endif
- )
+ wxWindow(parent, -1, pos, size)
{
// public data members
// mute & solo button images: Create once and store on MixerBoard for use
in all MixerTrackClusters.
@@ -557,19 +624,21 @@
// private data members
this->LoadMusicalInstruments(); // Set up mMusicalInstruments.
- mProject = parent;
+ mProject = pProject;
mScrolledWindow =
- new wxScrolledWindow(this, -1, // wxWindow* parent, wxWindowID id = -1,
- this->GetClientAreaOrigin(), // const wxPoint& pos
= wxDefaultPosition,
- this->GetClientSize(), // const wxSize& size =
wxDefaultSize,
- wxHSCROLL); // long style = wxHSCROLL | wxVSCROLL,
const wxString& name = "scrolledWindow")
+ new MixerBoardScrolledWindow(
+ pProject, // AudacityProject* project,
+ this, -1, // wxWindow* parent, wxWindowID id = -1,
+ this->GetClientAreaOrigin(), // const wxPoint& pos =
wxDefaultPosition,
+ size, // const wxSize& size = wxDefaultSize,
+ wxHSCROLL); // long style = wxHSCROLL | wxVSCROLL, const wxString&
name = "scrolledWindow")
// Set background color a la wxColour dark in AColor::Init, so same as
TrackPanel background.
mScrolledWindow->SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DSHADOW));
mScrolledWindow->SetScrollRate(10, 0); // no vertical scroll
- mScrolledWindow->SetVirtualSize(kDefaultSize.GetWidth(), -1);
+ mScrolledWindow->SetVirtualSize(size);
/* This doesn't work to make the mScrolledWindow automatically resize, so
do it explicitly in OnSize.
wxBoxSizer* pBoxSizer = new wxBoxSizer(wxVERTICAL);
@@ -583,19 +652,6 @@
mSoloCount = 0;
mT = -1.0;
mTracks = mProject->GetTracks();
-
- this->SetSizeHints(kInset + MIXER_TRACK_CLUSTER_WIDTH, // int minW=-1, //
Show at least one cluster wide.
- MIXER_BOARD_MIN_HEIGHT); // int minH=-1,
-
- // loads either the XPM or the windows resource, depending on the platform
- #if !defined(__WXMAC__) && !defined(__WXX11__)
- #ifdef __WXMSW__
- wxIcon ic(wxICON(AudacityLogo));
- #else
- wxIcon ic(wxICON(AudacityLogo48x48));
- #endif
- SetIcon(ic);
- #endif
}
MixerBoard::~MixerBoard()
@@ -617,7 +673,6 @@
void MixerBoard::AddTrackClusters() // Add clusters for any tracks we're not
yet showing.
{
- wxASSERT(mTracks);
if (mTracks->IsEmpty())
return;
@@ -661,8 +716,12 @@
}
if (pMixerTrackCluster)
+ {
// Added at least one MixerTrackCluster.
this->UpdateWidth();
+ for (unsigned int i = 0; i < mMixerTrackClusters.GetCount(); i++)
+ mMixerTrackClusters[i]->UpdateHeight();
+ }
}
void MixerBoard::RemoveTrackCluster(const WaveTrack* pLeftTrack)
@@ -883,16 +942,35 @@
void MixerBoard::UpdateWidth()
{
int newWidth =
- (mMixerTrackClusters.GetCount() *
- (kInset + MIXER_TRACK_CLUSTER_WIDTH)) + // left margin and width for
each
- kTripleInset; // plus final right margin
+ (mMixerTrackClusters.GetCount() * // number of tracks times
+ (kInset + MIXER_TRACK_CLUSTER_WIDTH)) + // left margin and width
for each
+ kTripleInset; // plus final right margin
- mScrolledWindow->SetVirtualSize(newWidth - kInset, -1);
+ int width;
+ int height;
+ this->GetSize(&width, &height);
+ if (newWidth == width)
+ return;
- this->SetSizeHints(kInset + MIXER_TRACK_CLUSTER_WIDTH, // int minW=-1, //
Show at least one cluster wide.
- MIXER_BOARD_MIN_HEIGHT, // int minH=-1,
- newWidth); // int maxW=-1,
- this->SetSize(newWidth, -1);
+ #if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ if (width < newWidth - kInset)
+ mScrolledWindow->SetVirtualSize(newWidth, -1);
+ else
+ mScrolledWindow->SetVirtualSize(width, -1);
+ #else
+ mScrolledWindow->SetVirtualSize(newWidth, -1);
+
+ wxWindow* pParent = this->GetParent(); // Might be mProject, or might be
a MixerBoardFrame.
+ mProject->SetSizeHints(
+ kInset + MIXER_TRACK_CLUSTER_WIDTH, // int minW=-1, // Show at least
one cluster wide.
+ MIXER_BOARD_MIN_HEIGHT, // int minH=-1,
+ newWidth); // int maxW=-1,
+ wxPoint parentPos = pParent->GetPosition();
+ int maxWidth = wxSystemSettings::GetMetric(wxSYS_SCREEN_X) - parentPos.x;
+ if (newWidth > maxWidth)
+ newWidth = maxWidth;
+ pParent->SetSize(newWidth, -1);
+ #endif
}
// private methods
@@ -1128,33 +1206,79 @@
}
// event handlers
-void MixerBoard::OnCloseWindow(wxCloseEvent &WXUNUSED(event))
-{
- this->Hide();
-}
-
-void MixerBoard::OnMaximize(wxMaximizeEvent &event)
-{
- // Update the size hints before skipping to let default handling happen.
- // Try to show all clusters.
- int newWidth =
- (mMixerTrackClusters.GetCount() * (kInset + MIXER_TRACK_CLUSTER_WIDTH))
+ // left margin and width for each
- kTripleInset; // plus final right margin
- this->SetSizeHints(kInset + MIXER_TRACK_CLUSTER_WIDTH, // int minW=-1, //
Show at least one cluster wide.
- MIXER_BOARD_MIN_HEIGHT, // int minH=-1,
- newWidth); // int maxW=-1,
-
- mScrolledWindow->SetVirtualSize(newWidth - kInset, -1);
-
- event.Skip();
-}
void MixerBoard::OnSize(wxSizeEvent &evt)
{
// this->FitInside() doesn't work, and it doesn't happen automatically. Is
wxScrolledWindow wrong?
- mScrolledWindow->SetSize(this->GetClientSize());
+ mScrolledWindow->SetSize(evt.GetSize());
+ this->UpdateWidth(); // primarily to update mScrolledWindow's virtual width
for (unsigned int i = 0; i < mMixerTrackClusters.GetCount(); i++)
mMixerTrackClusters[i]->UpdateHeight();
-
}
+
+
+#if (AUDACITY_BRANDING != BRAND_UMIXIT)
+
+ // class MixerBoardFrame
+
+ BEGIN_EVENT_TABLE(MixerBoardFrame, wxFrame)
+ EVT_CLOSE(MixerBoardFrame::OnCloseWindow)
+ EVT_MAXIMIZE(MixerBoardFrame::OnMaximize)
+ EVT_SIZE(MixerBoardFrame::OnSize)
+ END_EVENT_TABLE()
+
+
+ MixerBoardFrame::MixerBoardFrame(AudacityProject* parent) :
+ wxFrame(parent, -1,
+ wxString::Format(_("Audacity Mixer Board%s"),
+ ((parent->GetName() == wxEmptyString) ?
+ wxT("") :
+ wxString::Format(wxT(" - %s"),
+
parent->GetName().c_str()).c_str())),
+ wxDefaultPosition, wxDefaultSize,
+ wxDEFAULT_FRAME_STYLE
+ #ifndef __WXMAC__
+ | ((parent == NULL) ? 0x0 : wxFRAME_FLOAT_ON_PARENT)
+ #endif
+ )
+ {
+ mMixerBoard = new MixerBoard(parent, this);
+
+ this->SetSizeHints(kInset + MIXER_TRACK_CLUSTER_WIDTH, // int minW=-1,
// Show at least one cluster wide.
+ MIXER_BOARD_MIN_HEIGHT); // int minH=-1,
+
+ // loads either the XPM or the windows resource, depending on the
platform
+ #if !defined(__WXMAC__) && !defined(__WXX11__)
+ #ifdef __WXMSW__
+ wxIcon ic(wxICON(AudacityLogo));
+ #else
+ wxIcon ic(wxICON(AudacityLogo48x48));
+ #endif
+ SetIcon(ic);
+ #endif
+ }
+
+ MixerBoardFrame::~MixerBoardFrame()
+ {
+ }
+
+ // event handlers
+ void MixerBoardFrame::OnCloseWindow(wxCloseEvent &WXUNUSED(event))
+ {
+ this->Hide();
+ }
+
+ void MixerBoardFrame::OnMaximize(wxMaximizeEvent &event)
+ {
+ // Update the size hints to show all tracks before skipping to let
default handling happen.
+ mMixerBoard->UpdateWidth();
+ event.Skip();
+ }
+
+ void MixerBoardFrame::OnSize(wxSizeEvent &event)
+ {
+ mMixerBoard->SetSize(this->GetClientSize());
+ }
+#endif
+
Index: Project.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/Project.cpp,v
retrieving revision 1.178.2.17.2.14
retrieving revision 1.178.2.17.2.15
diff -u -d -r1.178.2.17.2.14 -r1.178.2.17.2.15
--- Project.cpp 22 Mar 2007 02:21:55 -0000 1.178.2.17.2.14
+++ Project.cpp 28 Mar 2007 02:19:25 -0000 1.178.2.17.2.15
@@ -367,7 +367,7 @@
AudacityProject::AudacityProject(wxWindow * parent, wxWindowID id,
const wxPoint & pos,
const wxSize & size)
- : wxFrame(parent, id, "Audacity", pos, size),
+ : wxFrame(parent, id, wxGetApp().GetAppName().c_str(), pos, size),
mLastPlayMode(normalPlay),
mImportProgressDialog(NULL),
mRate((double) gPrefs->Read("/SamplingRate/DefaultProjectSampleRate",
AudioIO::GetOptimalSupportedSampleRate())),
@@ -384,6 +384,9 @@
mHistoryWindow(NULL),
mLyricsWindow(NULL),
mMixerBoard(NULL),
+ #if (AUDACITY_BRANDING != BRAND_UMIXIT)
+ mMixerBoardFrame(NULL),
+ #endif
mTotalToolBarHeight(0),
mDraggingToolBar(NoneID),
mAudioIOToken(-1),
@@ -569,14 +572,15 @@
#if (AUDACITY_BRANDING == BRAND_UMIXIT)
// Usually, mMixerBoard is created only when the View > Mixer Board
// command is given, but we always want it for UmixIt, and not the Track
Panel.
- //vvvvv EXCEPT THE RULER!
- //mTrackPanel->Hide();
- //mHsbar->Hide();
- //mVsbar->Hide();
+ mTrackPanel->ShowRulerOnly();
+ mHsbar->Hide();
+ mVsbar->Hide();
- // Position and size the MixerBoard where TrackPanel would be (but must
specify in global coords).
- wxPoint mixerPos = this->ClientToScreen(wxPoint(left, top + voffset));
- mMixerBoard = new MixerBoard(this, mixerPos, wxSize(width, height -
voffset));
+ // Position and size the MixerBoard where TrackPanel would be.
+ mMixerBoard =
+ new MixerBoard(this, this,
+ wxPoint(left, top + voffset),
+ wxSize(width, height - voffset));
mMixerBoard->Show();
#endif
@@ -1004,21 +1008,40 @@
mStatus->SetSize(0, top + height - sh, width, sh);
height -= sh;
- mTrackPanel->SetSize(left, top,
- width - sbarSpaceWidth,
- height - sbarSpaceWidth);
+ #if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ if (mMixerBoard->IsShown())
+ mTrackPanel->SetSize(left, top,
+ width,
+ mTrackPanel->GetRulerHeight());
+ else
+ #endif
+ mTrackPanel->SetSize(left, top,
+ width - sbarSpaceWidth,
+ height - sbarSpaceWidth);
int hoffset = mTrackPanel->GetLeftOffset() - 1;
int voffset = mTrackPanel->GetRulerHeight();
- mHsbar->SetSize(hoffset, top + height - sbarSpaceWidth,
- width - hoffset - sbarSpaceWidth + sbarExtraLen,
- sbarControlWidth);
- mVsbar->SetSize(width - sbarSpaceWidth, top + voffset - sbarExtraLen,
- sbarControlWidth,
- height - sbarSpaceWidth - voffset +
- 2 * sbarExtraLen);
- FixScrollbars();
+ #if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ if (!mMixerBoard->IsShown())
+ {
+ #endif
+ mHsbar->SetSize(hoffset, top + height - sbarSpaceWidth,
+ width - hoffset - sbarSpaceWidth + sbarExtraLen,
+ sbarControlWidth);
+ mVsbar->SetSize(width - sbarSpaceWidth, top + voffset - sbarExtraLen,
+ sbarControlWidth,
+ height - sbarSpaceWidth - voffset +
+ 2 * sbarExtraLen);
+ FixScrollbars();
+ #if (AUDACITY_BRANDING == BRAND_UMIXIT)
+ }
+ else
+ {
+ mMixerBoard->SetSize(left, top + voffset, width, height - voffset);
+ this->OnZoomFit();
+ }
+ #endif
}
@@ -1918,7 +1941,7 @@
///
mFileName = fileName;
- SetTitle("Audacity - " + GetName());
+ SetTitle(wxGetApp().GetAppName() + " - " + GetName());
XMLFileReader xmlFile;
@@ -2368,7 +2391,7 @@
if (initiallyEmpty && mDirManager->GetProjectName() == "") {
wxString name = fileName.AfterLast(wxFILE_SEP_PATH).BeforeLast('.');
mFileName =::wxPathOnly(fileName) + wxFILE_SEP_PATH + name + ".aup";
- SetTitle("Audacity - " + GetName());
+ SetTitle(wxGetApp().GetAppName() + " - " + GetName());
}
// Moved this call to higher levels to prevent horrible flicker redrawing
everything on each file.
@@ -2466,7 +2489,7 @@
fName = fName.Mid(0, len - 4);
mFileName = fName + ".aup";
- SetTitle("Audacity - " + GetName());
+ SetTitle(wxGetApp().GetAppName() + " - " + GetName());
bool sucess = Save(false, true);
@@ -2615,14 +2638,10 @@
void AudacityProject::UpdateMixerBoard()
{
- if (mTracks->IsEmpty())
+ if (mTracks->IsEmpty() || !mMixerBoard)
return;
- if (!mMixerBoard)
- mMixerBoard = new MixerBoard(this);
-
mMixerBoard->AddTrackClusters();
- mMixerBoard->Show();
mMixerBoard->UpdateMeters(gAudioIO->GetStreamTime());
}
Index: Menus.h
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/Menus.h,v
retrieving revision 1.53.2.4.2.3
retrieving revision 1.53.2.4.2.4
diff -u -d -r1.53.2.4.2.3 -r1.53.2.4.2.4
--- Menus.h 22 Mar 2007 02:21:57 -0000 1.53.2.4.2.3
+++ Menus.h 28 Mar 2007 02:19:26 -0000 1.53.2.4.2.4
@@ -150,7 +150,6 @@
void OnLyrics();
void OnMixerBoard();
-void OnTrackPanel();
// Project Menu
Index: Prefs.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/Prefs.cpp,v
retrieving revision 1.15
retrieving revision 1.15.6.1
diff -u -d -r1.15 -r1.15.6.1
--- Prefs.cpp 19 Sep 2003 08:09:24 -0000 1.15
+++ Prefs.cpp 28 Mar 2007 02:19:25 -0000 1.15.6.1
@@ -75,6 +75,12 @@
#ifdef AUDACITY_NAME
wxString appName = AUDACITY_NAME;
wxString vendorName = AUDACITY_NAME;
+#elif (AUDACITY_BRANDING == BRAND_UMIXIT)
+ wxString vendorName = "Audacity";
+ wxString appName = "UmixIt powered by Audacity";
+#elif (AUDACITY_BRANDING == BRAND_THINKLABS)
+ wxString vendorName = "Audacity";
+ wxString appName = "Audacity_Thinklabs";
#else
wxString vendorName = "Audacity";
wxString appName = "Audacity";
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Audacity-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/audacity-cvs