note inspector update

This commit is contained in:
ws 2013-03-07 13:31:14 +01:00
parent 10ca5f9d6f
commit 1d49724386
20 changed files with 484 additions and 855 deletions

View file

@ -13,6 +13,7 @@
#include "durationtype.h"
#include "mscore.h"
#include "note.h"
//---------------------------------------------------------
// dots
@ -125,7 +126,7 @@ qDebug("TDuration::name(): invalid duration type %d", _val);
int TDuration::headType() const
{
int headType = 0;
int headType = Note::HEAD_WHOLE;
switch(_val) {
case V_256TH:
case V_128TH:
@ -134,25 +135,25 @@ int TDuration::headType() const
case V_16TH:
case V_EIGHT:
case V_QUARTER:
headType = 2;
headType = Note::HEAD_QUARTER;
break;
case V_HALF:
headType = 1;
headType = Note::HEAD_HALF;
break;
case V_MEASURE:
case V_WHOLE:
headType = 0;
headType = Note::HEAD_WHOLE;
break;
case V_BREVE:
headType = 3;
headType = Note::HEAD_BREVIS;
break;
case V_LONG:
headType = 3;
headType = Note::HEAD_BREVIS;
break;
default:
case V_INVALID:
case V_ZERO:
headType = 2;
headType = Note::HEAD_QUARTER;
break;
}
return headType;

View file

@ -312,7 +312,7 @@ int Note::noteHead() const
}
else {
hg = 1;
ht = 2; // default quarter head
ht = HEAD_QUARTER;
}
if (_headType != HEAD_AUTO)
ht = _headType;
@ -334,7 +334,7 @@ int Note::noteHead() const
qreal Note::headWidth() const
{
int head = noteHead();
int head = noteHead();
qreal val = symbols[score()->symIdx()][head].width(magS());
return val;
}
@ -1958,7 +1958,6 @@ void Note::undoSetHeadGroup(NoteHeadGroup val)
void Note::setHeadType(NoteHeadType t)
{
Q_ASSERT(t >= 0 && t < HEAD_TYPES);
_headType = t;
}

View file

@ -93,7 +93,7 @@ QT4_WRAP_CPP (mocs
inspectorGroupElement.h inspectorImage.h waveview.h helpBrowser.h
inspectorLasso.h inspectorVolta.h inspectorOttava.h inspectorTrill.h
inspectorHairpin.h qmlplugin.h palettebox.h workspace.h pluginManager.h
inspectorJump.h inspectorMarker.h inspectorGlissando.h
inspectorJump.h inspectorMarker.h inspectorGlissando.h inspectorNote.h
${OMR_MOCS}
${SCRIPT_MOCS}
)
@ -198,7 +198,7 @@ add_executable ( ${ExecutableName}
inspectorHairpin.cpp qmlplugin.cpp editlyrics.cpp
musicxmlsupport.cpp exportxml.cpp importxml.cpp importxmlfirstpass.cpp
savePositions.cpp pluginManager.cpp inspectorJump.cpp inspectorMarker.cpp
inspectorGlissando.cpp
inspectorGlissando.cpp inspectorNote.cpp
${OMR_FILES}
${AUDIO}
${SCRIPT_FILES}

View file

@ -23,6 +23,7 @@
#include "inspectorMarker.h"
#include "inspectorJump.h"
#include "inspectorGlissando.h"
#include "inspectorNote.h"
#include "musescore.h"
#include "scoreview.h"
@ -74,20 +75,12 @@ Inspector::Inspector(QWidget* parent)
{
setObjectName("inspector");
setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
QScrollArea* sa = new QScrollArea;
sa->setWidgetResizable(true);
QWidget* mainWidget = new QWidget;
mainWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); //??
sa = new QScrollArea;
setWidget(sa);
sa->setWidget(mainWidget);
layout = new QVBoxLayout;
layout->setSpacing(0);
mainWidget->setLayout(layout);
_inspectorEdit = false;
ie = 0;
_element = 0;
layout->addStretch(10);
}
//---------------------------------------------------------
@ -220,7 +213,8 @@ void Inspector::setElements(const QList<Element*>& l)
break;
}
}
layout->insertWidget(0, ie);
sa->setWidget(ie);
setMinimumWidth(ie->width() + sa->frameWidth() * 2 + (width() - sa->width()) + 3);
}
_element = e;
ie->setElement();
@ -399,7 +393,7 @@ InspectorElement::InspectorElement(QWidget* parent)
{
QWidget* w = new QWidget;
b.setupUi(w);
layout->addWidget(w);
_layout->addWidget(w);
iList = {
{ P_COLOR, 0, false, b.color, b.resetColor },
@ -420,7 +414,7 @@ InspectorVBox::InspectorVBox(QWidget* parent)
{
QWidget* w = new QWidget;
vb.setupUi(w);
layout->addWidget(w);
_layout->addWidget(w);
iList = {
{ P_TOP_GAP, 0, false, vb.topGap, vb.resetTopGap },
@ -443,7 +437,7 @@ InspectorHBox::InspectorHBox(QWidget* parent)
{
QWidget* w = new QWidget;
hb.setupUi(w);
layout->addWidget(w);
_layout->addWidget(w);
iList = {
{ P_TOP_GAP, 0, false, hb.leftGap, hb.resetLeftGap },
@ -463,10 +457,10 @@ InspectorArticulation::InspectorArticulation(QWidget* parent)
{
QWidget* w1 = new QWidget;
e.setupUi(w1);
layout->addWidget(w1);
_layout->addWidget(w1);
QWidget* w = new QWidget;
ar.setupUi(w);
layout->addWidget(w);
_layout->addWidget(w);
iList = {
{ P_COLOR, 0, false, e.color, e.resetColor },
@ -488,7 +482,7 @@ InspectorSpacer::InspectorSpacer(QWidget* parent)
{
QWidget* w = new QWidget;
sp.setupUi(w);
layout->addWidget(w);
_layout->addWidget(w);
iList = {
{ P_SPACE, 0, false, sp.height, sp.resetHeight }
@ -595,6 +589,7 @@ void InspectorSegment::apply()
mscore->endCmd();
}
#if 0
static const int heads[] = {
Note::HEAD_NORMAL, Note::HEAD_CROSS, Note::HEAD_DIAMOND, Note::HEAD_TRIANGLE,
Note::HEAD_SLASH, Note::HEAD_XCIRCLE, Note::HEAD_DO, Note::HEAD_RE, Note::HEAD_MI, Note::HEAD_FA,
@ -613,53 +608,8 @@ InspectorNoteBase::InspectorNoteBase(QWidget* parent)
//
// fix order of note heads
//
for (int i = 0; i < Note::HEAD_GROUPS; ++i) {
for (int i = 0; i < Note::HEAD_GROUPS; ++i)
noteHeadGroup->setItemData(i, QVariant(heads[i]));
}
connect(small, SIGNAL(stateChanged(int)), SLOT(smallChanged(int)));
connect(mirrorHead, SIGNAL(currentIndexChanged(int)), SLOT(mirrorHeadChanged(int)));
connect(dotPosition, SIGNAL(currentIndexChanged(int)), SLOT(dotPositionChanged(int)));
connect(ontimeOffset, SIGNAL(valueChanged(int)), SLOT(ontimeOffsetChanged(int)));
connect(offtimeOffset, SIGNAL(valueChanged(int)), SLOT(offtimeOffsetChanged(int)));
connect(resetSmall, SIGNAL(clicked()), SLOT(resetSmallClicked()));
connect(resetMirrorHead, SIGNAL(clicked()), SLOT(resetMirrorClicked()));
connect(resetDotPosition, SIGNAL(clicked()), SLOT(resetDotPositionClicked()));
connect(resetOntimeOffset, SIGNAL(clicked()), SLOT(resetOntimeOffsetClicked()));
connect(resetOfftimeOffset, SIGNAL(clicked()), SLOT(resetOfftimeOffsetClicked()));
connect(noteHeadGroup, SIGNAL(currentIndexChanged(int)), SLOT(noteHeadGroupChanged(int)));
connect(noteHeadType, SIGNAL(currentIndexChanged(int)), SLOT(noteHeadTypeChanged(int)));
connect(tuning, SIGNAL(valueChanged(double)), SLOT(tuningChanged(double)));
connect(velocityType, SIGNAL(currentIndexChanged(int)), SLOT(velocityTypeChanged(int)));
connect(velocity, SIGNAL(valueChanged(int)), SLOT(velocityChanged(int)));
connect(resetNoteHeadGroup, SIGNAL(clicked()), SLOT(resetNoteHeadGroupClicked()));
connect(resetNoteHeadType, SIGNAL(clicked()), SLOT(resetNoteHeadTypeClicked()));
connect(resetTuning, SIGNAL(clicked()), SLOT(resetTuningClicked()));
connect(resetVelocityType, SIGNAL(clicked()), SLOT(resetVelocityTypeClicked()));
}
//---------------------------------------------------------
// block
//---------------------------------------------------------
void InspectorNoteBase::block(bool val)
{
small->blockSignals(val);
mirrorHead->blockSignals(val);
dotPosition->blockSignals(val);
ontimeOffset->blockSignals(val);
offtimeOffset->blockSignals(val);
noteHeadGroup->blockSignals(val);
noteHeadType->blockSignals(val);
tuning->blockSignals(val);
velocity->blockSignals(val);
velocityType->blockSignals(val);
resetSmall->blockSignals(val);
resetMirrorHead->blockSignals(val);
resetDotPosition->blockSignals(val);
resetOntimeOffset->blockSignals(val);
resetOfftimeOffset->blockSignals(val);
}
//---------------------------------------------------------
@ -676,8 +626,6 @@ void InspectorNoteBase::setElement(Note* n)
small->setChecked(note->small());
mirrorHead->setCurrentIndex(note->userMirror());
dotPosition->setCurrentIndex(note->dotPosition());
// ontimeOffset->setValue(note->onTimeUserOffset());
// offtimeOffset->setValue(note->offTimeUserOffset());
int headGroup = note->headGroup();
int headGroupIndex = 0;
@ -700,8 +648,6 @@ void InspectorNoteBase::setElement(Note* n)
resetSmall->setEnabled(note->small());
resetMirrorHead->setEnabled(note->userMirror() != MScore::DH_AUTO);
resetDotPosition->setEnabled(note->dotPosition() != MScore::AUTO);
// resetOntimeOffset->setEnabled(note->onTimeUserOffset());
// resetOfftimeOffset->setEnabled(note->offTimeUserOffset());
block(false);
}
@ -714,8 +660,6 @@ bool InspectorNoteBase::dirty() const
return note->small() != small->isChecked()
|| note->userMirror() != mirrorHead->currentIndex()
|| note->dotPosition() != dotPosition->currentIndex()
// || note->onTimeUserOffset() != ontimeOffset->value()
// || note->offTimeUserOffset() != offtimeOffset->value()
|| note->headGroup() != noteHeadGroup->itemData(noteHeadGroup->currentIndex())
|| note->headType() != (noteHeadType->currentIndex()-1) // NoteHeadType goes from -1 while combo box goes from 0
|| note->tuning() != tuning->value()
@ -743,12 +687,6 @@ void InspectorNoteBase::apply()
val = dotPosition->currentIndex();
if (note->dotPosition() != val)
score->undoChangeProperty(note, P_DOT_POSITION, val);
// val = ontimeOffset->value();
// if (note->onTimeOffset() != val)
// score->undoChangeProperty(note, P_ONTIME_OFFSET, val);
// val = offtimeOffset->value();
// if (note->offTimeOffset() != val)
// score->undoChangeProperty(note, P_OFFTIME_OFFSET, val);
val = noteHeadGroup->itemData(noteHeadGroup->currentIndex()).toInt();
if (note->headGroup() != val)
score->undoChangeProperty(note, P_HEAD_GROUP, val);
@ -775,76 +713,6 @@ void InspectorNoteBase::smallChanged(int)
apply();
}
//---------------------------------------------------------
// mirrorHeadChanged
//---------------------------------------------------------
void InspectorNoteBase::mirrorHeadChanged(int)
{
resetMirrorHead->setEnabled(note->userMirror() != MScore::DH_AUTO);
apply();
}
//---------------------------------------------------------
// dotPositionChanged
//---------------------------------------------------------
void InspectorNoteBase::dotPositionChanged(int)
{
resetDotPosition->setEnabled(note->dotPosition() != MScore::AUTO);
apply();
}
//---------------------------------------------------------
// ontimeOffsetChanged
//---------------------------------------------------------
void InspectorNoteBase::ontimeOffsetChanged(int)
{
// resetOntimeOffset->setEnabled(note->onTimeUserOffset());
apply();
}
//---------------------------------------------------------
// offtimeOffsetChanged
//---------------------------------------------------------
void InspectorNoteBase::offtimeOffsetChanged(int)
{
// resetOfftimeOffset->setEnabled(note->offTimeUserOffset());
apply();
}
//---------------------------------------------------------
// noteHeadGroupChanged
//---------------------------------------------------------
void InspectorNoteBase::noteHeadGroupChanged(int val)
{
resetNoteHeadGroup->setEnabled(val != 0);
apply();
}
//---------------------------------------------------------
// noteHeadTypeChanged
//---------------------------------------------------------
void InspectorNoteBase::noteHeadTypeChanged(int val)
{
resetNoteHeadType->setEnabled(val != 0);
apply();
}
//---------------------------------------------------------
// tuningChanged
//---------------------------------------------------------
void InspectorNoteBase::tuningChanged(double val)
{
resetTuning->setEnabled(val != 0.0);
apply();
}
//---------------------------------------------------------
// velocityTypeChanged
//---------------------------------------------------------
@ -869,296 +737,7 @@ void InspectorNoteBase::velocityTypeChanged(int val)
apply();
}
//---------------------------------------------------------
// velocityChanged
//---------------------------------------------------------
void InspectorNoteBase::velocityChanged(int val)
{
if (velocityType->currentIndex() == MScore::USER_VAL)
_userVelocity = val;
else
_veloOffset = val;
apply();
}
//---------------------------------------------------------
// resetSmall
//---------------------------------------------------------
void InspectorNoteBase::resetSmallClicked()
{
small->setChecked(false);
}
//---------------------------------------------------------
// resetMirrorClicked
//---------------------------------------------------------
void InspectorNoteBase::resetMirrorClicked()
{
mirrorHead->setCurrentIndex(0);
}
//---------------------------------------------------------
// resetDotPositionClicked
//---------------------------------------------------------
void InspectorNoteBase::resetDotPositionClicked()
{
dotPosition->setCurrentIndex(0);
}
//---------------------------------------------------------
// resetOntimeOffsetClicked
//---------------------------------------------------------
void InspectorNoteBase::resetOntimeOffsetClicked()
{
ontimeOffset->setValue(0);
}
//---------------------------------------------------------
// resetOfftimeOffsetClicked
//---------------------------------------------------------
void InspectorNoteBase::resetOfftimeOffsetClicked()
{
offtimeOffset->setValue(0);
}
//---------------------------------------------------------
// resetNoteHeadGroupClicked
//---------------------------------------------------------
void InspectorNoteBase::resetNoteHeadGroupClicked()
{
noteHeadGroup->setCurrentIndex(0);
}
//---------------------------------------------------------
// resetNoteHeadTypeClicked
//---------------------------------------------------------
void InspectorNoteBase::resetNoteHeadTypeClicked()
{
noteHeadType->setCurrentIndex(0);
}
//---------------------------------------------------------
// resetTuningClicked
//---------------------------------------------------------
void InspectorNoteBase::resetTuningClicked()
{
tuning->setValue(0.0);
}
//---------------------------------------------------------
// resetVelocityTypeClicked
//---------------------------------------------------------
void InspectorNoteBase::resetVelocityTypeClicked()
{
velocityType->setCurrentIndex(0);
}
//---------------------------------------------------------
// InspectorNote
//---------------------------------------------------------
InspectorNote::InspectorNote(QWidget* parent)
: InspectorBase(parent)
{
iElement = new InspectorElementElement(this);
layout->addWidget(iElement);
iNote = new InspectorNoteBase(this);
layout->addWidget(iNote);
iChord = new InspectorChord(this);
layout->addWidget(iChord);
iSegment = new InspectorSegment(this);
layout->addWidget(iSegment);
layout->addSpacing(20);
//
// Select
//
QLabel* l = new QLabel;
l->setText(tr("Select"));
QFont font(l->font());
font.setBold(true);
l->setFont(font);
l->setAlignment(Qt::AlignHCenter);
layout->addWidget(l);
QFrame* f = new QFrame;
f->setFrameStyle(QFrame::HLine | QFrame::Raised);
f->setLineWidth(2);
layout->addWidget(f);
QHBoxLayout* hbox = new QHBoxLayout;
dot1 = new QToolButton(this);
dot1->setText(tr("Dot1"));
dot1->setEnabled(false);
hbox->addWidget(dot1);
dot2 = new QToolButton(this);
dot2->setText(tr("Dot2"));
dot2->setEnabled(false);
hbox->addWidget(dot2);
dot3 = new QToolButton(this);
dot3->setText(tr("Dot3"));
dot3->setEnabled(false);
hbox->addWidget(dot3);
hook = new QToolButton(this);
hook->setText(tr("Hook"));
hook->setEnabled(false);
hbox->addWidget(hook);
layout->addLayout(hbox);
hbox = new QHBoxLayout;
stem = new QToolButton(this);
stem->setText(tr("Stem"));
stem->setEnabled(false);
hbox->addWidget(stem);
beam = new QToolButton(this);
beam->setText(tr("Beam"));
beam->setEnabled(false);
hbox->addWidget(beam);
layout->addLayout(hbox);
connect(dot1, SIGNAL(clicked()), SLOT(dot1Clicked()));
connect(dot2, SIGNAL(clicked()), SLOT(dot2Clicked()));
connect(dot3, SIGNAL(clicked()), SLOT(dot3Clicked()));
connect(hook, SIGNAL(clicked()), SLOT(hookClicked()));
connect(stem, SIGNAL(clicked()), SLOT(stemClicked()));
connect(beam, SIGNAL(clicked()), SLOT(beamClicked()));
}
//---------------------------------------------------------
// setElement
//---------------------------------------------------------
void InspectorNote::setElement()
{
Note* note = static_cast<Note*>(inspector->element());
Segment* segment = note->chord()->segment();
iElement->setElement(note);
iNote->setElement(note);
iChord->setElement(note->chord());
iSegment->setElement(segment);
dot1->setEnabled(note->dot(0));
dot2->setEnabled(note->dot(1));
dot3->setEnabled(note->dot(2));
stem->setEnabled(note->chord()->stem());
hook->setEnabled(note->chord()->hook());
beam->setEnabled(note->chord()->beam());
}
//---------------------------------------------------------
// dot1Clicked
//---------------------------------------------------------
void InspectorNote::dot1Clicked()
{
Note* note = static_cast<Note*>(inspector->element());
if (note == 0)
return;
NoteDot* dot = note->dot(0);
if (dot) {
dot->score()->select(dot);
inspector->setElement(dot);
dot->score()->end();
}
}
//---------------------------------------------------------
// dot2Clicked
//---------------------------------------------------------
void InspectorNote::dot2Clicked()
{
Note* note = static_cast<Note*>(inspector->element());
if (note == 0)
return;
NoteDot* dot = note->dot(1);
if (dot) {
dot->score()->select(dot);
inspector->setElement(dot);
dot->score()->end();
}
}
//---------------------------------------------------------
// dot3Clicked
//---------------------------------------------------------
void InspectorNote::dot3Clicked()
{
Note* note = static_cast<Note*>(inspector->element());
if (note == 0)
return;
NoteDot* dot = note->dot(2);
if (dot) {
dot->score()->select(dot);
inspector->setElement(dot);
dot->score()->end();
}
}
//---------------------------------------------------------
// hookClicked
//---------------------------------------------------------
void InspectorNote::hookClicked()
{
Note* note = static_cast<Note*>(inspector->element());
if (note == 0)
return;
Hook* hook = note->chord()->hook();
if (hook) {
note->score()->select(hook);
inspector->setElement(hook);
note->score()->end();
}
}
//---------------------------------------------------------
// stemClicked
//---------------------------------------------------------
void InspectorNote::stemClicked()
{
Note* note = static_cast<Note*>(inspector->element());
if (note == 0)
return;
Stem* stem = note->chord()->stem();
if (stem) {
note->score()->select(stem);
inspector->setElement(stem);
note->score()->end();
}
}
//---------------------------------------------------------
// beamClicked
//---------------------------------------------------------
void InspectorNote::beamClicked()
{
Note* note = static_cast<Note*>(inspector->element());
if (note == 0)
return;
Beam* beam = note->chord()->beam();
if (beam) {
note->score()->select(beam);
inspector->setElement(beam);
note->score()->end();
}
}
#endif
//---------------------------------------------------------
// InspectorRest
@ -1169,13 +748,13 @@ InspectorRest::InspectorRest(QWidget* parent)
{
QWidget* w1 = new QWidget;
e.setupUi(w1);
layout->addWidget(w1);
_layout->addWidget(w1);
QWidget* w2 = new QWidget;
s.setupUi(w2);
layout->addWidget(w2);
_layout->addWidget(w2);
QWidget* w3 = new QWidget;
r.setupUi(w3);
layout->addWidget(w3);
_layout->addWidget(w3);
iList = {
{ P_COLOR, 0, false, e.color, e.resetColor },
@ -1198,13 +777,13 @@ InspectorTimeSig::InspectorTimeSig(QWidget* parent)
{
QWidget* w1 = new QWidget;
e.setupUi(w1);
layout->addWidget(w1);
_layout->addWidget(w1);
QWidget* w2 = new QWidget;
s.setupUi(w2);
layout->addWidget(w2);
_layout->addWidget(w2);
QWidget* w3 = new QWidget;
t.setupUi(w3);
layout->addWidget(w3);
_layout->addWidget(w3);
iList = {
{ P_COLOR, 0, false, e.color, e.resetColor },
@ -1227,13 +806,13 @@ InspectorKeySig::InspectorKeySig(QWidget* parent)
{
QWidget* w1 = new QWidget;
e.setupUi(w1);
layout->addWidget(w1);
_layout->addWidget(w1);
QWidget* w2 = new QWidget;
s.setupUi(w2);
layout->addWidget(w2);
_layout->addWidget(w2);
QWidget* w3 = new QWidget;
k.setupUi(w3);
layout->addWidget(w3);
_layout->addWidget(w3);
iList = {
{ P_COLOR, 0, false, e.color, e.resetColor },
@ -1257,13 +836,13 @@ InspectorClef::InspectorClef(QWidget* parent)
{
QWidget* w1 = new QWidget;
e.setupUi(w1);
layout->addWidget(w1);
_layout->addWidget(w1);
QWidget* w2 = new QWidget;
s.setupUi(w2);
layout->addWidget(w2);
_layout->addWidget(w2);
QWidget* w3 = new QWidget;
c.setupUi(w3);
layout->addWidget(w3);
_layout->addWidget(w3);
iList = {
{ P_COLOR, 0, false, e.color, e.resetColor },
@ -1496,8 +1075,8 @@ InspectorBarLine::InspectorBarLine(QWidget* parent)
: InspectorBase(parent)
{
iElement = new InspectorElementElement(this);
layout->addWidget(iElement);
layout->addSpacing(20);
_layout->addWidget(iElement);
_layout->addSpacing(20);
// "Type" Combo box
QHBoxLayout* l = new QHBoxLayout;
@ -1512,7 +1091,7 @@ InspectorBarLine::InspectorBarLine(QWidget* parent)
connect(type, SIGNAL(currentIndexChanged(int)), SLOT(apply()));
l->addWidget(label);
l->addWidget(type);
layout->addLayout(l);
_layout->addLayout(l);
// "Span" combo box
l = new QHBoxLayout;
@ -1524,7 +1103,7 @@ InspectorBarLine::InspectorBarLine(QWidget* parent)
connect(span, SIGNAL(currentIndexChanged(int)), SLOT(apply()));
l->addWidget(label);
l->addWidget(span);
layout->addLayout(l);
_layout->addLayout(l);
}
//---------------------------------------------------------

View file

@ -95,51 +95,6 @@ class InspectorChord : public QWidget, Ui::InspectorChord {
bool dirty() const;
};
//---------------------------------------------------------
// InspectorNote
//---------------------------------------------------------
class InspectorNoteBase : public QWidget, Ui::InspectorNote {
Q_OBJECT
Note* note;
int _userVelocity;
int _veloOffset;
void block(bool);
private slots:
void resetSmallClicked();
void resetMirrorClicked();
void resetDotPositionClicked();
void resetOntimeOffsetClicked();
void resetOfftimeOffsetClicked();
void resetNoteHeadGroupClicked();
void resetNoteHeadTypeClicked();
void resetTuningClicked();
void resetVelocityTypeClicked();
void smallChanged(int);
void mirrorHeadChanged(int);
void dotPositionChanged(int);
void ontimeOffsetChanged(int);
void offtimeOffsetChanged(int);
void noteHeadGroupChanged(int);
void noteHeadTypeChanged(int);
void tuningChanged(double);
void velocityTypeChanged(int);
void velocityChanged(int);
signals:
void enableApply();
public:
InspectorNoteBase(QWidget* parent = 0);
void setElement(Note*);
void apply();
bool dirty() const;
};
//---------------------------------------------------------
// InspectorElementElement
//---------------------------------------------------------
@ -228,41 +183,6 @@ class InspectorSpacer : public InspectorBase {
InspectorSpacer(QWidget* parent);
};
//---------------------------------------------------------
// InspectorNote
//---------------------------------------------------------
class InspectorNote : public InspectorBase {
Q_OBJECT
InspectorElementElement* iElement;
InspectorNoteBase* iNote;
InspectorChord* iChord;
InspectorSegment* iSegment;
QToolButton* dot1;
QToolButton* dot2;
QToolButton* dot3;
QToolButton* hook;
QToolButton* stem;
QToolButton* beam;
void block(bool);
bool dirty() const;
private slots:
void dot1Clicked();
void dot2Clicked();
void dot3Clicked();
void hookClicked();
void stemClicked();
void beamClicked();
public:
InspectorNote(QWidget* parent);
virtual void setElement();
};
//---------------------------------------------------------
// InspectorRest
//---------------------------------------------------------
@ -355,7 +275,7 @@ class InspectorBarLine : public InspectorBase {
class Inspector : public QDockWidget {
Q_OBJECT
QVBoxLayout* layout;
QScrollArea* sa;
InspectorBase* ie;
QList<Element*> _el;
Element* _element; // currently displayed element

View file

@ -28,15 +28,18 @@ InspectorBase::InspectorBase(QWidget* parent)
resetMapper = new QSignalMapper(this);
valueMapper = new QSignalMapper(this);
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
// setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
inspector = static_cast<Inspector*>(parent);
layout = new QVBoxLayout;
layout->setSizeConstraint(QLayout::SetNoConstraint);
setLayout(layout);
_layout = new QVBoxLayout;
// _layout->setSizeConstraint(QLayout::SetNoConstraint);
_layout->setSpacing(0);
_layout->setContentsMargins(0, 0, 0, 0);
setLayout(_layout);
}
//---------------------------------------------------------
// getValue
// get value from gui element
//---------------------------------------------------------
QVariant InspectorBase::getValue(int idx) const
@ -45,8 +48,15 @@ QVariant InspectorBase::getValue(int idx) const
if (qobject_cast<QDoubleSpinBox*>(w))
return w->property("value");
else if (qobject_cast<QComboBox*>(w))
return w->property("currentIndex");
else if (qobject_cast<QSpinBox*>(w))
return w->property("value");
else if (qobject_cast<QComboBox*>(w)) {
QComboBox* cb = qobject_cast<QComboBox*>(w);
int val = cb->currentIndex();
if (cb->itemData(val).isValid())
val = cb->itemData(val).toInt();
return val;
}
else if (qobject_cast<QCheckBox*>(w))
return w->property("checked");
else if (qobject_cast<QLineEdit*>(w))
@ -54,7 +64,7 @@ QVariant InspectorBase::getValue(int idx) const
else if (qobject_cast<Awl::ColorLabel*>(w))
return static_cast<Awl::ColorLabel*>(w)->color();
else {
qDebug("not supported widget");
qDebug("not supported widget %s", w->metaObject()->className());
abort();
}
return QVariant();
@ -62,6 +72,7 @@ QVariant InspectorBase::getValue(int idx) const
//---------------------------------------------------------
// setValue
// set gui element value
//---------------------------------------------------------
void InspectorBase::setValue(int idx, const QVariant& val)
@ -71,8 +82,21 @@ void InspectorBase::setValue(int idx, const QVariant& val)
if (qobject_cast<QDoubleSpinBox*>(w))
static_cast<QDoubleSpinBox*>(w)->setValue(val.toDouble());
else if (qobject_cast<QComboBox*>(w))
static_cast<QComboBox*>(w)->setCurrentIndex(val.toInt());
else if (qobject_cast<QSpinBox*>(w))
static_cast<QSpinBox*>(w)->setValue(val.toInt());
else if (qobject_cast<QComboBox*>(w)) {
int ival = val.toInt();
QComboBox* cb = qobject_cast<QComboBox*>(w);
if (cb->itemData(0).isValid()) {
for (int i = 0; i < cb->count(); ++i) {
if (cb->itemData(i).toInt() == ival) {
ival = i;
break;
}
}
}
cb->setCurrentIndex(ival);
}
else if (qobject_cast<QCheckBox*>(w))
static_cast<QCheckBox*>(w)->setChecked(val.toBool());
else if (qobject_cast<QLineEdit*>(w))
@ -80,7 +104,7 @@ void InspectorBase::setValue(int idx, const QVariant& val)
else if (qobject_cast<Awl::ColorLabel*>(w))
static_cast<Awl::ColorLabel*>(w)->setColor(val.value<QColor>());
else {
qDebug("not supported widget");
qDebug("not supported widget %s", w->metaObject()->className());
abort();
}
}
@ -93,7 +117,7 @@ bool InspectorBase::isDefault(int idx)
{
Element* e = inspector->element();
const InspectorItem& ii = item(idx);
if (ii.parent)
for (int i = 0; i < ii.parent; ++i)
e = e->parent();
P_ID id = ii.t;
@ -124,7 +148,7 @@ bool InspectorBase::dirty() const
for (int i = 0; i < inspectorItems(); ++i) {
P_ID id = item(i).t;
Element* ee = e;
if (item(i).parent)
for (int ii = 0; ii < item(i).parent; ++ii)
ee = ee->parent();
if (ee->getProperty(id) != getValue(i))
return true;
@ -157,8 +181,8 @@ void InspectorBase::setElement()
P_TYPE pt = propertyType(id);
QVariant val;
Element* e = ee;
if (item(i).parent)
e = ee->parent();
for (int ii = 0; ii < item(i).parent; ++ii)
e = e->parent();
if (pt == T_SIZE || pt == T_SCALE) {
QSizeF sz = e->getProperty(id).toSizeF();
if (item(i).sv == 0)
@ -200,8 +224,8 @@ void InspectorBase::apply()
P_ID id = item(i).t;
P_TYPE pt = propertyType(id);
Element* e = ee;
if (item(i).parent)
e = ee->parent();
for (int ii = 0; ii < item(i).parent; ++ii)
e = e->parent();
QVariant val1 = e->getProperty(id);
if (pt == T_SIZE || pt == T_SCALE) {
@ -248,13 +272,15 @@ void InspectorBase::resetClicked(int i)
{
Element* e = inspector->element();
P_ID id = item(i).t;
if (item(i).parent)
for (int ii = 0; ii < item(i).parent; ++ii)
e = e->parent();
QVariant def = e->propertyDefault(id);
QWidget* w = item(i).w;
if (qobject_cast<QDoubleSpinBox*>(w))
static_cast<QDoubleSpinBox*>(w)->setValue(def.toDouble());
else if (qobject_cast<QSpinBox*>(w))
static_cast<QSpinBox*>(w)->setValue(def.toInt());
else if (qobject_cast<QComboBox*>(w))
static_cast<QComboBox*>(w)->setCurrentIndex(def.toInt());
else if (qobject_cast<QCheckBox*>(w))
@ -266,13 +292,14 @@ void InspectorBase::resetClicked(int i)
valueChanged(i);
}
else {
qDebug("not supported widget");
qDebug("not supported widget %s", w->metaObject()->className());
abort();
}
}
//---------------------------------------------------------
// mapSignals
// initialize inspector panel
//---------------------------------------------------------
void InspectorBase::mapSignals()
@ -287,6 +314,8 @@ void InspectorBase::mapSignals()
valueMapper->setMapping(w, i);
if (qobject_cast<QDoubleSpinBox*>(w))
connect(w, SIGNAL(valueChanged(double)), valueMapper, SLOT(map()));
else if (qobject_cast<QSpinBox*>(w))
connect(w, SIGNAL(valueChanged(int)), valueMapper, SLOT(map()));
else if (qobject_cast<QComboBox*>(w))
connect(w, SIGNAL(currentIndexChanged(int)), valueMapper, SLOT(map()));
else if (qobject_cast<QCheckBox*>(w))
@ -296,10 +325,11 @@ void InspectorBase::mapSignals()
else if (qobject_cast<Awl::ColorLabel*>(w))
connect(w, SIGNAL(colorChanged(QColor)), valueMapper, SLOT(map()));
else {
qDebug("not supported widget");
qDebug("not supported widget %s", w->metaObject()->className());
abort();
}
}
connect(resetMapper, SIGNAL(mapped(int)), SLOT(resetClicked(int)));
connect(valueMapper, SIGNAL(mapped(int)), SLOT(valueChanged(int)));
}

View file

@ -26,7 +26,7 @@ class Element;
struct InspectorItem {
P_ID t;
int sv; // subvalue; example for T_SIZE: 0 - width 1 - height
bool parent;
int parent; // apply to parent() element
QWidget* w;
QToolButton* r;
};
@ -49,7 +49,7 @@ class InspectorBase : public QWidget {
protected:
QVector<InspectorItem> iList;
QVBoxLayout* layout;
QVBoxLayout* _layout;
Inspector* inspector;
virtual void setValue(int idx, const QVariant& val);

View file

@ -25,10 +25,10 @@ InspectorBeam::InspectorBeam(QWidget* parent)
{
QWidget* w1 = new QWidget;
e.setupUi(w1);
layout->addWidget(w1);
_layout->addWidget(w1);
QWidget* w2 = new QWidget;
b.setupUi(w2);
layout->addWidget(w2);
_layout->addWidget(w2);
iList = {
{ P_COLOR, 0, false, e.color, e.resetColor },

View file

@ -25,7 +25,7 @@ InspectorGlissando::InspectorGlissando(QWidget* parent)
{
QWidget* w = new QWidget;
b.setupUi(w);
layout->addWidget(w);
_layout->addWidget(w);
iList = {
{ P_COLOR, 0, false, b.color, b.resetColor },

View file

@ -25,7 +25,7 @@ InspectorGroupElement::InspectorGroupElement(QWidget* parent)
{
QWidget* w = new QWidget;
ge.setupUi(w);
layout->addWidget(w);
layout()->addWidget(w);
ge.color->setColor(Qt::black);
connect(ge.setColor, SIGNAL(clicked()), SLOT(setColor()));
connect(ge.setVisible, SIGNAL(clicked()), SLOT(setVisible()));

View file

@ -24,10 +24,10 @@ InspectorHairpin::InspectorHairpin(QWidget* parent)
: InspectorBase(parent)
{
iElement = new InspectorElementElement(this);
layout->addWidget(iElement);
_layout->addWidget(iElement);
QWidget* w = new QWidget;
iHairpin.setupUi(w);
layout->addWidget(w);
_layout->addWidget(w);
connect(iHairpin.subtype, SIGNAL(currentIndexChanged(int)), SLOT(apply()));
}

View file

@ -30,7 +30,7 @@ InspectorImage::InspectorImage(QWidget* parent)
{
QWidget* w = new QWidget;
b.setupUi(w);
layout->addWidget(w);
_layout->addWidget(w);
iList = {
{ P_AUTOSCALE, 0, false, b.autoscale, b.resetAutoscale },

View file

@ -25,7 +25,7 @@ InspectorJump::InspectorJump(QWidget* parent)
{
QWidget* w = new QWidget;
b.setupUi(w);
layout->addWidget(w);
_layout->addWidget(w);
iList = {
{ P_COLOR, 0, false, b.color, b.resetColor },

View file

@ -24,7 +24,7 @@ InspectorLasso::InspectorLasso(QWidget* parent)
{
QWidget* w = new QWidget;
b.setupUi(w);
layout->addWidget(w);
_layout->addWidget(w);
}
//---------------------------------------------------------

View file

@ -24,10 +24,10 @@ InspectorMarker::InspectorMarker(QWidget* parent)
: InspectorBase(parent)
{
iElement = new InspectorElementElement(this);
layout->addWidget(iElement);
_layout->addWidget(iElement);
QWidget* w = new QWidget;
iMarker.setupUi(w);
layout->addWidget(w);
_layout->addWidget(w);
connect(iMarker.subtype, SIGNAL(currentIndexChanged(int)), SLOT(apply()));
connect(iMarker.jumpLabel, SIGNAL(textChanged(const QString&)), SLOT(apply()));
}

View file

@ -24,10 +24,10 @@ InspectorOttava::InspectorOttava(QWidget* parent)
: InspectorBase(parent)
{
iElement = new InspectorElementElement(this);
layout->addWidget(iElement);
_layout->addWidget(iElement);
QWidget* w = new QWidget;
iOttava.setupUi(w);
layout->addWidget(w);
_layout->addWidget(w);
connect(iOttava.subtype, SIGNAL(currentIndexChanged(int)), SLOT(apply()));
}

View file

@ -24,10 +24,10 @@ InspectorTrill::InspectorTrill(QWidget* parent)
: InspectorBase(parent)
{
iElement = new InspectorElementElement(this);
layout->addWidget(iElement);
_layout->addWidget(iElement);
QWidget* w = new QWidget;
iTrill.setupUi(w);
layout->addWidget(w);
_layout->addWidget(w);
connect(iTrill.subtype, SIGNAL(currentIndexChanged(int)), SLOT(apply()));
}

View file

@ -24,10 +24,10 @@ InspectorVolta::InspectorVolta(QWidget* parent)
: InspectorBase(parent)
{
iElement = new InspectorElementElement(this);
layout->addWidget(iElement);
_layout->addWidget(iElement);
QWidget* w = new QWidget;
iVolta.setupUi(w);
layout->addWidget(w);
_layout->addWidget(w);
connect(iVolta.subtype, SIGNAL(currentIndexChanged(int)), SLOT(apply()));
}

View file

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>197</width>
<height>184</height>
<height>175</height>
</rect>
</property>
<property name="windowTitle">
@ -56,6 +56,12 @@
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Offset X:</string>
</property>
@ -95,6 +101,12 @@
<iconset resource="musescore.qrc">
<normaloff>:/data/icons-dark/resetproperty.png</normaloff>:/data/icons-dark/resetproperty.png</iconset>
</property>
<property name="iconSize">
<size>
<width>14</width>
<height>14</height>
</size>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
@ -113,6 +125,12 @@
</item>
<item row="4" column="0">
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Stem direction</string>
</property>
@ -149,6 +167,12 @@
<iconset resource="musescore.qrc">
<normaloff>:/data/icons-dark/resetproperty.png</normaloff>:/data/icons-dark/resetproperty.png</iconset>
</property>
<property name="iconSize">
<size>
<width>14</width>
<height>14</height>
</size>
</property>
</widget>
</item>
<item row="4" column="2">
@ -163,6 +187,12 @@
<iconset resource="musescore.qrc">
<normaloff>:/data/icons-dark/resetproperty.png</normaloff>:/data/icons-dark/resetproperty.png</iconset>
</property>
<property name="iconSize">
<size>
<width>14</width>
<height>14</height>
</size>
</property>
</widget>
</item>
<item row="1" column="0">
@ -209,6 +239,12 @@
<iconset resource="musescore.qrc">
<normaloff>:/data/icons-dark/resetproperty.png</normaloff>:/data/icons-dark/resetproperty.png</iconset>
</property>
<property name="iconSize">
<size>
<width>14</width>
<height>14</height>
</size>
</property>
</widget>
</item>
<item row="1" column="2">
@ -220,6 +256,12 @@
<iconset resource="musescore.qrc">
<normaloff>:/data/icons-dark/resetproperty.png</normaloff>:/data/icons-dark/resetproperty.png</iconset>
</property>
<property name="iconSize">
<size>
<width>14</width>
<height>14</height>
</size>
</property>
</widget>
</item>
</layout>

View file

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>238</width>
<height>294</height>
<height>216</height>
</rect>
</property>
<property name="windowTitle">
@ -20,45 +20,76 @@
<property name="margin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="elementName">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Note</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayout">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0" colspan="2">
<widget class="QCheckBox" name="small">
<property name="text">
<string>Small</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Mirror Head</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Offtime Offset</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QSpinBox" name="ontimeOffset">
<widget class="QDoubleSpinBox" name="tuning">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimum">
<number>-9999</number>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_9">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximum">
<number>9999</number>
<property name="text">
<string>Velocity</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Tuning Offset</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Mirror Head</string>
</property>
</widget>
</item>
@ -81,27 +112,6 @@
</item>
</widget>
</item>
<item row="4" column="2">
<widget class="QToolButton" name="resetDotPosition">
<property name="toolTip">
<string>reset value</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="musescore.qrc">
<normaloff>:/data/icons-dark/resetproperty.png</normaloff>:/data/icons-dark/resetproperty.png</iconset>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Ontime Offset</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QToolButton" name="resetSmall">
<property name="toolTip">
@ -114,10 +124,23 @@
<iconset resource="musescore.qrc">
<normaloff>:/data/icons-dark/resetproperty.png</normaloff>:/data/icons-dark/resetproperty.png</iconset>
</property>
<property name="iconSize">
<size>
<width>14</width>
<height>14</height>
</size>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="QToolButton" name="resetOntimeOffset">
<item row="0" column="0" colspan="2">
<widget class="QCheckBox" name="small">
<property name="text">
<string>Small</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QToolButton" name="resetDotPosition">
<property name="toolTip">
<string>reset value</string>
</property>
@ -128,229 +151,11 @@
<iconset resource="musescore.qrc">
<normaloff>:/data/icons-dark/resetproperty.png</normaloff>:/data/icons-dark/resetproperty.png</iconset>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QSpinBox" name="offtimeOffset">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimum">
<number>-9999</number>
</property>
<property name="maximum">
<number>9999</number>
</property>
</widget>
</item>
<item row="6" column="2">
<widget class="QToolButton" name="resetOfftimeOffset">
<property name="toolTip">
<string>reset value</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="musescore.qrc">
<normaloff>:/data/icons-dark/resetproperty.png</normaloff>:/data/icons-dark/resetproperty.png</iconset>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="mirrorHead">
<item>
<property name="text">
<string>Auto</string>
</property>
</item>
<item>
<property name="text">
<string>Left</string>
</property>
</item>
<item>
<property name="text">
<string>Right</string>
</property>
</item>
</widget>
</item>
<item row="3" column="2">
<widget class="QToolButton" name="resetMirrorHead">
<property name="toolTip">
<string>reset value</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="musescore.qrc">
<normaloff>:/data/icons-dark/resetproperty.png</normaloff>:/data/icons-dark/resetproperty.png</iconset>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Dot Position</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Note Head Group</string>
</property>
</widget>
</item>
<item row="7" column="2">
<widget class="QToolButton" name="resetTuning">
<property name="toolTip">
<string>reset value</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="musescore.qrc">
<normaloff>:/data/icons-dark/resetproperty.png</normaloff>:/data/icons-dark/resetproperty.png</iconset>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QDoubleSpinBox" name="tuning">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Tuning Offset</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Note Head Type</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Velocity Type</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="noteHeadType">
<item>
<property name="text">
<string>Auto</string>
</property>
</item>
<item>
<property name="text">
<string>Whole</string>
</property>
</item>
<item>
<property name="text">
<string>Half</string>
</property>
</item>
<item>
<property name="text">
<string>Quarter</string>
</property>
</item>
<item>
<property name="text">
<string>Breve</string>
</property>
</item>
</widget>
</item>
<item row="2" column="2">
<widget class="QToolButton" name="resetNoteHeadType">
<property name="toolTip">
<string>reset value</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="musescore.qrc">
<normaloff>:/data/icons-dark/resetproperty.png</normaloff>:/data/icons-dark/resetproperty.png</iconset>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QToolButton" name="resetNoteHeadGroup">
<property name="toolTip">
<string>reset value</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="musescore.qrc">
<normaloff>:/data/icons-dark/resetproperty.png</normaloff>:/data/icons-dark/resetproperty.png</iconset>
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>Velocity</string>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QSpinBox" name="velocity">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QComboBox" name="velocityType">
<item>
<property name="text">
<string>Offset</string>
</property>
</item>
<item>
<property name="text">
<string>User</string>
</property>
</item>
</widget>
</item>
<item row="8" column="2">
<widget class="QToolButton" name="resetVelocityType">
<property name="toolTip">
<string>reset value</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="musescore.qrc">
<normaloff>:/data/icons-dark/resetproperty.png</normaloff>:/data/icons-dark/resetproperty.png</iconset>
<property name="iconSize">
<size>
<width>14</width>
<height>14</height>
</size>
</property>
</widget>
</item>
@ -434,6 +239,259 @@
</item>
</widget>
</item>
<item row="6" column="2">
<widget class="QToolButton" name="resetVelocityType">
<property name="toolTip">
<string>reset value</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="musescore.qrc">
<normaloff>:/data/icons-dark/resetproperty.png</normaloff>:/data/icons-dark/resetproperty.png</iconset>
</property>
<property name="iconSize">
<size>
<width>14</width>
<height>14</height>
</size>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QToolButton" name="resetMirrorHead">
<property name="toolTip">
<string>reset value</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="musescore.qrc">
<normaloff>:/data/icons-dark/resetproperty.png</normaloff>:/data/icons-dark/resetproperty.png</iconset>
</property>
<property name="iconSize">
<size>
<width>14</width>
<height>14</height>
</size>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="QToolButton" name="resetTuning">
<property name="toolTip">
<string>reset value</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="musescore.qrc">
<normaloff>:/data/icons-dark/resetproperty.png</normaloff>:/data/icons-dark/resetproperty.png</iconset>
</property>
<property name="iconSize">
<size>
<width>14</width>
<height>14</height>
</size>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QSpinBox" name="velocity">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimum">
<number>-127</number>
</property>
<property name="maximum">
<number>127</number>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QToolButton" name="resetNoteHeadType">
<property name="toolTip">
<string>reset value</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="musescore.qrc">
<normaloff>:/data/icons-dark/resetproperty.png</normaloff>:/data/icons-dark/resetproperty.png</iconset>
</property>
<property name="iconSize">
<size>
<width>14</width>
<height>14</height>
</size>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="noteHeadType">
<item>
<property name="text">
<string>Auto</string>
</property>
</item>
<item>
<property name="text">
<string>Whole</string>
</property>
</item>
<item>
<property name="text">
<string>Half</string>
</property>
</item>
<item>
<property name="text">
<string>Quarter</string>
</property>
</item>
<item>
<property name="text">
<string>Breve</string>
</property>
</item>
</widget>
</item>
<item row="6" column="1">
<widget class="QComboBox" name="velocityType">
<item>
<property name="text">
<string>Offset</string>
</property>
</item>
<item>
<property name="text">
<string>User</string>
</property>
</item>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_4">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Dot Position</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_7">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Note Head Type</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_6">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Note Head Group</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_8">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Velocity Type</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="mirrorHead">
<item>
<property name="text">
<string>Auto</string>
</property>
</item>
<item>
<property name="text">
<string>Left</string>
</property>
</item>
<item>
<property name="text">
<string>Right</string>
</property>
</item>
</widget>
</item>
<item row="7" column="2">
<widget class="QToolButton" name="resetVelocity">
<property name="toolTip">
<string>reset value</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="musescore.qrc">
<normaloff>:/data/icons-dark/resetproperty.png</normaloff>:/data/icons-dark/resetproperty.png</iconset>
</property>
<property name="iconSize">
<size>
<width>14</width>
<height>14</height>
</size>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QToolButton" name="resetNoteHeadGroup">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>reset value</string>
</property>
<property name="icon">
<iconset resource="musescore.qrc">
<normaloff>:/data/icons-dark/resetproperty.png</normaloff>:/data/icons-dark/resetproperty.png</iconset>
</property>
<property name="iconSize">
<size>
<width>14</width>
<height>14</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
</layout>