From 3859b10f9a5eaca7df8f85394756375af0b17a1c Mon Sep 17 00:00:00 2001
From: Orcan Ogetbil <oget.fedora@gmail.com>
Date: Thu, 15 Sep 2011 04:13:10 +0000
Subject: New namespaces and change in default colors. See ChangeLog.

---
 muse2/ChangeLog                             |   7 ++
 muse2/muse/app.cpp                          |   6 +-
 muse2/muse/app.h                            |  21 ++++--
 muse2/muse/appearance.cpp                   |   2 +-
 muse2/muse/appearance.h                     |   6 +-
 muse2/muse/arranger/alayout.cpp             |   4 ++
 muse2/muse/arranger/alayout.h               |   5 ++
 muse2/muse/arranger/arranger.cpp            |  12 ++--
 muse2/muse/arranger/arranger.h              |  12 +++-
 muse2/muse/arranger/arrangerview.cpp        |   3 +
 muse2/muse/arranger/arrangerview.h          |   4 +-
 muse2/muse/arranger/pcanvas.cpp             | 108 ++--------------------------
 muse2/muse/arranger/pcanvas.h               |  16 +++--
 muse2/muse/arranger/tlist.cpp               |  28 +++++---
 muse2/muse/arranger/tlist.h                 |   4 ++
 muse2/muse/arranger/trackautomationview.cpp |   4 ++
 muse2/muse/arranger/trackautomationview.h   |   4 ++
 muse2/muse/conf.cpp                         |   4 +-
 muse2/muse/gconfig.cpp                      |  42 +++++------
 muse2/muse/mixer/amixer.cpp                 |   4 +-
 muse2/muse/mixer/amixer.h                   |  13 +++-
 muse2/muse/mixer/astrip.cpp                 |   7 +-
 muse2/muse/mixer/astrip.h                   |   7 +-
 muse2/muse/mixer/mstrip.cpp                 |   8 ++-
 muse2/muse/mixer/mstrip.h                   |   2 +
 muse2/muse/mixer/panknob.cpp                |   4 +-
 muse2/muse/mixer/panknob.h                  |   4 ++
 muse2/muse/mixer/rack.cpp                   |   3 +
 muse2/muse/mixer/rack.h                     |   4 ++
 muse2/muse/mixer/routedialog.cpp            |   4 ++
 muse2/muse/mixer/routedialog.h              |   4 ++
 muse2/muse/mixer/strip.cpp                  |   3 +
 muse2/muse/mixer/strip.h                    |   4 ++
 muse2/muse/widgets/utils.cpp                | 102 ++++++++++++++++++++++++++
 muse2/muse/widgets/utils.h                  |   3 +
 35 files changed, 296 insertions(+), 172 deletions(-)

diff --git a/muse2/ChangeLog b/muse2/ChangeLog
index 51ef9e30..960d558f 100644
--- a/muse2/ChangeLog
+++ b/muse2/ChangeLog
@@ -4,6 +4,13 @@
         - added MDI-like and borland-like user interface (flo93)
         - improved pasting, added dialogs, added "copy in range",
           changed shortcut keys (flo93)
+        - New namespaces MusEArranger and MusEMixer. (Orcan)
+        - Updated default track colors on arranger. Indicate the selected track with a gradient instead of a
+          separate color. (Orcan)
+        - moved colorRect() and get_paste_len() into utils.cpp. (Orcan)
+        - Updated default colors of transport handles, bigtime foreground, waveedit background, track labels.
+          Made them more pastelish, easier on eyes. (Orcan)
+        - Made horizontal alignment of meter and slider in mstrip consistent with in astrip. (Orcan)
 13.09.2011:
         *Added: You can now insert new tracks instead of always at the track list end. (Tim)
           If main menu 'Add track': Inserts before currently selected track, else adds at end.
diff --git a/muse2/muse/app.cpp b/muse2/muse/app.cpp
index 773e550f..3d52e4f2 100644
--- a/muse2/muse/app.cpp
+++ b/muse2/muse/app.cpp
@@ -925,7 +925,7 @@ MusE::MusE(int argc, char** argv) : QMainWindow()
       connect(windowsCascadeAction, SIGNAL(activated()), mdiArea, SLOT(cascadeSubWindows()));
 
 
-      arrangerView = new ArrangerView(this);
+      arrangerView = new MusEArranger::ArrangerView(this);
       arrangerView->shareToolsAndMenu(true);
       connect(arrangerView, SIGNAL(closed()), SLOT(arrangerClosed()));
       toplevels.push_back(arrangerView);
@@ -2943,7 +2943,7 @@ void MusE::bigtimeClosed()
 void MusE::showMixer1(bool on)
       {
       if (on && mixer1 == 0) {
-            mixer1 = new AudioMixerApp(this, &(MusEConfig::config.mixer1));
+            mixer1 = new MusEMixer::AudioMixerApp(this, &(MusEConfig::config.mixer1));
             connect(mixer1, SIGNAL(closed()), SLOT(mixer1Closed()));
             mixer1->resize(MusEConfig::config.mixer1.geometry.size());
             mixer1->move(MusEConfig::config.mixer1.geometry.topLeft());
@@ -2960,7 +2960,7 @@ void MusE::showMixer1(bool on)
 void MusE::showMixer2(bool on)
       {
       if (on && mixer2 == 0) {
-            mixer2 = new AudioMixerApp(this, &(MusEConfig::config.mixer2));
+            mixer2 = new MusEMixer::AudioMixerApp(this, &(MusEConfig::config.mixer2));
             connect(mixer2, SIGNAL(closed()), SLOT(mixer2Closed()));
             mixer2->resize(MusEConfig::config.mixer2.geometry.size());
             mixer2->move(MusEConfig::config.mixer2.geometry.topLeft());
diff --git a/muse2/muse/app.h b/muse2/muse/app.h
index 3bde68e1..50064f96 100644
--- a/muse2/muse/app.h
+++ b/muse2/muse/app.h
@@ -56,23 +56,30 @@ class ShortcutConfig;
 class VisibleTracks;
 }
 
+namespace MusEArranger {
+class Arranger;
+class ArrangerView;
+}
+
 class Part;
 class PartList;
 class Transport;
-class Arranger;
 class Instrument;
 class Track;
 class PrinterConfig;
 class MRConfig;
 class AudioConf;
 class Xml;
+
+namespace MusEMixer {
 class AudioMixerApp;
+}
+
 class ClipListEdit;
 class AudioRecord;
 class MidiFileConfig;
 class MidiFilterConfig;
 class MarkerView;
-class ArrangerView;
 class GlobalSettingsConfig;
 class MidiControllerEditDialog;
 class MidiInputTransformDialog;
@@ -202,14 +209,14 @@ class MusE : public QMainWindow
       MidiInputTransformDialog* midiInputTransform;
       MusEWidget::ShortcutConfig* shortcutConfig;
       Appearance* appearance;
-      AudioMixerApp* mixer1;
-      AudioMixerApp* mixer2;
+      MusEMixer::AudioMixerApp* mixer1;
+      MusEMixer::AudioMixerApp* mixer2;
 
-      Arranger* _arranger;
+      MusEArranger::Arranger* _arranger;
       ToplevelList toplevels;
       ClipListEdit* clipListEdit;
       MarkerView* markerView;
-      ArrangerView* arrangerView;
+      MusEArranger::ArrangerView* arrangerView;
       MidiTransformerDialog* midiTransformerDialog;
       QMenu* openRecent;
       
@@ -377,7 +384,7 @@ class MusE : public QMainWindow
    public:
       MusE(int argc, char** argv);
       ~MusE();
-      Arranger* arranger() { return _arranger; }
+      MusEArranger::Arranger* arranger() { return _arranger; }
       QRect configGeometryMain;
       QProgressDialog *progress;
       bool importMidi(const QString name, bool merge);
diff --git a/muse2/muse/appearance.cpp b/muse2/muse/appearance.cpp
index 835ced81..b49b951b 100644
--- a/muse2/muse/appearance.cpp
+++ b/muse2/muse/appearance.cpp
@@ -116,7 +116,7 @@ class IdListViewItem : public QTreeWidgetItem {
 //   Appearance
 //---------------------------------------------------------
 
-Appearance::Appearance(Arranger* a, QWidget* parent)
+Appearance::Appearance(MusEArranger::Arranger* a, QWidget* parent)
    : QDialog(parent, Qt::Window)
       {
       setupUi(this);
diff --git a/muse2/muse/appearance.h b/muse2/muse/appearance.h
index 5193f679..2020d199 100644
--- a/muse2/muse/appearance.h
+++ b/muse2/muse/appearance.h
@@ -29,7 +29,9 @@ class QColor;
 class QDialog;
 
 class MusE;
+namespace MusEArranger {
 class Arranger;
+}
 namespace MusEConfig {
 class GlobalConfigValues;
 }
@@ -43,7 +45,7 @@ class Appearance : public QDialog, public Ui::AppearanceDialogBase {
     Q_OBJECT
     
  private:
-      Arranger* arr;
+      MusEArranger::Arranger* arr;
       QColor* color;
       MusEConfig::GlobalConfigValues* config;
       QButtonGroup* aPalette;
@@ -88,7 +90,7 @@ class Appearance : public QDialog, public Ui::AppearanceDialogBase {
       void colorNameEditFinished();
 
    public:
-      Appearance(Arranger*, QWidget* parent=0);
+      Appearance(MusEArranger::Arranger*, QWidget* parent=0);
       ~Appearance();
       void resetValues();
       };
diff --git a/muse2/muse/arranger/alayout.cpp b/muse2/muse/arranger/alayout.cpp
index f316dec9..2c2ee719 100644
--- a/muse2/muse/arranger/alayout.cpp
+++ b/muse2/muse/arranger/alayout.cpp
@@ -25,6 +25,8 @@
 
 #include <QScrollBar>
 
+namespace MusEArranger {
+
 //---------------------------------------------------------
 //   wadd
 //---------------------------------------------------------
@@ -213,3 +215,5 @@ void TLLayout::clear()
             delete child;
             }
       }
+
+} // namespace MusEArranger
diff --git a/muse2/muse/arranger/alayout.h b/muse2/muse/arranger/alayout.h
index 88f03e7a..fe41eeb2 100644
--- a/muse2/muse/arranger/alayout.h
+++ b/muse2/muse/arranger/alayout.h
@@ -29,6 +29,8 @@
 class QLayoutItem;
 class QScrollBar;
 
+namespace MusEArranger {
+
 class WidgetStack;
 
 //---------------------------------------------------------
@@ -72,4 +74,7 @@ class TLLayout : public QLayout
       virtual QLayoutItem* takeAt(int); // { return 0;} // ddskrjo, is pure virtual, overridden
       ///virtual int count() const { return ilist.count(); } // ddskrjo, is pure virtual, overridden
       };
+
+} // namespace MusEArranger
+
 #endif
diff --git a/muse2/muse/arranger/arranger.cpp b/muse2/muse/arranger/arranger.cpp
index 09e67151..1900b622 100644
--- a/muse2/muse/arranger/arranger.cpp
+++ b/muse2/muse/arranger/arranger.cpp
@@ -70,6 +70,8 @@
 #include "spinbox.h"
 #include "shortcuts.h"
 
+namespace MusEArranger {
+
 //---------------------------------------------------------
 //   Arranger::setHeaderToolTips
 //---------------------------------------------------------
@@ -595,7 +597,7 @@ void Arranger::songChanged(int type)
               
         if(type & SC_TRACK_REMOVED)
         {
-          AudioStrip* w = (AudioStrip*)(trackInfo->getWidget(2));
+          MusEMixer::AudioStrip* w = (MusEMixer::AudioStrip*)(trackInfo->getWidget(2));
           //AudioStrip* w = (AudioStrip*)(trackInfo->widget(2));
           if(w)
           {
@@ -954,7 +956,7 @@ QSize WidgetStack::minimumSizeHint() const
 
 void Arranger::clear()
       {
-      AudioStrip* w = (AudioStrip*)(trackInfo->getWidget(2));
+      MusEMixer::AudioStrip* w = (MusEMixer::AudioStrip*)(trackInfo->getWidget(2));
       if (w)
             delete w;
       trackInfo->addWidget(0, 2);
@@ -1054,11 +1056,11 @@ void Arranger::updateTrackInfo(int flags)
 void Arranger::switchInfo(int n)
       {
       if (n == 2) {
-            AudioStrip* w = (AudioStrip*)(trackInfo->getWidget(2));
+            MusEMixer::AudioStrip* w = (MusEMixer::AudioStrip*)(trackInfo->getWidget(2));
             if (w == 0 || selected != w->getTrack()) {
                   if (w)
                         delete w;
-                  w = new AudioStrip(trackInfo, (AudioTrack*)selected);
+                  w = new MusEMixer::AudioStrip(trackInfo, (AudioTrack*)selected);
                   //w->setFocusPolicy(Qt::TabFocus);  // p4.0.9
                   connect(song, SIGNAL(songChanged(int)), w, SLOT(songChanged(int)));
                   connect(MusEGlobal::muse, SIGNAL(configChanged()), w, SLOT(configChanged()));
@@ -1138,3 +1140,5 @@ void Arranger::horizontalZoomOut()
   hscroll->setMag(newmag);
 
 }
+
+} // namespace MusEArranger
diff --git a/muse2/muse/arranger/arranger.h b/muse2/muse/arranger/arranger.h
index 1e3943be..f65c69a6 100644
--- a/muse2/muse/arranger/arranger.h
+++ b/muse2/muse/arranger/arranger.h
@@ -39,12 +39,13 @@ class QWheelEvent;
 class QKeyEvent;
 //class QStackedWidget;
 
-class TList;
 class Track;
 class Xml;
-class TLLayout;
 class WidgetStack;
+
+namespace MusEMixer {
 class AudioStrip;
+}
 
 namespace MusEWidget {
 class Header;
@@ -57,7 +58,10 @@ class Splitter;
 class SpinBox;
 }
 
+namespace MusEArranger {
 class ArrangerView;
+class TList;
+class TLLayout;
 
 //---------------------------------------------------------
 //   WidgetStack
@@ -101,7 +105,7 @@ class Arranger : public QWidget {
       QScrollBar* infoScroll;
       //MidiTrackInfoBase* midiTrackInfo;
       MusEWidget::MidiTrackInfo* midiTrackInfo;
-      AudioStrip* waveTrackInfo;
+      MusEMixer::AudioStrip* waveTrackInfo;
       QWidget* noTrackInfo;
       TLLayout* tgrid;
 
@@ -193,5 +197,7 @@ class Arranger : public QWidget {
       ArrangerView* parentWin;
       };
 
+} // namespace MusEArranger
+
 #endif
 
diff --git a/muse2/muse/arranger/arrangerview.cpp b/muse2/muse/arranger/arrangerview.cpp
index 0cc75db9..db1a9778 100644
--- a/muse2/muse/arranger/arrangerview.cpp
+++ b/muse2/muse/arranger/arrangerview.cpp
@@ -68,6 +68,7 @@
 #include "visibletracks.h"
 #include "xml.h"
 
+namespace MusEArranger {
 
 //---------------------------------------------------------
 //   ArrangerView
@@ -724,3 +725,5 @@ void ArrangerView::updateVisibleTracksButtons()
 void ArrangerView::globalCut() { ::globalCut(); }
 void ArrangerView::globalInsert() { ::globalInsert(); }
 void ArrangerView::globalSplit() { ::globalSplit(); }
+
+} // namespace MusEArranger
diff --git a/muse2/muse/arranger/arrangerview.h b/muse2/muse/arranger/arrangerview.h
index bdb450ae..20655840 100644
--- a/muse2/muse/arranger/arrangerview.h
+++ b/muse2/muse/arranger/arrangerview.h
@@ -55,6 +55,7 @@
 
 namespace MusEWidget { class VisibleTracks; }
 
+namespace MusEArranger {
 
 class ArrangerView : public TopWin
 {
@@ -149,8 +150,7 @@ class ArrangerView : public TopWin
 		static void writeConfiguration(int, Xml&);
 };
 
-
-
+}  // namespace MusEArranger
 
 #endif
 
diff --git a/muse2/muse/arranger/pcanvas.cpp b/muse2/muse/arranger/pcanvas.cpp
index 056dcce7..10cd9735 100644
--- a/muse2/muse/arranger/pcanvas.cpp
+++ b/muse2/muse/arranger/pcanvas.cpp
@@ -34,7 +34,7 @@
 #include <QLineEdit>
 #include <QMenu>
 #include <QMessageBox>
-#include <QPainter>
+//#include <QPainter>
 #include <QUrl>
 #include <QPoint>
 
@@ -48,7 +48,7 @@
 #include "globals.h"
 #include "icons.h"
 #include "event.h"
-#include "xml.h"
+//#include "xml.h"
 #include "wave.h"
 #include "audio.h"
 #include "shortcuts.h"
@@ -70,24 +70,7 @@
 
 using std::set;
 
-int get_paste_len();
-
-//---------------------------------------------------------
-//   colorRect
-//   paints a rectangular icon with a given color
-//---------------------------------------------------------
-
-QIcon colorRect(const QColor& color, int width, int height) {
-      QPainter painter;
-      QPixmap image(width, height);
-      painter.begin(&image);
-      painter.setBrush(color);
-      QRect rectangle(0, 0, width, height);
-      painter.drawRect(rectangle);
-      painter.end();
-      QIcon icon(image);
-      return icon;
-}
+namespace MusEArranger {
 
 //---------------------------------------------------------
 //   NPart
@@ -646,7 +629,7 @@ QMenu* PartCanvas::genItemPopup(MusEWidget::CItem* item)
 
       // part color selection
       for (int i = 0; i < NUM_PARTCOLORS; ++i) {
-            QAction *act_color = colorPopup->addAction(colorRect(MusEConfig::config.partColors[i], 80, 80), MusEConfig::config.partColorNames[i]);
+            QAction *act_color = colorPopup->addAction(MusEUtil::colorRect(MusEConfig::config.partColors[i], 80, 80), MusEConfig::config.partColorNames[i]);
             act_color->setData(20+i);
             }
 
@@ -2623,7 +2606,7 @@ void PartCanvas::cmd(int cmd)
             case CMD_PASTE_CLONE_DIALOG:
             {
                   unsigned temp_begin = AL::sigmap.raster1(song->vcpos(),0);
-                  unsigned temp_end = AL::sigmap.raster2(temp_begin + get_paste_len(), 0);
+                  unsigned temp_end = AL::sigmap.raster2(temp_begin + MusEUtil::get_paste_len(), 0);
                   paste_dialog->raster = temp_end - temp_begin;
                   paste_dialog->clone = (cmd == CMD_PASTE_CLONE_DIALOG);
                   
@@ -2805,86 +2788,6 @@ void PartCanvas::copy(PartList* pl)
       }
 
 
-
-int get_paste_len()
-{
-  QClipboard* cb  = QApplication::clipboard();
-  const QMimeData* md = cb->mimeData(QClipboard::Clipboard);
-
-  QString pfx("text/");
-  QString mdpl("x-muse-midipartlist");
-  QString wvpl("x-muse-wavepartlist");  
-  QString mxpl("x-muse-mixedpartlist");
-  QString txt;
-    
-  if(md->hasFormat(pfx + mdpl))
-    txt = cb->text(mdpl, QClipboard::Clipboard);  
-  else if(md->hasFormat(pfx + wvpl))
-    txt = cb->text(wvpl, QClipboard::Clipboard);  
-  else if(md->hasFormat(pfx + mxpl))
-    txt = cb->text(mxpl, QClipboard::Clipboard);  
-  else
-    return 0;
-
-
-  QByteArray ba = txt.toLatin1();
-  const char* ptxt = ba.constData();
-  Xml xml(ptxt);
-  bool end = false;
-
-  unsigned begin_tick=-1; //this uses the greatest possible begin_tick
-  unsigned end_tick=0;
-
-  for (;;)
-  {
-    Xml::Token token = xml.parse();
-    const QString& tag = xml.s1();
-    switch (token)
-    {
-      case Xml::Error:
-      case Xml::End:
-        end = true;
-        break;
-        
-      case Xml::TagStart:
-        if (tag == "part")
-        {                              
-          Part* p = 0;
-          p = readXmlPart(xml, NULL, false, false);
-
-          if (p)
-          {
-            if (p->tick() < begin_tick)
-            begin_tick=p->tick();
-
-            if (p->endTick() > end_tick)
-            end_tick=p->endTick();
-
-            delete p;
-          } 
-        }
-        else
-        xml.unknown("PartCanvas::get_paste_len");
-        break;
-        
-      case Xml::TagEnd:
-        break;
-        
-      default:
-        end = true;
-        break;
-    }
-    if(end)
-      break;
-  }
-  
-  if (begin_tick > end_tick)
-    return 0;
-  else
-    return end_tick - begin_tick;
-}
-
-
 Undo PartCanvas::pasteAt(const QString& pt, Track* track, unsigned int pos, bool clone, bool toTrack, int* finalPosPtr, set<Track*>* affected_tracks)
       {
       Undo operations;
@@ -4046,3 +3949,4 @@ void PartCanvas::endMoveItems(const QPoint& pos, DragType dragtype, int dir)
       redraw();
       }
 
+} // namespace MusEArranger
diff --git a/muse2/muse/arranger/pcanvas.h b/muse2/muse/arranger/pcanvas.h
index 2bce9035..7eec87c6 100644
--- a/muse2/muse/arranger/pcanvas.h
+++ b/muse2/muse/arranger/pcanvas.h
@@ -36,9 +36,17 @@ class QMouseEvent;
 class QKeyEvent;
 class QEvent;
 class QDragEnterEvent;
+class QLineEdit;
+
+class MidiEditor;
+class QMenu;
+class Xml;
+class CtrlVal;
 
 #define beats     4
 
+namespace MusEArranger {
+
 //---------------------------------------------------------
 //   NPart
 //    ''visual'' Part
@@ -68,12 +76,6 @@ struct AutomationObject {
   ControllerVals controllerState;
 };
 
-class QLineEdit;
-class MidiEditor;
-class QMenu;
-class Xml;
-class CtrlVal;
-
 //---------------------------------------------------------
 //   PartCanvas
 //---------------------------------------------------------
@@ -176,5 +178,7 @@ class PartCanvas : public MusEWidget::Canvas {
    void controllerChanged(Track *t);
 };
 
+} // namespace MusEArranger
+
 #endif
 
diff --git a/muse2/muse/arranger/tlist.cpp b/muse2/muse/arranger/tlist.cpp
index 28b12fdc..91c939db 100644
--- a/muse2/muse/arranger/tlist.cpp
+++ b/muse2/muse/arranger/tlist.cpp
@@ -67,6 +67,8 @@
 #include "dssihost.h"
 #endif
 
+namespace MusEArranger {
+
 static const int MIN_TRACKHEIGHT = 20;
 static const int WHEEL_DELTA = 120;
 QColor collist[] = { Qt::red, Qt::yellow, Qt::blue , Qt::black, Qt::white, Qt::green };
@@ -184,6 +186,14 @@ void TList::paint(const QRect& r)
       //    Tracks
       //---------------------------------------------------                         
 
+      QColor mask_edge = QColor(90, 90, 90, 45);
+      QColor mask_center = QColor(240, 240, 240, 175);
+      QLinearGradient mask;
+      mask.setColorAt(0, mask_edge);
+      mask.setColorAt(0.15, mask_center);
+      mask.setColorAt(0.3, mask_center);
+      mask.setColorAt(1, mask_edge);
+
       TrackList* l = song->tracks();
       int idx = 0;
       int yy  = -ypos;
@@ -201,12 +211,7 @@ void TList::paint(const QRect& r)
             // clear one row
             //
             QColor bg;
-            if (track->selected()) {
-                  bg = MusEConfig::config.selectTrackBg;
-                  //p.setPen(palette().active().text());
-                  p.setPen(MusEConfig::config.selectTrackFg);
-                  }
-            else {
+	
                   switch(type) {
                         case Track::MIDI:
                               bg = MusEConfig::config.midiTrackBg;
@@ -233,10 +238,16 @@ void TList::paint(const QRect& r)
                               bg = MusEConfig::config.synthTrackBg;
                               break;
                         }
-                  p.setPen(palette().color(QPalette::Active, QPalette::Text));
-                  }
+
+            p.setPen(palette().color(QPalette::Active, QPalette::Text));
             p.fillRect(x1, yy, w, trackHeight, bg);
 
+	    if (track->selected()) {
+                  mask.setStart(QPointF(0, yy));
+                  mask.setFinalStop(QPointF(0, yy + trackHeight));
+                  p.fillRect(x1, yy, w, trackHeight, mask);
+                  }
+
             int x = 0;
             for (int index = 0; index < header->count(); ++index) {
                   int section = header->logicalIndex(index);
@@ -1789,3 +1800,4 @@ void TList::classesPopupMenu(Track* t, int x, int y)
             }
       }
 
+} // namespace MusEArranger
diff --git a/muse2/muse/arranger/tlist.h b/muse2/muse/arranger/tlist.h
index 970df420..01b13eb3 100644
--- a/muse2/muse/arranger/tlist.h
+++ b/muse2/muse/arranger/tlist.h
@@ -46,6 +46,8 @@ class Header;
 class PopupMenu;
 }
 
+namespace MusEArranger {
+
 enum TrackColumn {
       COL_RECORD = 0,
       COL_MUTE,
@@ -140,5 +142,7 @@ class TList : public QWidget {
       void readStatus(Xml&, const char* name);
       };
 
+} // namespace MusEArranger
+
 #endif
 
diff --git a/muse2/muse/arranger/trackautomationview.cpp b/muse2/muse/arranger/trackautomationview.cpp
index 343d853f..13973a68 100644
--- a/muse2/muse/arranger/trackautomationview.cpp
+++ b/muse2/muse/arranger/trackautomationview.cpp
@@ -28,6 +28,8 @@
 
 #include "track.h"
 
+namespace MusEArranger {
+
 TrackAutomationView::TrackAutomationView(QWidget *parent, Track *t) : QWidget(parent)
 {
   printf("created trackautomationview\n");
@@ -72,3 +74,5 @@ void TrackAutomationView::collectAutomationData()
 //  CtrlListList cll =((AudioTrack*)_t)->controller();
 //  cll.count()
 }
+
+} // namespace MusEArranger
diff --git a/muse2/muse/arranger/trackautomationview.h b/muse2/muse/arranger/trackautomationview.h
index 360ea898..f169e968 100644
--- a/muse2/muse/arranger/trackautomationview.h
+++ b/muse2/muse/arranger/trackautomationview.h
@@ -28,6 +28,8 @@ class QWidget;
 
 #include "track.h"
 
+namespace MusEArranger { 
+
 class TrackAutomationView : public QWidget
 {
     Track *_t;
@@ -39,4 +41,6 @@ public:
     void collectAutomationData();
 };
 
+} // namespace MusEArranger
+
 #endif // TRACKAUTOMATIONVIEW_H
diff --git a/muse2/muse/conf.cpp b/muse2/muse/conf.cpp
index 6ba4d47d..ac6a7de6 100644
--- a/muse2/muse/conf.cpp
+++ b/muse2/muse/conf.cpp
@@ -917,7 +917,7 @@ void readConfiguration(Xml& xml, bool readOnlySequencer)
                         else if (tag == "marker")
                               MarkerView::readConfiguration(xml);
                         else if (tag == "arrangerview")
-                              ArrangerView::readConfiguration(xml);
+                              MusEArranger::ArrangerView::readConfiguration(xml);
                         else if (tag == "arranger") {
                               if (MusEGlobal::muse && MusEGlobal::muse->arranger())
                                     MusEGlobal::muse->arranger()->readStatus(xml);
@@ -1373,7 +1373,7 @@ void MusE::writeGlobalConfiguration(int level, Xml& xml) const
       ClipListEdit::writeConfiguration(level, xml);
       LMaster::writeConfiguration(level, xml);
       MarkerView::writeConfiguration(level, xml);
-      ArrangerView::writeConfiguration(level, xml);
+      MusEArranger::ArrangerView::writeConfiguration(level, xml);
       
       write_function_dialog_config(level, xml);
 
diff --git a/muse2/muse/gconfig.cpp b/muse2/muse/gconfig.cpp
index deed36b3..7d6dcde6 100644
--- a/muse2/muse/gconfig.cpp
+++ b/muse2/muse/gconfig.cpp
@@ -83,10 +83,10 @@ GlobalConfigValues config = {
         QString("Piano"),
         QString("Saxophone")
       },
-      QColor(0, 0, 255),      // transportHandleColor;
-      QColor(255, 0, 0),      // bigTimeForegroundColor;
+      QColor(51, 114, 178),   // transportHandleColor;
+      QColor(219, 65, 65),    // bigTimeForegroundColor;
       QColor(0, 0, 0),        // bigTimeBackgroundColor;
-      QColor(200, 200, 200),  // waveEditBackgroundColor;
+      QColor(200, 192, 171),  // waveEditBackgroundColor;
       {
         QFont(QString("arial"), 10, QFont::Normal),
         QFont(QString("arial"), 8,  QFont::Normal),
@@ -97,27 +97,27 @@ GlobalConfigValues config = {
         QFont(QString("arial"), 8,  QFont::Bold, true)  // Mixer strip labels. Looks and fits better with bold + italic than bold alone, 
                                                         //  at the price of only few more pixels than Normal mode.
         },
-      QColor(84, 97, 114),     // trackBg;
-      QColor(0x80, 0xff, 0x80),     // selected track Bg;
+      QColor(84, 97, 114),          // trackBg;
+      QColor(120, 229, 166),        // selected track Bg;
       QColor(0x00, 0x00, 0x00),     // selected track Fg;
       
-      QColor(0, 160, 255),          // midiTrackLabelBg;   // Med blue
-      QColor(0, 160, 255),          // drumTrackLabelBg;   // Med blue
-      Qt::magenta,                  // waveTrackLabelBg;
-      Qt::green,                    // outputTrackLabelBg;
-      Qt::red,                      // inputTrackLabelBg;
-      Qt::yellow,                   // groupTrackLabelBg;
-      QColor(120, 255, 255),        // auxTrackLabelBg;    // Light blue
-      QColor(255, 130, 0),          // synthTrackLabelBg;  // Med orange
+      QColor(74, 150, 194),         // midiTrackLabelBg;   // Med blue
+      QColor(74, 150, 194),         // drumTrackLabelBg;   // Med blue
+      QColor(213, 128, 202),        // waveTrackLabelBg;   // magenta
+      QColor(84, 185, 58),          // outputTrackLabelBg; // green
+      QColor(199, 75, 64),          // inputTrackLabelBg;  // red
+      QColor(236, 214, 90),         // groupTrackLabelBg;  // yellow
+      QColor(161, 234, 242),        // auxTrackLabelBg;    // Light blue
+      QColor(229, 157, 101),        // synthTrackLabelBg;  // Med orange
       
-      QColor(220, 220, 220),     // midiTrackBg;
-      QColor(220, 220, 220),     // drumTrackBg;
-      QColor(220, 220, 220),     // waveTrackBg;
-      QColor(189, 220, 193),     // outputTrackBg;
-      QColor(189, 220, 193),     // inputTrackBg;
-      QColor(220, 220, 220),     // groupTrackBg;
-      QColor(220, 220, 220),     // auxTrackBg;
-      QColor(220, 220, 220),     // synthTrackBg;
+      QColor(215, 220, 230),     // midiTrackBg;
+      QColor(215, 220, 230),     // drumTrackBg;
+      QColor(220, 209, 217),     // waveTrackBg;
+      QColor(197, 220, 206),     // outputTrackBg;
+      QColor(220, 214, 206),     // inputTrackBg;
+      QColor(220, 216, 202),     // groupTrackBg;
+      QColor(208, 215, 220),     // auxTrackBg;
+      QColor(220, 211, 202),     // synthTrackBg;
       
       QColor(98, 124, 168),      // part canvas bg
       QColor(255, 170, 0),       // ctrlGraphFg;    Medium orange
diff --git a/muse2/muse/mixer/amixer.cpp b/muse2/muse/mixer/amixer.cpp
index e30524ae..18fe926f 100644
--- a/muse2/muse/mixer/amixer.cpp
+++ b/muse2/muse/mixer/amixer.cpp
@@ -51,6 +51,7 @@
 //typedef std::list<Strip*> StripList;
 //static StripList stripList;
 
+namespace MusEMixer {
 
 /* 
 Nov 16, 2010: After making the strips variable width, we need a way to
@@ -596,7 +597,7 @@ void AudioMixerApp::toggleRouteDialog()
 void AudioMixerApp::showRouteDialog(bool on)
       {
       if (on && routingDialog == 0) {
-            routingDialog = new RouteDialog(this);
+            routingDialog = new MusEDialog::RouteDialog(this);
             connect(routingDialog, SIGNAL(closed()), SLOT(routingDialogClosed()));
             }
       if (routingDialog)
@@ -721,3 +722,4 @@ void AudioMixerApp::write(int level, Xml& xml)
       xml.etag(level, "Mixer");
       }
 
+} // namespace MusEMixer
diff --git a/muse2/muse/mixer/amixer.h b/muse2/muse/mixer/amixer.h
index 41f1e5e1..5be12659 100644
--- a/muse2/muse/mixer/amixer.h
+++ b/muse2/muse/mixer/amixer.h
@@ -45,15 +45,20 @@ class Slider;
 class Knob;
 class DoubleLabel;
 class ComboBox;
-class RouteDialog;
-class Strip;
 
 namespace MusEConfig {
 struct MixerConfig;
 }
 
+namespace MusEDialog {
+class RouteDialog;
+}
+
 #define EFX_HEIGHT     16
 
+namespace MusEMixer {
+
+class Strip;
 typedef std::list<Strip*> StripList;
 
 //---------------------------------------------------------
@@ -90,7 +95,7 @@ class AudioMixerApp : public QMainWindow {
       //Strip* master;
       QHBoxLayout* layout;
       QMenu* menuView;
-      RouteDialog* routingDialog;
+      MusEDialog::RouteDialog* routingDialog;
       QAction* routingId;
       int oldAuxsSize;
 
@@ -148,5 +153,7 @@ class AudioMixerApp : public QMainWindow {
       void clear();
       };
 
+} // namespace MusEMixer
+
 #endif
 
diff --git a/muse2/muse/mixer/astrip.cpp b/muse2/muse/mixer/astrip.cpp
index 1aa9ae2b..156017e8 100644
--- a/muse2/muse/mixer/astrip.cpp
+++ b/muse2/muse/mixer/astrip.cpp
@@ -67,6 +67,8 @@
 //#include "popupmenu.h"
 #include "routepopup.h"
 
+namespace MusEMixer {
+
 /*
 //---------------------------------------------------------
 //   minimumSizeHint
@@ -229,7 +231,7 @@ void AudioStrip::songChanged(int val)
             //QLinearGradient gradient(autoType->geometry().topLeft(), autoType->geometry().bottomLeft());
             if(track->automationType() == AUTO_TOUCH || track->automationType() == AUTO_WRITE)
                   {
-                  palette.setColor(QPalette::Button, QColor(Qt::red));
+                  palette.setColor(QPalette::Button, QColor(215, 76, 39)); // red
                   //QColor c(Qt::red);
                   //gradient.setColorAt(0, c);
                   //gradient.setColorAt(1, c.darker());
@@ -238,7 +240,7 @@ void AudioStrip::songChanged(int val)
                   }
             else if(track->automationType() == AUTO_READ)
                   {
-                  palette.setColor(QPalette::Button, QColor(Qt::green));
+                  palette.setColor(QPalette::Button, QColor(100, 172, 49)); // green
                   //QColor c(Qt::green);
                   //gradient.setColorAt(0, c);
                   //gradient.setColorAt(1, c.darker());
@@ -1041,3 +1043,4 @@ void AudioStrip::oRoutePressed()
       pup->exec(QCursor::pos(), track, true);
 }
 
+} // namespace MusEMixer
diff --git a/muse2/muse/mixer/astrip.h b/muse2/muse/mixer/astrip.h
index fc25bb9b..72e88cca 100644
--- a/muse2/muse/mixer/astrip.h
+++ b/muse2/muse/mixer/astrip.h
@@ -43,8 +43,11 @@ class QToolButton;
 //class PopupMenu;
 class QButton;
 class AudioTrack;
-class EffectRack;
 
+namespace MusEMixer {
+
+class EffectRack;
+  
 //---------------------------------------------------------
 //   AudioStrip
 //---------------------------------------------------------
@@ -113,5 +116,7 @@ class AudioStrip : public Strip {
       //virtual QSize sizeHint () const;
       };
 
+} // namespace MusEMixer
+
 #endif
 
diff --git a/muse2/muse/mixer/mstrip.cpp b/muse2/muse/mixer/mstrip.cpp
index d8e09adb..c6832e6b 100644
--- a/muse2/muse/mixer/mstrip.cpp
+++ b/muse2/muse/mixer/mstrip.cpp
@@ -61,6 +61,8 @@
 //#include "popupmenu.h"
 #include "routepopup.h"
 
+namespace MusEMixer {
+
 enum { KNOB_PAN, KNOB_VAR_SEND, KNOB_REV_SEND, KNOB_CHO_SEND };
 
 //---------------------------------------------------------
@@ -218,8 +220,8 @@ MidiStrip::MidiStrip(QWidget* parent, MidiTrack* t)
       
       sliderGrid = new QGridLayout(); 
       sliderGrid->setRowStretch(0, 100);
-      sliderGrid->addWidget(slider, 0, 0, Qt::AlignRight);
-      sliderGrid->addWidget(meter[0], 0, 1, Qt::AlignLeft);
+      sliderGrid->addWidget(slider, 0, 0, Qt::AlignHCenter);
+      sliderGrid->addWidget(meter[0], 0, 1, Qt::AlignHCenter);
       grid->addLayout(sliderGrid, _curGridRow++, 0, 1, 2); 
 
       sl = new MusEWidget::DoubleLabel(0.0, -98.0, 0.0, this);
@@ -1028,4 +1030,4 @@ void MidiStrip::oRoutePressed()
   pup->exec(QCursor::pos(), track, true);
 }
 
-
+} // namespace MusEMixer
diff --git a/muse2/muse/mixer/mstrip.h b/muse2/muse/mixer/mstrip.h
index 2f0a133d..d8e947f9 100644
--- a/muse2/muse/mixer/mstrip.h
+++ b/muse2/muse/mixer/mstrip.h
@@ -41,6 +41,7 @@ class TransparentToolButton;
 
 class MidiTrack;
 
+namespace MusEMixer {
 
 //---------------------------------------------------------
 //   MidiStrip
@@ -94,6 +95,7 @@ class MidiStrip : public Strip {
       MidiStrip(QWidget* parent, MidiTrack*);
       };
 
+} // namespace MusEMixer
 
 #endif
 
diff --git a/muse2/muse/mixer/panknob.cpp b/muse2/muse/mixer/panknob.cpp
index f645ddf7..9a12d58f 100644
--- a/muse2/muse/mixer/panknob.cpp
+++ b/muse2/muse/mixer/panknob.cpp
@@ -26,6 +26,8 @@
 #include "panknob.h"
 #include "track.h"
 
+namespace MusEWidget {
+
 //---------------------------------------------------------
 //   PanKnob
 //---------------------------------------------------------
@@ -49,4 +51,4 @@ void PanKnob::valueChanged(double val)
       song->controllerChange(src);
       }
 
-
+} // namespace MusEWidget
diff --git a/muse2/muse/mixer/panknob.h b/muse2/muse/mixer/panknob.h
index 5fcb2171..7f0d3232 100644
--- a/muse2/muse/mixer/panknob.h
+++ b/muse2/muse/mixer/panknob.h
@@ -28,6 +28,8 @@
 
 class AudioTrack;
 
+namespace MusEWidget {
+
 //---------------------------------------------------------
 //   PanKnob
 //---------------------------------------------------------
@@ -43,5 +45,7 @@ class PanKnob : public Knob {
       PanKnob(QWidget* parent, AudioTrack*);
       };
 
+} // namespace MusEWidget
+
 #endif
 
diff --git a/muse2/muse/mixer/rack.cpp b/muse2/muse/mixer/rack.cpp
index fdd80e60..7daf142d 100644
--- a/muse2/muse/mixer/rack.cpp
+++ b/muse2/muse/mixer/rack.cpp
@@ -46,6 +46,8 @@
 #include "plugin.h"
 #include "filedialog.h"
 
+namespace MusEMixer {
+
 //---------------------------------------------------------
 //   class EffectRackDelegate
 //---------------------------------------------------------
@@ -700,3 +702,4 @@ void EffectRack::initPlugin(Xml xml, int idx)
             }
       }                        
 
+} // namespace MusEMixer
diff --git a/muse2/muse/mixer/rack.h b/muse2/muse/mixer/rack.h
index 65d112e9..2ea053bf 100644
--- a/muse2/muse/mixer/rack.h
+++ b/muse2/muse/mixer/rack.h
@@ -34,6 +34,8 @@ class QMouseEvent;
 class AudioTrack;
 class Xml;
 
+namespace MusEMixer {
+
 //---------------------------------------------------------
 //   EffectRack
 //---------------------------------------------------------
@@ -80,5 +82,7 @@ class EffectRack : public QListWidget {
 
       };
 
+} // namespace MusEMixer
+
 #endif
 
diff --git a/muse2/muse/mixer/routedialog.cpp b/muse2/muse/mixer/routedialog.cpp
index 53b8d48b..a9441343 100644
--- a/muse2/muse/mixer/routedialog.cpp
+++ b/muse2/muse/mixer/routedialog.cpp
@@ -32,6 +32,8 @@
 #include "audio.h"
 #include "driver/jackaudio.h"
 
+namespace MusEDialog {
+
 //---------------------------------------------------------
 //   RouteDialog
 //---------------------------------------------------------
@@ -199,3 +201,5 @@ void RouteDialog::closeEvent(QCloseEvent* e)
       emit closed();
       e->accept();
       }
+
+} // namespace MusEDialog
diff --git a/muse2/muse/mixer/routedialog.h b/muse2/muse/mixer/routedialog.h
index d5326ab3..de5dfbc3 100644
--- a/muse2/muse/mixer/routedialog.h
+++ b/muse2/muse/mixer/routedialog.h
@@ -29,6 +29,8 @@
 class QCloseEvent;
 class QDialog;
 
+namespace MusEDialog {
+
 //---------------------------------------------------------
 //   RouteDialog
 //---------------------------------------------------------
@@ -55,5 +57,7 @@ class RouteDialog : public QDialog, public Ui::RouteDialogBase {
       };
 
 
+} // namespace MusEDialog
+
 #endif
 
diff --git a/muse2/muse/mixer/strip.cpp b/muse2/muse/mixer/strip.cpp
index 750f1623..e9f92e9b 100644
--- a/muse2/muse/mixer/strip.cpp
+++ b/muse2/muse/mixer/strip.cpp
@@ -39,6 +39,8 @@
 #include "meter.h"
 #include "utils.h"
 
+namespace MusEMixer {
+
 //---------------------------------------------------------
 //   setRecordFlag
 //---------------------------------------------------------
@@ -278,3 +280,4 @@ void Strip::setAutomationType(int t)
       song->update(SC_AUTOMATION);
       }
 
+} // namespace MusEMixer
diff --git a/muse2/muse/mixer/strip.h b/muse2/muse/mixer/strip.h
index 602e6e07..ea4d2693 100644
--- a/muse2/muse/mixer/strip.h
+++ b/muse2/muse/mixer/strip.h
@@ -44,6 +44,8 @@ class ComboBox;
 class Meter;
 }
 
+namespace MusEMixer {
+
 static const int STRIP_WIDTH = 65;
 
 //---------------------------------------------------------
@@ -92,5 +94,7 @@ class Strip : public QFrame {
       void setLabelFont();
       };
 
+} // namespace MusEMixer
+
 #endif
 
diff --git a/muse2/muse/widgets/utils.cpp b/muse2/muse/widgets/utils.cpp
index 1ed9001a..c900f3b6 100644
--- a/muse2/muse/widgets/utils.cpp
+++ b/muse2/muse/widgets/utils.cpp
@@ -26,13 +26,20 @@
 #include <sys/time.h>
 //#include <time.h>
 
+#include <QApplication>
 #include <QFrame>
+#include <QClipboard>
 #include <QColor>
 #include <QGradient>
+#include <QIcon>
 #include <QLinearGradient>
+#include <QMimeData>
+#include <QPainter>
 #include <QPointF>
 
+#include "part.h"
 #include "utils.h"
+#include "xml.h"
 
 namespace MusEUtil {
 
@@ -456,4 +463,99 @@ QPainterPath roundedPath(int x, int y, int w, int h, int xrad, int yrad, Corner
   return rounded_rect;
 }
 
+//---------------------------------------------------------
+//   colorRect
+//   paints a rectangular icon with a given color
+//---------------------------------------------------------
+
+QIcon colorRect(const QColor& color, int width, int height) {
+      QPainter painter;
+      QPixmap image(width, height);
+      painter.begin(&image);
+      painter.setBrush(color);
+      QRect rectangle(0, 0, width, height);
+      painter.drawRect(rectangle);
+      painter.end();
+      QIcon icon(image);
+      return icon;
+}
+
+int get_paste_len()
+      {
+      QClipboard* cb  = QApplication::clipboard();
+      const QMimeData* md = cb->mimeData(QClipboard::Clipboard);
+
+      QString pfx("text/");
+      QString mdpl("x-muse-midipartlist");
+      QString wvpl("x-muse-wavepartlist");
+      QString mxpl("x-muse-mixedpartlist");
+      QString txt;
+
+      if(md->hasFormat(pfx + mdpl))
+            txt = cb->text(mdpl, QClipboard::Clipboard);
+      else if(md->hasFormat(pfx + wvpl))
+            txt = cb->text(wvpl, QClipboard::Clipboard);
+      else if(md->hasFormat(pfx + mxpl))
+            txt = cb->text(mxpl, QClipboard::Clipboard);
+      else
+            return 0;
+
+
+      QByteArray ba = txt.toLatin1();
+      const char* ptxt = ba.constData();
+      Xml xml(ptxt);
+      bool end = false;
+
+      unsigned begin_tick=-1; //this uses the greatest possible begin_tick
+      unsigned end_tick=0;
+
+      for (;;)
+            {
+            Xml::Token token = xml.parse();
+            const QString& tag = xml.s1();
+            switch (token)
+                  {
+                  case Xml::Error:
+                  case Xml::End:
+                        end = true;
+                        break;
+
+                  case Xml::TagStart:
+                        if (tag == "part")
+                              {
+                              Part* p = 0;
+                              p = readXmlPart(xml, NULL, false, false);
+
+                              if (p)
+                                    {
+                                    if (p->tick() < begin_tick)
+                                          begin_tick=p->tick();
+
+                                    if (p->endTick() > end_tick)
+                                          end_tick=p->endTick();
+
+                                    delete p;
+                                    }
+                              }
+                        else
+                              xml.unknown("PartCanvas::get_paste_len");
+                        break;
+
+                  case Xml::TagEnd:
+                        break;
+
+                  default:
+                        end = true;
+                        break;
+                  }
+            if(end)
+                  break;
+            }
+
+      if (begin_tick > end_tick)
+            return 0;
+      else
+            return end_tick - begin_tick;
+}
+
 } // namespace MusEUtils
diff --git a/muse2/muse/widgets/utils.h b/muse2/muse/widgets/utils.h
index c6e1ad6b..6e4c8758 100644
--- a/muse2/muse/widgets/utils.h
+++ b/muse2/muse/widgets/utils.h
@@ -52,6 +52,9 @@ extern double curTime();
 extern QPainterPath roundedPath(QRect r, int xrad, int yrad, Corner roundCorner);
 extern QPainterPath roundedPath(int x, int y, int w, int h, int xrad, int yrad, Corner roundCorner);
 
+extern QIcon colorRect(const QColor& color, int width, int height);
+extern int get_paste_len();
+
 } // namespace MusEUtils
 
 #endif
-- 
cgit v1.2.3