summaryrefslogtreecommitdiff
path: root/attic/muse2-oom/muse2/muse/liste/editevent.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'attic/muse2-oom/muse2/muse/liste/editevent.cpp')
-rw-r--r--attic/muse2-oom/muse2/muse/liste/editevent.cpp897
1 files changed, 0 insertions, 897 deletions
diff --git a/attic/muse2-oom/muse2/muse/liste/editevent.cpp b/attic/muse2-oom/muse2/muse/liste/editevent.cpp
deleted file mode 100644
index b162a3e6..00000000
--- a/attic/muse2-oom/muse2/muse/liste/editevent.cpp
+++ /dev/null
@@ -1,897 +0,0 @@
-//=========================================================
-// MusE
-// Linux Music Editor
-// $Id: editevent.cpp,v 1.12.2.6 2009/02/02 21:38:00 terminator356 Exp $
-// (C) Copyright 1999-2004 Werner Schweer (ws@seh.de)
-//=========================================================
-
-#include <stdio.h>
-
-#include <QBoxLayout>
-#include <QHBoxLayout>
-#include <QGridLayout>
-#include <QLabel>
-#include <QListWidget>
-#include <QMenu>
-#include <QMessageBox>
-#include <QPushButton>
-#include <QRadioButton>
-#include <QSlider>
-#include <QSpinBox>
-#include <QTextEdit>
-#include <QVBoxLayout>
-
-#include "awl/posedit.h"
-
-#include "song.h"
-#include "event.h"
-#include "midictrl.h"
-#include "editevent.h"
-#include "pitchedit.h"
-#include "intlabel.h"
-#include "globals.h"
-///#include "posedit.h"
-#include "gconfig.h"
-#include "midiport.h"
-#include "midiedit/drummap.h"
-#include "instruments/minstrument.h"
-#include "midi.h"
-
-//---------------------------------------------------------
-// string2qhex
-//---------------------------------------------------------
-
-QString string2hex(const unsigned char* data, int len)
- {
- QString d;
- QString s;
- for (int i = 0; i < len; ++i) {
- if ((i > 0) && ((i % 8)==0)) {
- d += "\n";
- }
- else if (i)
- d += " ";
- d += s.sprintf("%02x", data[i]);
- }
- return d;
- }
-
-//---------------------------------------------------------
-// hex2string
-//---------------------------------------------------------
-
-char* hex2string(QWidget* parent, const char* src, int& len)
- {
- char buffer[2048];
- char* dst = buffer;
-
- while (*src) {
- while (*src == ' ' || *src == '\n')
- ++src;
- char* ep;
- long val = strtol(src, &ep, 16);
- if (ep == src) {
- QMessageBox::information(parent,
- QString("MusE"),
- QWidget::tr("Cannot convert sysex string"));
- return 0;
- }
- src = ep;
- *dst++ = val;
- if (dst - buffer >= 2048) {
- QMessageBox::information(parent,
- QString("MusE"),
- QWidget::tr("Hex String too long (2048 bytes limit)"));
- return 0;
- }
- }
- len = dst - buffer;
- if(len == 0)
- return 0;
- char* b = new char[len+1];
- memcpy(b, buffer, len);
- b[len] = 0;
- return b;
- }
-
-//---------------------------------------------------------
-// getEvent
-//---------------------------------------------------------
-
-Event EditNoteDialog::getEvent(int tick, const Event& event, QWidget* parent)
- {
- EditNoteDialog* dlg = new EditNoteDialog(tick, event, parent);
- Event nevent;
- if (dlg->exec() == QDialog::Accepted) {
- nevent = dlg->event();
- }
- delete dlg;
- return nevent;
- }
-
-Event EditSysexDialog::getEvent(int tick, const Event& event, QWidget* parent)
- {
- EditSysexDialog* dlg = new EditSysexDialog(tick, event, parent);
- Event nevent;
- if (dlg->exec() == QDialog::Accepted) {
- nevent = dlg->event();
- }
- delete dlg;
- return nevent;
- }
-
-Event EditMetaDialog::getEvent(int tick, const Event& event, QWidget* parent)
- {
- EditEventDialog* dlg = new EditMetaDialog(tick, event, parent);
- Event nevent;
- if (dlg->exec() == QDialog::Accepted) {
- nevent = dlg->event();
- }
- delete dlg;
- return nevent;
- }
-
-Event EditCAfterDialog::getEvent(int tick, const Event& event, QWidget* parent)
- {
- EditEventDialog* dlg = new EditCAfterDialog(tick, event, parent);
- Event nevent;
- if (dlg->exec() == QDialog::Accepted) {
- nevent = dlg->event();
- }
- delete dlg;
- return nevent;
- }
-
-Event EditPAfterDialog::getEvent(int tick, const Event& event, QWidget* parent)
- {
- EditEventDialog* dlg = new EditPAfterDialog(tick, event, parent);
- Event nevent;
- if (dlg->exec() == QDialog::Accepted) {
- nevent = dlg->event();
- }
- delete dlg;
- return nevent;
- }
-
-//---------------------------------------------------------
-// EditEventDialog
-//---------------------------------------------------------
-
-EditEventDialog::EditEventDialog(QWidget* parent)
- : QDialog(parent)
- {
- QVBoxLayout* xlayout = new QVBoxLayout;
- layout1 = new QGridLayout; // ddskrjo this
- xlayout->addLayout(layout1);
-
- //---------------------------------------------------
- // Ok, Cancel
- //---------------------------------------------------
-
- QBoxLayout* w5 = new QHBoxLayout; // ddskrjo this
- QPushButton* okB = new QPushButton(tr("Ok"));
- okB->setDefault(true);
- QPushButton* cancelB = new QPushButton(tr("Cancel"));
- okB->setFixedWidth(80);
- cancelB->setFixedWidth(80);
- w5->addWidget(okB);
- w5->addSpacing(12);
- w5->addWidget(cancelB);
- w5->addStretch(1);
- xlayout->addLayout(w5);
- setLayout(xlayout);
- connect(cancelB, SIGNAL(clicked()), SLOT(reject()));
- connect(okB, SIGNAL(clicked()), SLOT(accept()));
- }
-
-//---------------------------------------------------------
-// EditNoteDialog
-//---------------------------------------------------------
-
-EditNoteDialog::EditNoteDialog(int tick, const Event& event,
- QWidget* parent)
- : QDialog(parent)
- {
- setupUi(this);
- if (!event.empty()) {
- epos->setValue(tick);
- il1->setValue(event.lenTick());
- pl->setValue(event.pitch());
- il2->setValue(event.velo());
- il3->setValue(event.veloOff());
- }
- else {
- epos->setValue(tick);
- il1->setValue(96);
- pl->setValue(64);
- il2->setValue(100);
- il3->setValue(0);
- }
- }
-
-//---------------------------------------------------------
-// EditNoteDialog::event
-//---------------------------------------------------------
-
-Event EditNoteDialog::event()
- {
- Event event(Note);
- event.setTick(epos->pos().tick());
- event.setA(pl->value());
- event.setB(il2->value());
- event.setC(il3->value());
- event.setLenTick(il1->value());
- return event;
- }
-
-//---------------------------------------------------------
-// EditSysExDialog
-//---------------------------------------------------------
-
-EditSysexDialog::EditSysexDialog(int tick, const Event& event,
- QWidget* parent)
- : QDialog(parent)
- {
- setupUi(this);
- sysex = 0;
- if (!event.empty()) {
- epos->setValue(tick);
- edit->setText(string2hex(event.data(), event.dataLen()));
- }
- else {
- epos->setValue(tick);
- }
- }
-
-//---------------------------------------------------------
-// ~EditSysexDialog
-//---------------------------------------------------------
-
-EditSysexDialog::~EditSysexDialog()
- {
- if (sysex)
- delete sysex;
- }
-
-//---------------------------------------------------------
-// EditSysExDialog::event
-//---------------------------------------------------------
-
-Event EditSysexDialog::event()
- {
- Event event(Sysex);
- event.setTick(epos->pos().tick());
- event.setData(sysex, len);
- return event;
- }
-
-//---------------------------------------------------------
-// accept
-//---------------------------------------------------------
-
-void EditSysexDialog::accept()
- {
- QString qsrc = edit->toPlainText();
- QByteArray ba = qsrc.toLatin1();
- const char* src = ba.constData();
-
- sysex = (unsigned char*)hex2string(this, src, len);
- if (sysex)
- QDialog::accept();
- }
-
-//---------------------------------------------------------
-// EditMetaDialog
-//---------------------------------------------------------
-
-EditMetaDialog::EditMetaDialog(int tick, const Event& ev,
- QWidget* parent)
- : EditEventDialog(parent)
- {
- meta = 0;
- setWindowTitle(tr("MusE: Enter Meta Event"));
-
- QLabel* l1 = new QLabel(tr("Time Position"));
- ///epos = new PosEdit;
- epos = new Awl::PosEdit;
-
- QLabel* l2 = new QLabel(tr("Meta Type"));
- il2 = new IntLabel(-1, 0, 127, this, -1);
- il2->setFixedWidth(100);
- il2->setFrame(true);
- il2->setDark();
- typeLabel = new QLabel;
- typeLabel->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
- QHBoxLayout* typeLayout = new QHBoxLayout;
- typeLayout->addWidget(il2);
- typeLayout->addWidget(typeLabel);
- typeLayout->addStretch();
-
- hexButton = new QRadioButton(tr("Enter Hex"));
- hexButton->setChecked(true);
- connect(hexButton, SIGNAL(toggled(bool)), SLOT(toggled(bool)));
-
- edit = new QTextEdit;
- edit->setFont(config.fonts[5]);
-
- if (!ev.empty()) {
- epos->setValue(tick);
- il2->setValue(ev.dataA());
- toggled(true);
- edit->setText(string2hex(ev.data(), ev.dataLen()));
- }
- else {
- epos->setValue(tick);
- il2->setValue(0);
- }
-
- typeChanged(il2->value());
- connect(il2, SIGNAL(valueChanged(int)), SLOT(typeChanged(int)));
-
- layout1->addWidget(l1, 0, 0);
- layout1->addWidget(epos, 0, 1, Qt::AlignLeft);
- layout1->addWidget(l2, 1, 0);
-
- //layout1->addWidget(il2, 1, 1, AlignLeft);
- layout1->addLayout(typeLayout, 1, 1);
-
- //layout1->addMultiCellWidget(hexButton, 2, 2, 0, 1);
- //layout1->addMultiCellWidget(edit, 3, 3, 0, 1);
- layout1->addWidget(hexButton, 2, 0, 1, 2);
- layout1->addWidget(edit, 3, 0, 1, 2);
- }
-
-//---------------------------------------------------------
-// typeChanged
-//---------------------------------------------------------
-
-void EditMetaDialog::typeChanged(int val)
-{
- typeLabel->setText(midiMetaName(val));
-}
-
-//---------------------------------------------------------
-// toggled
-//---------------------------------------------------------
-
-void EditMetaDialog::toggled(bool flag)
- {
- QString qsrc = edit->toPlainText();
- QByteArray ba = qsrc.toLatin1();
- const char* src = ba.constData();
- edit->clear();
-
- QString dst;
- if (flag) { // convert to hex
- dst = string2hex((unsigned char*)src, strlen(src));
- }
- else { // convert to string
- int len;
- dst = hex2string(this, src, len);
- }
- edit->setText(dst);
- }
-
-//---------------------------------------------------------
-// ~EditMetaDialog
-//---------------------------------------------------------
-
-EditMetaDialog::~EditMetaDialog()
- {
- if (meta)
- delete meta;
- }
-
-//---------------------------------------------------------
-// EditMetaDialog::event
-//---------------------------------------------------------
-
-Event EditMetaDialog::event()
- {
- Event event(Meta);
- event.setTick(epos->pos().tick());
- event.setA(il2->value());
- event.setData(meta, len); // TODO ??
- return event;
- }
-
-//---------------------------------------------------------
-// accept
-//---------------------------------------------------------
-
-void EditMetaDialog::accept()
- {
- QString qsrc = edit->toPlainText();
- QByteArray ba = qsrc.toLatin1();
- const char* src = ba.constData();
- if (!hexButton->isChecked()) {
- meta = (unsigned char*)strdup(src);
- len = strlen(src);
- QDialog::accept();
- return;
- }
-
- meta = (unsigned char*)hex2string(this, src, len);
- if (meta)
- QDialog::accept();
- }
-
-//---------------------------------------------------------
-// EditCAfterDialog
-//---------------------------------------------------------
-
-EditCAfterDialog::EditCAfterDialog(int tick, const Event& event,
- QWidget* parent)
- : EditEventDialog(parent)
- {
- setWindowTitle(tr("MusE: Enter Channel Aftertouch"));
-
- QLabel* l1 = new QLabel(tr("Time Position"));
- ///epos = new PosEdit;
- epos = new Awl::PosEdit;
-
- QLabel* l2 = new QLabel(tr("Pressure"));
- il2 = new IntLabel(-1, 0, 127, this, -1);
- il2->setFrame(true);
- il2->setDark();
-
- QSlider* slider = new QSlider(Qt::Horizontal);
- slider->setMinimum(0);
- slider->setMaximum(127);
- slider->setPageStep(1);
- slider->setValue(0);
-
- connect(slider, SIGNAL(valueChanged(int)), il2, SLOT(setValue(int)));
- connect(il2, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));
-
- if (!event.empty()) {
- epos->setValue(tick);
- il2->setValue(event.dataA());
- slider->setValue(event.dataA());
- }
- else {
- epos->setValue(tick);
- il2->setValue(64);
- slider->setValue(64);
- }
-
- layout1->addWidget(l1, 0, 0);
- layout1->addWidget(epos, 0, 1, Qt::AlignLeft);
- layout1->addWidget(l2, 1, 0);
- layout1->addWidget(il2, 1, 1, Qt::AlignLeft);
- //layout1->addMultiCellWidget(slider, 2, 2, 0, 1);
- layout1->addWidget(slider, 2, 0, 1, 2);
- }
-
-//---------------------------------------------------------
-// EditCAfterDialog::event
-//---------------------------------------------------------
-
-Event EditCAfterDialog::event()
- {
- Event event(CAfter);
- event.setTick(epos->pos().tick());
- event.setA(il2->value());
- return event;
- }
-
-//---------------------------------------------------------
-// EditPAfterDialog
-//---------------------------------------------------------
-
-EditPAfterDialog::EditPAfterDialog(int tick, const Event& event,
- QWidget* parent)
- : EditEventDialog(parent)
- {
- setWindowTitle(tr("MusE: Enter Poly Aftertouch"));
-
- QLabel* l1 = new QLabel(tr("Time Position"));
- ///epos = new PosEdit;
- epos = new Awl::PosEdit;
-
- QLabel* l2 = new QLabel(tr("Pitch"));
- pl = new PitchEdit;
- QLabel* l3 = new QLabel(tr("Pressure"));
- il2 = new IntLabel(-1, 0, 127, this, -1);
- il2->setFrame(true);
- il2->setDark();
-
- QSlider* slider = new QSlider(Qt::Horizontal);
- slider->setMinimum(0);
- slider->setMaximum(127);
- slider->setPageStep(1);
- slider->setValue(0);
-
- connect(slider, SIGNAL(valueChanged(int)), il2, SLOT(setValue(int)));
- connect(il2, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));
-
- if (!event.empty()) {
- epos->setValue(tick);
- pl->setValue(event.pitch());
- il2->setValue(event.dataB());
- slider->setValue(event.dataB());
- }
- else {
- epos->setValue(tick);
- pl->setValue(64);
- il2->setValue(64);
- slider->setValue(64);
- }
-
- layout1->addWidget(l1, 0, 0);
- layout1->addWidget(epos, 0, 1, Qt::AlignLeft);
- layout1->addWidget(l2, 1, 0);
- layout1->addWidget(pl, 1, 1, Qt::AlignLeft);
- layout1->addWidget(l3, 2, 0);
- layout1->addWidget(il2, 2, 1, Qt::AlignLeft);
- //layout1->addMultiCellWidget(slider, 3, 3, 0, 1);
- layout1->addWidget(slider, 3, 0, 1, 2);
- }
-
-//---------------------------------------------------------
-// EditPAfterDialog::event
-//---------------------------------------------------------
-
-Event EditPAfterDialog::event()
- {
- Event event(PAfter);
- event.setTick(epos->pos().tick());
- event.setA(pl->value());
- event.setB(il2->value());
- return event;
- }
-//---------------------------------------------------------
-// getEvent
-//---------------------------------------------------------
-
-Event EditCtrlDialog::getEvent(int tick, const Event& event,
- const MidiPart* part, QWidget* parent)
- {
- EditCtrlDialog* dlg = new EditCtrlDialog(tick, event, part, parent);
- Event nevent;
- if (dlg->exec() == QDialog::Accepted) {
- nevent = dlg->event();
- }
- delete dlg;
- return nevent;
- }
-
-//---------------------------------------------------------
-// EditCtrlDialog::event
-//---------------------------------------------------------
-
-Event EditCtrlDialog::event()
- {
- Event event(Controller);
- event.setTick(timePos->pos().tick());
- event.setA(num);
- if (num == CTRL_PROGRAM)
- event.setB(val);
- else
- event.setB(valSlider->value() + midiPorts[part->track()->outPort()].midiController(num)->bias());
- return event;
- }
-
-//---------------------------------------------------------
-// EditCtrlDialog
-// PosEdit* timePos;
-// QSlider* valSlider;
-// QSpinBox* valSpinBox;
-// QLabel* controllerName;
-// QListWidget* ctrlList;
-// QPushButton* buttonNewController;
-//---------------------------------------------------------
-
-EditCtrlDialog::EditCtrlDialog(int tick, const Event& event,
- const MidiPart* p, QWidget* parent)
- : QDialog(parent), part(p)
- {
- setupUi(this);
- widgetStack->setAutoFillBackground(true);
- val = 0;
- num = 0;
- if (!event.empty()) {
- num = event.dataA();
- val = event.dataB();
- }
-
- ///pop = new QMenu(this);
- //pop->setCheckable(false);//not necessary in Qt4
-
- MidiTrack* track = part->track();
- int portn = track->outPort();
- MidiPort* port = &midiPorts[portn];
- bool isDrum = track->type() == Track::DRUM;
- MidiCtrlValListList* cll = port->controller();
-
- ctrlList->clear();
- ctrlList->setSelectionMode(QAbstractItemView::SingleSelection);
-
- //
- // populate list of available controller
- //
-
- std::list<QString> sList;
- typedef std::list<QString>::iterator isList;
-
- for (iMidiCtrlValList i = cll->begin(); i != cll->end(); ++i) {
- MidiCtrlValList* cl = i->second;
- int num = cl->num();
-
- // dont show drum specific controller if not a drum track
- if ((num & 0xff) == 0xff) {
- if (!isDrum)
- continue;
- }
- MidiController* c = port->midiController(num);
- isList i = sList.begin();
- for (; i != sList.end(); ++i) {
- if (*i == c->name())
- break;
- }
- if (i == sList.end())
- sList.push_back(c->name());
- }
- MidiController* mc = port->midiController(num);
- int idx = 0;
- int selectionIndex = 0;
- for (isList i = sList.begin(); i != sList.end(); ++i, ++idx) {
- ctrlList->addItem(*i);
- if (mc->name() == *i)
- selectionIndex = idx;
- }
- ctrlList->item(selectionIndex)->setSelected(true);
-
- valSlider->setRange(mc->minVal(), mc->maxVal());
- valSpinBox->setRange(mc->minVal(), mc->maxVal());
-
- controllerName->setText(mc->name());
-
- if(!event.empty())
- {
- if(num == CTRL_PROGRAM)
- {
- widgetStack->setCurrentIndex(1);
- updatePatch();
- }
- else
- {
- widgetStack->setCurrentIndex(0);
- valSlider->setValue(val - mc->bias());
- }
- }
- else
- ctrlListClicked(ctrlList->selectedItems()[0]);
- connect(ctrlList, SIGNAL(itemClicked(QListWidgetItem*)), SLOT(ctrlListClicked(QListWidgetItem*)));
- connect(buttonNewController, SIGNAL(clicked()), SLOT(newController()));
- connect(hbank, SIGNAL(valueChanged(int)), SLOT(programChanged()));
- connect(lbank, SIGNAL(valueChanged(int)), SLOT(programChanged()));
- connect(program, SIGNAL(valueChanged(int)), SLOT(programChanged()));
- connect(patchName, SIGNAL(released()), SLOT(instrPopup()));
- connect(buttonCancel, SIGNAL(clicked()), SLOT(reject()));
- connect(buttonOk, SIGNAL(clicked()), SLOT(accept()));
- timePos->setValue(tick);
-
- }
-//---------------------------------------------------------
-// newController
-//---------------------------------------------------------
-
-void EditCtrlDialog::newController()
- {
- QMenu* pup = new QMenu(this);
- //pup->setCheckable(this);//not necessary in Qt4
- //
- // populate popup with all controllers available for
- // current instrument
- //
- MidiTrack* track = part->track();
- int portn = track->outPort();
- MidiPort* port = &midiPorts[portn];
- MidiInstrument* instr = port->instrument();
- MidiControllerList* mcl = instr->controller();
-
- MidiCtrlValListList* cll = port->controller();
- int channel = track->outChannel();
- int nn = 0;
- for (iMidiController ci = mcl->begin(); ci != mcl->end(); ++ci)
- {
- if(cll->find(channel, ci->second->num()) == cll->end())
- {
- QAction* act = pup->addAction(ci->second->name());
- act->setData(nn);
- ++nn;
- }
- }
- QAction* rv = pup->exec(buttonNewController->mapToGlobal(QPoint(0,0)));
- if (rv) {
- QString s = rv->text();
- for (iMidiController ci = mcl->begin(); ci != mcl->end(); ++ci) {
- MidiController* mc = ci->second;
- if (mc->name() == s) {
- if(cll->find(channel, mc->num()) == cll->end())
- {
- MidiCtrlValList* vl = new MidiCtrlValList(mc->num());
- cll->add(channel, vl);
- //song->update(SC_MIDI_CONTROLLER_ADD);
- }
- for (int idx = 0; ;++idx) {
- QString str = ctrlList->item(idx)->text();
- if (s == str)
- {
- ctrlList->item(idx)->setSelected(true);
- ctrlListClicked(ctrlList->item(idx));
- break;
- }
- if (str.isNull()) {
- ctrlList->addItem(s);
- ctrlList->item(idx)->setSelected(true);
- ctrlListClicked(ctrlList->item(idx));
- break;
- }
- }
-
- break;
- }
- }
- }
- delete pup;
- }
-//---------------------------------------------------------
-// ctrlListClicked
-//---------------------------------------------------------
-
-void EditCtrlDialog::ctrlListClicked(QListWidgetItem* item)
- {
- if (item == 0)
- return;
- QString s(item->text());
-
- MidiTrack* track = part->track();
- int portn = track->outPort();
- MidiPort* port = &midiPorts[portn];
- MidiCtrlValListList* cll = port->controller();
-
- iMidiCtrlValList i;
- for (i = cll->begin(); i != cll->end(); ++i) {
- MidiCtrlValList* cl = i->second;
- num = cl->num();
- MidiController* c = port->midiController(num);
- if (s == c->name()) {
- if (num == CTRL_PROGRAM) {
- widgetStack->setCurrentIndex(1);
-
- val = c->initVal();
- if(val == CTRL_VAL_UNKNOWN)
- val = 0;
- updatePatch();
- }
- else {
- widgetStack->setCurrentIndex(0);
- valSlider->setRange(c->minVal(), c->maxVal());
- valSpinBox->setRange(c->minVal(), c->maxVal());
- controllerName->setText(s);
- val = c->initVal();
-
- if(val == CTRL_VAL_UNKNOWN || val == 0)
- {
- switch(num)
- {
- case CTRL_PANPOT:
- val = 64 - c->bias();
- break;
- case CTRL_VOLUME:
- val = 100;
- break;
- default:
- val = 0;
- break;
- }
- }
- valSlider->setValue(val);
- }
- break;
- }
- }
- if (i == cll->end())
- printf("controller %s not found!\n", s.toLatin1().constData());
- }
-
-//---------------------------------------------------------
-// updatePatch
-//---------------------------------------------------------
-
-void EditCtrlDialog::updatePatch()
- {
- MidiTrack* track = part->track();
- int port = track->outPort();
- int channel = track->outChannel();
- MidiInstrument* instr = midiPorts[port].instrument();
- patchName->setText(instr->getPatchName(channel, val, song->mtype(), track->type() == Track::DRUM));
-
- int hb = ((val >> 16) & 0xff) + 1;
- if (hb == 0x100)
- hb = 0;
- int lb = ((val >> 8) & 0xff) + 1;
- if (lb == 0x100)
- lb = 0;
- int pr = (val & 0xff) + 1;
- if (pr == 0x100)
- pr = 0;
-
- hbank->blockSignals(true);
- lbank->blockSignals(true);
- program->blockSignals(true);
-
- hbank->setValue(hb);
- lbank->setValue(lb);
- program->setValue(pr);
-
- hbank->blockSignals(false);
- lbank->blockSignals(false);
- program->blockSignals(false);
- }
-
-//---------------------------------------------------------
-// instrPopup
-//---------------------------------------------------------
-
-void EditCtrlDialog::instrPopup()
- {
- MidiTrack* track = part->track();
- int channel = track->outChannel();
- int port = track->outPort();
- MidiInstrument* instr = midiPorts[port].instrument();
-
- ///instr->populatePatchPopup(pop, channel, song->mtype(), track->type() == Track::DRUM);
- QMenu* pup = new QMenu(this);
- instr->populatePatchPopup(pup, channel, song->mtype(), track->type() == Track::DRUM);
-
- ///if(pop->actions().count() == 0)
- /// return;
- if(pup->actions().count() == 0)
- {
- delete pup;
- return;
- }
-
- ///QAction* rv = pop->exec(patchName->mapToGlobal(QPoint(10,5)));
- QAction* rv = pup->exec(patchName->mapToGlobal(QPoint(10,5)));
- if (rv) {
- val = rv->data().toInt();
- updatePatch();
- }
-
- delete pup;
- }
-
-//---------------------------------------------------------
-// programChanged
-//---------------------------------------------------------
-
-void EditCtrlDialog::programChanged()
- {
-// MidiTrack* track = part->track();
-// int channel = track->outChannel();
-// int port = track->outPort();
- int hb = hbank->value();
- int lb = lbank->value();
- int prog = program->value();
-
- if (hb > 0 && hb < 129)
- hb -= 1;
- else
- hb = 0xff;
- if (lb > 0 && lb < 129)
- lb -= 1;
- else
- lb = 0xff;
- if (prog > 0 && prog < 129)
- prog -= 1;
- else
- prog = 0xff;
-
- val = (hb << 16) + (lb << 8) + prog;
- updatePatch();
- }
-