Update of /cvsroot/audacity/audacity-src/src
In directory sc8-pr-cvs11.sourceforge.net:/tmp/cvs-serv29882/src

Modified Files:
        AColor.cpp AColor.h AllThemeResources.h AudacityApp.cpp 
        Experimental.h Project.cpp Theme.cpp ThemeAsCeeCode.h 
        TrackArtist.cpp TrackPanel.cpp TrackPanel.h 
Log Message:
-Theming updates
-TrackLabel becomes TrackInfo

Index: AColor.h
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/AColor.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- AColor.h    18 Jun 2007 16:10:53 -0000      1.12
+++ AColor.h    5 Jul 2007 11:55:34 -0000       1.13
@@ -27,9 +27,14 @@
 
    static void DrawFocus(wxDC & dc, wxRect & r);
    static void Bevel(wxDC & dc, bool up, wxRect & r);
+   static void BevelTrackInfo(wxDC & dc, bool up, wxRect & r);
+
+   static void UseThemeColour( wxDC * dc, int iIndex );
+   static void TrackPanelBackground(wxDC * dc, bool selected);
 
    static void Light(wxDC * dc, bool selected);
    static void Medium(wxDC * dc, bool selected);
+   static void MediumTrackInfo(wxDC * dc, bool selected);
    static void Dark(wxDC * dc, bool selected);
 
    static void CursorColor(wxDC * dc);
@@ -54,7 +59,7 @@
    static wxPen lightPen[2];
    static wxPen mediumPen[2];
    static wxPen darkPen[2];
-   
+
    static wxPen cursorPen;
    static wxPen indicatorPen[2];
    static wxBrush indicatorBrush[2];
@@ -81,8 +86,9 @@
 
    static wxBrush tooltipBrush;
 
-
  private:
+   static wxPen sparePen;
+   static wxBrush spareBrush;
    static bool inited;
 
 };

Index: TrackPanel.h
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/TrackPanel.h,v
retrieving revision 1.118
retrieving revision 1.119
diff -u -d -r1.118 -r1.119
--- TrackPanel.h        18 Jun 2007 16:10:54 -0000      1.118
+++ TrackPanel.h        5 Jul 2007 11:55:37 -0000       1.119
@@ -92,11 +92,11 @@
 };
 
 
-class TrackLabel
+class TrackInfo
 {
 public:
-   TrackLabel(wxWindow * pParentIn);
-   ~TrackLabel();
+   TrackInfo(wxWindow * pParentIn);
+   ~TrackInfo();
 
    int GetTitleWidth() const { return 100; }
 private:
@@ -104,6 +104,7 @@
    void EnsureSufficientSliders(int index);
 
    void DrawBackground(wxDC * dc, const wxRect r, bool bSelected, const int 
labelw);
+   void DrawBordersWithin(wxDC * dc, const wxRect r );
    void DrawCloseBox(wxDC * dc, const wxRect r, bool down);
    void DrawTitleBar(wxDC * dc, const wxRect r, Track * t, bool down);
    void DrawMuteSolo(wxDC * dc, const wxRect r, Track * t, bool down, bool 
solo);
@@ -359,8 +360,8 @@
 //   int GetTitleWidth() const { return 100; }
    int GetTitleOffset() const { return 0; }
    int GetVRulerWidth() const { return 36;}
-   int GetVRulerOffset() const { return GetTitleOffset() + 
mTrackLabel.GetTitleWidth();}
-   int GetLabelWidth() const { return mTrackLabel.GetTitleWidth() + 
GetVRulerWidth();}
+   int GetVRulerOffset() const { return GetTitleOffset() + 
mTrackInfo.GetTitleWidth();}
+   int GetLabelWidth() const { return mTrackInfo.GetTitleWidth() + 
GetVRulerWidth();}
 
 private:
    void DrawTracks(wxDC * dc);
@@ -388,7 +389,7 @@
 
    bool MoveClipToTrack(WaveClip *clip, WaveTrack* src, WaveTrack* dst);
 
-   TrackLabel mTrackLabel;
+   TrackInfo mTrackInfo;
 
    TrackPanelListener *mListener;
 
@@ -555,7 +556,7 @@
    wxMenu *mLabelTrackMenu;
    wxMenu *mRateMenu;
    wxMenu *mFormatMenu;
-   wxMenu *mLabelTrackLabelMenu;
+   wxMenu *mLabelTrackInfoMenu;
 
    Track *mPopupMenuTarget;
 

Index: AudacityApp.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/AudacityApp.cpp,v
retrieving revision 1.175
retrieving revision 1.176
diff -u -d -r1.175 -r1.176
--- AudacityApp.cpp     18 Jun 2007 16:10:53 -0000      1.175
+++ AudacityApp.cpp     5 Jul 2007 11:55:35 -0000       1.176
@@ -711,6 +711,7 @@
 
    SetExitOnFrameDelete(true);
 
+
    AudacityProject *project = CreateNewAudacityProject(gParentWindow);
 
 #ifdef EXPERIMENTAL_MODULES

Index: TrackArtist.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/TrackArtist.cpp,v
retrieving revision 1.96
retrieving revision 1.97
diff -u -d -r1.96 -r1.97
--- TrackArtist.cpp     9 Jun 2007 08:18:45 -0000       1.96
+++ TrackArtist.cpp     5 Jul 2007 11:55:36 -0000       1.97
@@ -261,12 +261,19 @@
 
 void TrackArtist::DrawVRuler(Track *t, wxDC * dc, wxRect & r)
 {
+   // All waves have a ruler in the info panel
+   // The ruler needs a bevelled surround.
+   if (t->GetKind() == Track::Wave )
+   {
+      wxRect bev = r;
+      bev.Inflate(-1, -1);
+      bev.width  +=1;
+      AColor::BevelTrackInfo(*dc, true, bev);
+   }
+
    if (t->GetKind() == Track::Wave
        && ((WaveTrack *) t)->GetDisplay() == WaveTrack::WaveformDisplay) {
       // Waveform
-      wxRect bev = r;
-      bev.Inflate(-1, -1);
-      AColor::Bevel(*dc, true, bev);
       float min, max;
 
       ((WaveTrack *)t)->GetDisplayBounds(&min, &max);
@@ -282,9 +289,6 @@
    if (t->GetKind() == Track::Wave
        && ((WaveTrack *) t)->GetDisplay() == WaveTrack::WaveformDBDisplay) {
       // Waveform (db)
-      wxRect bev = r;
-      bev.Inflate(-1, -1);
-      AColor::Bevel(*dc, true, bev);
       vruler->SetUnits(wxT(""));
 
       float dBr = gPrefs->Read(wxT("/GUI/EnvdBRange"), ENV_DB_RANGE);
@@ -328,10 +332,6 @@
    if (t->GetKind() == Track::Wave
        && ((WaveTrack *) t)->GetDisplay() == WaveTrack::SpectrumDisplay) {
       // Spectrum
-      wxRect bev = r;
-      bev.Inflate(-1, -1);
-      AColor::Bevel(*dc, true, bev);
-
       if (r.height < 60)
          return;
 
@@ -371,11 +371,9 @@
    if (t->GetKind() == Track::Wave
        && ((WaveTrack *) t)->GetDisplay() == WaveTrack::PitchDisplay) {
       // Pitch
-      wxRect bev = r;
-      bev.Inflate(-1, -1);
-      AColor::Bevel(*dc, true, bev);
    }
 
+   // The note track isn't drawing a ruler at all!
    if (t->GetKind() == Track::Note) {
 
       dc->SetPen(*wxTRANSPARENT_PEN);

Index: ThemeAsCeeCode.h
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/ThemeAsCeeCode.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- ThemeAsCeeCode.h    11 Jul 2006 08:14:13 -0000      1.4
+++ ThemeAsCeeCode.h    5 Jul 2007 11:55:36 -0000       1.5
@@ -4,6 +4,7 @@
 //   It is included by Theme.cpp.
 //   Only check this into CVS if you've read and understood the guidelines!
 
+#ifndef EXPERIMENTAL_THEMING
    137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,1,184,
    0,0,3,68,8,6,0,0,0,194,5,58,248,0,0,0,4,115,66,73,
    84,8,8,8,8,124,8,100,136,0,0,32,0,73,68,65,84,120,156,236,
@@ -3935,3 +3936,4117 @@
    28,0,75,130,3,96,73,112,0,44,9,14,128,37,193,1,176,36,56,0,
    150,4,7,192,146,224,0,88,18,28,0,75,1,242,41,238,143,137,121,142,
    218,0,0,0,0,73,69,78,68,174,66,96,130,
[...4095 lines suppressed...]
+   0,128,73,4,14,0,96,18,129,3,0,152,68,224,0,0,38,17,56,0,
+   128,73,4,14,0,96,18,129,3,0,152,68,224,0,0,38,17,56,0,128,
+   73,4,14,0,96,18,129,3,0,152,68,224,0,0,38,17,56,0,128,73,
+   4,14,0,96,18,129,3,0,152,68,224,0,0,38,17,56,0,128,73,4,
+   14,0,96,18,129,3,0,152,68,224,0,0,38,17,56,0,128,73,4,14,
+   0,96,18,129,3,0,152,68,224,0,0,38,17,56,0,128,73,4,14,0,
+   96,18,129,3,0,152,68,224,0,0,38,17,56,0,128,73,4,14,0,96,
+   18,129,3,0,152,68,224,0,0,38,17,56,0,128,73,4,14,0,96,18,
+   129,3,0,152,68,224,0,0,38,17,56,0,128,73,4,14,0,96,18,129,
+   3,0,152,68,224,0,0,38,17,56,0,128,73,4,14,0,96,18,129,3,
+   0,152,68,224,0,0,38,17,56,0,128,73,4,14,0,96,18,129,3,0,
+   152,68,224,0,0,38,17,56,0,128,73,4,14,0,96,18,129,3,0,152,
+   68,224,0,0,38,17,56,0,128,73,4,14,0,96,18,129,3,0,152,68,
+   224,0,0,38,17,56,0,128,73,4,14,0,96,18,129,3,0,152,68,224,
+   0,0,38,17,56,0,128,73,4,14,0,96,18,129,3,0,152,68,224,0,
+   0,38,17,56,0,128,73,4,14,0,96,18,129,3,0,152,68,224,0,0,
+   38,17,56,0,128,73,4,14,0,96,18,129,3,0,152,244,15,61,199,65,
+   69,227,185,65,117,0,0,0,0,73,69,78,68,174,66,96,130,
+#endif
\ No newline at end of file

Index: TrackPanel.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/TrackPanel.cpp,v
retrieving revision 1.364
retrieving revision 1.365
diff -u -d -r1.364 -r1.365
--- TrackPanel.cpp      4 Jul 2007 18:29:28 -0000       1.364
+++ TrackPanel.cpp      5 Jul 2007 11:55:37 -0000       1.365
@@ -7,7 +7,7 @@
   Dominic Mazzoni
   and lots of other contributors
 
-  Implements TrackPanel and TrackLabel.
+  Implements TrackPanel and TrackInfo.
 
 ********************************************************************//*! 
 
@@ -19,7 +19,7 @@
 
 \file TrackPanel.cpp
 \brief 
-  Implements TrackPanel and TrackLabel.
+  Implements TrackPanel and TrackInfo.
 
   TrackPanel.cpp is currently some of the worst code in Audacity.  
   It's not really unreadable, there's just way too much stuff in this
@@ -45,25 +45,25 @@
   main part of the screen which contains multiple tracks.
 
   It uses many other classes, but in particular it uses the
-  TrackLabel class to draw the label on the left of a track,
+  TrackInfo class to draw the label on the left of a track,
   and the TrackArtist class to draw the actual waveforms.
 
-  The TrackPanel manages multiple tracks and their TrackLabels.
+  The TrackPanel manages multiple tracks and their TrackInfos.
 
-  Note that with stereo tracks there will be one TrackLabel
+  Note that with stereo tracks there will be one TrackInfo
   being used by two wavetracks.
 
 *//*****************************************************************//**
 
-\class TrackLabel
+\class TrackInfo
 \brief
-  The TrackLabel is shown to the side of a track 
+  The TrackInfo is shown to the side of a track 
   It has the menus, pan and gain controls displayed in it.
  
-  TrackPanel and not TrackLabel takes care of the functionality for 
+  TrackPanel and not TrackInfo takes care of the functionality for 
   each of the buttons in that panel.
 
-  In its current implementation TrackLabel is not derived from a
+  In its current implementation TrackInfo is not derived from a
   wxWindow.  Following the original coding style, it has 
   been coded as a 'flyweight' class, which is passed 
   state as needed, except for the array of gains and pans.
@@ -114,8 +114,8 @@
 \page TrackPanelRefactor Track Panel Refactor
 \brief Planned refactoring of TrackPanel.cpp
 
- - Move menus from current TrackPanel into TrackLabel.
- - Convert TrackLabel from 'flyweight' to heavyweight.
+ - Move menus from current TrackPanel into TrackInfo.
+ - Convert TrackInfo from 'flyweight' to heavyweight.
  - Split GuiStereoTrack and GuiWaveTrack out from TrackPanel.
 
   JKC: Incremental refactoring started April/2003
@@ -130,7 +130,7 @@
    +----------------------------------------------------+
    |+------------+ +-----------------------------------+|
    ||            | | (L)  GuiWaveTrack                 ||
-   || TrackLabel | +-----------------------------------+|
+   || TrackInfo | +-----------------------------------+|
    ||            | +-----------------------------------+|
    ||            | | (R)  GuiWaveTrack                 ||
    |+------------+ +-----------------------------------+|
@@ -138,7 +138,7 @@
    +----------------------------------------------------+
    |+------------+ +-----------------------------------+|
    ||            | | (L)  GuiWaveTrack                 ||
-   || TrackLabel | +-----------------------------------+|
+   || TrackInfo | +-----------------------------------+|
    ||            | +-----------------------------------+|
    ||            | | (R)  GuiWaveTrack                 ||
    |+------------+ +-----------------------------------+|
@@ -153,7 +153,7 @@
   
   The precise names of the classes are subject to revision.
   Have deliberately not created new files for the new classes 
-  such as AdornedRulerPanel and TrackLabel - yet.
+  such as AdornedRulerPanel and TrackInfo - yet.
 
 *//*****************************************************************/
 
@@ -264,7 +264,7 @@
 }
 
 /// \todo Probably should move to 'Utils.cpp'.
-void SetLabelFont(wxDC * dc)
+void SetTrackInfoFont(wxDC * dc)
 {
    int fontSize = 10;
 #if defined __WXMSW__ || __WXGTK__
@@ -437,7 +437,7 @@
                        TrackPanelListener * listener,
                        AdornedRulerPanel * ruler)
    : wxPanel(parent, id, pos, size, wxWANTS_CHARS | wxNO_BORDER),
-     mTrackLabel(this),
+     mTrackInfo(this),
      mListener(listener),
      mTracks(tracks),
      mViewInfo(viewInfo),
@@ -546,10 +546,10 @@
    mTimeTrackMenu->AppendSeparator();
    mTimeTrackMenu->Append(OnSetTimeTrackRangeID, _("Set Range..."));
 
-   mLabelTrackLabelMenu = new wxMenu();
-   mLabelTrackLabelMenu->Append(OnCutSelectedTextID, _("Cut"));
-   mLabelTrackLabelMenu->Append(OnCopySelectedTextID, _("Copy"));
-   mLabelTrackLabelMenu->Append(OnPasteSelectedTextID, _("Paste"));
+   mLabelTrackInfoMenu = new wxMenu();
+   mLabelTrackInfoMenu->Append(OnCutSelectedTextID, _("Cut"));
+   mLabelTrackInfoMenu->Append(OnCopySelectedTextID, _("Copy"));
+   mLabelTrackInfoMenu->Append(OnPasteSelectedTextID, _("Paste"));
 
    mTrackArtist = new TrackArtist();
    mTrackArtist->SetInset(1, kTopInset + 1, kLeftInset + 2, 2);
@@ -557,6 +557,8 @@
    mCapturedTrack = NULL;
    mPopupMenuTarget = NULL;
 
+//   SetBackgroundColour( wxColour( 255,255,255 ));
+
    mTimeCount = 0;
    mTimer.parent = this;
    mTimer.Start(50, FALSE);
@@ -625,7 +627,7 @@
    delete mWaveTrackMenu;
    delete mNoteTrackMenu;
    delete mLabelTrackMenu;
-   delete mLabelTrackLabelMenu;
+   delete mLabelTrackInfoMenu;
    delete mTimeTrackMenu;
 }
 
@@ -3067,14 +3069,14 @@
    wxRect r = mCapturedRect;
 
    wxRect closeRect;
-   mTrackLabel.GetCloseBoxRect(r, closeRect);
+   mTrackInfo.GetCloseBoxRect(r, closeRect);
 
    wxClientDC dc(this);
 
    if (event.Dragging())
-      mTrackLabel.DrawCloseBox(&dc, r, closeRect.Inside(event.m_x, event.m_y));
+      mTrackInfo.DrawCloseBox(&dc, r, closeRect.Inside(event.m_x, event.m_y));
    else if (event.LeftUp()) {
-      mTrackLabel.DrawCloseBox(&dc, r, false);
+      mTrackInfo.DrawCloseBox(&dc, r, false);
       if (closeRect.Inside(event.m_x, event.m_y)) {
          if (!gAudioIO->IsStreamActive(p->GetAudioIOToken()))
             RemoveTrack(t);
@@ -3148,12 +3150,12 @@
    }
 
    wxRect titleRect;
-   mTrackLabel.GetTitleBarRect(r, titleRect);
+   mTrackInfo.GetTitleBarRect(r, titleRect);
 
    wxClientDC dc(this);
 
    if (event.Dragging()) {
-      mTrackLabel.DrawTitleBar(&dc, r, t, titleRect.Inside(event.m_x, 
event.m_y));
+      mTrackInfo.DrawTitleBar(&dc, r, t, titleRect.Inside(event.m_x, 
event.m_y));
    }
    else if (event.LeftUp()) {
       if (titleRect.Inside(event.m_x, event.m_y))
@@ -3163,7 +3165,7 @@
 
       SetCapturedTrack( NULL );
 
-      mTrackLabel.DrawTitleBar(&dc, r, t, false);
+      mTrackInfo.DrawTitleBar(&dc, r, t, false);
    }
 }
 
@@ -3180,12 +3182,12 @@
    }
 
    wxRect buttonRect;
-   mTrackLabel.GetMuteSoloRect(r, buttonRect, solo);
+   mTrackInfo.GetMuteSoloRect(r, buttonRect, solo);
 
    wxClientDC dc(this);
 
    if (event.Dragging()){
-         mTrackLabel.DrawMuteSolo(&dc, r, t, buttonRect.Inside(event.m_x, 
event.m_y),
+         mTrackInfo.DrawMuteSolo(&dc, r, t, buttonRect.Inside(event.m_x, 
event.m_y),
                    solo);
    }
    else if (event.LeftUp() )
@@ -3200,7 +3202,7 @@
                   OnTrackMute(event.ShiftDown(),t);
             }  
          SetCapturedTrack( NULL );
-         // mTrackLabel.DrawMuteSolo(&dc, r, t, false, solo);
+         // mTrackInfo.DrawMuteSolo(&dc, r, t, false, solo);
          Refresh(false);
       }
 }
@@ -3216,12 +3218,12 @@
    }
 
    wxRect buttonRect;
-   mTrackLabel.GetMinimizeRect(r, buttonRect, t->GetMinimized());
+   mTrackInfo.GetMinimizeRect(r, buttonRect, t->GetMinimized());
 
    wxClientDC dc(this);
 
    if (event.Dragging()) {
-      mTrackLabel.DrawMinimize(&dc, r, t, buttonRect.Inside(event.m_x, 
event.m_y), t->GetMinimized());
+      mTrackInfo.DrawMinimize(&dc, r, t, buttonRect.Inside(event.m_x, 
event.m_y), t->GetMinimized());
    }
    else if (event.LeftUp()) {
       if (buttonRect.Inside(event.m_x, event.m_y))
@@ -3235,7 +3237,7 @@
 
       SetCapturedTrack( NULL );
 
-      mTrackLabel.DrawMinimize(&dc, r, t, false, t->GetMinimized());
+      mTrackInfo.DrawMinimize(&dc, r, t, false, t->GetMinimized());
       Refresh(false);
    }
 }
@@ -3245,9 +3247,9 @@
    LWSlider *slider;
 
    if (pan)
-      slider = mTrackLabel.mPans[mCapturedNum];
+      slider = mTrackInfo.mPans[mCapturedNum];
    else
-      slider = mTrackLabel.mGains[mCapturedNum];
+      slider = mTrackInfo.mGains[mCapturedNum];
 
    slider->OnMouseEvent(event);
 
@@ -3344,7 +3346,7 @@
    else if (t->GetKind() == Track::Note)
    {
       wxRect midiRect;
-      mTrackLabel.GetTrackControlsRect(r, midiRect);
+      mTrackInfo.GetTrackControlsRect(r, midiRect);
       if (midiRect.Inside(event.m_x, event.m_y)) {
          ((NoteTrack *) t)->LabelClick(midiRect, event.m_x, event.m_y,
                                        event.RightDown()
@@ -3443,7 +3445,7 @@
                           int index, int x, int y)
 {
    wxRect sliderRect;
-   mTrackLabel.GetGainRect(r, sliderRect);
+   mTrackInfo.GetGainRect(r, sliderRect);
    if (!sliderRect.Inside(x, y)) 
       return false;
 
@@ -3459,7 +3461,7 @@
                          int index, int x, int y)
 {
    wxRect sliderRect;
-   mTrackLabel.GetPanRect(r, sliderRect);
+   mTrackInfo.GetPanRect(r, sliderRect);
    if (!sliderRect.Inside(x, y))
       return false;
 
@@ -3478,7 +3480,7 @@
                               bool solo)
 {
    wxRect buttonRect;
-   mTrackLabel.GetMuteSoloRect(r, buttonRect, solo);
+   mTrackInfo.GetMuteSoloRect(r, buttonRect, solo);
    if (!buttonRect.Inside(x, y)) 
       return false;
 
@@ -3486,14 +3488,14 @@
    SetCapturedTrack( t, solo ? IsSoloing : IsMuting);
    mCapturedRect = r;
 
-   mTrackLabel.DrawMuteSolo(&dc, r, t, true, solo);
+   mTrackInfo.DrawMuteSolo(&dc, r, t, true, solo);
    return true;
 }
 
 bool TrackPanel::MinimizeFunc(Track * t, wxRect r, int x, int y)
 {
    wxRect buttonRect;
-   mTrackLabel.GetMinimizeRect(r, buttonRect, t->GetMinimized());
+   mTrackInfo.GetMinimizeRect(r, buttonRect, t->GetMinimized());
    if (!buttonRect.Inside(x, y)) 
       return false;
 
@@ -3501,14 +3503,14 @@
    SetCapturedTrack( t, IsMinimizing );
    mCapturedRect = r;
 
-   mTrackLabel.DrawMinimize(&dc, r, t, true, t->GetMinimized());
+   mTrackInfo.DrawMinimize(&dc, r, t, true, t->GetMinimized());
    return true;
 }
 
 bool TrackPanel::CloseFunc(Track * t, wxRect r, int x, int y)
 {
    wxRect closeRect;
-   mTrackLabel.GetCloseBoxRect(r, closeRect);
+   mTrackInfo.GetCloseBoxRect(r, closeRect);
 
    if (!closeRect.Inside(x, y))
       return false;
@@ -3517,14 +3519,14 @@
    SetCapturedTrack( t, IsClosing );
    mCapturedRect = r;
 
-   mTrackLabel.DrawCloseBox(&dc, r, true);
+   mTrackInfo.DrawCloseBox(&dc, r, true);
    return true;
 }
 
 bool TrackPanel::PopupFunc(Track * t, wxRect r, int x, int y)
 {
    wxRect titleRect;
-   mTrackLabel.GetTitleBarRect(r, titleRect);
+   mTrackInfo.GetTitleBarRect(r, titleRect);
    if (!titleRect.Inside(x, y)) 
       return false;
 
@@ -3532,7 +3534,7 @@
    SetCapturedTrack( t, IsPopping );
    mCapturedRect = r;
 
-   mTrackLabel.DrawTitleBar(&dc, r, t, true);
+   mTrackInfo.DrawTitleBar(&dc, r, t, true);
    return true;
 }
 
@@ -4075,10 +4077,10 @@
      
       if ((lTrack->getSelectedIndex() != -1) && 
lTrack->OverTextBox(lTrack->GetLabel(lTrack->getSelectedIndex()), event.m_x, 
event.m_y)) {
          mPopupMenuTarget = lTrack;
-         mLabelTrackLabelMenu->Enable(OnCutSelectedTextID, 
lTrack->IsTextSelected());
-         mLabelTrackLabelMenu->Enable(OnCopySelectedTextID, 
lTrack->IsTextSelected());
-         mLabelTrackLabelMenu->Enable(OnPasteSelectedTextID, 
lTrack->IsTextClipSupported());
-         PopupMenu(mLabelTrackLabelMenu, event.m_x + 1, event.m_y + 1);
+         mLabelTrackInfoMenu->Enable(OnCutSelectedTextID, 
lTrack->IsTextSelected());
+         mLabelTrackInfoMenu->Enable(OnCopySelectedTextID, 
lTrack->IsTextSelected());
+         mLabelTrackInfoMenu->Enable(OnPasteSelectedTextID, 
lTrack->IsTextClipSupported());
+         PopupMenu(mLabelTrackInfoMenu, event.m_x + 1, event.m_y + 1);
          // it's an invalid dragging event
          lTrack->SetWrongDragging(true);
       }
@@ -4557,7 +4559,7 @@
 
    // Paint over the part below the tracks
    GetSize(&trackRect.width, &trackRect.height);
-   AColor::Dark(dc, false);
+   AColor::TrackPanelBackground(dc, false);
    dc->DrawRectangle(trackRect);
 
    if (GetFocusedTrack() != NULL && wxWindow::FindFocus() == this) {
@@ -4585,7 +4587,7 @@
    trackRect.height = t->GetHeight();
 
    // Draw label area
-   SetLabelFont(dc);
+   SetTrackInfoFont(dc);
    dc->SetTextForeground(theTheme.Colour( clrTrackPanelText ));
 
    int labelw = GetLabelWidth();
@@ -4617,6 +4619,7 @@
    wxPrintf(wxT("Update Region: %d %d %d %d\n"),
           rbox.x, rbox.y, rbox.width, rbox.height);
 #endif
+
    wxRegionContain contain = region.Contains(0, 0, GetLeftOffset(), height);
    if (contain == wxPartRegion || contain == wxInRegion) {
       r = trackRect;
@@ -4679,7 +4682,6 @@
    wxRect r = rec;
 
    DrawOutsideOfTrack(t, dc, r);
-
    r.x += kLeftInset;
    r.y += kTopInset;
    r.width -= kLeftInset * 2;
@@ -4687,21 +4689,23 @@
 
    mLastDrawnTrackRect = r;
 
-   mTrackLabel.DrawBackground(dc, r, t->GetSelected(), labelw);
+   dc->SetTextForeground(theTheme.Colour( clrTrackPanelText ));
+   mTrackInfo.DrawBackground(dc, r, t->GetSelected(), labelw);
    DrawBordersAroundTrack(t, dc, r, labelw, vrul);
    DrawShadow(t, dc, r);
 
-   r.width = mTrackLabel.GetTitleWidth();
-   mTrackLabel.DrawCloseBox(dc, r, (mMouseCapture==IsClosing));
-   mTrackLabel.DrawTitleBar(dc, r, t, (mMouseCapture==IsPopping));
+   r.width = mTrackInfo.GetTitleWidth();
+   mTrackInfo.DrawCloseBox(dc, r, (mMouseCapture==IsClosing));
+   mTrackInfo.DrawTitleBar(dc, r, t, (mMouseCapture==IsPopping));
 
-   mTrackLabel.DrawMinimize(dc, r, t, (mMouseCapture==IsMinimizing), 
t->GetMinimized());
+   mTrackInfo.DrawMinimize(dc, r, t, (mMouseCapture==IsMinimizing), 
t->GetMinimized());
+   mTrackInfo.DrawBordersWithin( dc, r );
 
    if (t->GetKind() == Track::Wave) {
-      mTrackLabel.DrawMuteSolo(dc, r, t, (mMouseCapture == IsMuting), false);
-      mTrackLabel.DrawMuteSolo(dc, r, t, (mMouseCapture == IsSoloing), true);
+      mTrackInfo.DrawMuteSolo(dc, r, t, (mMouseCapture == IsMuting), false);
+      mTrackInfo.DrawMuteSolo(dc, r, t, (mMouseCapture == IsSoloing), true);
 
-      mTrackLabel.DrawSliders(dc, (WaveTrack *)t, r, index);
+      mTrackInfo.DrawSliders(dc, (WaveTrack *)t, r, index);
    }
 
    r = trackRect;
@@ -4721,7 +4725,7 @@
                       
    } else if (t->GetKind() == Track::Note) {
       wxRect midiRect;
-      mTrackLabel.GetTrackControlsRect(trackRect, midiRect);
+      mTrackInfo.GetTrackControlsRect(trackRect, midiRect);
       ((NoteTrack *) t)->DrawLabelControls(*dc, midiRect);
 
    }
@@ -4730,7 +4734,7 @@
 void TrackPanel::DrawOutsideOfTrack(Track * t, wxDC * dc, const wxRect r)
 {
    // Fill in area outside of the track
-   AColor::Dark(dc, false);
+   AColor::TrackPanelBackground(dc, false);
    wxRect side = r;
    side.width = kLeftInset;
    dc->DrawRectangle(side);
@@ -5192,7 +5196,7 @@
    int tracknum = FindTrackNum(t);
    if(tracknum)
       {
-         LWSlider *slider = mTrackLabel.mPans[tracknum-1];
+         LWSlider *slider = mTrackInfo.mPans[tracknum-1];
          if( slider->ShowDialog() )
          {
             SetTrackPan(t, slider);
@@ -5209,7 +5213,7 @@
    int tracknum = FindTrackNum(t);
    if(tracknum)
       {
-         LWSlider *slider = mTrackLabel.mPans[tracknum-1];
+         LWSlider *slider = mTrackInfo.mPans[tracknum-1];
          slider->Decrease( 1 );
          SetTrackPan(t, slider);
       }
@@ -5224,7 +5228,7 @@
    int tracknum = FindTrackNum(t);
    if(tracknum)
       {
-         LWSlider *slider = mTrackLabel.mPans[tracknum-1];
+         LWSlider *slider = mTrackInfo.mPans[tracknum-1];
          slider->Increase( 1 );
          SetTrackPan(t, slider);
       }
@@ -5254,7 +5258,7 @@
    int tracknum = FindTrackNum(t);
    if(tracknum)
       {
-         LWSlider *slider = mTrackLabel.mGains[tracknum-1];
+         LWSlider *slider = mTrackInfo.mGains[tracknum-1];
          if( slider->ShowDialog() )
          {
             SetTrackGain(t, slider);
@@ -5271,7 +5275,7 @@
    int tracknum = FindTrackNum(t);
    if(tracknum)
       {
-         LWSlider *slider = mTrackLabel.mGains[tracknum-1];
+         LWSlider *slider = mTrackInfo.mGains[tracknum-1];
          slider->Increase( 1 );
          SetTrackGain(t, slider);
       }
@@ -5286,7 +5290,7 @@
    int tracknum = FindTrackNum(t);
    if(tracknum)
       {
-         LWSlider *slider = mTrackLabel.mGains[tracknum-1];
+         LWSlider *slider = mTrackInfo.mGains[tracknum-1];
          slider->Decrease( 1 );
          SetTrackGain(t, slider);
       }
@@ -5374,7 +5378,7 @@
       //We need to find the location of the menu rectangle.
       wxRect r = FindTrackRect(t,true);
       wxRect titleRect;
-      mTrackLabel.GetTitleBarRect(r,titleRect);
+      mTrackInfo.GetTitleBarRect(r,titleRect);
 
       PopupMenu(theMenu, titleRect.x + 1,
                   titleRect.y + titleRect.height + 1);
@@ -5573,8 +5577,8 @@
    dc->DrawLine(r.x, r.y, r.x, r.y + r.height - 1);     // left
    dc->DrawLine(r.x, r.y + r.height - 2, r.x + r.width - 1, r.y + r.height - 
2);        // bottom
    dc->DrawLine(r.x + r.width - 2, r.y, r.x + r.width - 2, r.y + r.height - 
1); // right
-   dc->DrawLine(vrul, r.y, vrul, r.y + r.height - 1);
-   dc->DrawLine(labelw, r.y, labelw, r.y + r.height - 1);       // between 
vruler and track
+//   dc->DrawLine(vrul, r.y, vrul, r.y + r.height - 1); // between vrulr and 
track.
+   dc->DrawLine(labelw, r.y, labelw, r.y + r.height - 1);       // between 
vruler and TrackInfo
 
    if (t->GetLinked()) {
       int h1 = r.y + t->GetHeight() - kTopInset;
@@ -5582,9 +5586,6 @@
       dc->DrawLine(vrul, h1 + kTopInset, r.x + r.width - 1,
                    h1 + kTopInset);
    }
-
-   dc->DrawLine(r.x, r.y + 16, mTrackLabel.GetTitleWidth(), r.y + 16);      // 
title bar
-   dc->DrawLine(r.x + 16, r.y, r.x + 16, r.y + 16);     // close box
 }
 
 void TrackPanel::DrawShadow(Track * /* t */ , wxDC * dc, const wxRect r)
@@ -6283,12 +6284,12 @@
 
 /**********************************************************************
 
-  TrackLabel code is destined to move out of this file.
+  TrackInfo code is destined to move out of this file.
   Code should become a lot cleaner when we have sizers.  
 
 **********************************************************************/
 
-TrackLabel::TrackLabel(wxWindow * pParentIn)
+TrackInfo::TrackInfo(wxWindow * pParentIn)
 {
    //To prevent flicker, we create an initial set of 16 sliders
    //which won't ever be shown.
@@ -6298,7 +6299,7 @@
       MakeMoreSliders();
 }
 
-TrackLabel::~TrackLabel()
+TrackInfo::~TrackInfo()
 {
    unsigned int i;
    for(i=0; i<mGains.Count(); i++)
@@ -6307,7 +6308,7 @@
       delete mPans[i];
 }
 
-void TrackLabel::GetCloseBoxRect(const wxRect r, wxRect & dest) const
+void TrackInfo::GetCloseBoxRect(const wxRect r, wxRect & dest) const
 {
    dest.x = r.x;
    dest.y = r.y;
@@ -6315,7 +6316,7 @@
    dest.height = 16;
 }
 
-void TrackLabel::GetTitleBarRect(const wxRect r, wxRect & dest) const
+void TrackInfo::GetTitleBarRect(const wxRect r, wxRect & dest) const
 {
    dest.x = r.x + 16;
    dest.y = r.y;
@@ -6323,7 +6324,7 @@
    dest.height = 16;
 }
 
-void TrackLabel::GetMuteSoloRect(const wxRect r, wxRect & dest, bool solo) 
const
+void TrackInfo::GetMuteSoloRect(const wxRect r, wxRect & dest, bool solo) const
 {
    dest.x = r.x + 8;
    dest.y = r.y + 50;
@@ -6334,7 +6335,7 @@
       dest.x += 36 + 8;
 }
 
-void TrackLabel::GetGainRect(const wxRect r, wxRect & dest) const
+void TrackInfo::GetGainRect(const wxRect r, wxRect & dest) const
 {
    dest.x = r.x + 7;
    dest.y = r.y + 70;
@@ -6342,7 +6343,7 @@
    dest.height = 25;
 }
 
-void TrackLabel::GetPanRect(const wxRect r, wxRect & dest) const
+void TrackInfo::GetPanRect(const wxRect r, wxRect & dest) const
 {
    dest.x = r.x + 7;
    dest.y = r.y + 100;
@@ -6350,27 +6351,36 @@
    dest.height = 25;
 }
 
-void TrackLabel::GetMinimizeRect(const wxRect r, wxRect &dest, bool minimized) 
const
+void TrackInfo::GetMinimizeRect(const wxRect r, wxRect &dest, bool minimized) 
const
 {
-   dest.x = r.x + 2;
-   dest.width = 92;
+   dest.x = r.x + 1;
+   dest.width = 94;
    dest.y = r.y + r.height - 18;
-   dest.height = 14;
+   dest.height = 15;
 }
 
-void TrackLabel::DrawBackground(wxDC * dc, const wxRect r, bool bSelected,
+void TrackInfo::DrawBordersWithin(wxDC * dc, const wxRect r )
+{
+   dc->SetPen(*wxBLACK_PEN);
+   // These black lines are actually within TrackInfo...
+   dc->DrawLine(r.x, r.y + 16, GetTitleWidth(), r.y + 16);      // title bar
+   dc->DrawLine(r.x + 16, r.y, r.x + 16, r.y + 16);     // close box
+   dc->DrawLine(r.x, r.y + r.height - 19, GetTitleWidth(), r.y + r.height - 
19);  // minimize bar
+}
+
+void TrackInfo::DrawBackground(wxDC * dc, const wxRect r, bool bSelected,
                              const int labelw)
 {
    // fill in label
    wxRect fill = r;
    fill.width = labelw - r.x;
-   AColor::Medium(dc, bSelected);
-   dc->DrawRectangle(fill);
-   fill=wxRect( r.x+1, r.y+17, fill.width - 38, fill.height-20); 
-   AColor::Bevel( *dc, true, fill );
+   AColor::MediumTrackInfo(dc, bSelected);
+   dc->DrawRectangle(fill); 
+   fill=wxRect( r.x+1, r.y+17, fill.width - 38, fill.height-37); 
+   AColor::BevelTrackInfo( *dc, true, fill );
 }
 
-void TrackLabel::GetTrackControlsRect(const wxRect r, wxRect & dest) const
+void TrackInfo::GetTrackControlsRect(const wxRect r, wxRect & dest) const
 {
    wxRect top;
    wxRect bot;
@@ -6384,12 +6394,18 @@
    dest.height = bot.GetTop() - top.GetBottom() - 2;
 }
 
-void TrackLabel::DrawCloseBox(wxDC * dc, const wxRect r, bool down)
+void TrackInfo::DrawCloseBox(wxDC * dc, const wxRect r, bool down)
 {
    const int xSize=7;
    const int offset=5;
 
+#ifdef EXPERIMENTAL_THEMING
+   wxPen pen( theTheme.Colour( clrTrackPanelText ));
+   dc->SetPen( pen );
+#else
    dc->SetPen(*wxBLACK_PEN);
+#endif
+
    // close "x"
    dc->DrawLine(r.x + offset  ,         r.y + offset, r.x + offset+xSize  , 
r.y + offset+xSize);
    dc->DrawLine(r.x + offset+1,         r.y + offset, r.x + offset+xSize+1, 
r.y + offset+xSize);
@@ -6398,10 +6414,10 @@
    wxRect bev;
    GetCloseBoxRect(r, bev);
    bev.Inflate(-1, -1);
-   AColor::Bevel(*dc, !down, bev);
+   AColor::BevelTrackInfo(*dc, !down, bev);
 }
 
-void TrackLabel::DrawTitleBar(wxDC * dc, const wxRect r, Track * t,
+void TrackInfo::DrawTitleBar(wxDC * dc, const wxRect r, Track * t,
                               bool down)
 {
    wxRect bev;
@@ -6409,7 +6425,7 @@
    bev.Inflate(-1, -1);
 
    // Draw title text
-   SetLabelFont(dc);
+   SetTrackInfoFont(dc);
    wxString titleStr = t->GetName();
    int allowableWidth = GetTitleWidth() - 38 - kLeftInset;
    long textWidth, textHeight;
@@ -6422,12 +6438,18 @@
    // characters if they are repeatedly drawn.  This
    // happens when holding down mouse button and moving
    // in and out of the title bar.  So clear it first.
-   AColor::Medium(dc, t->GetSelected());
+   AColor::MediumTrackInfo(dc, t->GetSelected());
    dc->DrawRectangle(bev);
    dc->DrawText(titleStr, r.x + 19, r.y + 2);
 
    // Pop-up triangle
+#ifdef EXPERIMENTAL_THEMING
+   wxPen pen( theTheme.Colour( clrTrackPanelText ));
+   dc->SetPen( pen );
+#else
    dc->SetPen(*wxBLACK_PEN);
+#endif
+
    int xx = r.x + GetTitleWidth() - 16 - kLeftInset;
    int yy = r.y + 5;
    int triWid = 11;
@@ -6438,11 +6460,11 @@
       triWid -= 2;
    }
 
-   AColor::Bevel(*dc, !down, bev);
+   AColor::BevelTrackInfo(*dc, !down, bev);
 }
 
 /// Draw the Mute or the Solo button, depending on the value of solo.
-void TrackLabel::DrawMuteSolo(wxDC * dc, const wxRect r, Track * t,
+void TrackInfo::DrawMuteSolo(wxDC * dc, const wxRect r, Track * t,
                               bool down, bool solo)
 {
    wxRect bev;
@@ -6452,18 +6474,34 @@
    if (bev.y + bev.height >= r.y + r.height - 19)
       return; // don't draw mute and solo buttons, because they don't fit into 
track label
       
-   (solo) ? AColor::Solo(dc, t->GetSolo(), t->GetSelected()) :
-       AColor::Mute(dc, t->GetMute(), t->GetSelected(), t->GetSolo());
+   AColor::MediumTrackInfo( dc, t->GetSelected() );
+   if( solo )
+   {
+      if( t->GetSolo() )
+      {
+         AColor::Solo(dc, t->GetSolo(), t->GetSelected());
+      }
+   }
+   else
+   {
+      if( t->GetMute() )
+      {
+         AColor::Mute(dc, t->GetMute(), t->GetSelected(), t->GetSolo());
+      }
+   }
+   //(solo) ? AColor::Solo(dc, t->GetSolo(), t->GetSelected()) :
+   //    AColor::Mute(dc, t->GetMute(), t->GetSelected(), t->GetSolo());
+   dc->SetPen( *wxTRANSPARENT_PEN );//No border!
    dc->DrawRectangle(bev);
 
    long textWidth, textHeight;
    wxString str = (solo) ? _("Solo") : _("Mute");
 
-   SetLabelFont(dc);
+   SetTrackInfoFont(dc);
    dc->GetTextExtent(str, &textWidth, &textHeight);
    dc->DrawText(str, bev.x + (bev.width - textWidth) / 2, bev.y);
 
-   AColor::Bevel(*dc, (solo?t->GetSolo():t->GetMute()) == down, bev);
+   AColor::BevelTrackInfo(*dc, (solo?t->GetSolo():t->GetMute()) == down, bev);
 
    if (solo && !down) {
       // Update the mute button, which may be grayed out depending on
@@ -6472,15 +6510,14 @@
    }
 }
 
-void TrackLabel::DrawMinimize(wxDC * dc, const wxRect r, Track * t, bool down, 
bool minimized)
+void TrackInfo::DrawMinimize(wxDC * dc, const wxRect r, Track * t, bool down, 
bool minimized)
 {
    wxRect bev;
    GetMinimizeRect(r, bev, minimized);
     
-   AColor::Solo(dc, false, t->GetSelected());
+   AColor::MediumTrackInfo(dc, t->GetSelected());
    dc->DrawRectangle(bev);
     
-   AColor::Dark(dc, t->GetSelected());
 
    // Calculate center
    int x = bev.x + bev.width / 2;
@@ -6506,13 +6543,22 @@
       pts[2].x = x - 4;
       pts[2].y = y + 3;
    }
+
+#ifdef EXPERIMENTAL_THEMING
+   wxPen pen( theTheme.Colour( clrTrackPanelText ));
+   wxBrush brush( theTheme.Colour( clrTrackPanelText ));
+   dc->SetPen( pen );
+   dc->SetBrush( brush );
+#else
+   AColor::Dark(dc, t->GetSelected());
+#endif
    
    dc->DrawPolygon(3, pts);
 
-   AColor::Bevel(*dc, !down, bev);
+   AColor::BevelTrackInfo(*dc, !down, bev);
 }
 
-void TrackLabel::MakeMoreSliders()
+void TrackInfo::MakeMoreSliders()
 {
    wxRect r(0, 0, 1000, 1000);
    wxRect gainRect;
@@ -6536,14 +6582,14 @@
    mPans.Add(slider);
 }
 
-void TrackLabel::EnsureSufficientSliders(int index)
+void TrackInfo::EnsureSufficientSliders(int index)
 {
    while (mGains.Count() < (unsigned int)index+1 ||
           mPans.Count() < (unsigned int)index+1)
       MakeMoreSliders();
 }
 
-void TrackLabel::DrawSliders(wxDC *dc, WaveTrack *t, wxRect r, int index)
+void TrackInfo::DrawSliders(wxDC *dc, WaveTrack *t, wxRect r, int index)
 {
    wxRect gainRect;
    wxRect panRect;

Index: Project.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/Project.cpp,v
retrieving revision 1.315
retrieving revision 1.316
diff -u -d -r1.315 -r1.316
--- Project.cpp 18 Jun 2007 16:10:54 -0000      1.315
+++ Project.cpp 5 Jul 2007 11:55:35 -0000       1.316
@@ -663,6 +663,12 @@
       wxNO_BORDER);
    mMainPanel->SetSizer( new wxBoxSizer(wxVERTICAL) );
    pPage = mMainPanel;
+   // Set the colour here to the track panel background to avoid
+   // flicker when Audacity starts up.
+   // However, that leads to areas next to the horizontal scroller
+   // being painted in background colour and not scroller background
+   // colour, so suppress this for now.
+   //pPage->SetBackgroundColour( theTheme.Colour( clrDark ));
 #endif
 
    wxBoxSizer *bs = new wxBoxSizer( wxVERTICAL );

Index: Theme.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/Theme.cpp,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- Theme.cpp   18 Jun 2007 16:10:54 -0000      1.30
+++ Theme.cpp   5 Jul 2007 11:55:36 -0000       1.31
@@ -66,6 +66,7 @@
 #include "toolbars/ControlToolBar.h"
 #include "ImageManipulation.h"
 #include "Theme.h"
+#include "Experimental.h"
 #include "AllThemeResources.h"  // can remove this later, only needed for 
'XPMS_RETIRED'.
 #include "FileNames.h"
 #include "Prefs.h"
@@ -836,6 +837,7 @@
       }
    }
 
+//   return true; //To not load colours..
    // Now load the colours.
    int x,y;
    mFlow.SetNewGroup(1);

Index: Experimental.h
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/Experimental.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- Experimental.h      5 Jul 2007 00:49:50 -0000       1.10
+++ Experimental.h      5 Jul 2007 11:55:35 -0000       1.11
@@ -30,11 +30,17 @@
 //Uncomment the next #define to enable experimental features.
 //#define EXPERIMENTAL_FEATURES
 
+// In standard builds, enable the next two lines if you want to 
+// see 'experimental theming'.  Work in progress, 05-July-2007.
+//#define EXPERIMENTAL_THEMING
+//#define EXPERIMENTAL_THEME_PREFS
+
 // JKC July-2007: We're temporarily using EXPERIMENTAL_MODULES to 
 // switch on all experimental features.
 #ifdef EXPERIMENTAL_MODULES
 #define EXPERIMENTAL_THEMING
 #define EXPERIMENTAL_THEME_PREFS
+#define EXPERIMENTAL_SMART_RECORD
 #endif
 
 //#define RIGHT_ALIGNED_TEXTBOXES

Index: AllThemeResources.h
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/AllThemeResources.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- AllThemeResources.h 6 Nov 2006 05:36:45 -0000       1.7
+++ AllThemeResources.h 5 Jul 2007 11:55:35 -0000       1.8
@@ -202,6 +202,7 @@
    DEFINE_IMAGE( bmpAudacityLogo, wxImage( 215, 190 ), wxT("AudacityLogo"));
    DEFINE_IMAGE( bmpAudacityLogo48x48, wxImage( 48, 48 ), 
wxT("AudacityLogo48x48"));
 
+#ifdef OLD_COLOURS
    DEFINE_COLOUR( clrBlank,      wxColour(214, 214, 214), wxT("Blank"));
    DEFINE_COLOUR( clrUnselected, wxColour(192, 192, 192), wxT("Unselected"));
    DEFINE_COLOUR( clrSelected,   wxColour(148, 148, 170), wxT("Selected"));
@@ -213,9 +214,23 @@
    DEFINE_COLOUR( clrRms,        wxColour(100, 100, 220), wxT("Rms"));
    DEFINE_COLOUR( clrMuteRms,    wxColour(136, 136, 144), wxT("MuteRms"));
    DEFINE_COLOUR( clrShadow,     wxColour(148, 148, 148), wxT("Shadow"));
+#endif
+   DEFINE_COLOUR( clrBlank,      wxColour( 64,  64,  64), wxT("Blank"));
+   DEFINE_COLOUR( clrUnselected, wxColour( 30,  30,  30), wxT("Unselected"));
+   DEFINE_COLOUR( clrSelected,   wxColour( 93,  65,  93), wxT("Selected"));
+   DEFINE_COLOUR( clrSample,     wxColour( 63,  77, 155), wxT("Sample"));
+   DEFINE_COLOUR( clrSelSample,  wxColour( 50,  50, 200), wxT("SelSample"));
+   DEFINE_COLOUR( clrDragSample, wxColour(  0, 100,   0), wxT("DragSample"));
+                                                                
+   DEFINE_COLOUR( clrMuteSample, wxColour(136, 136, 144), wxT("MuteSample"));
+   DEFINE_COLOUR( clrRms,        wxColour(107, 154, 247), wxT("Rms"));
+   DEFINE_COLOUR( clrMuteRms,    wxColour(136, 136, 144), wxT("MuteRms"));
+   DEFINE_COLOUR( clrShadow,     wxColour(148, 148, 148), wxT("Shadow"));
+
+
 
    DEFINE_COLOUR( clrAboutBoxBackground,  wxColour(255, 255, 255),  
wxT("AboutBackground"));
-   DEFINE_COLOUR( clrTrackPanelText,      wxColour(  0,   0,   0),  
wxT("TrackPanelText"));
+   DEFINE_COLOUR( clrTrackPanelText,      wxColour(153, 153, 153),  
wxT("TrackPanelText"));
    DEFINE_COLOUR( clrLabelTrackText,      wxColour(  0,   0,   0),  
wxT("LabelTrackText"));
 
    
@@ -237,7 +252,7 @@
    DEFINE_COLOUR( clrMeterOutputLightPen,  wxColour(153, 255, 153),   
wxT("MeterOutputLightPen") );
    DEFINE_COLOUR( clrMeterOutputDarkPen,   wxColour(61, 164, 61),     
wxT("MeterOutputDarkPen") );
 
-   DEFINE_COLOUR( clrRulerBackground,      wxColour(148, 148, 170),   
wxT("RulerBackground") );
+   DEFINE_COLOUR( clrRulerBackground,      wxColour( 93,  65,  93),   
wxT("RulerBackground") );
    DEFINE_COLOUR( clrAxisLines,            wxColour(0, 0, 255),       
wxT("AxisLines") );
    DEFINE_COLOUR( clrGraphLines,           wxColour(110, 110, 220),   
wxT("GraphLines") );
    DEFINE_COLOUR( clrResponseLines,        wxColour(0, 255, 0),       
wxT("ResponseLines") );
@@ -273,6 +288,29 @@
    DEFINE_COLOUR( clrLabelSelectedPen,     wxColour(   148,148,170),  
wxT("LabelSelectedPen") );
    DEFINE_COLOUR( clrLabelSurroundPen,     wxColour(     0,  0,  0),  
wxT("LabelSurroundPen") );
 
+#ifdef EXPERIMENTAL_THEMING
+   DEFINE_COLOUR( clrTrackFocus0,          wxColour( 200, 200, 200),  
wxT("TrackFocus0") );
+   DEFINE_COLOUR( clrTrackFocus1,          wxColour( 180, 180, 180),  
wxT("TrackFocus1") );
+   DEFINE_COLOUR( clrTrackFocus2,          wxColour( 160, 160, 160),  
wxT("TrackFocus2") );
+#else
+   DEFINE_COLOUR( clrTrackFocus0,          wxColour( 255, 255, 128),  
wxT("TrackFocus0") );
+   DEFINE_COLOUR( clrTrackFocus1,          wxColour( 215, 215, 138),  
wxT("TrackFocus1") );
+   DEFINE_COLOUR( clrTrackFocus2,          wxColour( 185, 185, 142),  
wxT("TrackFocus2") );
+#endif
+
+   DEFINE_COLOUR( clrSnapGuide,            wxColour( 255, 255,   0),  
wxT("SnapGuide") );
+   DEFINE_COLOUR( clrTrackInfo,            wxColour(  64,  64,  64),  
wxT("TrackInfo") );
+   DEFINE_COLOUR( clrTrackInfoSelected,    wxColour(  93,  65,  93),  
wxT("TrackInfoSelected") );
+
+   DEFINE_COLOUR( clrLight,                wxColour(  60,  60,  60),  
wxT("Light") );
+   DEFINE_COLOUR( clrMedium,               wxColour(  43,  43,  43),  
wxT("Medium") );
+   DEFINE_COLOUR( clrDark,                 wxColour(  20,  20,  20),  
wxT("Dark") );
+
+   DEFINE_COLOUR( clrLightSelected,        wxColour(  93,  65,  93),  
wxT("LightSelected") );
+   DEFINE_COLOUR( clrMediumSelected,       wxColour(  93,  43,  93),  
wxT("MediumSelected") );
+   DEFINE_COLOUR( clrDarkSelected,         wxColour(  93,  20,  93),  
wxT("DarkSelected") );
+
+
 // Indentation settings for Vim and Emacs and unique identifier for Arch, a
 // version control system. Please do not modify past this point.
 //

Index: AColor.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/AColor.cpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- AColor.cpp  18 Jun 2007 16:10:53 -0000      1.23
+++ AColor.cpp  5 Jul 2007 11:55:34 -0000       1.24
@@ -23,6 +23,7 @@
 
 #include "AColor.h"
 #include "Theme.h"
+#include "../Experimental.h"
 #include "AllThemeResources.h"
 
 bool AColor::inited = false;
@@ -58,6 +59,12 @@
 
 wxBrush AColor::tooltipBrush;
 
+// The spare pen and brush possibly help us cut down on the
+// number of pens and brushes we need.
+wxPen AColor::sparePen;
+wxBrush AColor::spareBrush;
+
+
 //
 // Draws a focus rectangle (Taken directly from wxWidgets source)
 //
@@ -115,6 +122,50 @@
    dc.DrawLine(r.x, r.y + r.height, r.x + r.width + 1, r.y + r.height);
 }
 
+wxColour Blend( const wxColour & c1, wxColour & c2 )
+{
+   wxColour c3(
+      (c1.Red() + c2.Red())/2,
+      (c1.Green() + c2.Green())/2,
+      (c1.Blue() + c2.Blue())/2);
+   return c3;
+}
+
+void AColor::BevelTrackInfo(wxDC & dc, bool up, wxRect & r)
+{
+#ifndef EXPERIMENTAL_THEMING
+   Bevel( dc, up, r );
+#else
+   wxColour col;
+   col = Blend( theTheme.Colour( clrTrackInfo ), up ? wxColour( 
255,255,255):wxColour(0,0,0));
+
+   wxPen pen( col );
+   dc.SetPen( pen );
+
+   dc.DrawLine(r.x, r.y, r.x + r.width, r.y);
+   dc.DrawLine(r.x, r.y, r.x, r.y + r.height);
+
+   col = Blend( theTheme.Colour( clrTrackInfo ), up ? wxColour(0,0,0): 
wxColour(255,255,255));
+
+   pen.SetColour( col );
+   dc.SetPen( pen );
+
+   dc.DrawLine(r.x + r.width, r.y, r.x + r.width, r.y + r.height);
+   dc.DrawLine(r.x, r.y + r.height, r.x + r.width + 1, r.y + r.height);
+#endif
+}
+
+void AColor::UseThemeColour( wxDC * dc, int iIndex )
+{
+   if (!inited)
+      Init();
+   wxColour col = theTheme.Colour( iIndex );
+   spareBrush.SetColour( col );
+   dc->SetBrush( spareBrush );
+   sparePen.SetColour( col );
+   dc->SetPen( sparePen );
+}
+
 void AColor::Light(wxDC * dc, bool selected)
 {
    if (!inited)
@@ -133,6 +184,25 @@
    dc->SetPen(mediumPen[index]);
 }
 
+#if 0
+#ifdef EXPERIMENTAL_THEMING
+   UseThemeColour( dc, selected ? clrMediumSelected : clrMedium);
+#endif
+#ifdef EXPERIMENTAL_THEMING
+   UseThemeColour( dc, selected ? clrLightSelected : clrLight);
+#endif
+#endif
+
+void AColor::MediumTrackInfo(wxDC * dc, bool selected)
+{
+#ifdef EXPERIMENTAL_THEMING
+   UseThemeColour( dc, selected ? clrTrackInfoSelected : clrTrackInfo);
+#else
+   Medium( dc, selected );
+#endif
+}
+
+
 void AColor::Dark(wxDC * dc, bool selected)
 {
    if (!inited)
@@ -142,6 +212,16 @@
    dc->SetPen(darkPen[index]);
 }
 
+void AColor::TrackPanelBackground(wxDC * dc, bool selected)
+{
+#ifdef EXPERIMENTAL_THEMING
+   UseThemeColour( dc, selected ? clrDarkSelected : clrDark);
+#else
+   Dark( dc, selected );
+#endif
+}
+
+
 void AColor::CursorColor(wxDC * dc)
 {
    if (!inited)
@@ -263,13 +343,13 @@
    tooltipBrush.SetColour( 
wxSystemSettingsNative::GetColour(wxSYS_COLOUR_INFOBK) );
 
    // A tiny gradient of yellow surrounding the current focused track
-   trackFocusPens[0].SetColour(255, 255, 128);
-   trackFocusPens[1].SetColour(215, 215, 138);
-   trackFocusPens[2].SetColour(185, 185, 142);
+   theTheme.SetPenColour(   trackFocusPens[0],  clrTrackFocus0);
+   theTheme.SetPenColour(   trackFocusPens[1],  clrTrackFocus1);
+   theTheme.SetPenColour(   trackFocusPens[2],  clrTrackFocus2);
 
    // A vertical line indicating that the selection or sliding has
    // been snapped to the nearest boundary.
-   snapGuidePen.SetColour(255, 255, 0);
+   theTheme.SetPenColour(   snapGuidePen,      clrSnapGuide);
 
 #if defined(__WXMSW__) || defined(__WXGTK__)
    // unselected


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Audacity-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/audacity-cvs

Reply via email to