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

Reply via email to