diff options
Diffstat (limited to 'src/rangeeditor.cc')
-rw-r--r-- | src/rangeeditor.cc | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/src/rangeeditor.cc b/src/rangeeditor.cc new file mode 100644 index 0000000..868f434 --- /dev/null +++ b/src/rangeeditor.cc @@ -0,0 +1,123 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + * rangeeditor.cc + * + * Thu Apr 17 17:25:18 CEST 2014 + * Copyright 2014 Bent Bisballe Nyeng + * deva@aasimon.org + ****************************************************************************/ + +/* + * This file is part of DrumGizmo. + * + * DrumGizmo is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * DrumGizmo 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 DrumGizmo; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ +#include "rangeeditor.h" + +#include "project.h" + +#include <QHBoxLayout> +#include <QVBoxLayout> +#include <QLabel> + +static QLineEdit *createWidget(QString name, QWidget* parent) +{ + QHBoxLayout* l = new QHBoxLayout(); + + l->addWidget(new QLabel(name)); + + QLineEdit* edt = new QLineEdit(); + QObject::connect(edt, SIGNAL(editingFinished()), + parent, SLOT(updateRange())); + + l->addWidget(edt); + + ((QHBoxLayout*)parent->layout())->addLayout(l); + + return edt; +} + +RangeEditor::RangeEditor(Ranges &s, Instrument& instrument) + : ranges(s) + , instrument(instrument) +{ + cur = SEL_NONE; + + setLayout(new QVBoxLayout()); + + from = createWidget(tr("From:"), this); + to = createWidget(tr("To:"), this); + fadein = createWidget(tr("FadeIn:"), this); + fadeout = createWidget(tr("FadeOut:"), this); + energy = createWidget(tr("Energy:"), this); + name = createWidget(tr("Name:"), this); + + ((QHBoxLayout*)layout())->addStretch(); +} + +void RangeEditor::updateRange() +{ + Range sel; + + sel.from = from->text().toInt(); + sel.to = to->text().toInt(); + sel.fadein = fadein->text().toInt(); + sel.fadeout = fadeout->text().toInt(); + sel.energy = energy->text().toDouble(); + sel.name = name->text(); + + ranges.update(cur, sel); + + instrument.setRanges(ranges); +} + +void RangeEditor::update() +{ + Range sel = ranges.get(cur); + from->setText(QString::number(sel.from)); + to->setText(QString::number(sel.to)); + fadein->setText(QString::number(sel.fadein)); + fadeout->setText(QString::number(sel.fadeout)); + energy->setText(QString::number(sel.energy)); + name->setText(sel.name); +} + +void RangeEditor::added(sel_id_t id) +{ + // Nothing to do here... +} + +void RangeEditor::updated(sel_id_t id) +{ + if(cur == id) + { + update(); + } +} + +void RangeEditor::removed(sel_id_t id) +{ + if(cur == id) + { + cur = SEL_NONE; + update(); + } +} + +void RangeEditor::activeChanged(sel_id_t id) +{ + cur = id; + update(); +} |