1 //============================================================================= 2 // MuseScore 3 // Music Composition & Notation 4 // 5 // Copyright (C) 2017 Werner Schweer and others 6 // 7 // This program is free software; you can redistribute it and/or modify 8 // it under the terms of the GNU General Public License version 2 9 // as published by the Free Software Foundation and appearing in 10 // the file LICENSE.GPL 11 //============================================================================= 12 13 #include "scaleSelect.h" 14 #include "libmscore/types.h" 15 16 namespace Ms { 17 18 //--------------------------------------------------------- 19 // ScaleSelect 20 //--------------------------------------------------------- 21 ScaleSelect(QWidget * parent)22ScaleSelect::ScaleSelect(QWidget* parent) 23 : QWidget(parent) 24 { 25 setupUi(this); 26 27 _lock = false; 28 connect(xVal, SIGNAL(valueChanged(double)), SLOT(xScaleChanged())); 29 connect(yVal, SIGNAL(valueChanged(double)), SLOT(yScaleChanged())); 30 } 31 32 //--------------------------------------------------------- 33 // setLock 34 //--------------------------------------------------------- 35 setLock(bool val)36void ScaleSelect::setLock(bool val) 37 { 38 if (_lock != val) { 39 _lock = val; 40 } 41 } 42 43 //--------------------------------------------------------- 44 // _scaleChanged 45 //--------------------------------------------------------- 46 xScaleChanged()47void ScaleSelect::xScaleChanged() 48 { 49 if (_lock) { 50 blockScale(true); 51 yVal->setValue(xVal->value()); 52 blockScale(false); 53 } 54 emit scaleChanged(QSizeF(xVal->value(), yVal->value())); 55 } 56 yScaleChanged()57void ScaleSelect::yScaleChanged() 58 { 59 if (_lock) { 60 blockScale(true); 61 xVal->setValue(yVal->value()); 62 blockScale(false); 63 } 64 emit scaleChanged(QSizeF(xVal->value(), yVal->value())); 65 } 66 67 //--------------------------------------------------------- 68 // scale 69 //--------------------------------------------------------- 70 scale() const71QSizeF ScaleSelect::scale() const 72 { 73 return QSizeF(xVal->value(), yVal->value()); 74 } 75 76 //--------------------------------------------------------- 77 // blockScale 78 //--------------------------------------------------------- 79 blockScale(bool val)80void ScaleSelect::blockScale(bool val) 81 { 82 xVal->blockSignals(val); 83 yVal->blockSignals(val); 84 } 85 86 //--------------------------------------------------------- 87 // setScale 88 //--------------------------------------------------------- 89 setScale(const QSizeF & o)90void ScaleSelect::setScale(const QSizeF& o) 91 { 92 blockScale(true); 93 xVal->setValue(o.width()); 94 yVal->setValue(o.height()); 95 blockScale(false); 96 } 97 98 } 99 100 101