summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2014-04-17 17:55:59 +0200
committerBent Bisballe Nyeng <deva@aasimon.org>2014-04-17 17:55:59 +0200
commit5935492fe66e408d2656b9a3434b9a89cf5d892c (patch)
tree22244114ee093299374e549cbadca31cddd3d2ee
parenta63f2ded039309e109019a089e3d03523b678ae0 (diff)
Added selection editor.
-rw-r--r--dgedit/Makefile.am2
-rw-r--r--dgedit/mainwindow.cc13
-rw-r--r--dgedit/selectioneditor.cc114
-rw-r--r--dgedit/selectioneditor.h63
4 files changed, 191 insertions, 1 deletions
diff --git a/dgedit/Makefile.am b/dgedit/Makefile.am
index 85253a4..7fb2383 100644
--- a/dgedit/Makefile.am
+++ b/dgedit/Makefile.am
@@ -26,6 +26,7 @@ dgedit_SOURCES = \
player.cc \
samplesorter.cc \
selection.cc \
+ selectioneditor.cc \
volumefader.cc
EXTRA_DIST = \
@@ -42,6 +43,7 @@ EXTRA_DIST = \
player.h \
samplesorter.h \
selection.h \
+ selectioneditor.h \
volumefader.h \
dgedit.qrc
diff --git a/dgedit/mainwindow.cc b/dgedit/mainwindow.cc
index 8cefa82..d573ff4 100644
--- a/dgedit/mainwindow.cc
+++ b/dgedit/mainwindow.cc
@@ -49,6 +49,7 @@
#include "canvastoolthreshold.h"
#include "canvastoollisten.h"
#include "volumefader.h"
+#include "selectioneditor.h"
#define MAXVAL 10000000L
#define SINGLESTEP MAXVAL/100000
@@ -96,6 +97,8 @@ MainWindow::MainWindow()
tool_selections, SLOT(thresholdChanged(double)));
connect(&selections, SIGNAL(activeChanged(sel_id_t)),
canvas, SLOT(update()));
+ connect(&selections, SIGNAL(updated(sel_id_t)),
+ canvas, SLOT(update()));
addTool(toolbar, canvas, tool_selections);
QMenu *fileMenu = menuBar()->addMenu("&File");
@@ -251,7 +254,15 @@ QWidget *MainWindow::createFilesTab()
QWidget *MainWindow::createEditTab()
{
- return new QWidget();
+ SelectionEditor *se = new SelectionEditor(selections);
+
+ connect(&selections, SIGNAL(added(sel_id_t)), se, SLOT(added(sel_id_t)));
+ connect(&selections, SIGNAL(updated(sel_id_t)), se, SLOT(updated(sel_id_t)));
+ connect(&selections, SIGNAL(removed(sel_id_t)), se, SLOT(removed(sel_id_t)));
+ connect(&selections, SIGNAL(activeChanged(sel_id_t)),
+ se, SLOT(activeChanged(sel_id_t)));
+
+ return se;
}
QWidget *MainWindow::createGenerateTab()
diff --git a/dgedit/selectioneditor.cc b/dgedit/selectioneditor.cc
new file mode 100644
index 0000000..e8db104
--- /dev/null
+++ b/dgedit/selectioneditor.cc
@@ -0,0 +1,114 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ * selectioneditor.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 "selectioneditor.h"
+
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QLabel>
+
+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(updateSelection()));
+
+ l->addWidget(edt);
+
+ ((QHBoxLayout *)parent->layout())->addLayout(l);
+
+ return edt;
+}
+
+SelectionEditor::SelectionEditor(Selections &s)
+ : selections(s)
+{
+ cur = SEL_NONE;
+
+ setLayout(new QVBoxLayout());
+
+ from = createWidget("From:", this);
+ to = createWidget("To:", this);
+ fadein = createWidget("FadeIn:", this);
+ fadeout = createWidget("FadeOut:", this);
+ energy = createWidget("Energy:", this);
+ name = createWidget("Name:", this);
+}
+
+void SelectionEditor::updateSelection()
+{
+ Selection 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();
+
+ selections.update(cur, sel);
+}
+
+void SelectionEditor::update()
+{
+ Selection sel = selections.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 SelectionEditor::added(sel_id_t id)
+{
+ // Nothing to do here...
+}
+
+void SelectionEditor::updated(sel_id_t id)
+{
+ if(cur == id) {
+ update();
+ }
+}
+
+void SelectionEditor::removed(sel_id_t id)
+{
+ if(cur == id) {
+ cur = SEL_NONE;
+ update();
+ }
+}
+
+void SelectionEditor::activeChanged(sel_id_t id)
+{
+ cur = id;
+ update();
+}
diff --git a/dgedit/selectioneditor.h b/dgedit/selectioneditor.h
new file mode 100644
index 0000000..55d8e33
--- /dev/null
+++ b/dgedit/selectioneditor.h
@@ -0,0 +1,63 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ * selectioneditor.h
+ *
+ * Thu Apr 17 17:25:17 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.
+ */
+#ifndef __DRUMGIZMO_SELECTIONEDITOR_H__
+#define __DRUMGIZMO_SELECTIONEDITOR_H__
+
+#include <QWidget>
+
+#include <QLineEdit>
+#include "selection.h"
+
+class SelectionEditor : public QWidget {
+Q_OBJECT
+public:
+ SelectionEditor(Selections &selections);
+
+public slots:
+ void added(sel_id_t id);
+ void updated(sel_id_t id);
+ void removed(sel_id_t id);
+ void activeChanged(sel_id_t id);
+
+private slots:
+ void update();
+ void updateSelection();
+
+private:
+ Selections &selections;
+
+ sel_id_t cur;
+
+ QLineEdit *from;
+ QLineEdit *to;
+ QLineEdit *fadein;
+ QLineEdit *fadeout;
+ QLineEdit *energy;
+ QLineEdit *name;
+};
+
+#endif/*__DRUMGIZMO_SELECTIONEDITOR_H__*/