2012-05-26 14:49:10 +02:00
|
|
|
//=============================================================================
|
|
|
|
// MuseScore
|
|
|
|
// Music Composition & Notation
|
|
|
|
// $Id:$
|
|
|
|
//
|
|
|
|
// Copyright (C) 2011 Werner Schweer
|
|
|
|
//
|
|
|
|
// This program is free software; you can redistribute it and/or modify
|
|
|
|
// it under the terms of the GNU General Public License version 2
|
|
|
|
// as published by the Free Software Foundation and appearing in
|
|
|
|
// the file LICENSE.GPL
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
#include "inspector.h"
|
|
|
|
#include "inspectorBeam.h"
|
|
|
|
#include "inspectorImage.h"
|
2012-07-12 15:35:35 +02:00
|
|
|
#include "inspectorLasso.h"
|
2012-05-26 14:49:10 +02:00
|
|
|
#include "inspectorGroupElement.h"
|
2012-09-17 15:37:31 +02:00
|
|
|
#include "inspectorVolta.h"
|
2012-09-17 17:35:49 +02:00
|
|
|
#include "inspectorOttava.h"
|
2012-09-17 18:09:30 +02:00
|
|
|
#include "inspectorTrill.h"
|
2012-09-18 09:28:28 +02:00
|
|
|
#include "inspectorHairpin.h"
|
2013-05-02 16:12:17 +02:00
|
|
|
#include "inspectorTextLine.h"
|
2013-02-25 18:15:28 +01:00
|
|
|
#include "inspectorMarker.h"
|
|
|
|
#include "inspectorJump.h"
|
2013-02-28 15:06:54 +01:00
|
|
|
#include "inspectorGlissando.h"
|
2013-03-07 13:31:14 +01:00
|
|
|
#include "inspectorNote.h"
|
2013-11-25 12:17:12 +01:00
|
|
|
#include "inspectorAmbitus.h"
|
2012-05-26 14:49:10 +02:00
|
|
|
#include "musescore.h"
|
2012-06-04 12:57:26 +02:00
|
|
|
#include "scoreview.h"
|
|
|
|
|
2012-05-26 14:49:10 +02:00
|
|
|
#include "libmscore/element.h"
|
|
|
|
#include "libmscore/score.h"
|
|
|
|
#include "libmscore/box.h"
|
|
|
|
#include "libmscore/undo.h"
|
|
|
|
#include "libmscore/spacer.h"
|
|
|
|
#include "libmscore/note.h"
|
|
|
|
#include "libmscore/chord.h"
|
|
|
|
#include "libmscore/segment.h"
|
|
|
|
#include "libmscore/rest.h"
|
|
|
|
#include "libmscore/beam.h"
|
|
|
|
#include "libmscore/clef.h"
|
|
|
|
#include "libmscore/notedot.h"
|
|
|
|
#include "libmscore/hook.h"
|
|
|
|
#include "libmscore/stem.h"
|
2012-07-27 18:35:37 +02:00
|
|
|
#include "libmscore/keysig.h"
|
2012-11-18 00:28:38 +01:00
|
|
|
#include "libmscore/barline.h"
|
|
|
|
#include "libmscore/staff.h"
|
|
|
|
#include "libmscore/measure.h"
|
2012-05-26 14:49:10 +02:00
|
|
|
|
2013-05-13 18:49:17 +02:00
|
|
|
namespace Ms {
|
|
|
|
|
2012-05-26 14:49:10 +02:00
|
|
|
//---------------------------------------------------------
|
|
|
|
// showInspector
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
void MuseScore::showInspector(bool visible)
|
|
|
|
{
|
|
|
|
QAction* a = getAction("inspector");
|
2013-04-30 23:55:32 +02:00
|
|
|
if (!inspector) {
|
|
|
|
inspector = new Inspector();
|
2013-05-12 23:13:28 +02:00
|
|
|
connect(inspector, SIGNAL(visibilityChanged(bool)), a, SLOT(setChecked(bool)));
|
2013-04-30 23:55:32 +02:00
|
|
|
addDockWidget(Qt::RightDockWidgetArea, inspector);
|
|
|
|
}
|
2012-05-26 14:49:10 +02:00
|
|
|
if (visible) {
|
2012-07-12 15:35:35 +02:00
|
|
|
updateInspector();
|
2012-05-26 14:49:10 +02:00
|
|
|
}
|
|
|
|
if (inspector)
|
|
|
|
inspector->setVisible(visible);
|
|
|
|
a->setChecked(visible);
|
|
|
|
}
|
|
|
|
|
|
|
|
//---------------------------------------------------------
|
|
|
|
// Inspector
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
Inspector::Inspector(QWidget* parent)
|
|
|
|
: QDockWidget(tr("Inspector"), parent)
|
|
|
|
{
|
|
|
|
setObjectName("inspector");
|
2013-05-13 18:49:17 +02:00
|
|
|
setAllowedAreas(Qt::DockWidgetAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea));
|
2013-03-07 13:31:14 +01:00
|
|
|
sa = new QScrollArea;
|
2013-09-16 16:33:48 +02:00
|
|
|
sa->setFrameShape(QFrame::NoFrame);
|
2013-03-11 11:36:29 +01:00
|
|
|
sa->setWidgetResizable(true);
|
2012-05-26 14:49:10 +02:00
|
|
|
setWidget(sa);
|
|
|
|
|
2013-01-22 12:02:22 +01:00
|
|
|
_inspectorEdit = false;
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = 0;
|
|
|
|
_element = 0;
|
2012-05-26 14:49:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
//---------------------------------------------------------
|
|
|
|
// reset
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
void Inspector::reset()
|
|
|
|
{
|
2013-03-06 18:08:22 +01:00
|
|
|
if (ie)
|
|
|
|
ie->setElement();
|
2012-05-26 14:49:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
//---------------------------------------------------------
|
|
|
|
// setElement
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
void Inspector::setElement(Element* e)
|
|
|
|
{
|
2013-03-06 18:08:22 +01:00
|
|
|
QList<Element*> el;
|
|
|
|
if (e)
|
|
|
|
el.append(e);
|
|
|
|
setElements(el);
|
|
|
|
}
|
2013-02-25 18:15:28 +01:00
|
|
|
|
2013-03-06 18:08:22 +01:00
|
|
|
//---------------------------------------------------------
|
|
|
|
// setElements
|
|
|
|
//---------------------------------------------------------
|
2013-01-22 12:02:22 +01:00
|
|
|
|
2013-03-06 18:08:22 +01:00
|
|
|
void Inspector::setElements(const QList<Element*>& l)
|
|
|
|
{
|
2013-03-13 12:19:27 +01:00
|
|
|
if (_inspectorEdit) // if within an inspector-originated edit
|
|
|
|
return;
|
|
|
|
|
2013-03-06 18:08:22 +01:00
|
|
|
Element* e = l.isEmpty() ? 0 : l[0];
|
|
|
|
if (e == 0 || _element == 0 || (_el != l)) {
|
|
|
|
_el = l;
|
2012-09-17 10:43:59 +02:00
|
|
|
if (ie)
|
|
|
|
ie->deleteLater();
|
2012-05-26 14:49:10 +02:00
|
|
|
ie = 0;
|
|
|
|
_element = e;
|
|
|
|
|
|
|
|
if (_element == 0)
|
2013-08-02 10:47:20 +02:00
|
|
|
ie = new InspectorEmpty(this);
|
|
|
|
|
2013-03-06 18:08:22 +01:00
|
|
|
|
|
|
|
bool sameTypes = true;
|
|
|
|
foreach(Element* ee, _el) {
|
|
|
|
if (_element->type() != ee->type())
|
|
|
|
sameTypes = false;
|
|
|
|
}
|
|
|
|
if (!sameTypes)
|
|
|
|
ie = new InspectorGroupElement(this);
|
2013-08-02 10:47:20 +02:00
|
|
|
else if (_element) {
|
2013-03-06 18:08:22 +01:00
|
|
|
switch(_element->type()) {
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::FBOX:
|
|
|
|
case Element::Type::TBOX:
|
|
|
|
case Element::Type::VBOX:
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = new InspectorVBox(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::HBOX:
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = new InspectorHBox(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::ARTICULATION:
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = new InspectorArticulation(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::SPACER:
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = new InspectorSpacer(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::NOTE:
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = new InspectorNote(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::ACCIDENTAL:
|
2013-03-12 11:18:25 +01:00
|
|
|
ie = new InspectorAccidental(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::REST:
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = new InspectorRest(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::CLEF:
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = new InspectorClef(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::TIMESIG:
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = new InspectorTimeSig(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::KEYSIG:
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = new InspectorKeySig(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::TUPLET:
|
2013-03-11 14:15:42 +01:00
|
|
|
ie = new InspectorTuplet(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::BEAM:
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = new InspectorBeam(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::IMAGE:
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = new InspectorImage(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::LASSO:
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = new InspectorLasso(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::VOLTA_SEGMENT:
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = new InspectorVolta(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::OTTAVA_SEGMENT:
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = new InspectorOttava(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::TRILL_SEGMENT:
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = new InspectorTrill(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::HAIRPIN_SEGMENT:
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = new InspectorHairpin(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::TEXTLINE_SEGMENT:
|
|
|
|
case Element::Type::PEDAL_SEGMENT:
|
2013-05-02 16:12:17 +02:00
|
|
|
ie = new InspectorTextLine(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::SLUR_SEGMENT:
|
2013-07-01 16:57:44 +02:00
|
|
|
ie = new InspectorSlur(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::BAR_LINE:
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = new InspectorBarLine(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::JUMP:
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = new InspectorJump(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::MARKER:
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = new InspectorMarker(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::GLISSANDO:
|
2013-03-06 18:08:22 +01:00
|
|
|
ie = new InspectorGlissando(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::TEMPO_TEXT:
|
2013-03-27 13:56:46 +01:00
|
|
|
ie = new InspectorTempoText(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::DYNAMIC:
|
2013-03-27 13:56:46 +01:00
|
|
|
ie = new InspectorDynamic(this);
|
|
|
|
break;
|
2014-06-24 18:36:02 +02:00
|
|
|
case Element::Type::AMBITUS:
|
2013-11-25 12:17:12 +01:00
|
|
|
ie = new InspectorAmbitus(this);
|
2013-10-29 23:41:38 +01:00
|
|
|
break;
|
2013-03-06 18:08:22 +01:00
|
|
|
default:
|
2014-04-18 06:59:30 +02:00
|
|
|
if (_element->isText())
|
|
|
|
ie = new InspectorText(this);
|
|
|
|
else
|
|
|
|
ie = new InspectorElement(this);
|
2013-03-06 18:08:22 +01:00
|
|
|
break;
|
|
|
|
}
|
2012-05-26 14:49:10 +02:00
|
|
|
}
|
2013-03-07 13:31:14 +01:00
|
|
|
sa->setWidget(ie);
|
2013-03-11 11:36:29 +01:00
|
|
|
// setMinimumWidth(ie->width() + sa->frameWidth() * 2 + (width() - sa->width()) + 3);
|
|
|
|
setMinimumWidth(ie->sizeHint().width() + sa->frameWidth() * 2 + (width() - sa->width()) + 3);
|
2012-05-26 14:49:10 +02:00
|
|
|
}
|
|
|
|
_element = e;
|
2013-03-06 18:08:22 +01:00
|
|
|
ie->setElement();
|
2012-05-26 14:49:10 +02:00
|
|
|
}
|
|
|
|
|
2013-07-22 16:21:19 +02:00
|
|
|
//---------------------------------------------------------
|
|
|
|
// setupUi
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
2013-06-28 19:41:54 +02:00
|
|
|
void UiInspectorElement::setupUi(QWidget *InspectorElement)
|
|
|
|
{
|
|
|
|
Ui::InspectorElement::setupUi(InspectorElement);
|
|
|
|
|
|
|
|
QAction* a = getAction("hraster");
|
|
|
|
a->setCheckable(true);
|
|
|
|
hRaster->setDefaultAction(a);
|
|
|
|
hRaster->setContextMenuPolicy(Qt::ActionsContextMenu);
|
|
|
|
hRaster->addAction(getAction("config-raster"));
|
|
|
|
|
|
|
|
a = getAction("vraster");
|
|
|
|
a->setCheckable(true);
|
|
|
|
vRaster->setDefaultAction(a);
|
|
|
|
vRaster->setContextMenuPolicy(Qt::ActionsContextMenu);
|
|
|
|
vRaster->addAction(getAction("config-raster"));
|
2013-07-22 16:21:19 +02:00
|
|
|
}
|
2013-06-28 19:41:54 +02:00
|
|
|
|
2012-05-26 14:49:10 +02:00
|
|
|
//---------------------------------------------------------
|
|
|
|
// InspectorElement
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
InspectorElement::InspectorElement(QWidget* parent)
|
|
|
|
: InspectorBase(parent)
|
|
|
|
{
|
2013-03-07 20:01:22 +01:00
|
|
|
b.setupUi(addWidget());
|
2012-05-26 14:49:10 +02:00
|
|
|
|
2013-03-06 18:08:22 +01:00
|
|
|
iList = {
|
2014-05-26 18:18:01 +02:00
|
|
|
{ P_ID::COLOR, 0, 0, b.color, b.resetColor },
|
|
|
|
{ P_ID::VISIBLE, 0, 0, b.visible, b.resetVisible },
|
|
|
|
{ P_ID::USER_OFF, 0, 0, b.offsetX, b.resetX },
|
|
|
|
{ P_ID::USER_OFF, 1, 0, b.offsetY, b.resetY }
|
2013-03-06 18:08:22 +01:00
|
|
|
};
|
2012-05-26 14:49:10 +02:00
|
|
|
|
2013-03-06 18:08:22 +01:00
|
|
|
mapSignals();
|
2012-05-26 14:49:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
//---------------------------------------------------------
|
|
|
|
// InspectorVBox
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
InspectorVBox::InspectorVBox(QWidget* parent)
|
|
|
|
: InspectorBase(parent)
|
|
|
|
{
|
2013-03-07 20:01:22 +01:00
|
|
|
vb.setupUi(addWidget());
|
2012-05-26 14:49:10 +02:00
|
|
|
|
2013-03-06 18:08:22 +01:00
|
|
|
iList = {
|
2014-05-26 18:18:01 +02:00
|
|
|
{ P_ID::TOP_GAP, 0, 0, vb.topGap, vb.resetTopGap },
|
|
|
|
{ P_ID::BOTTOM_GAP, 0, 0, vb.bottomGap, vb.resetBottomGap },
|
|
|
|
{ P_ID::LEFT_MARGIN, 0, 0, vb.leftMargin, vb.resetLeftMargin },
|
|
|
|
{ P_ID::RIGHT_MARGIN, 0, 0, vb.rightMargin, vb.resetRightMargin },
|
|
|
|
{ P_ID::TOP_MARGIN, 0, 0, vb.topMargin, vb.resetTopMargin },
|
|
|
|
{ P_ID::BOTTOM_MARGIN, 0, 0, vb.bottomMargin, vb.resetBottomMargin },
|
|
|
|
{ P_ID::BOX_HEIGHT, 0, 0, vb.height, 0 }
|
2013-03-06 18:08:22 +01:00
|
|
|
};
|
2012-05-26 14:49:10 +02:00
|
|
|
mapSignals();
|
|
|
|
}
|
|
|
|
|
|
|
|
//---------------------------------------------------------
|
|
|
|
// InspectorHBox
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
InspectorHBox::InspectorHBox(QWidget* parent)
|
|
|
|
: InspectorBase(parent)
|
|
|
|
{
|
2013-03-07 20:01:22 +01:00
|
|
|
hb.setupUi(addWidget());
|
2012-05-26 14:49:10 +02:00
|
|
|
|
2013-03-06 18:08:22 +01:00
|
|
|
iList = {
|
2014-05-26 18:18:01 +02:00
|
|
|
{ P_ID::TOP_GAP, 0, 0, hb.leftGap, hb.resetLeftGap },
|
|
|
|
{ P_ID::BOTTOM_GAP, 0, 0, hb.rightGap, hb.resetRightGap },
|
|
|
|
{ P_ID::BOX_WIDTH, 0, 0, hb.width, 0 }
|
2013-03-06 18:08:22 +01:00
|
|
|
};
|
2012-05-26 14:49:10 +02:00
|
|
|
|
|
|
|
mapSignals();
|
|
|
|
}
|
|
|
|
|
|
|
|
//---------------------------------------------------------
|
|
|
|
// InspectorArticulation
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
InspectorArticulation::InspectorArticulation(QWidget* parent)
|
|
|
|
: InspectorBase(parent)
|
|
|
|
{
|
2013-03-07 20:01:22 +01:00
|
|
|
e.setupUi(addWidget());
|
|
|
|
ar.setupUi(addWidget());
|
2012-05-26 14:49:10 +02:00
|
|
|
|
2013-03-06 18:08:22 +01:00
|
|
|
iList = {
|
2014-05-26 18:18:01 +02:00
|
|
|
{ P_ID::COLOR, 0, 0, e.color, e.resetColor },
|
|
|
|
{ P_ID::VISIBLE, 0, 0, e.visible, e.resetVisible },
|
|
|
|
{ P_ID::USER_OFF, 0, 0, e.offsetX, e.resetX },
|
|
|
|
{ P_ID::USER_OFF, 1, 0, e.offsetY, e.resetY },
|
|
|
|
{ P_ID::ARTICULATION_ANCHOR, 0, 0, ar.anchor, ar.resetAnchor },
|
|
|
|
{ P_ID::DIRECTION, 0, 0, ar.direction, ar.resetDirection },
|
|
|
|
{ P_ID::TIME_STRETCH, 0, 0, ar.timeStretch, ar.resetTimeStretch }
|
2013-03-06 18:08:22 +01:00
|
|
|
};
|
|
|
|
mapSignals();
|
2012-05-26 14:49:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
//---------------------------------------------------------
|
|
|
|
// InspectorSpacer
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
InspectorSpacer::InspectorSpacer(QWidget* parent)
|
|
|
|
: InspectorBase(parent)
|
|
|
|
{
|
2013-03-07 20:01:22 +01:00
|
|
|
sp.setupUi(addWidget());
|
2012-05-26 14:49:10 +02:00
|
|
|
|
2013-03-06 18:08:22 +01:00
|
|
|
iList = {
|
2014-05-26 18:18:01 +02:00
|
|
|
{ P_ID::SPACE, 0, false, sp.height, sp.resetHeight }
|
2013-03-06 18:08:22 +01:00
|
|
|
};
|
|
|
|
mapSignals();
|
2012-05-26 14:49:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
//---------------------------------------------------------
|
|
|
|
// InspectorRest
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
InspectorRest::InspectorRest(QWidget* parent)
|
|
|
|
: InspectorBase(parent)
|
|
|
|
{
|
2013-03-07 20:01:22 +01:00
|
|
|
e.setupUi(addWidget());
|
|
|
|
s.setupUi(addWidget());
|
|
|
|
r.setupUi(addWidget());
|
2013-03-06 18:08:22 +01:00
|
|
|
|
|
|
|
iList = {
|
2014-05-26 18:18:01 +02:00
|
|
|
{ P_ID::COLOR, 0, 0, e.color, e.resetColor },
|
|
|
|
{ P_ID::VISIBLE, 0, 0, e.visible, e.resetVisible },
|
|
|
|
{ P_ID::USER_OFF, 0, 0, e.offsetX, e.resetX },
|
|
|
|
{ P_ID::USER_OFF, 1, 0, e.offsetY, e.resetY },
|
|
|
|
{ P_ID::SMALL, 0, 0, r.small, r.resetSmall },
|
|
|
|
{ P_ID::LEADING_SPACE, 0, 1, s.leadingSpace, s.resetLeadingSpace },
|
|
|
|
{ P_ID::TRAILING_SPACE, 0, 1, s.trailingSpace, s.resetTrailingSpace }
|
2013-03-06 18:08:22 +01:00
|
|
|
};
|
|
|
|
mapSignals();
|
2012-05-26 14:49:10 +02:00
|
|
|
}
|
|
|
|
|
2012-07-27 18:01:15 +02:00
|
|
|
//---------------------------------------------------------
|
|
|
|
// InspectorTimeSig
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
InspectorTimeSig::InspectorTimeSig(QWidget* parent)
|
|
|
|
: InspectorBase(parent)
|
|
|
|
{
|
2013-03-07 20:01:22 +01:00
|
|
|
e.setupUi(addWidget());
|
|
|
|
s.setupUi(addWidget());
|
|
|
|
t.setupUi(addWidget());
|
2012-07-27 18:01:15 +02:00
|
|
|
|
2013-03-06 20:45:10 +01:00
|
|
|
iList = {
|
2014-05-26 18:18:01 +02:00
|
|
|
{ P_ID::COLOR, 0, 0, e.color, e.resetColor },
|
|
|
|
{ P_ID::VISIBLE, 0, 0, e.visible, e.resetVisible },
|
|
|
|
{ P_ID::USER_OFF, 0, 0, e.offsetX, e.resetX },
|
|
|
|
{ P_ID::USER_OFF, 1, 0, e.offsetY, e.resetY },
|
|
|
|
{ P_ID::LEADING_SPACE, 0, 1, s.leadingSpace, s.resetLeadingSpace },
|
|
|
|
{ P_ID::TRAILING_SPACE, 0, 1, s.trailingSpace, s.resetTrailingSpace },
|
|
|
|
{ P_ID::SHOW_COURTESY, 0, 0, t.showCourtesy, t.resetShowCourtesy },
|
|
|
|
// { P_ID::TIMESIG, 0, 0, t.timesigZ, t.resetTimesig },
|
|
|
|
// { P_ID::TIMESIG, 1, 0, t.timesigN, t.resetTimesig },
|
|
|
|
// { P_ID::TIMESIG_GLOBAL, 0, 0, t.globalTimesigZ, t.resetGlobalTimesig },
|
|
|
|
// { P_ID::TIMESIG_GLOBAL, 1, 0, t.globalTimesigN, t.resetGlobalTimesig }
|
2013-03-06 20:45:10 +01:00
|
|
|
};
|
|
|
|
mapSignals();
|
2012-07-27 18:01:15 +02:00
|
|
|
}
|
|
|
|
|
2012-07-27 18:35:37 +02:00
|
|
|
//---------------------------------------------------------
|
|
|
|
// InspectorKeySig
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
InspectorKeySig::InspectorKeySig(QWidget* parent)
|
|
|
|
: InspectorBase(parent)
|
|
|
|
{
|
2013-03-07 20:01:22 +01:00
|
|
|
e.setupUi(addWidget());
|
|
|
|
s.setupUi(addWidget());
|
|
|
|
k.setupUi(addWidget());
|
2012-07-27 18:35:37 +02:00
|
|
|
|
2013-03-06 20:45:10 +01:00
|
|
|
iList = {
|
2014-05-26 18:18:01 +02:00
|
|
|
{ P_ID::COLOR, 0, 0, e.color, e.resetColor },
|
|
|
|
{ P_ID::VISIBLE, 0, 0, e.visible, e.resetVisible },
|
|
|
|
{ P_ID::USER_OFF, 0, 0, e.offsetX, e.resetX },
|
|
|
|
{ P_ID::USER_OFF, 1, 0, e.offsetY, e.resetY },
|
|
|
|
{ P_ID::LEADING_SPACE, 0, 1, s.leadingSpace, s.resetLeadingSpace },
|
|
|
|
{ P_ID::TRAILING_SPACE, 0, 1, s.trailingSpace, s.resetTrailingSpace },
|
|
|
|
{ P_ID::SHOW_COURTESY, 0, 0, k.showCourtesy, k.resetShowCourtesy },
|
|
|
|
// { P_ID::SHOW_NATURALS, 0, 0, k.showNaturals, k.resetShowNaturals }
|
2013-03-06 20:45:10 +01:00
|
|
|
};
|
|
|
|
mapSignals();
|
2012-07-27 18:35:37 +02:00
|
|
|
}
|
|
|
|
|
2013-03-11 14:15:42 +01:00
|
|
|
//---------------------------------------------------------
|
|
|
|
// InspectorTuplet
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
InspectorTuplet::InspectorTuplet(QWidget* parent)
|
|
|
|
: InspectorBase(parent)
|
|
|
|
{
|
|
|
|
e.setupUi(addWidget());
|
|
|
|
t.setupUi(addWidget());
|
|
|
|
|
|
|
|
iList = {
|
2014-05-26 18:18:01 +02:00
|
|
|
{ P_ID::COLOR, 0, 0, e.color, e.resetColor },
|
|
|
|
{ P_ID::VISIBLE, 0, 0, e.visible, e.resetVisible },
|
|
|
|
{ P_ID::USER_OFF, 0, 0, e.offsetX, e.resetX },
|
|
|
|
{ P_ID::USER_OFF, 1, 0, e.offsetY, e.resetY },
|
|
|
|
{ P_ID::DIRECTION, 0, 0, t.direction, t.resetDirection },
|
|
|
|
{ P_ID::NUMBER_TYPE, 0, 0, t.numberType, t.resetNumberType },
|
|
|
|
{ P_ID::BRACKET_TYPE, 0, 0, t.bracketType, t.resetBracketType }
|
2013-03-11 14:15:42 +01:00
|
|
|
};
|
|
|
|
mapSignals();
|
|
|
|
}
|
|
|
|
|
2013-03-12 11:18:25 +01:00
|
|
|
//---------------------------------------------------------
|
|
|
|
// InspectorAccidental
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
InspectorAccidental::InspectorAccidental(QWidget* parent)
|
|
|
|
: InspectorBase(parent)
|
|
|
|
{
|
|
|
|
e.setupUi(addWidget());
|
|
|
|
a.setupUi(addWidget());
|
|
|
|
|
|
|
|
iList = {
|
2014-05-26 18:18:01 +02:00
|
|
|
{ P_ID::COLOR, 0, 0, e.color, e.resetColor },
|
|
|
|
{ P_ID::VISIBLE, 0, 0, e.visible, e.resetVisible },
|
|
|
|
{ P_ID::USER_OFF, 0, 0, e.offsetX, e.resetX },
|
|
|
|
{ P_ID::USER_OFF, 1, 0, e.offsetY, e.resetY },
|
|
|
|
{ P_ID::SMALL, 0, 0, a.small, a.resetSmall }
|
2013-03-12 11:18:25 +01:00
|
|
|
};
|
|
|
|
mapSignals();
|
|
|
|
}
|
|
|
|
|
2012-05-26 14:49:10 +02:00
|
|
|
//---------------------------------------------------------
|
|
|
|
// InspectorClef
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
InspectorClef::InspectorClef(QWidget* parent)
|
|
|
|
: InspectorBase(parent)
|
|
|
|
{
|
2013-03-07 20:01:22 +01:00
|
|
|
e.setupUi(addWidget());
|
|
|
|
s.setupUi(addWidget());
|
|
|
|
c.setupUi(addWidget());
|
2013-03-06 18:08:22 +01:00
|
|
|
|
|
|
|
iList = {
|
2014-05-26 18:18:01 +02:00
|
|
|
{ P_ID::COLOR, 0, 0, e.color, e.resetColor },
|
|
|
|
{ P_ID::VISIBLE, 0, 0, e.visible, e.resetVisible },
|
|
|
|
{ P_ID::USER_OFF, 0, 0, e.offsetX, e.resetX },
|
|
|
|
{ P_ID::USER_OFF, 1, 0, e.offsetY, e.resetY },
|
|
|
|
{ P_ID::LEADING_SPACE, 0, 1, s.leadingSpace, s.resetLeadingSpace },
|
|
|
|
{ P_ID::TRAILING_SPACE, 0, 1, s.trailingSpace, s.resetTrailingSpace },
|
|
|
|
{ P_ID::SHOW_COURTESY, 0, 0, c.showCourtesy, c.resetShowCourtesy }
|
2013-03-06 18:08:22 +01:00
|
|
|
};
|
|
|
|
mapSignals();
|
2012-05-26 14:49:10 +02:00
|
|
|
}
|
2013-12-24 20:11:51 +01:00
|
|
|
|
|
|
|
// InspectorClef::setElement
|
|
|
|
|
|
|
|
void InspectorClef::setElement()
|
|
|
|
{
|
|
|
|
otherClef = nullptr; // no 'other clef' yet
|
|
|
|
InspectorBase::setElement();
|
|
|
|
|
|
|
|
// try to locate the 'other clef' of a courtesy / main pair
|
|
|
|
Clef * clef = static_cast<Clef*>(inspector->element());
|
|
|
|
// if not in a clef-segment-measure hierachy, do nothing
|
2014-06-24 18:36:02 +02:00
|
|
|
if (!clef->parent() || clef->parent()->type() != Element::Type::SEGMENT)
|
2013-12-24 20:11:51 +01:00
|
|
|
return;
|
|
|
|
Segment* segm = static_cast<Segment*>(clef->parent());
|
|
|
|
int segmTick = segm->tick();
|
2014-06-24 18:36:02 +02:00
|
|
|
if (!segm->parent() || segm->parent()->type() != Element::Type::MEASURE)
|
2013-12-24 20:11:51 +01:00
|
|
|
return;
|
|
|
|
|
|
|
|
Measure* meas = static_cast<Measure*>(segm->parent());
|
|
|
|
Measure* otherMeas = nullptr;
|
|
|
|
Segment* otherSegm = nullptr;
|
|
|
|
if (segmTick == meas->tick()) // if clef segm is measure-initial
|
|
|
|
otherMeas = meas->prevMeasure(); // look for a previous measure
|
|
|
|
else if (segmTick == meas->tick()+meas->ticks()) // if clef segm is measure-final
|
|
|
|
otherMeas = meas->nextMeasure(); // look for a next measure
|
|
|
|
// look for a clef segment in the 'other' measure at the same tick of this clef segment
|
|
|
|
if (otherMeas)
|
2014-06-25 11:46:10 +02:00
|
|
|
otherSegm = otherMeas->findSegment(Segment::Type::Clef, segmTick);
|
2013-12-24 20:11:51 +01:00
|
|
|
// if any 'other' segment found, look for a clef in the same track as this
|
|
|
|
if (otherSegm)
|
|
|
|
otherClef = static_cast<Clef*>(otherSegm->element(clef->track()));
|
|
|
|
}
|
|
|
|
|
|
|
|
// InspectorClef::valueChanged
|
|
|
|
|
|
|
|
void InspectorClef::valueChanged(int idx)
|
|
|
|
{
|
|
|
|
// copy into 'other clef' the ShowCouretsy ser of this clef
|
|
|
|
if (idx == 6 && otherClef)
|
|
|
|
otherClef->setShowCourtesy(c.showCourtesy->isChecked());
|
|
|
|
InspectorBase::valueChanged(idx);
|
|
|
|
}
|
2012-05-26 14:49:10 +02:00
|
|
|
|
2014-04-18 06:59:30 +02:00
|
|
|
//---------------------------------------------------------
|
|
|
|
// InspectorText
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
InspectorText::InspectorText(QWidget* parent)
|
|
|
|
: InspectorBase(parent)
|
|
|
|
{
|
|
|
|
e.setupUi(addWidget());
|
|
|
|
t.setupUi(addWidget());
|
|
|
|
|
|
|
|
iList = {
|
2014-05-26 18:18:01 +02:00
|
|
|
{ P_ID::COLOR, 0, 0, e.color, e.resetColor },
|
|
|
|
{ P_ID::VISIBLE, 0, 0, e.visible, e.resetVisible },
|
|
|
|
{ P_ID::USER_OFF, 0, 0, e.offsetX, e.resetX },
|
|
|
|
{ P_ID::USER_OFF, 1, 0, e.offsetY, e.resetY },
|
|
|
|
{ P_ID::TEXT_STYLE_TYPE, 0, 0, t.style, t.resetStyle }
|
2014-04-18 06:59:30 +02:00
|
|
|
};
|
|
|
|
mapSignals();
|
|
|
|
}
|
|
|
|
|
|
|
|
//---------------------------------------------------------
|
|
|
|
// setElement
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
void InspectorText::setElement()
|
|
|
|
{
|
|
|
|
Element* e = inspector->element();
|
|
|
|
Score* score = e->score();
|
|
|
|
|
|
|
|
t.style->blockSignals(true);
|
|
|
|
t.style->clear();
|
|
|
|
const QList<TextStyle>& ts = score->style()->textStyles();
|
|
|
|
int n = ts.size();
|
|
|
|
for (int i = 0; i < n; ++i) {
|
2014-06-18 12:05:41 +02:00
|
|
|
if (!(ts.at(i).hidden() & TextStyleHidden::IN_LISTS) )
|
2014-04-18 06:59:30 +02:00
|
|
|
t.style->addItem(ts.at(i).name(), i);
|
|
|
|
}
|
|
|
|
t.style->blockSignals(false);
|
|
|
|
InspectorBase::setElement();
|
|
|
|
}
|
|
|
|
|
2013-03-27 13:56:46 +01:00
|
|
|
//---------------------------------------------------------
|
|
|
|
// InspectorTempoText
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
InspectorTempoText::InspectorTempoText(QWidget* parent)
|
|
|
|
: InspectorBase(parent)
|
|
|
|
{
|
|
|
|
e.setupUi(addWidget());
|
|
|
|
t.setupUi(addWidget());
|
2014-04-18 06:59:30 +02:00
|
|
|
tt.setupUi(addWidget());
|
2013-03-27 13:56:46 +01:00
|
|
|
|
|
|
|
iList = {
|
2014-05-26 18:18:01 +02:00
|
|
|
{ P_ID::COLOR, 0, 0, e.color, e.resetColor },
|
|
|
|
{ P_ID::VISIBLE, 0, 0, e.visible, e.resetVisible },
|
|
|
|
{ P_ID::USER_OFF, 0, 0, e.offsetX, e.resetX },
|
|
|
|
{ P_ID::USER_OFF, 1, 0, e.offsetY, e.resetY },
|
|
|
|
{ P_ID::TEXT_STYLE_TYPE, 0, 0, t.style, t.resetStyle },
|
|
|
|
{ P_ID::TEMPO, 0, 0, tt.tempo, tt.resetTempo },
|
|
|
|
{ P_ID::TEMPO_FOLLOW_TEXT, 0, 0, tt.followText, tt.resetFollowText }
|
2013-03-27 13:56:46 +01:00
|
|
|
};
|
|
|
|
mapSignals();
|
2014-04-18 06:59:30 +02:00
|
|
|
connect(tt.followText, SIGNAL(toggled(bool)), tt.tempo, SLOT(setDisabled(bool)));
|
|
|
|
}
|
|
|
|
|
|
|
|
//---------------------------------------------------------
|
|
|
|
// setElement
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
void InspectorTempoText::setElement()
|
|
|
|
{
|
|
|
|
Element* e = inspector->element();
|
|
|
|
Score* score = e->score();
|
|
|
|
|
|
|
|
t.style->blockSignals(true);
|
|
|
|
t.style->clear();
|
|
|
|
const QList<TextStyle>& ts = score->style()->textStyles();
|
|
|
|
int n = ts.size();
|
|
|
|
for (int i = 0; i < n; ++i) {
|
2014-06-18 12:05:41 +02:00
|
|
|
if (!(ts.at(i).hidden() & TextStyleHidden::IN_LISTS) )
|
2014-04-18 06:59:30 +02:00
|
|
|
t.style->addItem(ts.at(i).name(), i);
|
|
|
|
}
|
|
|
|
t.style->blockSignals(false);
|
|
|
|
InspectorBase::setElement();
|
2013-04-10 17:31:22 +02:00
|
|
|
}
|
|
|
|
|
2013-07-22 16:21:19 +02:00
|
|
|
//---------------------------------------------------------
|
|
|
|
// postInit
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
2013-04-10 17:31:22 +02:00
|
|
|
void InspectorTempoText::postInit()
|
|
|
|
{
|
2014-04-18 06:59:30 +02:00
|
|
|
tt.tempo->setDisabled(tt.followText->isChecked());
|
2013-03-27 13:56:46 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
//---------------------------------------------------------
|
|
|
|
// InspectorDynamic
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
InspectorDynamic::InspectorDynamic(QWidget* parent)
|
|
|
|
: InspectorBase(parent)
|
|
|
|
{
|
|
|
|
e.setupUi(addWidget());
|
2013-07-22 16:21:19 +02:00
|
|
|
t.setupUi(addWidget());
|
2013-03-27 13:56:46 +01:00
|
|
|
d.setupUi(addWidget());
|
|
|
|
|
|
|
|
iList = {
|
2014-05-26 18:18:01 +02:00
|
|
|
{ P_ID::COLOR, 0, 0, e.color, e.resetColor },
|
|
|
|
{ P_ID::VISIBLE, 0, 0, e.visible, e.resetVisible },
|
|
|
|
{ P_ID::USER_OFF, 0, 0, e.offsetX, e.resetX },
|
|
|
|
{ P_ID::USER_OFF, 1, 0, e.offsetY, e.resetY },
|
|
|
|
{ P_ID::TEXT_STYLE_TYPE, 0, 0, t.style, t.resetStyle },
|
|
|
|
{ P_ID::DYNAMIC_RANGE, 0, 0, d.dynRange, d.resetDynRange },
|
|
|
|
{ P_ID::VELOCITY, 0, 0, d.velocity, d.resetVelocity }
|
2013-03-27 13:56:46 +01:00
|
|
|
};
|
|
|
|
mapSignals();
|
|
|
|
}
|
|
|
|
|
2012-11-18 00:28:38 +01:00
|
|
|
//---------------------------------------------------------
|
2013-07-22 16:21:19 +02:00
|
|
|
// setElement
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
void InspectorDynamic::setElement()
|
|
|
|
{
|
|
|
|
Element* e = inspector->element();
|
|
|
|
Score* score = e->score();
|
|
|
|
|
|
|
|
t.style->blockSignals(true);
|
|
|
|
t.style->clear();
|
|
|
|
const QList<TextStyle>& ts = score->style()->textStyles();
|
|
|
|
int n = ts.size();
|
|
|
|
for (int i = 0; i < n; ++i) {
|
2014-06-18 12:05:41 +02:00
|
|
|
if (!(ts.at(i).hidden() & TextStyleHidden::IN_LISTS) )
|
2013-07-22 16:21:19 +02:00
|
|
|
t.style->addItem(ts.at(i).name(), i);
|
|
|
|
}
|
|
|
|
t.style->blockSignals(false);
|
|
|
|
InspectorBase::setElement();
|
|
|
|
}
|
|
|
|
|
2013-07-01 16:57:44 +02:00
|
|
|
//---------------------------------------------------------
|
|
|
|
// InspectorSlur
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
InspectorSlur::InspectorSlur(QWidget* parent)
|
|
|
|
: InspectorBase(parent)
|
|
|
|
{
|
|
|
|
e.setupUi(addWidget());
|
|
|
|
s.setupUi(addWidget());
|
|
|
|
|
|
|
|
iList = {
|
2014-05-26 18:18:01 +02:00
|
|
|
{ P_ID::COLOR, 0, 0, e.color, e.resetColor },
|
|
|
|
{ P_ID::VISIBLE, 0, 0, e.visible, e.resetVisible },
|
|
|
|
{ P_ID::USER_OFF, 0, 0, e.offsetX, e.resetX },
|
|
|
|
{ P_ID::USER_OFF, 1, 0, e.offsetY, e.resetY },
|
|
|
|
{ P_ID::LINE_TYPE, 0, 0, s.lineType, s.resetLineType }
|
2013-07-01 16:57:44 +02:00
|
|
|
};
|
|
|
|
mapSignals();
|
|
|
|
}
|
|
|
|
|
2013-08-02 10:47:20 +02:00
|
|
|
//---------------------------------------------------------
|
|
|
|
// InspectorEmpty
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
InspectorEmpty::InspectorEmpty(QWidget* parent)
|
|
|
|
:InspectorBase(parent)
|
|
|
|
{
|
2013-08-03 14:46:10 +02:00
|
|
|
setToolTip(tr("Select an element to display its properties"));
|
2013-08-02 10:47:20 +02:00
|
|
|
}
|
2013-07-01 16:57:44 +02:00
|
|
|
|
2014-03-24 11:50:26 +01:00
|
|
|
//---------------------------------------------------------
|
|
|
|
// InspectorBarLine
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
InspectorBarLine::InspectorBarLine(QWidget* parent)
|
|
|
|
: InspectorBase(parent)
|
|
|
|
{
|
|
|
|
static const char* buildinSpanNames[BARLINE_BUILTIN_SPANS] = {
|
|
|
|
QT_TRANSLATE_NOOP("inspector", "Staff default"),
|
|
|
|
QT_TRANSLATE_NOOP("inspector", "Tick"),
|
|
|
|
QT_TRANSLATE_NOOP("inspector", "Tick alt."),
|
|
|
|
QT_TRANSLATE_NOOP("inspector", "Short"),
|
|
|
|
QT_TRANSLATE_NOOP("inspector", "Short alt.")
|
|
|
|
};
|
|
|
|
|
|
|
|
BarLineType types[8] = {
|
2014-05-30 10:14:09 +02:00
|
|
|
BarLineType::NORMAL,
|
|
|
|
BarLineType::DOUBLE,
|
|
|
|
BarLineType::START_REPEAT,
|
|
|
|
BarLineType::END_REPEAT,
|
|
|
|
BarLineType::BROKEN,
|
|
|
|
BarLineType::END,
|
|
|
|
BarLineType::END_START_REPEAT,
|
|
|
|
BarLineType::DOTTED
|
2014-03-24 11:50:26 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
e.setupUi(addWidget());
|
|
|
|
b.setupUi(addWidget());
|
|
|
|
|
|
|
|
for (const char* name : buildinSpanNames)
|
|
|
|
b.spanType->addItem(tr(name));
|
|
|
|
for (BarLineType t : types)
|
|
|
|
b.type->addItem(BarLine::userTypeName(t), int(t));
|
|
|
|
|
|
|
|
iList = {
|
2014-05-26 18:18:01 +02:00
|
|
|
{ P_ID::COLOR, 0, 0, e.color, e.resetColor },
|
|
|
|
{ P_ID::VISIBLE, 0, 0, e.visible, e.resetVisible },
|
|
|
|
{ P_ID::USER_OFF, 0, 0, e.offsetX, e.resetX },
|
|
|
|
{ P_ID::USER_OFF, 1, 0, e.offsetY, e.resetY },
|
|
|
|
{ P_ID::SUBTYPE, 0, 0, b.type, b.resetType },
|
|
|
|
{ P_ID::BARLINE_SPAN, 0, 0, b.span, b.resetSpan },
|
|
|
|
{ P_ID::BARLINE_SPAN_FROM, 0, 0, b.spanFrom, b.resetSpanFrom },
|
|
|
|
{ P_ID::BARLINE_SPAN_TO, 0, 0, b.spanTo, b.resetSpanTo },
|
2014-03-24 11:50:26 +01:00
|
|
|
};
|
|
|
|
mapSignals();
|
|
|
|
connect(b.spanType, SIGNAL(activated(int)), SLOT(spanTypeActivated(int)));
|
|
|
|
connect(b.resetSpanType, SIGNAL(clicked()), SLOT(resetSpanType()));
|
|
|
|
}
|
|
|
|
|
|
|
|
//---------------------------------------------------------
|
|
|
|
// setElement
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
void InspectorBarLine::setElement()
|
|
|
|
{
|
|
|
|
InspectorBase::setElement();
|
|
|
|
// BarLine* bl = static_cast<BarLine*>(inspector->element());
|
|
|
|
// Measure* m = static_cast<Segment*>(bl->parent())->measure();
|
|
|
|
}
|
|
|
|
|
|
|
|
//---------------------------------------------------------
|
|
|
|
// spanTypeActivated
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
2014-03-24 14:49:17 +01:00
|
|
|
void InspectorBarLine::spanTypeActivated(int /*idx*/)
|
2014-03-24 11:50:26 +01:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
//---------------------------------------------------------
|
|
|
|
// resetSpanType
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
void InspectorBarLine::resetSpanType()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2013-03-08 12:55:12 +01:00
|
|
|
#if 0
|
|
|
|
|
2012-11-18 00:28:38 +01:00
|
|
|
#define BARLINE_TYPE_DEFAULT -1
|
|
|
|
|
|
|
|
|
|
|
|
int InspectorBarLine::builtinSpans[BARLINE_BUILTIN_SPANS][3] =
|
|
|
|
{// span From To
|
|
|
|
{ 0, 0, 0}, // = staff defalt
|
|
|
|
{ 1, -2, 2}, // tick 1
|
|
|
|
{ 1, -1, 1}, // tick 2
|
|
|
|
{ 1, 2, 0}, // short 1 (To depends on staff num. of lines)
|
|
|
|
{ 1, 1, 0} // short 2 (To depends on staff num. of lines)
|
|
|
|
};
|
|
|
|
//---------------------------------------------------------
|
|
|
|
// setElement
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
2013-03-06 18:08:22 +01:00
|
|
|
void InspectorBarLine::setElement()
|
2012-11-18 00:28:38 +01:00
|
|
|
{
|
2013-03-06 18:08:22 +01:00
|
|
|
BarLine* bl = static_cast<BarLine*>(inspector->element());
|
2012-11-18 00:28:38 +01:00
|
|
|
Measure* m = static_cast<Segment*>(bl->parent())->measure();
|
|
|
|
measureBarLineType = m->endBarLineType();
|
|
|
|
|
|
|
|
iElement->setElement(bl);
|
|
|
|
type->blockSignals(true);
|
|
|
|
span->blockSignals(true);
|
|
|
|
|
|
|
|
type->setEnabled(true);
|
|
|
|
// set type: if measure bar line is a repeat, no other type is possible; disable combo
|
2014-05-30 10:14:09 +02:00
|
|
|
if (measureBarLineType == BarLineType::START_REPEAT || measureBarLineType == BarLineType::END_REPEAT || measureBarLineType == BarLineType::END_START_REPEAT) {
|
2012-11-18 00:28:38 +01:00
|
|
|
type->setEnabled(false);
|
|
|
|
type->setCurrentIndex(0);
|
|
|
|
}
|
|
|
|
// if same as parent measure, set combo to Measure default
|
2013-03-05 20:23:59 +01:00
|
|
|
else if (bl->barLineType() == measureBarLineType) {
|
2012-11-18 00:28:38 +01:00
|
|
|
type->setCurrentIndex(0);
|
|
|
|
}
|
|
|
|
// if custom type, set combo to item corresponding to bar line type
|
|
|
|
else
|
|
|
|
for (int i = 1; i < type->count(); i++)
|
2013-03-05 20:23:59 +01:00
|
|
|
if (type->itemData(i) == bl->barLineType()) {
|
2012-11-18 00:28:38 +01:00
|
|
|
type->setCurrentIndex(i);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
// set span: fix spanTo values depending from staff number of lines
|
|
|
|
if(bl->staff()) {
|
|
|
|
Staff* st = bl->staff();
|
|
|
|
int maxSpanTo = (st->lines()-1) * 2;
|
|
|
|
builtinSpans[3][2] = maxSpanTo-2; // short
|
|
|
|
builtinSpans[4][2] = maxSpanTo-1; // short alt
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
builtinSpans[3][2] = DEFAULT_BARLINE_TO-2;
|
|
|
|
builtinSpans[4][2] = DEFAULT_BARLINE_TO-1;
|
|
|
|
}
|
|
|
|
// if bar line span is same as staff, set to "Staff default"
|
|
|
|
if (!bl->customSpan())
|
|
|
|
span->setCurrentIndex(0);
|
|
|
|
// if custom span, look for corresponding item in combo box
|
|
|
|
else {
|
|
|
|
int i;
|
|
|
|
for(i=1; i < BARLINE_BUILTIN_SPANS; i++)
|
|
|
|
if(bl->span() == builtinSpans[i][0]
|
|
|
|
&& bl->spanFrom() == builtinSpans[i][1]
|
|
|
|
&& bl->spanTo() == builtinSpans[i][2])
|
|
|
|
break;
|
|
|
|
// if no match found among combo items, will set to "Custom"
|
|
|
|
span->setCurrentIndex(i);
|
|
|
|
}
|
|
|
|
|
|
|
|
type->blockSignals(false);
|
|
|
|
span->blockSignals(false);
|
|
|
|
}
|
|
|
|
|
|
|
|
//---------------------------------------------------------
|
|
|
|
// apply
|
|
|
|
//---------------------------------------------------------
|
|
|
|
|
|
|
|
void InspectorBarLine::apply()
|
|
|
|
{
|
|
|
|
BarLine* bl = static_cast<BarLine*>(inspector->element());
|
|
|
|
Score* score = bl->score();
|
|
|
|
|
2013-01-22 12:02:22 +01:00
|
|
|
mscore->getInspector()->setInspectorEdit(true); // this edit is coming from within the inspector itself:
|
|
|
|
// do not set element values again
|
2012-11-18 00:28:38 +01:00
|
|
|
score->startCmd();
|
|
|
|
|
|
|
|
// type
|
|
|
|
int currType = type->itemData(type->currentIndex()).toInt();
|
2013-03-08 12:55:12 +01:00
|
|
|
if (currType == BARLINE_TYPE_DEFAULT)
|
2012-11-18 00:28:38 +01:00
|
|
|
currType = measureBarLineType;
|
2013-03-05 20:23:59 +01:00
|
|
|
if (currType != bl->barLineType())
|
2014-05-26 18:18:01 +02:00
|
|
|
score->undoChangeProperty(bl, P_ID::SUBTYPE, currType);
|
2012-11-18 00:28:38 +01:00
|
|
|
// if value reverted to measure default, update combo box
|
2013-03-08 12:55:12 +01:00
|
|
|
if (!bl->customSubtype())
|
2012-11-18 00:28:38 +01:00
|
|
|
type->setCurrentIndex(0);
|
|
|
|
|
|
|
|
// span: determine span, spanFrom and spanTo values for current combo box item
|
|
|
|
int currSpan = span->currentIndex();
|
|
|
|
int spanStaves, spanFrom, spanTo;
|
2013-03-08 12:55:12 +01:00
|
|
|
if (currSpan == 0) { // staff default selected
|
2012-11-18 00:28:38 +01:00
|
|
|
if(bl->staff()) { // if there is a staff
|
|
|
|
Staff* st = bl->staff(); // use its span values as selected values
|
|
|
|
spanStaves = st->barLineSpan();
|
|
|
|
spanFrom = st->barLineFrom();
|
|
|
|
spanTo = st->barLineTo();
|
|
|
|
}
|
|
|
|
else { // if no staff
|
|
|
|
spanStaves = 1; // use values for a 'standard' staff
|
|
|
|
spanFrom = 0;
|
|
|
|
spanTo = DEFAULT_BARLINE_TO;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else { // specific value selected
|
|
|
|
if (currSpan == BARLINE_BUILTIN_SPANS+1) { // selecting custom has no effect:
|
|
|
|
spanStaves = bl->span(); // use values from bar line itself
|
|
|
|
spanFrom = bl->spanFrom();
|
|
|
|
spanTo = bl->spanTo();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
spanStaves = builtinSpans[currSpan][0]; // use values from selected combo item
|
|
|
|
spanFrom = builtinSpans[currSpan][1];
|
|
|
|
spanTo = builtinSpans[currSpan][2];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// if combo values different from bar line's, set them
|
|
|
|
if(bl->span() != spanStaves || bl->spanFrom() != spanFrom || bl->spanTo() != spanTo)
|
|
|
|
score->undoChangeSingleBarLineSpan(bl, spanStaves, spanFrom, spanTo);
|
|
|
|
// if value reverted to staff default, update combo box
|
|
|
|
if(!bl->customSpan())
|
|
|
|
span->setCurrentIndex(0);
|
|
|
|
|
|
|
|
score->endCmd();
|
|
|
|
mscore->endCmd();
|
|
|
|
}
|
2013-03-07 20:01:22 +01:00
|
|
|
#endif
|
2013-05-13 18:49:17 +02:00
|
|
|
}
|
2012-11-18 00:28:38 +01:00
|
|
|
|