diff options
| author | Bent Bisballe Nyeng <deva@aasimon.org> | 2014-04-17 17:55:59 +0200 | 
|---|---|---|
| committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2014-04-17 17:55:59 +0200 | 
| commit | 5935492fe66e408d2656b9a3434b9a89cf5d892c (patch) | |
| tree | 22244114ee093299374e549cbadca31cddd3d2ee | |
| parent | a63f2ded039309e109019a089e3d03523b678ae0 (diff) | |
Added selection editor.
| -rw-r--r-- | dgedit/Makefile.am | 2 | ||||
| -rw-r--r-- | dgedit/mainwindow.cc | 13 | ||||
| -rw-r--r-- | dgedit/selectioneditor.cc | 114 | ||||
| -rw-r--r-- | dgedit/selectioneditor.h | 63 | 
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__*/ | 
