summaryrefslogtreecommitdiff
path: root/muse2/muse/midiedit/pianoroll.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'muse2/muse/midiedit/pianoroll.cpp')
-rw-r--r--muse2/muse/midiedit/pianoroll.cpp95
1 files changed, 44 insertions, 51 deletions
diff --git a/muse2/muse/midiedit/pianoroll.cpp b/muse2/muse/midiedit/pianoroll.cpp
index 33245c4c..71b2abf8 100644
--- a/muse2/muse/midiedit/pianoroll.cpp
+++ b/muse2/muse/midiedit/pianoroll.cpp
@@ -157,12 +157,10 @@ PianoRoll::PianoRoll(MusECore::PartList* pl, QWidget* parent, const char* name,
menuSelect->addSeparator();
- //selectPrevPartAction = select->addAction(tr("&Previous Part"));
selectPrevPartAction = menuSelect->addAction(QIcon(*select_all_parts_on_trackIcon), tr("&Previous Part"));
mapper->setMapping(selectPrevPartAction, PianoCanvas::CMD_SELECT_PREV_PART);
connect(selectPrevPartAction, SIGNAL(triggered()), mapper, SLOT(map()));
- //selNextPartAction = select->addAction(tr("&Next Part"));
selectNextPartAction = menuSelect->addAction(QIcon(*select_all_parts_on_trackIcon), tr("&Next Part"));
mapper->setMapping(selectNextPartAction, PianoCanvas::CMD_SELECT_NEXT_PART);
connect(selectNextPartAction, SIGNAL(triggered()), mapper, SLOT(map()));
@@ -232,17 +230,14 @@ PianoRoll::PianoRoll(MusECore::PartList* pl, QWidget* parent, const char* name,
QActionGroup* actgrp = new QActionGroup(this);
actgrp->setExclusive(true);
- //evColorBlueAction = eventColor->addAction(tr("&Blue"));
evColorBlueAction = actgrp->addAction(tr("&Blue"));
evColorBlueAction->setCheckable(true);
colorMapper->setMapping(evColorBlueAction, 0);
- //evColorPitchAction = eventColor->addAction(tr("&Pitch colors"));
evColorPitchAction = actgrp->addAction(tr("&Pitch colors"));
evColorPitchAction->setCheckable(true);
colorMapper->setMapping(evColorPitchAction, 1);
- //evColorVelAction = eventColor->addAction(tr("&Velocity colors"));
evColorVelAction = actgrp->addAction(tr("&Velocity colors"));
evColorVelAction->setCheckable(true);
colorMapper->setMapping(evColorVelAction, 2);
@@ -269,18 +264,21 @@ PianoRoll::PianoRoll(MusECore::PartList* pl, QWidget* parent, const char* name,
srec->setToolTip(tr("Step Record"));
srec->setIcon(*steprecIcon);
srec->setCheckable(true);
+ srec->setFocusPolicy(Qt::NoFocus);
tools->addWidget(srec);
midiin = new QToolButton();
midiin->setToolTip(tr("Midi Input"));
midiin->setIcon(*midiinIcon);
midiin->setCheckable(true);
+ midiin->setFocusPolicy(Qt::NoFocus);
tools->addWidget(midiin);
speaker = new QToolButton();
speaker->setToolTip(tr("Play Events"));
speaker->setIcon(*speakerIcon);
speaker->setCheckable(true);
+ speaker->setFocusPolicy(Qt::NoFocus);
tools->addWidget(speaker);
tools2 = new MusEGui::EditToolBar(this, pianorollTools);
@@ -306,31 +304,21 @@ PianoRoll::PianoRoll(MusECore::PartList* pl, QWidget* parent, const char* name,
hsplitter->setHandleWidth(2);
QPushButton* ctrl = new QPushButton(tr("ctrl"), mainw);
- //QPushButton* ctrl = new QPushButton(tr("C"), mainw); // Tim.
ctrl->setObjectName("Ctrl");
ctrl->setFont(MusEGlobal::config.fonts[3]);
ctrl->setToolTip(tr("Add Controller View"));
- //hscroll = new MusEGui::ScrollScale(-25, -2, xscale, 20000, Qt::Horizontal, mainw);
- // Increased scale to -1. To resolve/select/edit 1-tick-wide (controller graph) events. p4.0.18 Tim.
- hscroll = new MusEGui::ScrollScale(-25, -1, xscale, 20000, Qt::Horizontal, mainw);
+ ctrl->setFocusPolicy(Qt::NoFocus);
+ // Increased scale to -1. To resolve/select/edit 1-tick-wide (controller graph) events.
+ hscroll = new MusEGui::ScrollScale(-25, -1 /* formerly -2 */, xscale, 20000, Qt::Horizontal, mainw);
ctrl->setFixedSize(pianoWidth, hscroll->sizeHint().height());
- //ctrl->setFixedSize(pianoWidth / 2, hscroll->sizeHint().height()); // Tim.
-
- // Tim.
- /*
- QPushButton* trackInfoButton = new QPushButton(tr("T"), mainw);
- trackInfoButton->setObjectName("TrackInfo");
- trackInfoButton->setFont(MusEGlobal::config.fonts[3]);
- trackInfoButton->setToolTip(tr("Show track info"));
- trackInfoButton->setFixedSize(pianoWidth / 2, hscroll->sizeHint().height());
- */
+ //ctrl->setFixedSize(pianoWidth / 2, hscroll->sizeHint().height()); // DELETETHIS?
QSizeGrip* corner = new QSizeGrip(mainw);
midiTrackInfo = new MusEGui::MidiTrackInfo(mainw);
int mtiw = midiTrackInfo->width(); // Save this.
midiTrackInfo->setMinimumWidth(100);
- //midiTrackInfo->setMaximumWidth(150);
+ //midiTrackInfo->setMaximumWidth(150); DELETETHIS ?
midiTrackInfo->setSizePolicy(QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Expanding));
infoScroll = new QScrollArea;
@@ -339,7 +327,8 @@ PianoRoll::PianoRoll(MusECore::PartList* pl, QWidget* parent, const char* name,
infoScroll->setSizePolicy(QSizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding));
infoScroll->setWidget(midiTrackInfo);
infoScroll->setWidgetResizable(true);
- //infoScroll->setVisible(false);
+ infoScroll->setFocusPolicy(Qt::NoFocus);
+ //infoScroll->setVisible(false); DELETETHIS 4?
//infoScroll->setEnabled(false);
//hsplitter->addWidget(midiTrackInfo);
@@ -350,7 +339,7 @@ PianoRoll::PianoRoll(MusECore::PartList* pl, QWidget* parent, const char* name,
mainGrid->setColumnStretch(1, 100);
mainGrid->addWidget(hsplitter, 0, 1, 1, 3);
- // Original.
+ // Original. DELETETHIS 21
/*
mainGrid->setColumnStretch(1, 100);
mainGrid->addWidget(splitter, 0, 0, 1, 3);
@@ -385,8 +374,6 @@ PianoRoll::PianoRoll(MusECore::PartList* pl, QWidget* parent, const char* name,
canvas = new PianoCanvas(this, split1, xscale, yscale);
vscroll = new MusEGui::ScrollScale(-3, 7, yscale, KH * 75, Qt::Vertical, split1);
- //setFocusProxy(canvas); // Tim.
-
int offset = -(MusEGlobal::config.division/4);
canvas->setOrigin(offset, 0);
canvas->setCanvasTools(pianorollTools);
@@ -398,7 +385,7 @@ PianoRoll::PianoRoll(MusECore::PartList* pl, QWidget* parent, const char* name,
gridS1->setRowStretch(2, 100);
gridS1->setColumnStretch(1, 100);
- //gridS1->setColumnStretch(2, 100); // Tim.
+ //gridS1->setColumnStretch(2, 100); // Tim. DELETETHIS
gridS1->addWidget(time, 0, 1, 1, 2);
gridS1->addWidget(MusECore::hLine(split1), 1, 0, 1, 3);
@@ -406,7 +393,7 @@ PianoRoll::PianoRoll(MusECore::PartList* pl, QWidget* parent, const char* name,
gridS1->addWidget(canvas, 2, 1);
gridS1->addWidget(vscroll, 2, 2);
- // Tim.
+ // Tim. DELETETHIS
/*
gridS1->addWidget(time, 0, 2, 1, 3);
gridS1->addWidget(MusECore::hLine(split1), 1, 1, 1, 4);
@@ -429,11 +416,10 @@ PianoRoll::PianoRoll(MusECore::PartList* pl, QWidget* parent, const char* name,
gridS2->addWidget(ctrl, 0, 0);
gridS2->addWidget(hscroll, 0, 1);
gridS2->addWidget(corner, 0, 2, Qt::AlignBottom|Qt::AlignRight);
- //splitter->setCollapsible(0, true);
+ //splitter->setCollapsible(0, true); DELETETHIS
piano->setFixedWidth(pianoWidth);
- // Tim.
QList<int> mops;
mops.append(mtiw + 30); // 30 for possible scrollbar
mops.append(width() - mtiw - 30);
@@ -442,8 +428,9 @@ PianoRoll::PianoRoll(MusECore::PartList* pl, QWidget* parent, const char* name,
connect(tools2, SIGNAL(toolChanged(int)), canvas, SLOT(setTool(int)));
connect(ctrl, SIGNAL(clicked()), SLOT(addCtrl()));
- //connect(trackInfoButton, SIGNAL(clicked()), SLOT(toggleTrackInfo())); Tim.
+ //connect(trackInfoButton, SIGNAL(clicked()), SLOT(toggleTrackInfo())); Tim. DELETETHIS
connect(info, SIGNAL(valueChanged(MusEGui::NoteInfo::ValType, int)), SLOT(noteinfoChanged(MusEGui::NoteInfo::ValType, int)));
+
connect(vscroll, SIGNAL(scrollChanged(int)), piano, SLOT(setYPos(int)));
connect(vscroll, SIGNAL(scrollChanged(int)), canvas, SLOT(setYPos(int)));
connect(vscroll, SIGNAL(scaleChanged(int)), canvas, SLOT(setYMag(int)));
@@ -470,11 +457,18 @@ PianoRoll::PianoRoll(MusECore::PartList* pl, QWidget* parent, const char* name,
connect(speaker, SIGNAL(toggled(bool)), SLOT(setSpeaker(bool)));
connect(canvas, SIGNAL(followEvent(int)), SLOT(follow(int)));
+ if(MusEGlobal::config.smartFocus)
+ {
+ connect(info, SIGNAL(returnPressed()), SLOT(focusCanvas()));
+ connect(info, SIGNAL(escapePressed()), SLOT(focusCanvas()));
+ connect(midiTrackInfo, SIGNAL(returnPressed()), SLOT(focusCanvas()));
+ connect(midiTrackInfo, SIGNAL(escapePressed()), SLOT(focusCanvas()));
+ }
+
connect(hscroll, SIGNAL(scaleChanged(int)), SLOT(updateHScrollRange()));
piano->setYPos(KH * 30);
canvas->setYPos(KH * 30);
vscroll->setPos(KH * 30);
- //setSelection(0, 0, 0); //Really necessary? Causes segfault when only 1 item selected, replaced by the following:
info->setEnabled(false);
connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged1(int)));
@@ -490,10 +484,10 @@ PianoRoll::PianoRoll(MusECore::PartList* pl, QWidget* parent, const char* name,
connect(toolbar, SIGNAL(rasterChanged(int)),SLOT(setRaster(int)));
connect(toolbar, SIGNAL(soloChanged(bool)), SLOT(soloChanged(bool)));
- setFocusPolicy(Qt::StrongFocus);
+ setFocusPolicy(Qt::NoFocus);
+
setEventColorMode(colorMode);
-
QClipboard* cb = QApplication::clipboard();
connect(cb, SIGNAL(dataChanged()), SLOT(clipboardChanged()));
@@ -504,7 +498,6 @@ PianoRoll::PianoRoll(MusECore::PartList* pl, QWidget* parent, const char* name,
const MusECore::Pos cpos=MusEGlobal::song->cPos();
canvas->setPos(0, cpos.tick(), true);
canvas->selectAtTick(cpos.tick());
- //canvas->selectFirst();//
unsigned pos=0;
if(initPos >= MAXINT)
@@ -534,12 +527,10 @@ void PianoRoll::songChanged1(int bits)
return;
if (bits & SC_SOLO)
- {
toolbar->setSolo(canvas->track()->solo());
- return;
- }
+
songChanged(bits);
- //trackInfo->songChanged(bits);
+
// We'll receive SC_SELECTION if a different part is selected.
if (bits & SC_SELECTION)
updateTrackInfo();
@@ -552,7 +543,6 @@ void PianoRoll::songChanged1(int bits)
void PianoRoll::configChanged()
{
initShortcuts();
- //trackInfo->updateTrackInfo();
}
//---------------------------------------------------------
@@ -615,7 +605,6 @@ void PianoRoll::setTime(unsigned tick)
PianoRoll::~PianoRoll()
{
- // MusEGlobal::undoRedo->removeFrom(tools); // p4.0.6 Removed
}
//---------------------------------------------------------
@@ -701,11 +690,21 @@ void PianoRoll::setSelection(int tick, MusECore::Event& e, MusECore::Part* p)
}
//---------------------------------------------------------
+// focusCanvas
+//---------------------------------------------------------
+
+void PianoRoll::focusCanvas()
+{
+ canvas->setFocus();
+ canvas->activateWindow();
+}
+
+//---------------------------------------------------------
// edit currently selected Event
//---------------------------------------------------------
void PianoRoll::noteinfoChanged(MusEGui::NoteInfo::ValType type, int val)
- {
+ {
int selections = canvas->selectionSize();
if (selections == 0) {
@@ -731,7 +730,6 @@ void PianoRoll::noteinfoChanged(MusEGui::NoteInfo::ValType type, int val)
break;
}
// Indicate do undo, and do not do port controller values and clone parts.
- //MusEGlobal::audio->msgChangeEvent(selEvent, event, selPart);
MusEGlobal::audio->msgChangeEvent(selEvent, event, selPart, true, false, false);
}
else {
@@ -772,8 +770,7 @@ void PianoRoll::noteinfoChanged(MusEGui::NoteInfo::ValType type, int val)
CtrlEdit* PianoRoll::addCtrl()
{
- ///CtrlEdit* ctrlEdit = new CtrlEdit(splitter, this, xscale, false, "pianoCtrlEdit");
- CtrlEdit* ctrlEdit = new CtrlEdit(ctrlLane/*splitter*/, this, xscale, false, "pianoCtrlEdit"); // ccharrett
+ CtrlEdit* ctrlEdit = new CtrlEdit(ctrlLane/* formerly splitter*/, this, xscale, false, "pianoCtrlEdit"); // ccharrett
connect(tools2, SIGNAL(toolChanged(int)), ctrlEdit, SLOT(setTool(int)));
connect(hscroll, SIGNAL(scrollChanged(int)), ctrlEdit, SLOT(setXPos(int)));
connect(hscroll, SIGNAL(scaleChanged(int)), ctrlEdit, SLOT(setXMag(int)));
@@ -816,7 +813,6 @@ void PianoRoll::closeEvent(QCloseEvent* e)
_isDeleting = true; // Set flag so certain signals like songChanged, which may cause crash during delete, can be ignored.
QSettings settings("MusE", "MusE-qt");
- //settings.setValue("Pianoroll/geometry", saveGeometry());
settings.setValue("Pianoroll/windowState", saveState());
emit isDeleting(static_cast<TopWin*>(this));
@@ -887,7 +883,8 @@ void PianoRoll::setRaster(int val)
_rasterInit = val;
MidiEditor::setRaster(val);
canvas->redrawGrid();
- canvas->setFocus(); // give back focus after kb input
+ if(MusEGlobal::config.smartFocus)
+ focusCanvas(); // give back focus after kb input
}
//---------------------------------------------------------
@@ -1190,9 +1187,6 @@ void PianoRoll::setEventColorMode(int mode)
colorMode = mode;
colorModeInit = colorMode;
- ///eventColor->setItemChecked(0, mode == 0);
- ///eventColor->setItemChecked(1, mode == 1);
- ///eventColor->setItemChecked(2, mode == 2);
evColorBlueAction->setChecked(mode == 0);
evColorPitchAction->setChecked(mode == 1);
evColorVelAction->setChecked(mode == 2);
@@ -1234,7 +1228,7 @@ void PianoRoll::setSpeaker(bool val)
-/*
+/* DELETETHIS
//---------------------------------------------------------
// trackInfoScroll
//---------------------------------------------------------
@@ -1289,7 +1283,6 @@ void PianoRoll::initShortcuts()
//---------------------------------------------------------
void PianoRoll::execDeliveredScript(int id)
{
- //QString scriptfile = QString(INSTPREFIX) + SCRIPTSSUFFIX + deliveredScriptNames[id];
QString scriptfile = MusEGlobal::song->getScriptPath(id, true);
MusEGlobal::song->executeScript(scriptfile.toAscii().data(), parts(), raster(), true);
}
@@ -1309,7 +1302,7 @@ void PianoRoll::execUserScript(int id)
void PianoRoll::newCanvasWidth(int /*w*/)
{
-/*
+/* DELETETHIS whole function?
int nw = w + (vscroll->width() - 18); // 18 is the fixed width of the CtlEdit VScale widget.
if(nw < 1)
nw = 1;