From 2c71a89579e38cd9ff527c33b9ada07fc471b7fd Mon Sep 17 00:00:00 2001 From: Werner Schweer Date: Wed, 15 Nov 2006 15:56:11 +0000 Subject: list edit updates --- muse/all.h | 2 +- muse/muse/ctrl.cpp | 10 ++ muse/muse/ctrl.h | 1 + muse/muse/liste/ctrllistedit.cpp | 360 ++++++++++++++++++++++++++++++++++++++- muse/muse/liste/ctrllistedit.h | 55 +++++- muse/muse/liste/ctrllistedit.ui | 198 ++++++++++++++++++--- muse/muse/liste/listedit.cpp | 20 ++- muse/muse/liste/listedit.h | 7 +- muse/muse/song.h | 1 - muse/muse/track.cpp | 10 ++ muse/muse/track.h | 1 + muse/muse/undo.cpp | 11 -- muse/muse/undo.h | 6 - 13 files changed, 618 insertions(+), 64 deletions(-) diff --git a/muse/all.h b/muse/all.h index c074560c..f93135c4 100644 --- a/muse/all.h +++ b/muse/all.h @@ -115,7 +115,7 @@ #include #include #include +#include #include - #endif diff --git a/muse/muse/ctrl.cpp b/muse/muse/ctrl.cpp index 2e40f297..c2198d77 100644 --- a/muse/muse/ctrl.cpp +++ b/muse/muse/ctrl.cpp @@ -427,3 +427,13 @@ void Ctrl::setRange(int _min, int _max) max.i = _max; } +//--------------------------------------------------------- +// setRange +//--------------------------------------------------------- + +void Ctrl::setRange(CVal mi, CVal ma) + { + min = mi; + max = ma; + } + diff --git a/muse/muse/ctrl.h b/muse/muse/ctrl.h index 3a45bc97..6426f5e8 100644 --- a/muse/muse/ctrl.h +++ b/muse/muse/ctrl.h @@ -197,6 +197,7 @@ class Ctrl : public CTRL { bool touched() const { return _touched; } void setRange(double min, double max); void setRange(int min, int max); + void setRange(CVal, CVal); CVal minVal() const { return min; } CVal maxVal() const { return max; } void read(QDomNode node, bool midi); diff --git a/muse/muse/liste/ctrllistedit.cpp b/muse/muse/liste/ctrllistedit.cpp index 8fcc34fe..472e02f4 100644 --- a/muse/muse/liste/ctrllistedit.cpp +++ b/muse/muse/liste/ctrllistedit.cpp @@ -20,14 +20,20 @@ #include "ctrllistedit.h" #include "ctrl.h" +#include "track.h" +#include "song.h" +#include "al/pos.h" +#include "awl/posedit.h" //--------------------------------------------------------- // CtrlListEditor //--------------------------------------------------------- -CtrlListEditor::CtrlListEditor(QWidget* parent) +CtrlListEditor::CtrlListEditor(ListEdit* e, QWidget* parent) : ListWidget(parent) { + listEdit = e; + updateListDisabled = false; QWidget* cew = new QWidget; le.setupUi(cew); QVBoxLayout* layout = new QVBoxLayout; @@ -39,6 +45,43 @@ CtrlListEditor::CtrlListEditor(QWidget* parent) le.minValue->setSingleStep(1.0); le.maxValue->setSingleStep(1.0); le.defaultValue->setSingleStep(1.0); + + le.ctrlList->setColumnWidth(TICK_COL, 60); + le.ctrlList->setColumnWidth(TIME_COL, 120); + MidiTimeDelegate* midiTimeDelegate = new MidiTimeDelegate(this); + le.ctrlList->setItemDelegate(midiTimeDelegate); + + track = 0; + connect(le.ctrlList, SIGNAL(itemActivated(QTreeWidgetItem*, int)), + SLOT(itemDoubleClicked(QTreeWidgetItem*,int))); + connect(le.ctrlList, SIGNAL(itemChanged(QTreeWidgetItem*, int)), + SLOT(itemChanged(QTreeWidgetItem*, int))); + connect(le.ctrlList, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), + SLOT(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*))); + connect(le.insertButton, SIGNAL(clicked()), SLOT(insertClicked())); + connect(le.deleteButton, SIGNAL(clicked()), SLOT(deleteClicked())); + connect(le.controllerName, SIGNAL(textEdited(const QString&)), + SLOT(nameEdited(const QString&))); + connect(le.minValue, SIGNAL(valueChanged(double)), SLOT(minValChanged(double))); + connect(le.maxValue, SIGNAL(valueChanged(double)), SLOT(maxValChanged(double))); + connect(le.defaultValue, SIGNAL(valueChanged(double)), SLOT(defaultValChanged(double))); + EscapeFilter* ef = new EscapeFilter(this); + installEventFilter(ef); + } + +//--------------------------------------------------------- +// eventFilter +//--------------------------------------------------------- + +bool EscapeFilter::eventFilter(QObject* obj, QEvent* event) + { + if (event->type() == QEvent::KeyPress) { + if (((QKeyEvent*)event)->key() == Qt::Key_Escape) { + ((CtrlListEditor*)parent())->sendEscape(); + return true; + } + } + return QObject::eventFilter(obj, event); } //--------------------------------------------------------- @@ -47,11 +90,17 @@ CtrlListEditor::CtrlListEditor(QWidget* parent) void CtrlListEditor::setup(const ListType& lt) { - Ctrl* c = lt.ctrl; + if (track) + disconnect(track, SIGNAL(controllerChanged(int)), this, SLOT(controllerChanged(int))); + track = lt.track; + connect(track, SIGNAL(controllerChanged(int)), SLOT(controllerChanged(int))); + + c = lt.ctrl; le.controllerName->setText(c->name()); le.discreteCheckBox->setChecked(c->type() & Ctrl::DISCRETE); le.logarithmicCheckBox->setChecked(c->type() & Ctrl::LOG); le.floatCheckBox->setChecked(!(c->type() & Ctrl::INT)); + le.ctrlId->setValue(c->id()); if (c->type() & Ctrl::INT) { le.minValue->setDecimals(0); le.minValue->setValue(c->minVal().i); @@ -68,18 +117,317 @@ void CtrlListEditor::setup(const ListType& lt) le.defaultValue->setDecimals(1); le.defaultValue->setValue(c->getDefault().f); } + updateList(); + } + +//--------------------------------------------------------- +// updateList +//--------------------------------------------------------- + +void CtrlListEditor::updateList() + { + if (updateListDisabled) + return; le.ctrlList->clear(); int idx = 0; + bool curItemSet = false; for (iCtrlVal i = c->begin(); i != c->end(); ++i, ++idx) { CVal v = i.value(); QTreeWidgetItem* item = new QTreeWidgetItem; - item->setText(0, QString("%1").arg(i.key())); - item->setText(1, QString("%1").arg(i.key())); + item->setData(TICK_COL, Qt::TextAlignmentRole, int(Qt::AlignRight | Qt::AlignVCenter)); + item->setData(TIME_COL, Qt::TextAlignmentRole, int(Qt::AlignRight | Qt::AlignVCenter)); + item->setData(VAL_COL, Qt::TextAlignmentRole, int(Qt::AlignRight | Qt::AlignVCenter)); +// item->setItemDelegate(TIME_COL, midiTimeDelegate); + + item->setData(TICK_COL, Qt::DisplayRole, i.key()); + item->setData(TIME_COL, Qt::DisplayRole, i.key()); if (c->type() & Ctrl::INT) - item->setText(2, QString("%1").arg(v.i)); + item->setData(VAL_COL, Qt::DisplayRole, v.i); else - item->setText(2, QString("%1").arg(v.f)); + item->setData(VAL_COL, Qt::DisplayRole, v.f); le.ctrlList->insertTopLevelItem(idx, item); + if (!curItemSet && (i.key() >= listEdit->pos().tick())) { + le.ctrlList->setCurrentItem(item); + curItemSet = true; + } + } + } + +//--------------------------------------------------------- +// controllerChanged +//--------------------------------------------------------- + +void CtrlListEditor::controllerChanged(int id) + { + if (id != c->id()) + return; + updateList(); + } + +//--------------------------------------------------------- +// itemDoubleClicked +//--------------------------------------------------------- + +void CtrlListEditor::itemDoubleClicked(QTreeWidgetItem* item, int column) + { + le.ctrlList->openPersistentEditor(item, column); + } + +//--------------------------------------------------------- +// itemChanged +//--------------------------------------------------------- + +void CtrlListEditor::itemChanged(QTreeWidgetItem* item, int column) + { + if (column != VAL_COL) { + printf("time change not implemented\n"); + return; + } + + CVal val; + if (c->type() & Ctrl::INT) { + val.i = item->data(VAL_COL, Qt::DisplayRole).toInt(); + bool updateData = false; + if (val.i < c->minVal().i) { + val.i = c->minVal().i; + updateData = true; + } + else if (val.i > c->maxVal().i) { + val.i = c->maxVal().i; + updateData = true; + } + if (updateData) + item->setData(VAL_COL, Qt::DisplayRole, val.i); + } + else { + val.f = item->data(VAL_COL, Qt::DisplayRole).toDouble(); + bool updateData = false; + if (val.f < c->minVal().f) { + val.f = c->minVal().f; + updateData = true; + } + else if (val.f > c->maxVal().f) { + val.f = c->maxVal().f; + updateData = true; + } + if (updateData) + item->setData(VAL_COL, Qt::DisplayRole, val.f); + } + le.ctrlList->closePersistentEditor(item, TICK_COL); + le.ctrlList->closePersistentEditor(item, TIME_COL); + le.ctrlList->closePersistentEditor(item, VAL_COL); + updateListDisabled = true; + song->addControllerVal(track, c, listEdit->pos(), val); + updateListDisabled = false; + } + +//--------------------------------------------------------- +// sendEscape +//--------------------------------------------------------- + +void CtrlListEditor::sendEscape() + { + QTreeWidgetItem* cur = le.ctrlList->currentItem(); + if (cur == 0) + return; + le.ctrlList->closePersistentEditor(cur, TICK_COL); + le.ctrlList->closePersistentEditor(cur, TIME_COL); + le.ctrlList->closePersistentEditor(cur, VAL_COL); + } + +//--------------------------------------------------------- +// currentItemChanged +//--------------------------------------------------------- + +void CtrlListEditor::currentItemChanged(QTreeWidgetItem* cur, QTreeWidgetItem* prev) + { + if (prev) { + le.ctrlList->closePersistentEditor(prev, TICK_COL); + le.ctrlList->closePersistentEditor(prev, TIME_COL); + le.ctrlList->closePersistentEditor(prev, VAL_COL); + } + if (cur) + listEdit->pos().setTick(cur->data(TICK_COL, Qt::DisplayRole).toInt()); + le.deleteButton->setEnabled(cur); + } + +//--------------------------------------------------------- +// insertClicked +// insert one tick before current value +//--------------------------------------------------------- + +void CtrlListEditor::insertClicked() + { + CVal val = c->minVal(); + QTreeWidgetItem* cur = le.ctrlList->currentItem(); + if (cur) { + int tick = cur->data(TICK_COL, Qt::DisplayRole).toInt(); + if (tick == 0) // cannot insert value at position < 0 + return; + listEdit->pos().setTick(tick - 1); + if (c->type() & Ctrl::INT) + val.i = cur->data(VAL_COL, Qt::DisplayRole).toInt(); + else + val.f = cur->data(VAL_COL, Qt::DisplayRole).toDouble(); + } + song->addControllerVal(track, c, listEdit->pos(), val); + } + +//--------------------------------------------------------- +// deleteClicked +//--------------------------------------------------------- + +void CtrlListEditor::deleteClicked() + { + QTreeWidgetItem* cur = le.ctrlList->currentItem(); + if (cur == 0) + return; + int tick = cur->data(TICK_COL, Qt::DisplayRole).toInt(); + song->removeControllerVal(track, c->id(), tick); + } + +//--------------------------------------------------------- +// nameEdited +//--------------------------------------------------------- + +void CtrlListEditor::nameEdited(const QString& s) + { + track->changeCtrlName(c, s); + } + +//--------------------------------------------------------- +// minValChanged +//--------------------------------------------------------- + +void CtrlListEditor::minValChanged(double v) + { + CVal val; + if (c->type() & Ctrl::INT) + val.i = int(v); + else + val.f = v; + c->setRange(val, c->maxVal()); + } + +//--------------------------------------------------------- +// maxValChanged +//--------------------------------------------------------- + +void CtrlListEditor::maxValChanged(double v) + { + CVal val; + if (c->type() & Ctrl::INT) + val.i = int(v); + else + val.f = v; + c->setRange(c->minVal(), val); + } + +//--------------------------------------------------------- +// defaultValChanged +//--------------------------------------------------------- + +void CtrlListEditor::defaultValChanged(double v) + { + CVal val; + if (c->type() & Ctrl::INT) + val.i = int(v); + else + val.f = v; + c->setDefault(val); + } + +//--------------------------------------------------------- +// MidiTimeDelegate +//--------------------------------------------------------- + +MidiTimeDelegate::MidiTimeDelegate(QObject* parent) + : QItemDelegate(parent) + { + } + +//--------------------------------------------------------- +// createEditor +//--------------------------------------------------------- + +QWidget* MidiTimeDelegate::createEditor(QWidget* parent, + const QStyleOptionViewItem& option, const QModelIndex& index) const + { + if (index.column() != CtrlListEditor::TIME_COL) + return QItemDelegate::createEditor(parent, option, index); + + Awl::PosEdit* pe = new Awl::PosEdit(parent); + return pe; + } + +//--------------------------------------------------------- +// setEditorData +//--------------------------------------------------------- + +void MidiTimeDelegate::setEditorData(QWidget* editor, + const QModelIndex& index) const + { + if (index.column() != CtrlListEditor::TIME_COL) { + QItemDelegate::setEditorData(editor, index); + return; + } + Awl::PosEdit* pe = (Awl::PosEdit*)editor; + pe->setValue(AL::Pos(index.data().toInt())); + } + +//--------------------------------------------------------- +// setModelData +//--------------------------------------------------------- + +void MidiTimeDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, + const QModelIndex& index) const + { + if (index.column() != CtrlListEditor::TIME_COL) { + QItemDelegate::setModelData(editor, model, index); + return; + } + Awl::PosEdit* pe = (Awl::PosEdit*)editor; + model->setData(index, pe->pos().tick(), Qt::DisplayRole); + } + +//--------------------------------------------------------- +// paint +//--------------------------------------------------------- + +void MidiTimeDelegate::paint(QPainter* painter, + const QStyleOptionViewItem& option, const QModelIndex& index) const + { + if (index.column() != CtrlListEditor::TIME_COL) { + QItemDelegate::paint(painter, option, index); + return; + } + AL::Pos pos(index.data().toInt()); + int measure, beat, tick; + pos.mbt(&measure, &beat, &tick); + QString text; + text.sprintf("%04d.%02d.%03u", measure+1, beat+1, tick); + + QStyleOptionViewItemV2 opt = setOptions(index, option); + const QStyleOptionViewItemV2 *v2 = qstyleoption_cast(&option); + opt.features = v2 ? v2->features : QStyleOptionViewItemV2::ViewItemFeatures(QStyleOptionViewItemV2::None); + + painter->save(); + QVariant value; + QRect displayRect; + displayRect = option.rect; // textRectangle(painter, d->textLayoutBounds(opt), opt.font, text); + + QRect checkRect; + Qt::CheckState checkState = Qt::Unchecked; + value = index.data(Qt::CheckStateRole); + if (value.isValid()) { + checkState = static_cast(value.toInt()); + checkRect = check(opt, opt.rect, value); } + + drawBackground(painter, opt, index); + drawCheck(painter, opt, checkRect, checkState); + drawDisplay(painter, opt, displayRect, text); + drawFocus(painter, opt, text.isEmpty() ? QRect() : displayRect); + painter->restore(); } diff --git a/muse/muse/liste/ctrllistedit.h b/muse/muse/liste/ctrllistedit.h index 57fd5eac..842ba7eb 100644 --- a/muse/muse/liste/ctrllistedit.h +++ b/muse/muse/liste/ctrllistedit.h @@ -21,9 +21,40 @@ #ifndef __CTRLLISTEDIT_H__ #define __CTRLLISTEDIT_H__ +#include "al/pos.h" #include "listedit.h" #include "ui_ctrllistedit.h" +//--------------------------------------------------------- +// MidiTimeDelegate +//--------------------------------------------------------- + +class MidiTimeDelegate : public QItemDelegate { + + virtual QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem&, + const QModelIndex& index) const; + virtual void setEditorData(QWidget* editor, const QModelIndex&) const; + virtual void setModelData(QWidget* editor, QAbstractItemModel*, + const QModelIndex&) const; + void paint(QPainter*, const QStyleOptionViewItem&, + const QModelIndex&) const; + + public: + MidiTimeDelegate(QObject* parent = 0); + }; + +//--------------------------------------------------------- +// EscapeFilter +//--------------------------------------------------------- + +class EscapeFilter : public QObject { + Q_OBJECT + protected: + bool eventFilter(QObject*, QEvent*); + public: + EscapeFilter(QObject* parent = 0): QObject(parent) {} + }; + //--------------------------------------------------------- // CtrlListEditor //--------------------------------------------------------- @@ -32,12 +63,32 @@ class CtrlListEditor : public ListWidget { Q_OBJECT Ui::CtrlListEdit le; + Track* track; + Ctrl* c; + bool updateListDisabled; + ListEdit* listEdit; + MidiTimeDelegate* midiTimeDelegate; + + void updateList(); + + private slots: + void controllerChanged(int id); + void itemDoubleClicked(QTreeWidgetItem*,int); + void itemChanged(QTreeWidgetItem*,int); + void currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*); + void insertClicked(); + void deleteClicked(); + void nameEdited(const QString&); + void minValChanged(double); + void maxValChanged(double); + void defaultValChanged(double); public: - CtrlListEditor(QWidget* parent = 0); + CtrlListEditor(ListEdit*, QWidget* parent = 0); virtual void setup(const ListType&); + void sendEscape(); + enum { TICK_COL, TIME_COL, VAL_COL }; }; - #endif diff --git a/muse/muse/liste/ctrllistedit.ui b/muse/muse/liste/ctrllistedit.ui index 4f0c3b9d..88f850d9 100644 --- a/muse/muse/liste/ctrllistedit.ui +++ b/muse/muse/liste/ctrllistedit.ui @@ -6,7 +6,7 @@ 0 0 400 - 300 + 341 @@ -14,10 +14,10 @@ - 9 + 0 - 6 + 3 @@ -29,6 +29,14 @@ + + + 5 + 0 + 0 + 0 + + 75 @@ -41,29 +49,29 @@ - - - - 7 - 5 - 0 - 0 - - - - QFrame::StyledPanel - - - QFrame::Sunken - - - 2 - + + + + + + + + 0 + + + 6 + + + - Volume + Id: - - Qt::PlainText + + + + + + true @@ -79,6 +87,17 @@ + + false + + + + 5 + 0 + 0 + 0 + + discrete @@ -86,6 +105,17 @@ + + false + + + + 5 + 0 + 0 + 0 + + logarithmic @@ -93,6 +123,17 @@ + + false + + + + 5 + 0 + 0 + 0 + + float @@ -110,6 +151,14 @@ + + + 5 + 0 + 0 + 0 + + min: @@ -119,10 +168,27 @@ - + + + + 5 + 0 + 0 + 0 + + + + + + 5 + 0 + 0 + 0 + + max: @@ -132,10 +198,27 @@ - + + + + 5 + 0 + 0 + 0 + + + + + + 5 + 0 + 0 + 0 + + default: @@ -145,12 +228,36 @@ - + + + + 5 + 0 + 0 + 0 + + + + + true + + + 0 + + + false + + + true + + + false + Tick @@ -168,6 +275,43 @@ + + + + 0 + + + 6 + + + + + Delete + + + + + + + Insert + + + + + + + Qt::Horizontal + + + + 231 + 29 + + + + + + diff --git a/muse/muse/liste/listedit.cpp b/muse/muse/liste/listedit.cpp index 52d8a757..09e2ed86 100644 --- a/muse/muse/liste/listedit.cpp +++ b/muse/muse/liste/listedit.cpp @@ -19,12 +19,15 @@ //============================================================================= #include "listedit.h" -#include "al/pos.h" #include "ctrllistedit.h" #include "song.h" #include "part.h" #include "ctrl.h" +//--------------------------------------------------------- +// operator== +//--------------------------------------------------------- + bool ListType::operator==(const ListType& t) const { return id == t.id && track == t.track @@ -57,7 +60,7 @@ ListEdit::ListEdit(QWidget*) stack = new QStackedWidget; split->addWidget(stack); - ctrlPanel = new CtrlListEditor; + ctrlPanel = new CtrlListEditor(this); stack->addWidget(ctrlPanel); connect(list, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), @@ -89,9 +92,9 @@ void ListEdit::itemChanged(QTreeWidgetItem* i, QTreeWidgetItem*) lt = i->data(0, Qt::UserRole).value(); switch(lt.id) { case LIST_TRACK: - break; + return; case LIST_PART: - break; + return; case LIST_CTRL: ew = ctrlPanel; break; @@ -171,8 +174,9 @@ QTreeWidgetItem* ListEdit::findItem(const ListType& lt, QTreeWidgetItem* item) // selectItem //--------------------------------------------------------- -void ListEdit::selectItem(const AL::Pos&, Track* track, Part* part, Ctrl* ctrl) +void ListEdit::selectItem(const AL::Pos& p, Track* track, Part* part, Ctrl* ctrl) { + _pos = p; stack->setCurrentWidget(ctrlPanel); if (ctrl) lt.id = LIST_CTRL; @@ -190,6 +194,7 @@ void ListEdit::selectItem(const AL::Pos&, Track* track, Part* part, Ctrl* ctrl) void ListEdit::selectItem(const ListType& l) { + lt = l; stack->setCurrentWidget(ctrlPanel); buildList(); for (int i = 0;; ++i) { @@ -228,6 +233,8 @@ void ListEdit::read(QDomNode node) printf("MusE::ListEdit::read: track not found\n"); } } + else if (tag == "Pos") + _pos.read(node); else if (tag == "Ctrl") { int ctrlId = e.text().toInt(); ctrl = track->getController(ctrlId); @@ -240,7 +247,7 @@ void ListEdit::read(QDomNode node) else AL::readProperties(this, node); } - selectItem(AL::Pos(), track, part, ctrl); + selectItem(_pos, track, part, ctrl); } //--------------------------------------------------------- @@ -255,6 +262,7 @@ void ListEdit::write(Xml& xml) const xml.strTag("Track", lt.track->name()); if (lt.ctrl) { xml.intTag("Ctrl", lt.ctrl->id()); + _pos.write(xml, "Pos"); } xml.etag(metaObject()->className()); } diff --git a/muse/muse/liste/listedit.h b/muse/muse/liste/listedit.h index e386f49b..2c33cdab 100644 --- a/muse/muse/liste/listedit.h +++ b/muse/muse/liste/listedit.h @@ -21,12 +21,9 @@ #ifndef __LISTEDIT_H__ #define __LISTEDIT_H__ +#include "al/pos.h" #include "cobject.h" -namespace AL { - class Pos; - }; - class Track; class Part; class Ctrl; @@ -70,6 +67,7 @@ class ListEdit : public TopWin { Q_OBJECT; ListType lt; + AL::Pos _pos; QStackedWidget* stack; QTreeWidget* list; @@ -88,6 +86,7 @@ class ListEdit : public TopWin { void selectItem(const AL::Pos&, Track*, Part*, Ctrl*); virtual void read(QDomNode); virtual void write(Xml& xml) const; + AL::Pos& pos() { return _pos; } }; #endif diff --git a/muse/muse/song.h b/muse/muse/song.h index 29a5a433..610b0eec 100644 --- a/muse/muse/song.h +++ b/muse/muse/song.h @@ -344,7 +344,6 @@ class Song : public QObject { void undoOp(UndoOp::UndoType, Part*); void undoOp(UndoOp::UndoType, Event& oevent, Event& nevent, Part*); void undoOp(UndoOp::UndoType, SigEvent* oevent, SigEvent* nevent); - void undoOp(UndoOp::UndoType, int channel, int ctrl, int oval, int nval); void undoOp(UndoOp::UndoType, Part* oPart, Part* nPart); void undoOp(UndoOp::UndoType, Track*, int, unsigned, CVal, CVal); void undoOp(UndoOp::UndoType, Track*, const QString&, const QString&); diff --git a/muse/muse/track.cpp b/muse/muse/track.cpp index 6e0e4a99..14189c61 100644 --- a/muse/muse/track.cpp +++ b/muse/muse/track.cpp @@ -396,6 +396,16 @@ void Track::removeController(int id) emit clChanged(); } +//--------------------------------------------------------- +// changeCtrlName +//--------------------------------------------------------- + +void Track::changeCtrlName(Ctrl* c, const QString& s) + { + c->setName(s); + emit clChanged(); + } + //--------------------------------------------------------- // addControllerVal // return true if new controller value added diff --git a/muse/muse/track.h b/muse/muse/track.h index 84afe3df..7ffb76a6 100644 --- a/muse/muse/track.h +++ b/muse/muse/track.h @@ -210,6 +210,7 @@ class Track : public QObject { // signal interface: virtual void emitControllerChanged(int id) { emit controllerChanged(id); } void updateController(); + void changeCtrlName(Ctrl* c, const QString& s); // automation void startAutoRecord(int); diff --git a/muse/muse/undo.cpp b/muse/muse/undo.cpp index b65269f4..1303ed79 100644 --- a/muse/muse/undo.cpp +++ b/muse/muse/undo.cpp @@ -345,17 +345,6 @@ void Song::undoOp(UndoOp::UndoType type, Part* oPart, Part* nPart) addUndo(i); } -void Song::undoOp(UndoOp::UndoType type, int c, int ctrl, int ov, int nv) - { - UndoOp i; - i.type = type; - i.channel = c; - i.ctrl = ctrl; - i.oVal = ov; - i.nVal = nv; - addUndo(i); - } - void Song::undoOp(UndoOp::UndoType type, SigEvent* oevent, SigEvent* nevent) { UndoOp i; diff --git a/muse/muse/undo.h b/muse/muse/undo.h index 5e9976c8..ac9222c2 100644 --- a/muse/muse/undo.h +++ b/muse/muse/undo.h @@ -64,12 +64,6 @@ struct UndoOp { SigEvent* nSignature; SigEvent* oSignature; }; - struct { - int channel; - int ctrl; - int oVal; - int nVal; - }; struct { int startframe; //!< Start frame of changed data int endframe; //!< End frame of changed data -- cgit v1.2.3