~ubuntu-branches/ubuntu/wily/muse/wily-proposed

« back to all changes in this revision

Viewing changes to muse/arranger/arranger.cpp

  • Committer: Package Import Robot
  • Author(s): Alessio Treglia
  • Date: 2011-12-03 17:12:54 UTC
  • mfrom: (1.1.8)
  • Revision ID: package-import@ubuntu.com-20111203171254-28b1j4lpb46r5jtl
Tags: 2.0~rc1-1
* New upstream RC release.
* Refresh patches, remove those patches not needed anymore.

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
//  Linux Music Editor
4
4
//    $Id: arranger.cpp,v 1.33.2.21 2009/11/17 22:08:22 terminator356 Exp $
5
5
//  (C) Copyright 1999-2004 Werner Schweer (ws@seh.de)
 
6
//
 
7
//  This program is free software; you can redistribute it and/or
 
8
//  modify it under the terms of the GNU General Public License
 
9
//  as published by the Free Software Foundation; version 2 of
 
10
//  the License, or (at your option) any later version.
 
11
//
 
12
//  This program is distributed in the hope that it will be useful,
 
13
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
14
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
15
//  GNU General Public License for more details.
 
16
//
 
17
//  You should have received a copy of the GNU General Public License
 
18
//  along with this program; if not, write to the Free Software
 
19
//  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
20
//
6
21
//=========================================================
7
22
 
8
23
#include "config.h"
23
38
#include <QWheelEvent>
24
39
#include <QPainter>
25
40
//#include <QStackedWidget>
 
41
#include "arrangerview.h"
26
42
 
27
43
#include "arranger.h"
28
44
#include "song.h"
54
70
#include "spinbox.h"
55
71
#include "shortcuts.h"
56
72
 
 
73
namespace MusEGui {
 
74
 
57
75
//---------------------------------------------------------
58
76
//   Arranger::setHeaderToolTips
59
77
//---------------------------------------------------------
69
87
      header->setToolTip(COL_OPORT,      tr("Midi output port or synth midi port"));
70
88
      header->setToolTip(COL_TIMELOCK,   tr("Time Lock"));
71
89
      header->setToolTip(COL_AUTOMATION, tr("Automation parameter selection"));
 
90
      header->setToolTip(COL_CLEF,       tr("Notation clef"));
72
91
      }
73
92
 
74
93
 
87
106
      header->setWhatsThis(COL_OCHANNEL, tr("Midi/drum track: Output channel number.\nAudio track: Channels.\nMid/right-click to change."));
88
107
      header->setWhatsThis(COL_OPORT,    tr("Midi/drum track: Output port.\nSynth track: Assigned midi port.\nLeft-click to change.\nRight-click to show GUI."));
89
108
      header->setWhatsThis(COL_TIMELOCK, tr("Time lock"));
 
109
      header->setToolTip(COL_CLEF,       tr("Notation clef. Select this tracks notation clef."));
90
110
      }
91
111
 
92
112
//---------------------------------------------------------
94
114
//    is the central widget in app
95
115
//---------------------------------------------------------
96
116
 
97
 
Arranger::Arranger(QMainWindow* parent, const char* name)
 
117
Arranger::Arranger(ArrangerView* parent, const char* name)
98
118
   : QWidget(parent)
99
119
      {
100
120
      setObjectName(name);
105
125
      ///program  = CTRL_VAL_UNKNOWN;
106
126
      ///pan      = -65;
107
127
      ///volume   = -1;
108
 
      setMinimumSize(600, 50);
109
128
      showTrackinfoFlag = true;
110
129
      
111
130
      cursVal = MAXINT;
112
131
      
 
132
      parentWin=parent;
 
133
      
113
134
      //setFocusPolicy(Qt::StrongFocus);
114
135
      
115
136
      //---------------------------------------------------
131
152
      toolbar->addWidget(cursorPos);
132
153
 
133
154
      const char* rastval[] = {
134
 
            QT_TRANSLATE_NOOP("@default", "Off"), QT_TRANSLATE_NOOP("@default", "Bar"), "1/2", "1/4", "1/8", "1/16"
 
155
            QT_TRANSLATE_NOOP("MusEGui::Arranger", "Off"), QT_TRANSLATE_NOOP("MusEGui::Arranger", "Bar"), "1/2", "1/4", "1/8", "1/16"
135
156
            };
136
157
      label = new QLabel(tr("Snap"));
137
158
      label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
142
163
            raster->insertItem(i, tr(rastval[i]));
143
164
      raster->setCurrentIndex(1);
144
165
      // Set the audio record part snapping. Set to 0 (bar), the same as this combo box intial raster.
145
 
      song->setArrangerRaster(0);
 
166
      MusEGlobal::song->setArrangerRaster(0);
146
167
      toolbar->addWidget(raster);
147
168
      connect(raster, SIGNAL(activated(int)), SLOT(_setRaster(int)));
148
169
      ///raster->setFocusPolicy(Qt::NoFocus);
158
179
      // by overflows in tick computations
159
180
      //
160
181
      lenEntry = new SpinBox(1, 10000, 1);
161
 
      lenEntry->setValue(song->len());
 
182
      lenEntry->setValue(MusEGlobal::song->len());
162
183
      lenEntry->setToolTip(tr("song length - bars"));
163
184
      lenEntry->setWhatsThis(tr("song length - bars"));
164
185
      toolbar->addWidget(lenEntry);
183
204
      toolbar->addWidget(label);
184
205
      
185
206
      globalPitchSpinBox = new SpinBox(-127, 127, 1);
186
 
      globalPitchSpinBox->setValue(song->globalPitchShift());
 
207
      globalPitchSpinBox->setValue(MusEGlobal::song->globalPitchShift());
187
208
      globalPitchSpinBox->setToolTip(tr("midi pitch"));
188
209
      globalPitchSpinBox->setWhatsThis(tr("global midi pitch shift"));
189
210
      toolbar->addWidget(globalPitchSpinBox);
196
217
      
197
218
      globalTempoSpinBox = new SpinBox(50, 200, 1, toolbar);
198
219
      globalTempoSpinBox->setSuffix(QString("%"));
199
 
      globalTempoSpinBox->setValue(tempomap.globalTempo());
 
220
      globalTempoSpinBox->setValue(MusEGlobal::tempomap.globalTempo());
200
221
      globalTempoSpinBox->setToolTip(tr("midi tempo"));
201
222
      globalTempoSpinBox->setWhatsThis(tr("midi tempo"));
202
223
      toolbar->addWidget(globalTempoSpinBox);
220
241
      QVBoxLayout* box  = new QVBoxLayout(this);
221
242
      box->setContentsMargins(0, 0, 0, 0);
222
243
      box->setSpacing(0);
223
 
      box->addWidget(hLine(this), Qt::AlignTop);
224
 
      //QFrame* hline = hLine(this);
 
244
      box->addWidget(MusECore::hLine(this), Qt::AlignTop);
 
245
      //QFrame* hline = MusECore::hLine(this);
225
246
      //hline->setLineWidth(0);
226
247
      //box->addWidget(hline, Qt::AlignTop);
227
248
 
290
311
      header->setColumnLabel(tr("Ch"), COL_OCHANNEL, 30);
291
312
      header->setColumnLabel(tr("T"), COL_TIMELOCK, fm1.width('T')+fw);
292
313
      header->setColumnLabel(tr("Automation"), COL_AUTOMATION, 75);
 
314
      header->setColumnLabel(tr("Clef"), COL_CLEF, 75);
293
315
      header->setResizeMode(COL_RECORD, QHeaderView::Fixed);
294
316
      header->setResizeMode(COL_MUTE, QHeaderView::Fixed);
295
317
      header->setResizeMode(COL_SOLO, QHeaderView::Fixed);
299
321
      header->setResizeMode(COL_OCHANNEL, QHeaderView::Fixed);
300
322
      header->setResizeMode(COL_TIMELOCK, QHeaderView::Fixed);
301
323
      header->setResizeMode(COL_AUTOMATION, QHeaderView::Interactive);
 
324
      header->setResizeMode(COL_CLEF, QHeaderView::Interactive);
302
325
 
303
326
      setHeaderToolTips();
304
327
      setHeaderWhatsThis();
309
332
      genTrackInfo(tracklist);
310
333
      
311
334
      ///connect(list, SIGNAL(selectionChanged()), SLOT(trackSelectionChanged()));
312
 
      connect(list, SIGNAL(selectionChanged(Track*)), SLOT(trackSelectionChanged()));
313
 
      connect(list, SIGNAL(selectionChanged(Track*)), midiTrackInfo, SLOT(setTrack(Track*)));
 
335
      connect(list, SIGNAL(selectionChanged(MusECore::Track*)), SLOT(trackSelectionChanged()));
 
336
      connect(list, SIGNAL(selectionChanged(MusECore::Track*)), midiTrackInfo, SLOT(setTrack(MusECore::Track*)));
314
337
      connect(header, SIGNAL(sectionResized(int,int,int)), list, SLOT(redraw()));
315
338
      connect(header, SIGNAL(sectionMoved(int,int,int)), list, SLOT(redraw()));
316
339
      connect(header, SIGNAL(sectionMoved(int,int,int)), this, SLOT(headerMoved()));
334
357
      tgrid->wadd(1, infoScroll);
335
358
      tgrid->wadd(2, header);
336
359
      tgrid->wadd(3, list);
337
 
      tgrid->wadd(4, hLine(tracklist));
 
360
      tgrid->wadd(4, MusECore::hLine(tracklist));
338
361
      tgrid->wadd(5, ib);
339
362
 
340
363
      //---------------------------------------------------
342
365
      //---------------------------------------------------
343
366
 
344
367
      int offset = AL::sigmap.ticksMeasure(0);
345
 
      hscroll = new ScrollScale(-1000, -10, xscale, song->len(), Qt::Horizontal, editor, -offset);
 
368
      hscroll = new ScrollScale(-1000, -10, xscale, MusEGlobal::song->len(), Qt::Horizontal, editor, -offset);
346
369
      hscroll->setFocusPolicy(Qt::NoFocus);
347
370
      ib->setFixedHeight(hscroll->sizeHint().height());
348
371
 
373
396
      time = new MTScale(&_raster, editor, xscale);
374
397
      time->setOrigin(-offset, 0);
375
398
      canvas = new PartCanvas(&_raster, editor, xscale, yscale);
376
 
      canvas->setBg(config.partCanvasBg);
 
399
      canvas->setBg(MusEGlobal::config.partCanvasBg);
377
400
      canvas->setCanvasTools(arrangerTools);
378
401
      canvas->setOrigin(-offset, 0);
379
402
      canvas->setFocus();
380
 
      //parent->setFocusProxy(canvas);   // Tim.
 
403
      setFocusProxy(canvas);   // once removed by Tim (r735), added by flo again
381
404
 
382
405
      connect(canvas, SIGNAL(setUsedTool(int)), this, SIGNAL(setUsedTool(int)));
383
 
      connect(canvas, SIGNAL(trackChanged(Track*)), list, SLOT(selectTrack(Track*)));
 
406
      connect(canvas, SIGNAL(trackChanged(MusECore::Track*)), list, SLOT(selectTrack(MusECore::Track*)));
384
407
      connect(list, SIGNAL(keyPressExt(QKeyEvent*)), canvas, SLOT(redirKeypress(QKeyEvent*)));
385
408
      connect(canvas, SIGNAL(selectTrackAbove()), list, SLOT(selectTrackAbove()));
386
409
      connect(canvas, SIGNAL(selectTrackBelow()), list, SLOT(selectTrackBelow()));
 
410
      connect(canvas, SIGNAL(horizontalZoomIn()), SLOT(horizontalZoomIn()));
 
411
      connect(canvas, SIGNAL(horizontalZoomOut()), SLOT(horizontalZoomOut()));
387
412
 
388
413
      connect(this, SIGNAL(redirectWheelEvent(QWheelEvent*)), canvas, SLOT(redirectedWheelEvent(QWheelEvent*)));
389
414
      connect(list, SIGNAL(redirectWheelEvent(QWheelEvent*)), canvas, SLOT(redirectedWheelEvent(QWheelEvent*)));
390
415
      
391
416
      //egrid->addMultiCellWidget(time,           0, 0, 0, 1);
392
 
      //egrid->addMultiCellWidget(hLine(editor),  1, 1, 0, 1);
 
417
      //egrid->addMultiCellWidget(MusECore::hLine(editor),  1, 1, 0, 1);
393
418
      egrid->addWidget(time, 0, 0, 1, 2);
394
 
      egrid->addWidget(hLine(editor), 1, 0, 1, 2);
 
419
      egrid->addWidget(MusECore::hLine(editor), 1, 0, 1, 2);
395
420
 
396
421
      egrid->addWidget(canvas,  2, 0);
397
422
      egrid->addWidget(vscroll, 2, 1);
410
435
      connect(time,    SIGNAL(timeChanged(unsigned)),   SLOT(setTime(unsigned)));
411
436
 
412
437
      connect(canvas, SIGNAL(tracklistChanged()), list, SLOT(tracklistChanged()));
413
 
      connect(canvas, SIGNAL(dclickPart(Track*)), SIGNAL(editPart(Track*)));
414
 
      connect(canvas, SIGNAL(startEditor(PartList*,int)),   SIGNAL(startEditor(PartList*, int)));
 
438
      connect(canvas, SIGNAL(dclickPart(MusECore::Track*)), SIGNAL(editPart(MusECore::Track*)));
 
439
      connect(canvas, SIGNAL(startEditor(MusECore::PartList*,int)),   SIGNAL(startEditor(MusECore::PartList*, int)));
415
440
 
416
 
      connect(song,   SIGNAL(songChanged(int)), SLOT(songChanged(int)));
417
 
      //connect(song,   SIGNAL(mTypeChanged(MType)), SLOT(setMode((int)MType)));    // p4.0.7 Tim.
 
441
      connect(MusEGlobal::song,   SIGNAL(songChanged(int)), SLOT(songChanged(int)));
 
442
      //connect(MusEGlobal::song,   SIGNAL(mTypeChanged(MType)), SLOT(setMode((int)MType)));    // p4.0.7 Tim.
418
443
      connect(canvas, SIGNAL(followEvent(int)), hscroll, SLOT(setOffset(int)));
419
444
      connect(canvas, SIGNAL(selectionChanged()), SIGNAL(selectionChanged()));
420
445
      connect(canvas, SIGNAL(dropSongFile(const QString&)), SIGNAL(dropSongFile(const QString&)));
421
446
      connect(canvas, SIGNAL(dropMidiFile(const QString&)), SIGNAL(dropMidiFile(const QString&)));
422
447
 
423
448
      connect(canvas, SIGNAL(toolChanged(int)), SIGNAL(toolChanged(int)));
424
 
//      connect(song, SIGNAL(posChanged(int, unsigned, bool)), SLOT(seek()));
 
449
      connect(MusEGlobal::song,   SIGNAL(controllerChanged(MusECore::Track*)), SLOT(controllerChanged(MusECore::Track*)));
 
450
//      connect(MusEGlobal::song, SIGNAL(posChanged(int, unsigned, bool)), SLOT(seek()));
425
451
 
426
452
      // Removed p3.3.43 
427
453
      // Song::addMarker() already emits a 'markerChanged'.
447
473
 
448
474
//void Arranger::updateHScrollRange()
449
475
//{
450
 
//      int s = 0, e = song->len();
 
476
//      int s = 0, e = MusEGlobal::song->len();
451
477
      // Show one more measure.
452
478
//      e += AL::sigmap.ticksMeasure(e);  
453
479
      // Show another quarter measure due to imprecise drawing at canvas end point.
498
524
//   dclickPart
499
525
//---------------------------------------------------------
500
526
 
501
 
void Arranger::dclickPart(Track* t)
 
527
void Arranger::dclickPart(MusECore::Track* t)
502
528
      {
503
529
      emit editPart(t);
504
530
      }
511
537
      {
512
538
      //printf("Arranger::configChanged\n");
513
539
      
514
 
      if (config.canvasBgPixmap.isEmpty()) {
515
 
            canvas->setBg(config.partCanvasBg);
 
540
      if (MusEGlobal::config.canvasBgPixmap.isEmpty()) {
 
541
            canvas->setBg(MusEGlobal::config.partCanvasBg);
516
542
            canvas->setBg(QPixmap());
517
543
            //printf("Arranger::configChanged - no bitmap!\n");
518
544
      }
519
545
      else {
520
546
        
521
 
            //printf("Arranger::configChanged - bitmap %s!\n", config.canvasBgPixmap.ascii());
522
 
            canvas->setBg(QPixmap(config.canvasBgPixmap));
 
547
            //printf("Arranger::configChanged - bitmap %s!\n", MusEGlobal::config.canvasBgPixmap.ascii());
 
548
            canvas->setBg(QPixmap(MusEGlobal::config.canvasBgPixmap));
523
549
      }
524
 
      ///midiTrackInfo->setFont(config.fonts[2]);
 
550
      ///midiTrackInfo->setFont(MusEGlobal::config.fonts[2]);
525
551
      //updateTrackInfo(type);
526
552
      }
527
553
 
532
558
void Arranger::songlenChanged(int n)
533
559
      {
534
560
      int newLen = AL::sigmap.bar2tick(n, 0, 0);
535
 
      song->setLen(newLen);
 
561
      MusEGlobal::song->setLen(newLen);
536
562
      }
537
563
//---------------------------------------------------------
538
564
//   songChanged
543
569
      // Is it simply a midi controller value adjustment? Forget it.
544
570
      if(type != SC_MIDI_CONTROLLER)
545
571
      {
546
 
        unsigned endTick = song->len();
547
 
        int offset  = AL::sigmap.ticksMeasure(endTick);
548
 
        hscroll->setRange(-offset, endTick + offset);  //DEBUG
549
 
        canvas->setOrigin(-offset, 0);
550
 
        time->setOrigin(-offset, 0);
551
 
  
552
 
        int bar, beat;
553
 
        unsigned tick;
554
 
        AL::sigmap.tickValues(endTick, &bar, &beat, &tick);
555
 
        if (tick || beat)
556
 
              ++bar;
557
 
        lenEntry->blockSignals(true);
558
 
        lenEntry->setValue(bar);
559
 
        lenEntry->blockSignals(false);
560
 
  
561
 
        if(type & SC_SONG_TYPE)    // p4.0.7 Tim.
562
 
          setMode(song->mtype());
 
572
        // TEST p4.0.36 Try these, may need more/less. 
 
573
        if(type & ( SC_TRACK_INSERTED | SC_TRACK_REMOVED | SC_TRACK_MODIFIED | 
 
574
           SC_PART_INSERTED | SC_PART_REMOVED | SC_PART_MODIFIED))  
 
575
        {
 
576
          unsigned endTick = MusEGlobal::song->len();
 
577
          int offset  = AL::sigmap.ticksMeasure(endTick);
 
578
          hscroll->setRange(-offset, endTick + offset);  //DEBUG
 
579
          canvas->setOrigin(-offset, 0);
 
580
          time->setOrigin(-offset, 0);
 
581
    
 
582
          int bar, beat;
 
583
          unsigned tick;
 
584
          AL::sigmap.tickValues(endTick, &bar, &beat, &tick);
 
585
          if (tick || beat)
 
586
                ++bar;
 
587
          lenEntry->blockSignals(true);
 
588
          lenEntry->setValue(bar);
 
589
          lenEntry->blockSignals(false);
 
590
        }
 
591
        
 
592
        if(type & SC_SONG_TYPE)    
 
593
          setMode(MusEGlobal::song->mtype());
563
594
          
564
 
        trackSelectionChanged();
565
 
        canvas->partsChanged();
566
 
        typeBox->setCurrentIndex(int(song->mtype()));
 
595
        if(type & SC_SELECTION)       // TEST p4.0.36 Try this alone, may need more.
 
596
          trackSelectionChanged();
 
597
        
 
598
        // Keep this light, partsChanged is a heavy move!       TEST p4.0.36 Try these, may need more.
 
599
        if(type & (SC_TRACK_INSERTED | SC_TRACK_REMOVED | SC_TRACK_MODIFIED | 
 
600
                   SC_PART_INSERTED | SC_PART_REMOVED | SC_PART_MODIFIED | 
 
601
                   SC_SIG | SC_TEMPO)) // Maybe sig. Requires tempo.
 
602
          canvas->partsChanged();
 
603
        
 
604
        //typeBox->setCurrentIndex(int(MusEGlobal::song->mtype()));  // REMOVE Tim.  Redundant.
 
605
        
567
606
        if (type & SC_SIG)
568
607
              time->redraw();
569
608
        if (type & SC_TEMPO)
570
 
              setGlobalTempo(tempomap.globalTempo());
 
609
              setGlobalTempo(MusEGlobal::tempomap.globalTempo());
571
610
              
572
611
        if(type & SC_TRACK_REMOVED)
573
612
        {
575
614
          //AudioStrip* w = (AudioStrip*)(trackInfo->widget(2));
576
615
          if(w)
577
616
          {
578
 
            Track* t = w->getTrack();
 
617
            MusECore::Track* t = w->getTrack();
579
618
            if(t)
580
619
            {
581
 
              TrackList* tl = song->tracks();
582
 
              iTrack it = tl->find(t);
 
620
              MusECore::TrackList* tl = MusEGlobal::song->tracks();
 
621
              MusECore::iTrack it = tl->find(t);
583
622
              if(it == tl->end())
584
623
              {
585
624
                delete w;
590
629
            }   
591
630
          } 
592
631
        }
 
632
        
 
633
        // TEST p4.0.36 Try this
 
634
        if(type & ( //SC_TRACK_INSERTED | SC_TRACK_REMOVED | SC_TRACK_MODIFIED | 
 
635
           SC_PART_INSERTED | SC_PART_REMOVED | SC_PART_MODIFIED | 
 
636
           SC_EVENT_INSERTED | SC_EVENT_REMOVED | SC_EVENT_MODIFIED)) //|
 
637
           //SC_SIG | SC_TEMPO))  // Maybe sig. and tempo. No, moved above.
 
638
        canvas->redraw();
 
639
        
593
640
      }
594
641
            
595
642
      updateTrackInfo(type);
601
648
 
602
649
void Arranger::trackSelectionChanged()
603
650
      {
604
 
      TrackList* tracks = song->tracks();
605
 
      Track* track = 0;
606
 
      for (iTrack t = tracks->begin(); t != tracks->end(); ++t) {
 
651
      MusECore::TrackList* tracks = MusEGlobal::song->tracks();
 
652
      MusECore::Track* track = 0;
 
653
      for (MusECore::iTrack t = tracks->begin(); t != tracks->end(); ++t) {
607
654
            if ((*t)->selected()) {
608
655
                  track = *t;
609
656
                  break;
621
668
 
622
669
void Arranger::modeChange(int mode)
623
670
      {
624
 
      song->setMType(MType(mode));
 
671
      MusEGlobal::song->setMType(MType(mode));
625
672
      updateTrackInfo(-1);
626
673
      }
627
674
 
641
688
//   writeStatus
642
689
//---------------------------------------------------------
643
690
 
644
 
void Arranger::writeStatus(int level, Xml& xml)
 
691
void Arranger::writeStatus(int level, MusECore::Xml& xml)
645
692
      {
646
693
      xml.tag(level++, "arranger");
647
694
      xml.intTag(level, "info", ib->isChecked());
658
705
//   readStatus
659
706
//---------------------------------------------------------
660
707
 
661
 
void Arranger::readStatus(Xml& xml)
 
708
void Arranger::readStatus(MusECore::Xml& xml)
662
709
      {
663
710
      for (;;) {
664
 
            Xml::Token token(xml.parse());
 
711
            MusECore::Xml::Token token(xml.parse());
665
712
            const QString& tag(xml.s1());
666
713
            switch (token) {
667
 
                  case Xml::Error:
668
 
                  case Xml::End:
 
714
                  case MusECore::Xml::Error:
 
715
                  case MusECore::Xml::End:
669
716
                        return;
670
 
                  case Xml::TagStart:
 
717
                  case MusECore::Xml::TagStart:
671
718
                        if (tag == "info")
672
719
                              showTrackinfoFlag = xml.parseInt();
673
720
                        else if (tag == split->objectName())
685
732
                        else
686
733
                              xml.unknown("Arranger");
687
734
                        break;
688
 
                  case Xml::TagEnd:
 
735
                  case MusECore::Xml::TagEnd:
689
736
                        if (tag == "arranger") {
690
737
                              ib->setChecked(showTrackinfoFlag);
691
738
                              return;
707
754
            };
708
755
      _raster = rasterTable[index];
709
756
      // Set the audio record part snapping.
710
 
      song->setArrangerRaster(_raster);
 
757
      MusEGlobal::song->setArrangerRaster(_raster);
711
758
      canvas->redraw();
712
759
      }
713
760
 
739
786
            case CMD_COPY_PART:
740
787
                  ncmd = PartCanvas::CMD_COPY_PART;
741
788
                  break;
 
789
            case CMD_COPY_PART_IN_RANGE:
 
790
                  ncmd = PartCanvas::CMD_COPY_PART_IN_RANGE;
 
791
                  break;
742
792
            case CMD_PASTE_PART:
743
793
                  ncmd = PartCanvas::CMD_PASTE_PART;
744
794
                  break;
745
795
            case CMD_PASTE_CLONE_PART:
746
796
                  ncmd = PartCanvas::CMD_PASTE_CLONE_PART;
747
797
                  break;
748
 
            case CMD_PASTE_PART_TO_TRACK:
749
 
                  ncmd = PartCanvas::CMD_PASTE_PART_TO_TRACK;
750
 
                  break;
751
 
            case CMD_PASTE_CLONE_PART_TO_TRACK:
752
 
                  ncmd = PartCanvas::CMD_PASTE_CLONE_PART_TO_TRACK;
753
 
                  break;
754
 
            case CMD_INSERT_PART:
755
 
                  ncmd = PartCanvas::CMD_INSERT_PART;
 
798
            case CMD_PASTE_DIALOG:
 
799
                  ncmd = PartCanvas::CMD_PASTE_DIALOG;
 
800
                  break;
 
801
            case CMD_PASTE_CLONE_DIALOG:
 
802
                  ncmd = PartCanvas::CMD_PASTE_CLONE_DIALOG;
756
803
                  break;
757
804
            case CMD_INSERT_EMPTYMEAS:
758
805
                  ncmd = PartCanvas::CMD_INSERT_EMPTYMEAS;
769
816
 
770
817
void Arranger::globalPitchChanged(int val)
771
818
      {
772
 
      song->setGlobalPitchShift(val);
 
819
      MusEGlobal::song->setGlobalPitchShift(val);
773
820
      }
774
821
 
775
822
//---------------------------------------------------------
778
825
 
779
826
void Arranger::globalTempoChanged(int val)
780
827
      {
781
 
      audio->msgSetGlobalTempo(val);
782
 
      song->tempoChanged();
 
828
      MusEGlobal::audio->msgSetGlobalTempo(val);
 
829
      MusEGlobal::song->tempoChanged();
783
830
      }
784
831
 
785
832
//---------------------------------------------------------
943
990
      emit redirectWheelEvent(ev);
944
991
      }
945
992
 
946
 
void Arranger::controllerChanged(Track *t)
 
993
void Arranger::controllerChanged(MusECore::Track *t)
947
994
{
948
995
      canvas->controllerChanged(t);
949
996
}
1034
1081
            if (w == 0 || selected != w->getTrack()) {
1035
1082
                  if (w)
1036
1083
                        delete w;
1037
 
                  w = new AudioStrip(trackInfo, (AudioTrack*)selected);
 
1084
                  w = new AudioStrip(trackInfo, (MusECore::AudioTrack*)selected);
1038
1085
                  //w->setFocusPolicy(Qt::TabFocus);  // p4.0.9
1039
 
                  connect(song, SIGNAL(songChanged(int)), w, SLOT(songChanged(int)));
1040
 
                  connect(muse, SIGNAL(configChanged()), w, SLOT(configChanged()));
 
1086
                  connect(MusEGlobal::song, SIGNAL(songChanged(int)), w, SLOT(songChanged(int)));
 
1087
                  connect(MusEGlobal::muse, SIGNAL(configChanged()), w, SLOT(configChanged()));
1041
1088
                  w->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
1042
1089
                  trackInfo->addWidget(w, 2);
1043
1090
                  w->show();
1078
1125
        key+= Qt::CTRL;
1079
1126
 
1080
1127
  if (key == shortcuts[SHRT_ZOOM_IN].key) {
1081
 
        int mag = hscroll->mag();
1082
 
        int zoomlvl = ScrollScale::getQuickZoomLevel(mag);
1083
 
        if (zoomlvl < 23)
1084
 
              zoomlvl++;
1085
 
 
1086
 
        int newmag = ScrollScale::convertQuickZoomLevelToMag(zoomlvl);
1087
 
 
1088
 
        hscroll->setMag(newmag);
 
1128
        horizontalZoomIn();
1089
1129
        return;
1090
1130
        }
1091
1131
  else if (key == shortcuts[SHRT_ZOOM_OUT].key) {
1092
 
        int mag = hscroll->mag();
1093
 
        int zoomlvl = ScrollScale::getQuickZoomLevel(mag);
1094
 
        if (zoomlvl > 1)
1095
 
              zoomlvl--;
1096
 
 
1097
 
        int newmag = ScrollScale::convertQuickZoomLevelToMag(zoomlvl);
1098
 
 
1099
 
        hscroll->setMag(newmag);
 
1132
        horizontalZoomOut();
1100
1133
        return;
1101
1134
        }
1102
1135
 
1103
1136
  QWidget::keyPressEvent(event);
1104
1137
}
 
1138
 
 
1139
void Arranger::horizontalZoomIn()
 
1140
{
 
1141
  int mag = hscroll->mag();
 
1142
  int zoomlvl = ScrollScale::getQuickZoomLevel(mag);
 
1143
  if (zoomlvl < 23)
 
1144
        zoomlvl++;
 
1145
 
 
1146
  int newmag = ScrollScale::convertQuickZoomLevelToMag(zoomlvl);
 
1147
 
 
1148
  hscroll->setMag(newmag);
 
1149
 
 
1150
}
 
1151
 
 
1152
void Arranger::horizontalZoomOut()
 
1153
{
 
1154
  int mag = hscroll->mag();
 
1155
  int zoomlvl = ScrollScale::getQuickZoomLevel(mag);
 
1156
  if (zoomlvl > 1)
 
1157
        zoomlvl--;
 
1158
 
 
1159
  int newmag = ScrollScale::convertQuickZoomLevelToMag(zoomlvl);
 
1160
 
 
1161
  hscroll->setMag(newmag);
 
1162
 
 
1163
}
 
1164
 
 
1165
} // namespace MusEGui