Keeps custom texts and actual values entered in TimeSig properties dlg box
This commit is contained in:
parent
4afe07da6c
commit
d133699311
7 changed files with 50 additions and 38 deletions
|
@ -587,8 +587,8 @@ printf("insert local timesig\n");
|
|||
undoAddElement(nsig);
|
||||
}
|
||||
else {
|
||||
undo(new ChangeTimesig(nsig, false,
|
||||
ts->sig(), ts->stretch(), ts->subtype()));
|
||||
undo(new ChangeTimesig(nsig, false, ts->sig(), ts->stretch(),
|
||||
ts->numeratorString(), ts->denominatorString(), ts->subtype()));
|
||||
nsig->setDropTarget(0); // DEBUG
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,17 +48,11 @@ TimeSig::TimeSig(Score* s)
|
|||
void TimeSig::setSig(const Fraction& f, TimeSigType st)
|
||||
{
|
||||
if (_sig != f) {
|
||||
customText = false;
|
||||
// customText = false;
|
||||
_sig = f;
|
||||
}
|
||||
if (st == TSIG_FOUR_FOUR) {
|
||||
_sig.set(4, 4);
|
||||
if (st == TSIG_FOUR_FOUR || st == TSIG_ALLA_BREVE)
|
||||
customText = false;
|
||||
}
|
||||
else if (st == TSIG_ALLA_BREVE) {
|
||||
_sig.set(2, 2);
|
||||
customText = false;
|
||||
}
|
||||
_subtype = st;
|
||||
layout1();
|
||||
}
|
||||
|
@ -97,7 +91,10 @@ Element* TimeSig::drop(const DropData& data)
|
|||
void TimeSig::setNumeratorString(const QString& a)
|
||||
{
|
||||
_numeratorString = a;
|
||||
customText = !(_numeratorString.isEmpty() && _denominatorString.isEmpty());
|
||||
// text is custom if only one string is present or if either string is not the default string
|
||||
customText = _numeratorString.isEmpty() != _denominatorString.isEmpty()
|
||||
|| ( !_numeratorString.isEmpty() && _numeratorString != QString::number(_sig.numerator()) )
|
||||
|| ( !_denominatorString.isEmpty() && _denominatorString != QString::number(_sig.denominator()) );
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
|
@ -107,7 +104,10 @@ void TimeSig::setNumeratorString(const QString& a)
|
|||
void TimeSig::setDenominatorString(const QString& a)
|
||||
{
|
||||
_denominatorString = a;
|
||||
customText = !(_numeratorString.isEmpty() && _denominatorString.isEmpty());
|
||||
// text is custom if only one string is present or if either string is not the default string
|
||||
customText = _numeratorString.isEmpty() != _denominatorString.isEmpty()
|
||||
|| ( !_numeratorString.isEmpty() && _numeratorString != QString::number(_sig.numerator()) )
|
||||
|| ( !_denominatorString.isEmpty() && _denominatorString != QString::number(_sig.denominator()) );
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
|
|
|
@ -96,8 +96,8 @@ class TimeSig : public Element {
|
|||
Segment* segment() const { return (Segment*)parent(); }
|
||||
Measure* measure() const { return (Measure*)parent()->parent(); }
|
||||
|
||||
bool showCourtesySig() const { return _showCourtesySig; };
|
||||
void setShowCourtesySig(bool v) { _showCourtesySig = v; };
|
||||
bool showCourtesySig() const { return _showCourtesySig; }
|
||||
void setShowCourtesySig(bool v) { _showCourtesySig = v; }
|
||||
void undoSetShowCourtesySig(bool v);
|
||||
|
||||
QString numeratorString() const { return _numeratorString; }
|
||||
|
|
|
@ -2553,14 +2553,16 @@ void ChangeNoteProperties::flip()
|
|||
//---------------------------------------------------------
|
||||
|
||||
ChangeTimesig::ChangeTimesig(TimeSig * _timesig, bool sc, const Fraction& f1,
|
||||
const Fraction& f2, TimeSigType st)
|
||||
const Fraction& f2, QString numStr, QString denStr, TimeSigType st)
|
||||
{
|
||||
timesig = _timesig;
|
||||
showCourtesy = sc;
|
||||
sig = f1;
|
||||
stretch = f2;
|
||||
subtype = st;
|
||||
};
|
||||
timesig = _timesig;
|
||||
showCourtesy = sc;
|
||||
sig = f1;
|
||||
stretch = f2;
|
||||
numeratorString = numStr;
|
||||
denominatorString = denStr;
|
||||
subtype = st;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
// flip
|
||||
|
@ -2569,19 +2571,27 @@ ChangeTimesig::ChangeTimesig(TimeSig * _timesig, bool sc, const Fraction& f1,
|
|||
void ChangeTimesig::flip()
|
||||
{
|
||||
timesig->score()->addRefresh(timesig->abbox());
|
||||
bool sc = timesig->showCourtesySig();
|
||||
Fraction f1 = timesig->sig();
|
||||
Fraction f2 = timesig->stretch();
|
||||
TimeSigType st = timesig->subtype();
|
||||
// setSubType() must come first, as it also calls setSig() with its own parameters
|
||||
bool sc = timesig->showCourtesySig();
|
||||
Fraction f1 = timesig->sig();
|
||||
Fraction f2 = timesig->stretch();
|
||||
QString numStr = timesig->numeratorString();
|
||||
QString denStr = timesig->denominatorString();
|
||||
TimeSigType st = timesig->subtype();
|
||||
|
||||
timesig->setShowCourtesySig(showCourtesy);
|
||||
timesig->setSig(sig, subtype);
|
||||
timesig->setStretch(stretch);
|
||||
showCourtesy = sc;
|
||||
sig = f1;
|
||||
stretch = f2;
|
||||
subtype = st;
|
||||
timesig->layout();
|
||||
timesig->setNumeratorString(numeratorString);
|
||||
timesig->setDenominatorString(denominatorString);
|
||||
|
||||
showCourtesy = sc;
|
||||
sig = f1;
|
||||
stretch = f2;
|
||||
numeratorString = numStr;
|
||||
denominatorString = denStr;
|
||||
subtype = st;
|
||||
|
||||
timesig->layout1();
|
||||
timesig->score()->addRefresh(timesig->abbox());
|
||||
}
|
||||
|
||||
|
|
|
@ -1019,15 +1019,17 @@ class ChangeTimesig : public UndoCommand {
|
|||
Fraction sig;
|
||||
Fraction stretch;
|
||||
TimeSigType subtype;
|
||||
QString numeratorString;
|
||||
QString denominatorString;
|
||||
|
||||
void flip();
|
||||
|
||||
public:
|
||||
ChangeTimesig(TimeSig* _timesig, bool sc, const Fraction&,
|
||||
const Fraction&, TimeSigType subtype);
|
||||
const Fraction&, QString, QString, TimeSigType subtype);
|
||||
virtual void undo() { flip(); }
|
||||
virtual void redo() { flip(); }
|
||||
UNDO_NAME("ChangeTimesig");
|
||||
UNDO_NAME("ChangeTimesig")
|
||||
};
|
||||
|
||||
//---------------------------------------------------------
|
||||
|
|
|
@ -524,8 +524,8 @@ void ScoreView::elementPropertyAction(const QString& cmd, Element* e)
|
|||
}
|
||||
if (cmd == "ts-courtesy") {
|
||||
TimeSig* ts = static_cast<TimeSig*>(e);
|
||||
score()->undo(new ChangeTimesig(static_cast<TimeSig*>(e),
|
||||
!ts->showCourtesySig(), ts->sig(), ts->stretch(), ts->subtype()));
|
||||
score()->undo(new ChangeTimesig(static_cast<TimeSig*>(e), !ts->showCourtesySig(), ts->sig(),
|
||||
ts->stretch(), ts->numeratorString(), ts->denominatorString(), ts->subtype()));
|
||||
}
|
||||
else if (cmd == "ts-props") {
|
||||
TimeSig* ts = static_cast<TimeSig*>(e);
|
||||
|
@ -539,8 +539,8 @@ void ScoreView::elementPropertyAction(const QString& cmd, Element* e)
|
|||
|| r.sig() != ts->sig()
|
||||
|| stretchChanged
|
||||
|| r.subtype() != ts->subtype()) {
|
||||
score()->undo(new ChangeTimesig(ts,
|
||||
r.showCourtesySig(), r.sig(), r.stretch(), r.subtype()));
|
||||
score()->undo(new ChangeTimesig(ts, r.showCourtesySig(), r.sig(), r.stretch(),
|
||||
r.numeratorString(), r.denominatorString(), r.subtype()));
|
||||
if (stretchChanged)
|
||||
score()->timesigStretchChanged(ts, ts->measure(), ts->staffIdx());
|
||||
}
|
||||
|
|
|
@ -71,7 +71,7 @@ void TimeSigProperties::accept()
|
|||
ts = TSIG_ALLA_BREVE;
|
||||
|
||||
Fraction actual(zActual->value(), nActual->value());
|
||||
Fraction nominal(zActual->value(), nActual->value());
|
||||
Fraction nominal(zNominal->value(), nNominal->value());
|
||||
timesig->setSig(actual, ts);
|
||||
timesig->setStretch(nominal / actual);
|
||||
QDialog::accept();
|
||||
|
|
Loading…
Reference in a new issue