~ubuntu-branches/ubuntu/quantal/muse/quantal

« back to all changes in this revision

Viewing changes to muse/transpose.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Alessio Treglia
  • Date: 2011-08-12 11:16:41 UTC
  • mto: (1.1.9) (10.1.6 sid)
  • mto: This revision was merged to the branch mainline in revision 26.
  • Revision ID: james.westby@ubuntu.com-20110812111641-72iatqb9jomjejko
ImportĀ upstreamĀ versionĀ 2.0~beta2

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
 
2
2
#include <stdio.h>
3
 
#include <qcombobox.h>
4
 
#include <qspinbox.h>
5
 
#include <qbuttongroup.h>
6
 
#include <qradiobutton.h>
 
3
 
 
4
#include <QDialog>
 
5
 
7
6
#include "transpose.h"
8
7
#include "track.h"
9
8
#include "song.h"
14
13
//   Transpose
15
14
//---------------------------------------------------------
16
15
 
17
 
Transpose::Transpose(QWidget* parent, const char* name)
18
 
   : TransposeDialogBase(parent, name)
 
16
Transpose::Transpose(QWidget* parent)
 
17
   : QDialog(parent)
19
18
      {
 
19
      setupUi(this);
 
20
      setAttribute(Qt::WA_DeleteOnClose);
 
21
      buttonGroup1 = new QButtonGroup(this);
 
22
      buttonGroup1->addButton(time_all);
 
23
      buttonGroup1->addButton(time_selected);
 
24
      buttonGroup2 = new QButtonGroup(this);
 
25
      buttonGroup2->addButton(parts_all);
 
26
      buttonGroup2->addButton(parts_selected);
 
27
 
20
28
      if (song->lpos() != song->rpos()) {
21
29
            time_selected->setChecked(true);
22
30
            }
23
31
      else {
24
32
//            time_all->setChecked(true);
25
 
            ButtonGroup1->setEnabled(false);
 
33
            ButtonBox1->setEnabled(false);
26
34
            }
27
35
//      parts_all->setSelected(true);
28
36
      }
47
55
            right = song->len();
48
56
            }
49
57
 
 
58
      std::vector< EventList* > doneList;
 
59
      typedef std::vector< EventList* >::iterator iDoneList;
 
60
  
50
61
      song->startUndo();
51
62
      for (iTrack t = tracks->begin(); t != tracks->end(); ++t) {
52
63
//         if (((*t)->type() == Track::MIDI || (*t)->type() == Track::DRUM)
58
69
            for (iPart p = pl->begin(); p != pl->end(); ++p) {
59
70
                  MidiPart *mp = (MidiPart *) p->second;
60
71
                  EventList* el = mp->events();
 
72
                  
 
73
                  // Check if the event list has already been done. Skip repeated clones.
 
74
                  iDoneList idl;
 
75
                  for(idl = doneList.begin(); idl != doneList.end(); ++idl)
 
76
                    if(*idl == el)
 
77
                      break;
 
78
                  if(idl != doneList.end())
 
79
                    break;
 
80
                  doneList.push_back(el);
 
81
                  
61
82
                  for (iEvent i = el->begin(); i != el->end(); ++i) {
62
83
                        Event oe = i->second;
63
84
                        int tick = oe.tick();
67
88
                              continue;
68
89
                        Event ne = oe.clone();
69
90
                        ne.setA(oe.dataA() + dv );
70
 
                        audio->msgChangeEvent(oe, ne, mp, false);
 
91
                        // Indicate no undo, and do not do port controller values and clone parts. 
 
92
                        //audio->msgChangeEvent(oe, ne, mp, false);
 
93
                        audio->msgChangeEvent(oe, ne, mp, false, false, false);
71
94
                        }
72
95
                  }
73
96
            }
74
97
      song->endUndo(SC_EVENT_MODIFIED);
75
 
      close(true);
 
98
      close();
76
99
      }
77
100