From 5935492fe66e408d2656b9a3434b9a89cf5d892c Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Thu, 17 Apr 2014 17:55:59 +0200 Subject: Added selection editor. --- dgedit/Makefile.am | 2 + dgedit/mainwindow.cc | 13 +++++- dgedit/selectioneditor.cc | 114 ++++++++++++++++++++++++++++++++++++++++++++++ dgedit/selectioneditor.h | 63 +++++++++++++++++++++++++ 4 files changed, 191 insertions(+), 1 deletion(-) create mode 100644 dgedit/selectioneditor.cc create mode 100644 dgedit/selectioneditor.h 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 +#include +#include + +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 + +#include +#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__*/ -- cgit v1.2.3