|
Packit |
427e91 |
/*
|
|
Packit |
427e91 |
* qlo10k1 - GUI frontend for ld10k1
|
|
Packit |
427e91 |
*
|
|
Packit |
427e91 |
* Copyright (c) 2004 by Peter Zubaj
|
|
Packit |
427e91 |
*
|
|
Packit |
427e91 |
* This program is free software; you can redistribute it and/or modify
|
|
Packit |
427e91 |
* it under the terms of the GNU General Public License as published by
|
|
Packit |
427e91 |
* the Free Software Foundation; either version 2 of the License, or
|
|
Packit |
427e91 |
* (at your option) any later version.
|
|
Packit |
427e91 |
*
|
|
Packit |
427e91 |
* This program is distributed in the hope that it will be useful,
|
|
Packit |
427e91 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
427e91 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit |
427e91 |
* GNU General Public License for more details.
|
|
Packit |
427e91 |
*
|
|
Packit |
427e91 |
* You should have received a copy of the GNU General Public License
|
|
Packit |
427e91 |
* along with this program; if not, write to the Free Software
|
|
Packit |
427e91 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
Packit |
427e91 |
*
|
|
Packit |
427e91 |
*/
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
#include <qradiobutton.h>
|
|
Packit |
427e91 |
#include <qpushbutton.h>
|
|
Packit |
427e91 |
#include <qcheckbox.h>
|
|
Packit |
427e91 |
#include <qlistbox.h>
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
#include "structure_patch.h"
|
|
Packit |
427e91 |
#include "structure_io.h"
|
|
Packit |
427e91 |
#include "connectionwizard.h"
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
ConnectionWizard::ConnectionWizard(bool o, StrGlobal *g, RouteInfo *r)
|
|
Packit |
427e91 |
: ConnectionWizardBase()
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
out = o;
|
|
Packit |
427e91 |
global = g;
|
|
Packit |
427e91 |
route = *r;
|
|
Packit |
427e91 |
rptr = r;
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
rtype = None;
|
|
Packit |
427e91 |
pto = NULL;
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
RSItemIO *io = r->getToIO();
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
if (io)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
RSItemBaseWithType *owner = (RSItemBaseWithType *)io->getOwner();
|
|
Packit |
427e91 |
switch (owner->type())
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
case RSItemBaseWithType::In:
|
|
Packit |
427e91 |
rtype = In;
|
|
Packit |
427e91 |
break;
|
|
Packit |
427e91 |
case RSItemBaseWithType::Out:
|
|
Packit |
427e91 |
rtype = Out;
|
|
Packit |
427e91 |
break;
|
|
Packit |
427e91 |
case RSItemBaseWithType::FX:
|
|
Packit |
427e91 |
rtype = FX;
|
|
Packit |
427e91 |
break;
|
|
Packit |
427e91 |
case RSItemBaseWithType::Patch:
|
|
Packit |
427e91 |
if (io->isOutput())
|
|
Packit |
427e91 |
rtype = POut;
|
|
Packit |
427e91 |
else
|
|
Packit |
427e91 |
rtype = PIn;
|
|
Packit |
427e91 |
pto = (StrPatch *)owner;
|
|
Packit |
427e91 |
break;
|
|
Packit |
427e91 |
default:
|
|
Packit |
427e91 |
break;
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
if (!out)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
rbOutput->hide();
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
else
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
rbFX->hide();
|
|
Packit |
427e91 |
rbInput->hide();
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
StrPatch *patch;
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
lbPatch->clear();
|
|
Packit |
427e91 |
for(patch = global->Patches.first(); patch; patch = global->Patches.next() )
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
lbPatch->insertItem(patch->name());
|
|
Packit |
427e91 |
patchList.append(patch);
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
connect(rbNone, SIGNAL(clicked()), this, SLOT(noneClicked()));
|
|
Packit |
427e91 |
connect(rbFX, SIGNAL(clicked()), this, SLOT(fxClicked()));
|
|
Packit |
427e91 |
connect(rbInput, SIGNAL(clicked()), this, SLOT(inClicked()));
|
|
Packit |
427e91 |
connect(rbOutput, SIGNAL(clicked()), this, SLOT(outClicked()));
|
|
Packit |
427e91 |
connect(rbPatch, SIGNAL(clicked()), this, SLOT(patchClicked()));
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
connect(lbPatch, SIGNAL(clicked(QListBoxItem *)), this, SLOT(patchListClicked(QListBoxItem *)));
|
|
Packit |
427e91 |
connect(lbEnd, SIGNAL(clicked(QListBoxItem *)), this, SLOT(endListClicked(QListBoxItem *)));
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
connect(finishButton(), SIGNAL(clicked()), this, SLOT(finishClicked()));
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
connect(this, SIGNAL(selected(const QString &)), this, SLOT(selected(const QString &)));
|
|
Packit |
427e91 |
helpButton()->hide();
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
setFinishEnabled(pageType, true);
|
|
Packit |
427e91 |
setNextEnabled(pageType, true);
|
|
Packit |
427e91 |
setFinishEnabled(pagePatch, true);
|
|
Packit |
427e91 |
setNextEnabled(pagePatch, true);
|
|
Packit |
427e91 |
setFinishEnabled(pageEnd, true);
|
|
Packit |
427e91 |
setNextEnabled(pageEnd, true);
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
void ConnectionWizard::setState(bool patch, bool end, bool back, bool next, bool finish)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
setAppropriate(pagePatch, patch ? true : false);
|
|
Packit |
427e91 |
setAppropriate(pageEnd, end ? true : false);
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
backButton()->setEnabled(back ? true : false);
|
|
Packit |
427e91 |
nextButton()->setEnabled(next ? true : false);
|
|
Packit |
427e91 |
finishButton()->setEnabled(finish ? true : false);
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
void ConnectionWizard::loadEnd(IOType iotype)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
lbEnd->clear();
|
|
Packit |
427e91 |
ios.clear();
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
if (iotype == In)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
for (int i = 0; i < (int)global->Inputs.count(); i++)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
StrInput *io = global->Inputs.at(i);
|
|
Packit |
427e91 |
ios.append(io->getIO(false, 0));
|
|
Packit |
427e91 |
lbEnd->insertItem(io->name());
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
else if (iotype == Out)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
for (int i = 0; i < (int)global->Outputs.count(); i++)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
StrOutput *io = global->Outputs.at(i);
|
|
Packit |
427e91 |
ios.append(io->getIO(true, 0));
|
|
Packit |
427e91 |
lbEnd->insertItem(io->name());
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
else if (iotype == FX)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
for (int i = 0; i < (int)global->FXs.count(); i++)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
StrFX *io = global->FXs.at(i);
|
|
Packit |
427e91 |
ios.append(io->getIO(false, 0));
|
|
Packit |
427e91 |
lbEnd->insertItem(io->name());
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
void ConnectionWizard::noneClicked()
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
setState(false, false, false, false, true);
|
|
Packit |
427e91 |
if (rtype != ConnectionWizard::None)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
rtype = ConnectionWizard::None;
|
|
Packit |
427e91 |
pto = NULL;
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
void ConnectionWizard::fxClicked()
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
setState(false, true, false, true, false);
|
|
Packit |
427e91 |
if (rtype != ConnectionWizard::FX)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
rtype = ConnectionWizard::FX;
|
|
Packit |
427e91 |
pto = NULL;
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
void ConnectionWizard::inClicked()
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
setState(false, true, false, true, false);
|
|
Packit |
427e91 |
if (rtype != ConnectionWizard::In)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
rtype = ConnectionWizard::In;
|
|
Packit |
427e91 |
pto = NULL;
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
void ConnectionWizard::outClicked()
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
setState(false, true, false, true, false);
|
|
Packit |
427e91 |
if (rtype != ConnectionWizard::Out)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
rtype = ConnectionWizard::Out;
|
|
Packit |
427e91 |
pto = NULL;
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
void ConnectionWizard::patchClicked()
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
setState(true, true, false, true, false);
|
|
Packit |
427e91 |
if (rtype != ConnectionWizard::PIn && rtype != ConnectionWizard::POut)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
if (out)
|
|
Packit |
427e91 |
rtype = ConnectionWizard::PIn;
|
|
Packit |
427e91 |
else
|
|
Packit |
427e91 |
rtype = ConnectionWizard::POut;
|
|
Packit |
427e91 |
pto = NULL;
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
void ConnectionWizard::selected(const QString &page)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
if (page == "Connection target")
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
switch (rtype)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
case None:
|
|
Packit |
427e91 |
rbNone->setChecked(true);
|
|
Packit |
427e91 |
setState(false, false, false, false, true);
|
|
Packit |
427e91 |
break;
|
|
Packit |
427e91 |
case FX:
|
|
Packit |
427e91 |
rbFX->setChecked(true);
|
|
Packit |
427e91 |
setState(false, true, false, true, false);
|
|
Packit |
427e91 |
break;
|
|
Packit |
427e91 |
case In:
|
|
Packit |
427e91 |
rbInput->setChecked(true);
|
|
Packit |
427e91 |
setState(false, true, false, true, false);
|
|
Packit |
427e91 |
break;
|
|
Packit |
427e91 |
case Out:
|
|
Packit |
427e91 |
rbOutput->setChecked(true);
|
|
Packit |
427e91 |
setState(false, true, false, true, false);
|
|
Packit |
427e91 |
break;
|
|
Packit |
427e91 |
case PIn:
|
|
Packit |
427e91 |
case POut:
|
|
Packit |
427e91 |
rbPatch->setChecked(true);
|
|
Packit |
427e91 |
setState(true, true, false, true, false);
|
|
Packit |
427e91 |
break;
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
else if (page == "Patch")
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
finishButton()->setEnabled(false);
|
|
Packit |
427e91 |
if (pto)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
// find patch
|
|
Packit |
427e91 |
lbPatch->setCurrentItem(patchList.find(pto));
|
|
Packit |
427e91 |
nextButton()->setEnabled(true);
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
else
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
QListBoxItem *si = lbPatch->selectedItem();
|
|
Packit |
427e91 |
if (si)
|
|
Packit |
427e91 |
lbPatch->setSelected(si, false);
|
|
Packit |
427e91 |
lbPatch->setCurrentItem(-1);
|
|
Packit |
427e91 |
nextButton()->setEnabled(false);
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
cbMulti->setChecked(route.getMulti());
|
|
Packit |
427e91 |
cbSimple->setChecked(route.getSimple());
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
else if (page == "End")
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
nextButton()->setEnabled(false);
|
|
Packit |
427e91 |
switch (rtype)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
case None:
|
|
Packit |
427e91 |
break;
|
|
Packit |
427e91 |
case FX:
|
|
Packit |
427e91 |
case In:
|
|
Packit |
427e91 |
case Out:
|
|
Packit |
427e91 |
loadEnd(rtype);
|
|
Packit |
427e91 |
break;
|
|
Packit |
427e91 |
case PIn:
|
|
Packit |
427e91 |
case POut:
|
|
Packit |
427e91 |
// load patch in or out
|
|
Packit |
427e91 |
ios.clear();
|
|
Packit |
427e91 |
lbEnd->clear();
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
for (int i = 0; i < (int)pto->getMaxIOIdx(out); i++)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
RSItemIO *io = pto->getIO(out, i);
|
|
Packit |
427e91 |
if (io)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
ios.append(io);
|
|
Packit |
427e91 |
lbEnd->insertItem(io->getDesc());
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
route.setMulti(cbMulti->isChecked());
|
|
Packit |
427e91 |
route.setSimple(cbSimple->isChecked());
|
|
Packit |
427e91 |
break;
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
if (route.getToIO())
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
lbEnd->setCurrentItem(ios.find(route.getToIO()));
|
|
Packit |
427e91 |
finishButton()->setEnabled(true);
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
else
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
QListBoxItem *si = lbEnd->selectedItem();
|
|
Packit |
427e91 |
if (si)
|
|
Packit |
427e91 |
lbEnd->setSelected(si, false);
|
|
Packit |
427e91 |
lbEnd->setCurrentItem(-1);
|
|
Packit |
427e91 |
finishButton()->setEnabled(false);
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
void ConnectionWizard::patchListClicked(QListBoxItem *item)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
pto = patchList.at(lbPatch->index(item));
|
|
Packit |
427e91 |
route.setToIO(NULL);
|
|
Packit |
427e91 |
nextButton()->setEnabled(true);
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
void ConnectionWizard::endListClicked(QListBoxItem *item)
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
route.setToIO(ios.at(lbEnd->index(item)));
|
|
Packit |
427e91 |
finishButton()->setEnabled(true);
|
|
Packit |
427e91 |
}
|
|
Packit |
427e91 |
|
|
Packit |
427e91 |
void ConnectionWizard::finishClicked()
|
|
Packit |
427e91 |
{
|
|
Packit |
427e91 |
*rptr = route;
|
|
Packit |
427e91 |
}
|