From ad507206af844ea5f9ca0b89726a92e159fc9c8c Mon Sep 17 00:00:00 2001 From: Robert Jonsson Date: Tue, 4 Oct 2011 18:58:03 +0000 Subject: fixes to SigEdit --- muse2/awl/sigedit.cpp | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) (limited to 'muse2/awl/sigedit.cpp') diff --git a/muse2/awl/sigedit.cpp b/muse2/awl/sigedit.cpp index 74e4b060..0cad9057 100644 --- a/muse2/awl/sigedit.cpp +++ b/muse2/awl/sigedit.cpp @@ -43,8 +43,8 @@ SigEdit::SigEdit(QWidget* parent) { initialized = false; slash = new QLabel("/",this); - zSpin = new QSpinBox(this); - nSpin = new QSpinBox(this); + zSpin = new SigSpinBox(this); + nSpin = new SigSpinBox(this); zSpin->setRange(1,100); nSpin->setRange(1,100); layout = new QHBoxLayout(this); @@ -53,10 +53,15 @@ SigEdit::SigEdit(QWidget* parent) layout->addWidget(zSpin); layout->addWidget(slash); layout->addWidget(nSpin); - layout->addSpacing(40); + layout->addSpacing(30); connect(zSpin, SIGNAL(valueChanged(int)), SLOT(setZ(int))); connect(nSpin, SIGNAL(valueChanged(int)), SLOT(setN(int))); + connect(nSpin, SIGNAL(returnPressed()), SIGNAL(returnPressed())); + connect(zSpin, SIGNAL(returnPressed()), SIGNAL(returnPressed())); + connect(zSpin, SIGNAL(moveFocus()), SLOT(moveFocus())); + connect(nSpin, SIGNAL(moveFocus()), SLOT(moveFocus())); + zSpin->selectAll(); } SigEdit::~SigEdit() @@ -67,6 +72,22 @@ SigEdit::~SigEdit() } +//--------------------------------------------------------- +// moveFocus +//--------------------------------------------------------- + +void SigEdit::moveFocus() +{ + if (zSpin->hasFocus()) { + nSpin->setFocus(); + nSpin->selectAll(); + } + else { + zSpin->setFocus(); + zSpin->selectAll(); + } +} + //--------------------------------------------------------- // setZ //--------------------------------------------------------- @@ -118,13 +139,18 @@ void SigEdit::updateValue() nSpin->setValue(_sig.n); } - void SigEdit::paintEvent(QPaintEvent* event) { +void SigEdit::paintEvent(QPaintEvent* event) { if (!initialized) updateValue(); initialized = true; QPainter p(this); - p.fillRect(event->rect(), Qt::white); + p.fillRect(event->rect(), p.background()); QWidget::paintEvent(event); } +void SigEdit::setFocus() +{ + zSpin->setFocus(); +} + } -- cgit v1.2.3 From b936d9e9af142158c01d984d4fc9c47717148a35 Mon Sep 17 00:00:00 2001 From: Robert Jonsson Date: Wed, 5 Oct 2011 20:52:49 +0000 Subject: more SigEdit --- muse2/ChangeLog | 2 ++ muse2/awl/sigedit.cpp | 3 ++- muse2/awl/sigspinbox.cpp | 30 ++++++++++++++++++++++++++++++ muse2/awl/sigspinbox.h | 3 ++- muse2/muse/master/lmaster.cpp | 15 ++++++++++++++- muse2/muse/master/lmaster.h | 3 +++ 6 files changed, 53 insertions(+), 3 deletions(-) (limited to 'muse2/awl/sigedit.cpp') diff --git a/muse2/ChangeLog b/muse2/ChangeLog index 6487f593..fad3182b 100644 --- a/muse2/ChangeLog +++ b/muse2/ChangeLog @@ -1,3 +1,5 @@ +05.09.2011: + - SigEdit, up/down arrow in denominator only moves between powers of two, 2,4,8...128 (rj) 04.09.2011: - More fixes to SigEdit, close on enter, navigate with arrows and / between values, fixed background color, focus (rj) 02.09.2011: diff --git a/muse2/awl/sigedit.cpp b/muse2/awl/sigedit.cpp index 0cad9057..ecfa4551 100644 --- a/muse2/awl/sigedit.cpp +++ b/muse2/awl/sigedit.cpp @@ -46,7 +46,8 @@ SigEdit::SigEdit(QWidget* parent) zSpin = new SigSpinBox(this); nSpin = new SigSpinBox(this); zSpin->setRange(1,100); - nSpin->setRange(1,100); + nSpin->setDenominator(); + nSpin->setRange(1,128); layout = new QHBoxLayout(this); layout->setContentsMargins(0,0,0,0); layout->setSpacing(1); diff --git a/muse2/awl/sigspinbox.cpp b/muse2/awl/sigspinbox.cpp index 3f1bf1f4..5ee98bc9 100644 --- a/muse2/awl/sigspinbox.cpp +++ b/muse2/awl/sigspinbox.cpp @@ -1,10 +1,12 @@ #include "sigspinbox.h" +#include "al/sig.h" #include #include SigSpinBox::SigSpinBox(QWidget *parent) : QSpinBox(parent) { + _denominator=false; } void SigSpinBox::keyPressEvent(QKeyEvent*ev) { @@ -17,8 +19,36 @@ void SigSpinBox::keyPressEvent(QKeyEvent*ev) case Qt::Key_Slash: emit moveFocus(); break; + case Qt::Key_Up: + if (_denominator) { + // make sure that sig is valid then increase + AL::TimeSignature sig(4,value()); + if (sig.isValid()) + setValue(value()*2); + return; + } + break; + case Qt::Key_Down: + if (_denominator) { + // make sure that sig is valid then increase + AL::TimeSignature sig(4,value()); + if (sig.isValid()) { + int v = value()/2; + if (v<2) + v=2; + setValue(v); + return; + } + return; + } + break; default: break; } QSpinBox::keyPressEvent(ev); } + +void SigSpinBox::setDenominator() +{ + _denominator=true; +} diff --git a/muse2/awl/sigspinbox.h b/muse2/awl/sigspinbox.h index ca893a24..2465bdf2 100644 --- a/muse2/awl/sigspinbox.h +++ b/muse2/awl/sigspinbox.h @@ -6,11 +6,12 @@ class SigSpinBox : public QSpinBox { Q_OBJECT - + bool _denominator; protected: virtual void keyPressEvent(QKeyEvent*); public: explicit SigSpinBox(QWidget *parent = 0); + void setDenominator(); signals: void returnPressed(); diff --git a/muse2/muse/master/lmaster.cpp b/muse2/muse/master/lmaster.cpp index ce6010c7..a64d444f 100644 --- a/muse2/muse/master/lmaster.cpp +++ b/muse2/muse/master/lmaster.cpp @@ -1063,5 +1063,18 @@ void LMaster::initShortcuts() void LMaster::comboboxTimerSlot() { - key_editor->showPopup(); + key_editor->showPopup(); } + +//void LMaster::keyPressEvent(QKeyEvent*ev) +//{ +// switch (ev->key()) { +// case Qt::Key_Return: +// // add return as a valid action for editing values too +// cmd (CMD_EDIT_VALUE); +// break; +// default: +// break; +// } +// MidiEditor::keyPressEvent(ev); +//} diff --git a/muse2/muse/master/lmaster.h b/muse2/muse/master/lmaster.h index 4d2c03e9..66acff47 100644 --- a/muse2/muse/master/lmaster.h +++ b/muse2/muse/master/lmaster.h @@ -152,6 +152,9 @@ class LMaster : public MidiEditor { QAction *tempoAction, *signAction, *posAction, *valAction, *delAction, *keyAction; +// protected: +// virtual void keyPressEvent(QKeyEvent*); + private slots: void select(QTreeWidgetItem*, QTreeWidgetItem*); void itemDoubleClicked(QTreeWidgetItem* item); -- cgit v1.2.3 From 42039e7f7f215f6008829d8c6be591c998f1228c Mon Sep 17 00:00:00 2001 From: Robert Jonsson Date: Thu, 6 Oct 2011 19:59:32 +0000 Subject: more SigEdit --- muse2/ChangeLog | 3 +++ muse2/awl/sigedit.cpp | 7 +------ muse2/awl/sigspinbox.cpp | 47 +++++++++++++++++++++++++---------------------- muse2/awl/sigspinbox.h | 1 + 4 files changed, 30 insertions(+), 28 deletions(-) (limited to 'muse2/awl/sigedit.cpp') diff --git a/muse2/ChangeLog b/muse2/ChangeLog index fad3182b..a8b40579 100644 --- a/muse2/ChangeLog +++ b/muse2/ChangeLog @@ -1,3 +1,6 @@ +06.09.2011: + - SigEdit, up/down arrow in denominator only moves between powers of two (decreased thick headedness), + numerator is no longer validated (rj) 05.09.2011: - SigEdit, up/down arrow in denominator only moves between powers of two, 2,4,8...128 (rj) 04.09.2011: diff --git a/muse2/awl/sigedit.cpp b/muse2/awl/sigedit.cpp index ecfa4551..d3685a53 100644 --- a/muse2/awl/sigedit.cpp +++ b/muse2/awl/sigedit.cpp @@ -96,12 +96,7 @@ void SigEdit::moveFocus() void SigEdit::setZ(const int z) { _sig.z=z; - if (_sig.isValid()) { - zSpin->setStyleSheet(""); - emit valueChanged(_sig); - } - else - zSpin->setStyleSheet("QSpinBox { background-color: red; }"); + emit valueChanged(_sig); } //--------------------------------------------------------- // setN diff --git a/muse2/awl/sigspinbox.cpp b/muse2/awl/sigspinbox.cpp index 5ee98bc9..6e38b164 100644 --- a/muse2/awl/sigspinbox.cpp +++ b/muse2/awl/sigspinbox.cpp @@ -13,34 +13,13 @@ void SigSpinBox::keyPressEvent(QKeyEvent*ev) switch (ev->key()) { case Qt::Key_Return: emit returnPressed(); + return; break; case Qt::Key_Left: case Qt::Key_Right: case Qt::Key_Slash: emit moveFocus(); - break; - case Qt::Key_Up: - if (_denominator) { - // make sure that sig is valid then increase - AL::TimeSignature sig(4,value()); - if (sig.isValid()) - setValue(value()*2); - return; - } - break; - case Qt::Key_Down: - if (_denominator) { - // make sure that sig is valid then increase - AL::TimeSignature sig(4,value()); - if (sig.isValid()) { - int v = value()/2; - if (v<2) - v=2; - setValue(v); - return; - } return; - } break; default: break; @@ -52,3 +31,27 @@ void SigSpinBox::setDenominator() { _denominator=true; } + +void SigSpinBox::stepBy(int step) +{ + if (!_denominator) { + setValue(value() + step); + return; + } + + AL::TimeSignature sig(4, value()); + if (step == 1) { + // make sure that sig is valid then increase + if (sig.isValid()) + setValue(value() * 2); + } + else if (step == -1) { + // make sure that sig is valid then increase + if (sig.isValid()) { + int v = value() / 2; + if (v < 2) + v = 2; + setValue(v); + } + } +} diff --git a/muse2/awl/sigspinbox.h b/muse2/awl/sigspinbox.h index 2465bdf2..92fd1cbc 100644 --- a/muse2/awl/sigspinbox.h +++ b/muse2/awl/sigspinbox.h @@ -9,6 +9,7 @@ class SigSpinBox : public QSpinBox bool _denominator; protected: virtual void keyPressEvent(QKeyEvent*); + virtual void stepBy(int); public: explicit SigSpinBox(QWidget *parent = 0); void setDenominator(); -- cgit v1.2.3