summaryrefslogtreecommitdiff
path: root/attic/muse2-oom/muse2/muse/instruments/midictrledit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'attic/muse2-oom/muse2/muse/instruments/midictrledit.cpp')
-rw-r--r--attic/muse2-oom/muse2/muse/instruments/midictrledit.cpp725
1 files changed, 0 insertions, 725 deletions
diff --git a/attic/muse2-oom/muse2/muse/instruments/midictrledit.cpp b/attic/muse2-oom/muse2/muse/instruments/midictrledit.cpp
deleted file mode 100644
index 9dcac628..00000000
--- a/attic/muse2-oom/muse2/muse/instruments/midictrledit.cpp
+++ /dev/null
@@ -1,725 +0,0 @@
-//=========================================================
-// MusE
-// Linux Music Editor
-// $Id: midictrledit.cpp,v 1.1.1.1.2.2 2008/08/18 00:15:24 terminator356 Exp $
-//
-// (C) Copyright 2003 Werner Schweer (ws@seh.de)
-//=========================================================
-
-#include <stdio.h>
-
-#include "app.h"
-#include "midiport.h"
-#include "mididev.h"
-#include "midictrl.h"
-#include "midictrledit.h"
-#include "minstrument.h"
-#include "song.h"
-#include "xml.h"
-#include "filedialog.h"
-#include "globals.h"
-
-MidiControllerEditDialog* midiControllerEditDialog;
-
-static MidiController predefinedMidiController[] = {
- MidiController(QString("Pitch"), 0x40000, -8192, +8191, 0),
- };
-enum {
- COL_NAME = 0, COL_TYPE,
- COL_HNUM, COL_LNUM, COL_MIN, COL_MAX
- };
-//---------------------------------------------------------
-// addControllerToView
-//---------------------------------------------------------
-
-void MidiControllerEditDialog::addControllerToView(MidiController* mctrl)
- {
- QString hnum;
- QString lnum;
- QString min;
- QString max;
- int n = mctrl->num();
- int h = (n >> 8) & 0x7f;
- int l = n & 0x7f;
- MidiController::ControllerType t = midiControllerType(n);
- switch(t)
- {
- case MidiController::Controller7:
- hnum = "---";
- lnum.setNum(l);
- min.setNum(mctrl->minVal());
- max.setNum(mctrl->maxVal());
- break;
- case MidiController::RPN:
- case MidiController::NRPN:
- case MidiController::RPN14:
- case MidiController::NRPN14:
- case MidiController::Controller14:
- hnum.setNum(h);
- lnum.setNum(l);
- min.setNum(mctrl->minVal());
- max.setNum(mctrl->maxVal());
- break;
- case MidiController::Pitch:
- hnum = "---";
- lnum = "---";
- min.setNum(mctrl->minVal());
- max.setNum(mctrl->maxVal());
- break;
- default:
- hnum = "---";
- lnum = "---";
- min.setNum(0);
- max.setNum(0);
- break;
- }
-
- new Q3ListViewItem(viewController,
- mctrl->name(),
- int2ctrlType(t),
- hnum, lnum, min, max
- );
-
- }
-//---------------------------------------------------------
-// MidiControllerEditDialog
-//---------------------------------------------------------
-
-MidiControllerEditDialog::MidiControllerEditDialog(QWidget* parent, const char* name, bool modal, Qt::WFlags fl)
- : MidiControllerEditDialogBase(parent, name, modal, fl)
- {
- _lastPort = midiPortsList->currentItem();
- viewController->setColumnAlignment(COL_HNUM, Qt::AlignCenter);
- viewController->setColumnAlignment(COL_LNUM, Qt::AlignCenter);
- viewController->setColumnAlignment(COL_MIN, Qt::AlignCenter);
- viewController->setColumnAlignment(COL_MAX, Qt::AlignCenter);
- viewController->setColumnWidthMode(COL_NAME, Q3ListView::Maximum);
-
- // populate list of predefined controller
- updatePredefinedList();
-
- // populate ports pulldown
- updateMidiPortsList();
- connect(buttonNew, SIGNAL(clicked()), SLOT(ctrlAdd()));
- connect(buttonDelete, SIGNAL(clicked()), SLOT(ctrlDelete()));
- connect(entryName, SIGNAL(textChanged(const QString&)), SLOT(nameChanged(const QString&)));
- connect(comboType, SIGNAL(activated(const QString&)), SLOT(typeChanged(const QString&)));
- connect(spinboxHCtrlNo, SIGNAL(valueChanged(int)), SLOT(valueHChanged(int)));
- connect(spinboxLCtrlNo, SIGNAL(valueChanged(int)), SLOT(valueLChanged(int)));
- connect(spinboxMin, SIGNAL(valueChanged(int)), SLOT(minChanged(int)));
- connect(spinboxMax, SIGNAL(valueChanged(int)), SLOT(maxChanged(int)));
- connect(viewController, SIGNAL(selectionChanged()), SLOT(controllerChanged()));
- connect(buttonApply, SIGNAL(clicked()), SLOT(apply()));
- connect(midiPortsList, SIGNAL(activated(int)), SLOT(portChanged(int)));
-
- updateViewController();
- _modified = false;
- buttonApply->setEnabled(false);
- connect(song, SIGNAL(songChanged(int)), SLOT(songChanged(int)));
- }
-
-//---------------------------------------------------------
-// songChanged
-//---------------------------------------------------------
-
-void MidiControllerEditDialog::songChanged(int flags)
-{
- // Is it simply a midi controller value adjustment? Forget it.
- if(flags == SC_MIDI_CONTROLLER)
- return;
-
- if(flags & (SC_CONFIG | SC_MIDI_CONTROLLER))
- //if(flags & (SC_CONFIG | SC_MIDI_CONTROLLER_ADD))
- {
- //listController->blockSignals(true);
- midiPortsList->blockSignals(true);
- //viewController->blockSignals(true);
- updatePredefinedList();
- updateMidiPortsList();
- updateViewController();
- //viewController->setCurrentItem(viewController->firstChild());
- //controllerChanged(viewController->currentItem());
- //listController->blockSignals(false);
- midiPortsList->blockSignals(false);
- //viewController->blockSignals(false);
- }
-}
-
-//---------------------------------------------------------
-// updatePredefinedList
-//---------------------------------------------------------
-
-void MidiControllerEditDialog::updatePredefinedList()
-{
- listController->clear();
- int size = sizeof(predefinedMidiController) / sizeof(*predefinedMidiController);
- for (int i = 0; i < size; ++i)
- listController->insertItem(predefinedMidiController[i].name());
- listController->setSelected(0, true);
-}
-
-//---------------------------------------------------------
-// updateMidiPortsList
-//---------------------------------------------------------
-
-void MidiControllerEditDialog::updateMidiPortsList()
-{
- midiPortsList->clear();
- for (int i = 0; i < MIDI_PORTS; ++i) {
- MidiPort* port = &midiPorts[i];
- MidiDevice* dev = port->device();
- QString name;
- name.sprintf("%d(%s)", port->portno()+1,
- dev ? dev->name().toLatin1() : "none");
- midiPortsList->insertItem(name, i);
- }
- _lastPort = midiPortsList->currentItem();
-}
-
-//---------------------------------------------------------
-// updateViewController
-//---------------------------------------------------------
-
-void MidiControllerEditDialog::updateViewController()
-{
- //for (iMidiController i = midiControllerList.begin();
- // i != midiControllerList.end(); ++i) {
- // addControllerToView(&*i);
- int mpidx = midiPortsList->currentItem();
-
- viewController->clear();
- //MidiControllerList* mcl;
- MidiInstrument* mi = midiPorts[mpidx].instrument();
- //if(mi)
- MidiControllerList* mcl = mi->controller();
- //else
- // mcl = &defaultMidiController;
- for (iMidiController i = mcl->begin(); i != mcl->end(); ++i)
- addControllerToView(*i);
-
- viewController->blockSignals(true);
- viewController->setCurrentItem(viewController->firstChild());
- controllerChanged(viewController->currentItem());
- viewController->blockSignals(false);
-
- setModified(false);
-}
-
-//---------------------------------------------------------
-// reject
-//---------------------------------------------------------
-
-void MidiControllerEditDialog::setModified(bool v)
-{
- if(v == _modified)
- return;
-
- _modified = v;
-
- if(v)
- {
- buttonApply->setEnabled(true);
- }
- else
- {
- buttonApply->setEnabled(false);
- }
-}
-
-//---------------------------------------------------------
-// reject
-//---------------------------------------------------------
-
-void MidiControllerEditDialog::reject()
- {
- //MidiControllerList* mcl;
-// MidiInstrument* mi = midiPorts[mpidx].instrument();
- //if(mi)
-// MidiControllerList* mcl = mi->controller();
- //else
- // mcl = &defaultMidiController;
-// for (iMidiController i = mcl->begin(); i != mcl->end(); ++i)
-// addControllerToView(*i);
-
- // Restore the list before closing this dialog.
- updateViewController();
- //setModified(false);
-
- MidiControllerEditDialogBase::reject();
- }
-
-//---------------------------------------------------------
-// apply
-//---------------------------------------------------------
-
-void MidiControllerEditDialog::apply()
-{
- int mpidx = midiPortsList->currentItem();
- //MidiControllerList* mcl;
- MidiInstrument* mi = midiPorts[mpidx].instrument();
- //if(mi)
- MidiControllerList* mcl = mi->controller();
- //else
- // mcl = &defaultMidiController;
- mcl->clear();
-
-
- Q3ListViewItem* item = viewController->firstChild();
- int hval;
- int lval;
- while (item) {
- hval = item->text(COL_HNUM).toInt();
- lval = item->text(COL_LNUM).toInt();
- MidiController* c = new MidiController();
- c->setName(item->text(COL_NAME));
-
- MidiController::ControllerType type = ctrlType2Int(item->text(COL_TYPE));
-
- switch(type) {
- case MidiController::Controller7:
- c->setNum(lval);
- break;
- case MidiController::Controller14:
- c->setNum((hval << 8 | lval) | CTRL_14_OFFSET);
- break;
- case MidiController::RPN:
- c->setNum((hval << 8 | lval) | CTRL_RPN_OFFSET);
- break;
- case MidiController::NRPN:
- c->setNum((hval << 8 | lval) | CTRL_NRPN_OFFSET);
- break;
- case MidiController::RPN14:
- c->setNum((hval << 8 | lval) | CTRL_RPN14_OFFSET);
- break;
- case MidiController::NRPN14:
- c->setNum((hval << 8 | lval) | CTRL_NRPN14_OFFSET);
- break;
- case MidiController::Program:
- c->setNum(CTRL_PROGRAM);
- break;
- case MidiController::Pitch:
- c->setNum(CTRL_PITCH);
- break;
- default:
- break;
- }
- if(type == MidiController::Program)
- {
- c->setMinVal(0);
- c->setMaxVal(0xffffff);
- }
- else
- {
- c->setMinVal(item->text(COL_MIN).toInt());
- c->setMaxVal(item->text(COL_MAX).toInt());
- }
-
- mcl->push_back(c);
-
- item = item->nextSibling();
- }
-
- // Update the list before closing this dialog.
- //updateViewController();
- //setModified(false);
- song->update(SC_CONFIG | SC_MIDI_CONTROLLER);
-}
-
-//---------------------------------------------------------
-// ctrlAdd
-//---------------------------------------------------------
-
-void MidiControllerEditDialog::ctrlAdd()
- {
- Q3ListBoxItem* item = listController->selectedItem();
- if (item == 0)
- return;
- QString name = item->text();
- int size = sizeof(predefinedMidiController) / sizeof(*predefinedMidiController);
- for (int i = 0; i < size; ++i) {
- MidiController* c = &predefinedMidiController[i];
- if (c->name() != name)
- continue;
- MidiController::ControllerType t = midiControllerType(c->num());
- QString type = int2ctrlType(t);
- QString min, max;
- QString hno, lno;
- int h = (c->num() >> 8) & 0x7f;
- int l = c->num() & 0x7f;
-
- switch(t) {
- case MidiController::Controller7:
- min.setNum(c->minVal());
- max.setNum(c->maxVal());
- hno = "---";
- lno.setNum(l);
- break;
- case MidiController::RPN:
- case MidiController::NRPN:
- case MidiController::RPN14:
- case MidiController::NRPN14:
- case MidiController::Controller14:
- min.setNum(c->minVal());
- max.setNum(c->maxVal());
- hno.setNum(h);
- lno.setNum(l);
- break;
- case MidiController::Pitch:
- min.setNum(c->minVal());
- max.setNum(c->maxVal());
- hno = "---";
- lno = "---";
- break;
- default:
- hno = "---";
- lno = "---";
- min.setNum(0);
- max.setNum(0);
- break;
- }
-
- Q3ListViewItem* item = new Q3ListViewItem(viewController,
- name, type, hno, lno, min, max);
-
- viewController->blockSignals(true);
- viewController->setCurrentItem(item);
- controllerChanged(item);
- viewController->blockSignals(false);
-
- setModified(true);
- break;
- }
- }
-
-//---------------------------------------------------------
-// ctrlDelete
-//---------------------------------------------------------
-
-void MidiControllerEditDialog::ctrlDelete()
- {
- Q3ListViewItem* item = viewController->currentItem();
- if (item == 0)
- return;
- delete item;
-
- setModified(true);
- }
-
-//---------------------------------------------------------
-// accept
-//---------------------------------------------------------
-
-void MidiControllerEditDialog::accept()
- {
- apply();
- MidiControllerEditDialogBase::accept();
- }
-
-//---------------------------------------------------------
-// portChanged
-//---------------------------------------------------------
-
-void MidiControllerEditDialog::portChanged(int n)
- {
- if(n == _lastPort)
- return;
- _lastPort = n;
-
- //listController->blockSignals(true);
- //midiPortsList->blockSignals(true);
- //viewController->blockSignals(true);
- //updatePredefinedList();
- //updateMidiPortsList();
- //reject(); // populate list
- updateViewController();
- //viewController->setCurrentItem(viewController->firstChild());
- //controllerChanged(viewController->currentItem());
- //listController->blockSignals(false);
- //midiPortsList->blockSignals(false);
- //viewController->blockSignals(false);
- }
-
-//---------------------------------------------------------
-// nameChanged
-//---------------------------------------------------------
-
-void MidiControllerEditDialog::nameChanged(const QString& s)
- {
- Q3ListViewItem* item = viewController->currentItem();
- if (item == 0)
- return;
- item->setText(COL_NAME, s);
-
- setModified(true);
- }
-
-//---------------------------------------------------------
-// typeChanged
-//---------------------------------------------------------
-
-void MidiControllerEditDialog::typeChanged(const QString& s)
- {
- Q3ListViewItem* item = viewController->currentItem();
- if (item == 0)
- return;
- item->setText(COL_TYPE, s);
- switch(ctrlType2Int(s)) {
- case MidiController::Controller14:
- case MidiController::RPN14:
- case MidiController::NRPN14:
- item->setText(COL_LNUM, QString("0"));
- item->setText(COL_HNUM, QString("0"));
- item->setText(COL_MIN, QString("0"));
- item->setText(COL_MAX, QString("16383"));
- break;
- case MidiController::Controller7:
- item->setText(COL_MIN, QString("0"));
- item->setText(COL_MAX, QString("127"));
- item->setText(COL_LNUM, QString("0"));
- item->setText(COL_HNUM, QString("---"));
- break;
- case MidiController::RPN:
- case MidiController::NRPN:
- item->setText(COL_MIN, QString("0"));
- item->setText(COL_MAX, QString("127"));
- item->setText(COL_LNUM, QString("0"));
- item->setText(COL_HNUM, QString("0"));
- break;
-
- case MidiController::Program:
-
- item->setText(COL_MIN, QString("---"));
- item->setText(COL_MAX, QString("---"));
- item->setText(COL_LNUM, QString("---"));
- item->setText(COL_HNUM, QString("---"));
- break;
- case MidiController::Pitch:
- item->setText(COL_MIN, QString("-8192"));
- item->setText(COL_MAX, QString("8191"));
- item->setText(COL_LNUM, QString("---"));
- item->setText(COL_HNUM, QString("---"));
- break;
- default:
- break;
- }
-
- setModified(true);
-
- controllerChanged(item);
- }
-
-//---------------------------------------------------------
-// valueHChanged
-//---------------------------------------------------------
-
-void MidiControllerEditDialog::valueHChanged(int val)
- {
- Q3ListViewItem* item = viewController->currentItem();
- if (item == 0)
- return;
- QString s;
- s.setNum(val);
- item->setText(COL_HNUM, s);
-
- setModified(true);
- }
-
-//---------------------------------------------------------
-// valueLChanged
-//---------------------------------------------------------
-
-void MidiControllerEditDialog::valueLChanged(int val)
- {
- Q3ListViewItem* item = viewController->currentItem();
- if (item == 0)
- return;
- QString s;
- s.setNum(val);
- item->setText(COL_LNUM, s);
-
- setModified(true);
- }
-
-//---------------------------------------------------------
-// controllerChanged
-//---------------------------------------------------------
-
-void MidiControllerEditDialog::controllerChanged()
- {
- Q3ListViewItem* item = viewController->selectedItem();
- controllerChanged(item);
- }
-
-void MidiControllerEditDialog::controllerChanged(Q3ListViewItem* item)
- {
- if (item == 0) {
- entryName->setEnabled(false);
- comboType->setEnabled(false);
- spinboxHCtrlNo->setEnabled(false);
- spinboxLCtrlNo->setEnabled(false);
- spinboxMin->setEnabled(false);
- spinboxMax->setEnabled(false);
- return;
- }
-
- entryName->blockSignals(true);
- comboType->blockSignals(true);
- spinboxHCtrlNo->blockSignals(true);
- spinboxLCtrlNo->blockSignals(true);
- spinboxMin->blockSignals(true);
- spinboxMax->blockSignals(true);
-
- entryName->setEnabled(true);
- entryName->setText(item->text(COL_NAME));
- comboType->setCurrentItem(int(ctrlType2Int(item->text(COL_TYPE))));
- switch (ctrlType2Int(item->text(COL_TYPE))) {
- case MidiController::Controller7:
- comboType->setEnabled(true);
- spinboxHCtrlNo->setEnabled(false);
- spinboxLCtrlNo->setEnabled(true);
- spinboxMin->setEnabled(true);
- spinboxMax->setEnabled(true);
- spinboxHCtrlNo->setValue(0);
- spinboxLCtrlNo->setValue(item->text(COL_LNUM).toInt());
- spinboxMin->setRange(0, 127);
- spinboxMax->setRange(0, 127);
- spinboxMin->setValue(item->text(COL_MIN).toInt());
- spinboxMax->setValue(item->text(COL_MAX).toInt());
- break;
-
- case MidiController::RPN:
- case MidiController::NRPN:
- comboType->setEnabled(true);
- spinboxHCtrlNo->setEnabled(true);
- spinboxLCtrlNo->setEnabled(true);
- spinboxMin->setEnabled(true);
- spinboxMax->setEnabled(true);
- spinboxHCtrlNo->setValue(item->text(COL_HNUM).toInt());
- spinboxLCtrlNo->setValue(item->text(COL_LNUM).toInt());
- spinboxMin->setRange(0, 127);
- spinboxMax->setRange(0, 127);
- spinboxMin->setValue(item->text(COL_MIN).toInt());
- spinboxMax->setValue(item->text(COL_MAX).toInt());
- break;
- case MidiController::Controller14:
- case MidiController::RPN14:
- case MidiController::NRPN14:
- comboType->setEnabled(true);
- spinboxHCtrlNo->setEnabled(true);
- spinboxLCtrlNo->setEnabled(true);
- spinboxMin->setEnabled(true);
- spinboxMax->setEnabled(true);
-
- spinboxHCtrlNo->setValue(item->text(COL_HNUM).toInt());
- spinboxLCtrlNo->setValue(item->text(COL_LNUM).toInt());
- spinboxMin->setRange(0, 16383);
- spinboxMax->setRange(0, 16383);
- spinboxMin->setValue(item->text(COL_MIN).toInt());
- spinboxMax->setValue(item->text(COL_MAX).toInt());
- break;
-
- case MidiController::Pitch:
- comboType->setEnabled(true);
- spinboxHCtrlNo->setEnabled(false);
- spinboxLCtrlNo->setEnabled(false);
- spinboxMin->setEnabled(true);
- spinboxMax->setEnabled(true);
- spinboxHCtrlNo->setValue(0);
- spinboxLCtrlNo->setValue(0);
- spinboxMin->setRange(-8192, 8191);
- spinboxMax->setRange(-8192, 8191);
- spinboxMin->setValue(item->text(COL_MIN).toInt());
- spinboxMax->setValue(item->text(COL_MAX).toInt());
- break;
-
- case MidiController::Program:
- comboType->setEnabled(true);
- spinboxHCtrlNo->setEnabled(false);
- spinboxLCtrlNo->setEnabled(false);
- spinboxMin->setEnabled(false);
- spinboxMax->setEnabled(false);
- spinboxHCtrlNo->setValue(0);
- spinboxLCtrlNo->setValue(0);
- spinboxMin->setRange(0, 0);
- spinboxMax->setRange(0, 0);
- spinboxMin->setValue(0);
- spinboxMax->setValue(0);
- break;
- default:
- break;
- }
- entryName->blockSignals(false);
- comboType->blockSignals(false);
- spinboxHCtrlNo->blockSignals(false);
- spinboxLCtrlNo->blockSignals(false);
- spinboxMin->blockSignals(false);
- spinboxMax->blockSignals(false);
- }
-
-//---------------------------------------------------------
-// minChanged
-//---------------------------------------------------------
-
-void MidiControllerEditDialog::minChanged(int val)
- {
- Q3ListViewItem* item = viewController->currentItem();
- if (item == 0)
- return;
-
- QString s;
- s.setNum(val);
- item->setText(COL_MIN, s);
-
- if(val > item->text(COL_MAX).toInt())
- {
- spinboxMax->blockSignals(true);
- spinboxMax->setValue(val);
- item->setText(COL_MAX, s);
- spinboxMax->blockSignals(false);
- }
- setModified(true);
- }
-
-//---------------------------------------------------------
-// maxChanged
-//---------------------------------------------------------
-
-void MidiControllerEditDialog::maxChanged(int val)
- {
- Q3ListViewItem* item = viewController->currentItem();
- if (item == 0)
- return;
-
- QString s;
- s.setNum(val);
- item->setText(COL_MAX, s);
-
- if(val < item->text(COL_MIN).toInt())
- {
- spinboxMin->blockSignals(true);
- spinboxMin->setValue(val);
- item->setText(COL_MIN, s);
- spinboxMin->blockSignals(false);
- }
- setModified(true);
- }
-
-//---------------------------------------------------------
-// configMidiController
-//---------------------------------------------------------
-
-void configMidiController()
- {
- if (midiControllerEditDialog == 0)
- {
- midiControllerEditDialog = new MidiControllerEditDialog();
- midiControllerEditDialog->show();
- }
- else
- {
- if(midiControllerEditDialog->isShown())
- midiControllerEditDialog->hide();
- else
- midiControllerEditDialog->show();
- }
- }