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)22 ScaleSelect::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)36 void ScaleSelect::setLock(bool val)
37       {
38       if (_lock != val) {
39             _lock = val;
40             }
41       }
42 
43 //---------------------------------------------------------
44 //   _scaleChanged
45 //---------------------------------------------------------
46 
xScaleChanged()47 void 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()57 void 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() const71 QSizeF ScaleSelect::scale() const
72       {
73       return QSizeF(xVal->value(), yVal->value());
74       }
75 
76 //---------------------------------------------------------
77 //   blockScale
78 //---------------------------------------------------------
79 
blockScale(bool val)80 void ScaleSelect::blockScale(bool val)
81       {
82       xVal->blockSignals(val);
83       yVal->blockSignals(val);
84       }
85 
86 //---------------------------------------------------------
87 //   setScale
88 //---------------------------------------------------------
89 
setScale(const QSizeF & o)90 void 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