summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWerner Schweer <ws.seh.de>2006-12-03 21:35:25 +0000
committerWerner Schweer <ws.seh.de>2006-12-03 21:35:25 +0000
commitb4c69ef0a05e2f217bd76e5bebe61cea41689ba1 (patch)
tree82fff1af5eca92f8396124534a1be0daaa224c87
parent5c403bd6717ccf8e88ac262139b23eff0447aca1 (diff)
updates
-rw-r--r--muse/muse/arranger/canvas.cpp88
-rw-r--r--muse/muse/arranger/tlwidget.cpp4
-rw-r--r--muse/muse/ctrl/definemidictrl.cpp44
-rw-r--r--muse/muse/ctrl/definemidictrl.h47
-rw-r--r--muse/muse/mixer/astrip.cpp1
-rw-r--r--muse/muse/mixer/mstrip.cpp17
-rw-r--r--muse/muse/song.h2
-rw-r--r--muse/muse/songtrack.cpp18
8 files changed, 182 insertions, 39 deletions
diff --git a/muse/muse/arranger/canvas.cpp b/muse/muse/arranger/canvas.cpp
index 4dbd068e..5ea2efed 100644
--- a/muse/muse/arranger/canvas.cpp
+++ b/muse/muse/arranger/canvas.cpp
@@ -928,23 +928,41 @@ void PartCanvas::copyPart(Part* part)
void PartCanvas::dragEnter(QDragEnterEvent* event)
{
+#if 0
+ QPoint p(event->pos() - rCanvasA.topLeft());
+ searchPart(p);
+ if (!track) {
+ event->ignore();
+ return;
+ }
+ int srcIsMidi = -1;
const QMimeData* md = event->mimeData();
- if (MidiPartDrag::canDecode(md)
- || AudioPartDrag::canDecode(md)
- || WavUriDrag::canDecode(md)) {
- Qt::KeyboardModifiers kb = event->keyboardModifiers();
- if (kb == 0 && (Qt::MoveAction & event->possibleActions())) {
- event->setDropAction(Qt::MoveAction);
- event->accept();
- }
- else
- event->acceptProposedAction();
+
+ if (MidiPartDrag::canDecode(md))
+ srcIsMidi = 1;
+ else if (AudioPartDrag::canDecode(md))
+ srcIsMidi = 0;
+ else if (WavUriDrag::canDecode(md))
+ srcIsMidi = 0;
+
+ int dstIsMidi = -1;
+ if (track->type() == Track::MIDI)
+ dstIsMidi = 1;
+ else if (track->type() == Track::WAVE)
+ dstIsMidi = 0;
+
+ if ((srcIsMidi == -1) || (dstIsMidi != srcIsMidi)) {
+ event->ignore();
+ return;
}
- else {
- QStringList formats = md->formats();
- foreach(QString s, formats)
- printf("drag format <%s>\n", s.toLatin1().data());
+ Qt::KeyboardModifiers kb = event->keyboardModifiers();
+ if (kb == 0 && (Qt::MoveAction & event->possibleActions())) {
+ event->setDropAction(Qt::MoveAction);
+ event->accept();
}
+ else
+#endif
+ event->acceptProposedAction();
}
//---------------------------------------------------------
@@ -956,14 +974,9 @@ void PartCanvas::dragMove(QDragMoveEvent* event)
QPoint p(event->pos() - rCanvasA.topLeft());
searchPart(p);
if (!track) {
- if (state != S_NORMAL) {
- state = S_NORMAL;
- widget()->update();
- }
- event->ignore();
+ event->acceptProposedAction();
return;
}
-
Part* srcPart = 0;
QString filename;
@@ -995,8 +1008,12 @@ void PartCanvas::dragMove(QDragMoveEvent* event)
return;
}
- bool dstIsMidi = track->type() == Track::MIDI;
- if (dstIsMidi != srcIsMidi) {
+ int dstIsMidi = -1;
+ if (track->type() == Track::MIDI)
+ dstIsMidi = 1;
+ else if (track->type() == Track::WAVE)
+ dstIsMidi = 0;
+ if ((srcIsMidi == -1) || (dstIsMidi != srcIsMidi)) {
if (state != S_NORMAL) {
state = S_NORMAL;
widget()->update();
@@ -1064,11 +1081,28 @@ void PartCanvas::drop(QDropEvent* event)
AudioPartDrag::decode(md, dstPart);
searchPart(pos);
- if (!track || !dstPart || isMidi != track->isMidiTrack())
+ if (!dstPart)
+ return;
+ PartCanvas* cw = (PartCanvas*)event->source();
+ bool needEndUndo = false;
+ if (!track) {
+ if (isMidi)
+ track = new MidiTrack();
+ else
+ track = new WaveTrack();
+ track->setDefaultName();
+ if (cw)
+ song->insertTrack(track, -1);
+ else {
+ song->startUndo();
+ song->insertTrack(track, -1);
+ needEndUndo = true;
+ }
+ }
+ else if (isMidi != track->isMidiTrack())
return;
dstPart->setTrack(track);
- PartCanvas* cw = (PartCanvas*)event->source();
//
// cw == 0 means that we are dropping to
@@ -1087,7 +1121,7 @@ void PartCanvas::drop(QDropEvent* event)
if (kb == 0 && (Qt::MoveAction & event->possibleActions()))
da = Qt::MoveAction;
- if ((da == Qt::LinkAction) && (event->source() == this)) {
+ if ((da == Qt::LinkAction) && (cw == this)) {
delete dstPart->events();
dstPart->clone(srcPart->events());
event->setDropAction(Qt::LinkAction);
@@ -1097,10 +1131,12 @@ void PartCanvas::drop(QDropEvent* event)
else
event->setDropAction(Qt::CopyAction);
event->accept();
- if (cw)
+ if (cw || needEndUndo)
song->addPart(dstPart);
else
song->cmdAddPart(dstPart);
+ if (needEndUndo)
+ song->endUndo(0);
widget()->update();
}
diff --git a/muse/muse/arranger/tlwidget.cpp b/muse/muse/arranger/tlwidget.cpp
index ec6cb9e3..6608a2c2 100644
--- a/muse/muse/arranger/tlwidget.cpp
+++ b/muse/muse/arranger/tlwidget.cpp
@@ -165,12 +165,12 @@ void TLWidget::mousePressEvent(QMouseEvent* ev)
if (_track->type() == Track::MIDI) {
MidiTrack* t = new MidiTrack();
t->clone((MidiTrack*)_track);
- song->insertTrack(t, idx);
+ song->cmdInsertTrack(t, idx);
}
else {
WaveTrack* t = new WaveTrack();
t->clone((WaveTrack*)_track);
- song->insertTrack(t, idx);
+ song->cmdInsertTrack(t, idx);
}
}
break;
diff --git a/muse/muse/ctrl/definemidictrl.cpp b/muse/muse/ctrl/definemidictrl.cpp
new file mode 100644
index 00000000..3b46f2d5
--- /dev/null
+++ b/muse/muse/ctrl/definemidictrl.cpp
@@ -0,0 +1,44 @@
+//=============================================================================
+// MusE
+// Linux Music Editor
+// $Id:$
+//
+// Copyright (C) 2002-2006 by Werner Schweer and others
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 2.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+//=============================================================================
+
+#include "definemidictrl.h"
+#include "miditrack.h"
+
+//---------------------------------------------------------
+// DefineMidiCtrlDialog
+//---------------------------------------------------------
+
+DefineMidiCtrl::DefineMidiCtrl(MidiTrack* t, QWidget* parent)
+ : QDialog(parent)
+ {
+ setupUi(this);
+ track = t;
+ }
+
+//---------------------------------------------------------
+// done
+// val == 1 -> OK
+//---------------------------------------------------------
+
+void DefineMidiCtrl::done(int val)
+ {
+ QDialog::done(val);
+ }
+
diff --git a/muse/muse/ctrl/definemidictrl.h b/muse/muse/ctrl/definemidictrl.h
new file mode 100644
index 00000000..c498c81c
--- /dev/null
+++ b/muse/muse/ctrl/definemidictrl.h
@@ -0,0 +1,47 @@
+//=============================================================================
+// MusE
+// Linux Music Editor
+// $Id:$
+//
+// Copyright (C) 2002-2006 by Werner Schweer and others
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 2.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+//=============================================================================
+
+#ifndef __DEFINEMIDICTRL_H__
+#define __DEFINEMIDICTRL_H__
+
+#include "ui_definemidictrl.h"
+
+class MidiTrack;
+
+//---------------------------------------------------------
+// DefineMidiCtrl
+//---------------------------------------------------------
+
+class DefineMidiCtrl : public QDialog, public Ui::DefineMidiCtrlBase {
+ Q_OBJECT
+
+ MidiTrack* track;
+
+ private slots:
+ virtual void done(int);
+
+ public:
+ DefineMidiCtrl(MidiTrack* t, QWidget* parent = 0);
+ };
+
+#endif
+
+
+
diff --git a/muse/muse/mixer/astrip.cpp b/muse/muse/mixer/astrip.cpp
index dc75b6e7..32ab4a3e 100644
--- a/muse/muse/mixer/astrip.cpp
+++ b/muse/muse/mixer/astrip.cpp
@@ -106,6 +106,7 @@ AudioStrip::AudioStrip(Mixer* m, AudioTrack* t, bool align)
sl->setSuffix(tr("dB"));
sl->setFrame(true);
sl->setValue(vol);
+ sl->setFixedHeight(entrySize.height());
connect(slider, SIGNAL(valueChanged(double,int)), SLOT(volumeChanged(double)));
connect(sl, SIGNAL(valueChanged(double,int)), SLOT(volumeChanged(double)));
diff --git a/muse/muse/mixer/mstrip.cpp b/muse/muse/mixer/mstrip.cpp
index 7b67498f..829877e1 100644
--- a/muse/muse/mixer/mstrip.cpp
+++ b/muse/muse/mixer/mstrip.cpp
@@ -171,11 +171,12 @@ void MidiStrip::addKnob(int ctrl, int idx, const QString& tt, const QString& lab
knob = new Awl::Knob(this);
knob->setRange(0.0, 127.0);
}
+ knob->setFixedSize(buttonSize.width(), entrySize.height() * 2);
knob->setId(ctrl);
dl->setId(ctrl);
+ dl->setFrame(true);
controller[idx].knob = knob;
- knob->setFixedSize(buttonSize.width(), entrySize.height() * 2);
knob->setToolTip(tt);
knob->setEnabled(enabled);
@@ -234,6 +235,7 @@ MidiStrip::MidiStrip(Mixer* m, MidiTrack* t, bool align)
sl = new Awl::MidiVolEntry(this);
sl->setId(CTRL_VOLUME);
sl->setFont(config.fonts[1]);
+ sl->setFixedHeight(entrySize.height());
connect(slider, SIGNAL(valueChanged(double,int)), SLOT(ctrlChanged(double, int)));
connect(slider, SIGNAL(sliderPressed(int)), SLOT(sliderPressed(int)));
@@ -541,10 +543,11 @@ MidiOutPortStrip::MidiOutPortStrip(Mixer* m, MidiOutPort* t, bool align)
//---------------------------------------------------
MidiRack* rack = new MidiRack(this, t);
- rack->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
- rack->setFixedSize(STRIP_WIDTH, rack->sizeHint().height()+2);
+ rack->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+ rack->setFixedHeight(rack->sizeHint().height()+2);
layout->addWidget(rack);
+
if (_align)
layout->addSpacing(STRIP_WIDTH/2);
@@ -564,6 +567,7 @@ MidiOutPortStrip::MidiOutPortStrip(Mixer* m, MidiOutPort* t, bool align)
sl->setId(CTRL_MASTER_VOLUME);
sl->setMax(128 * 128 - 1);
sl->setFont(config.fonts[1]);
+ sl->setFixedHeight(entrySize.height());
controllerChanged(CTRL_MASTER_VOLUME);
@@ -846,8 +850,8 @@ MidiInPortStrip::MidiInPortStrip(Mixer* m, MidiInPort* t, bool align)
//---------------------------------------------------
MidiRack* rack = new MidiRack(this, t);
- rack->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
- rack->setFixedSize(STRIP_WIDTH, rack->sizeHint().height()+2);
+ rack->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+ rack->setFixedHeight(rack->sizeHint().height()+2);
layout->addWidget(rack);
//---------------------------------------------------
@@ -1063,7 +1067,8 @@ MidiSyntiStrip::MidiSyntiStrip(Mixer* m, MidiSynti* t, bool align)
sl = new Awl::MidiVolEntry(this);
sl->setId(CTRL_MASTER_VOLUME);
sl->setFont(config.fonts[1]);
- sl->setFixedWidth(STRIP_WIDTH-2);
+// sl->setFixedWidth(STRIP_WIDTH-2);
+ sl->setFixedHeight(entrySize.height());
connect(slider, SIGNAL(valueChanged(double,int)), SLOT(ctrlChanged(double, int)));
connect(slider, SIGNAL(sliderPressed(int)), SLOT(sliderPressed(int)));
diff --git a/muse/muse/song.h b/muse/muse/song.h
index 895ff3ee..ac2c3c60 100644
--- a/muse/muse/song.h
+++ b/muse/muse/song.h
@@ -326,7 +326,9 @@ class Song : public QObject {
void swapTracks(int i1, int i2);
void moveTrack(Track*, Track*);
+ void cmdInsertTrack(Track*, int idx);
void insertTrack(Track*, int idx);
+
void insertTrack0(Track*, int idx);
void insertTrack1(Track*, int idx);
void insertTrack2(Track*);
diff --git a/muse/muse/songtrack.cpp b/muse/muse/songtrack.cpp
index bc910222..ff54d3af 100644
--- a/muse/muse/songtrack.cpp
+++ b/muse/muse/songtrack.cpp
@@ -191,11 +191,23 @@ Track* Song::addTrack(QAction* action)
return 0;
}
track->setDefaultName();
- insertTrack(track, -1);
+ cmdInsertTrack(track, -1);
return track;
}
//---------------------------------------------------------
+// cmdInsertTrack
+//---------------------------------------------------------
+
+void Song::cmdInsertTrack(Track* track, int idx)
+ {
+ startUndo();
+ insertTrack(track, idx);
+ endUndo(SC_TRACK_INSERTED | SC_ROUTE);
+ selectTrack(track);
+ }
+
+//---------------------------------------------------------
// insertTrack
//---------------------------------------------------------
@@ -322,17 +334,13 @@ void Song::insertTrack(Track* track, int idx)
}
insertTrack1(track, idx);
- startUndo();
undoOp(UndoOp::AddTrack, idx, track);
AudioMsg msg;
msg.id = SEQM_ADD_TRACK;
msg.track = track;
msg.ival = idx;
audio->sendMsg(&msg);
- endUndo(SC_TRACK_INSERTED | SC_ROUTE);
-
emit trackAdded(track, idx);
- selectTrack(track);
}
//---------------------------------------------------------