77
78
std::vector<Arranger::custom_col_t> Arranger::custom_columns; //FINDMICH TODO: eliminate all usage of new_custom_columns
78
79
std::vector<Arranger::custom_col_t> Arranger::new_custom_columns; //and instead let the arranger update without restarting muse!
79
80
QByteArray Arranger::header_state;
81
static const char* gArrangerRasterStrings[] = {
82
QT_TRANSLATE_NOOP("MusEGui::Arranger", "Off"), QT_TRANSLATE_NOOP("MusEGui::Arranger", "Bar"), "1/2", "1/4", "1/8", "1/16"
84
static int gArrangerRasterTable[] = { 1, 0, 768, 384, 192, 96 };
81
86
void Arranger::writeCustomColumns(int level, MusECore::Xml& xml)
238
243
cursorPos->setFixedHeight(22);
239
244
toolbar->addWidget(cursorPos);
241
const char* rastval[] = {
242
QT_TRANSLATE_NOOP("MusEGui::Arranger", "Off"), QT_TRANSLATE_NOOP("MusEGui::Arranger", "Bar"), "1/2", "1/4", "1/8", "1/16"
244
246
label = new QLabel(tr("Snap"));
245
247
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
246
248
label->setIndent(3);
247
249
toolbar->addWidget(label);
248
QComboBox* raster = new QComboBox();
250
_rasterCombo = new QComboBox();
249
251
for (int i = 0; i < 6; i++)
250
raster->insertItem(i, tr(rastval[i]));
251
raster->setCurrentIndex(1);
252
_rasterCombo->insertItem(i, tr(gArrangerRasterStrings[i]), gArrangerRasterTable[i]);
253
_rasterCombo->setCurrentIndex(1);
252
254
// Set the audio record part snapping. Set to 0 (bar), the same as this combo box intial raster.
253
255
MusEGlobal::song->setArrangerRaster(0);
254
toolbar->addWidget(raster);
255
connect(raster, SIGNAL(activated(int)), SLOT(_setRaster(int)));
256
raster->setFocusPolicy(Qt::TabFocus);
256
toolbar->addWidget(_rasterCombo);
257
connect(_rasterCombo, SIGNAL(activated(int)), SLOT(rasterChanged(int)));
258
_rasterCombo->setFocusPolicy(Qt::TabFocus);
259
261
label = new QLabel(tr("Len"));
477
479
connect(list, SIGNAL(keyPressExt(QKeyEvent*)), canvas, SLOT(redirKeypress(QKeyEvent*)));
478
480
connect(canvas, SIGNAL(selectTrackAbove()), list, SLOT(selectTrackAbove()));
479
481
connect(canvas, SIGNAL(selectTrackBelow()), list, SLOT(selectTrackBelow()));
480
connect(canvas, SIGNAL(horizontalZoom(bool,int)), SLOT(horizontalZoom(bool,int)));
482
connect(canvas, SIGNAL(horizontalZoom(bool, const QPoint&)), SLOT(horizontalZoom(bool, const QPoint&)));
483
connect(canvas, SIGNAL(horizontalZoom(int, const QPoint&)), SLOT(horizontalZoom(int, const QPoint&)));
481
484
connect(lenEntry, SIGNAL(returnPressed()), SLOT(focusCanvas()));
482
485
connect(lenEntry, SIGNAL(escapePressed()), SLOT(focusCanvas()));
483
486
connect(globalPitchSpinBox, SIGNAL(returnPressed()), SLOT(focusCanvas()));
732
735
void Arranger::writeStatus(int level, MusECore::Xml& xml)
734
737
xml.tag(level++, "arranger");
738
xml.intTag(level, "raster", _raster);
735
739
xml.intTag(level, "info", ib->isChecked());
736
740
split->writeStatus(level, xml);
822
831
//---------------------------------------------------------
824
833
//---------------------------------------------------------
826
void Arranger::_setRaster(int index)
835
void Arranger::rasterChanged(int index)
828
static int rasterTable[] = {
829
1, 0, 768, 384, 192, 96
831
_raster = rasterTable[index];
837
_raster = gArrangerRasterTable[index];
832
838
// Set the audio record part snapping.
833
839
MusEGlobal::song->setArrangerRaster(_raster);
834
840
canvas->redraw();
838
844
//---------------------------------------------------------
846
//---------------------------------------------------------
848
bool Arranger::setRasterVal(int val)
852
int idx = _rasterCombo->findData(val);
855
fprintf(stderr, "Arranger::setRasterVal raster:%d not found\n", val);
859
_rasterCombo->blockSignals(true);
860
_rasterCombo->setCurrentIndex(idx);
861
_rasterCombo->blockSignals(false);
862
// Set the audio record part snapping.
863
MusEGlobal::song->setArrangerRaster(_raster);
868
//---------------------------------------------------------
840
870
//---------------------------------------------------------
1207
1237
key+= Qt::CTRL;
1209
1239
if (key == shortcuts[SHRT_ZOOM_IN].key) {
1211
QPoint cp = canvas->mapFromGlobal(QCursor::pos());
1212
QPoint sp = editor->mapFromGlobal(QCursor::pos());
1213
if(cp.x() >= 0 && cp.x() < canvas->width() && sp.y() >= 0 && sp.y() < editor->height())
1215
horizontalZoom(true, offset);
1240
horizontalZoom(true, QCursor::pos());
1218
1243
else if (key == shortcuts[SHRT_ZOOM_OUT].key) {
1220
QPoint cp = canvas->mapFromGlobal(QCursor::pos());
1221
QPoint sp = editor->mapFromGlobal(QCursor::pos());
1222
if(cp.x() >= 0 && cp.x() < canvas->width() && sp.y() >= 0 && sp.y() < editor->height())
1224
horizontalZoom(false, offset);
1244
horizontalZoom(false, QCursor::pos());
1228
1248
QWidget::keyPressEvent(event);
1231
void Arranger::horizontalZoom(bool zoom_in, int pos_offset)
1251
void Arranger::horizontalZoom(bool zoom_in, const QPoint& glob_pos)
1233
1253
int mag = hscroll->mag();
1234
1254
int zoomlvl = ScrollScale::getQuickZoomLevel(mag);
1245
1265
int newmag = ScrollScale::convertQuickZoomLevelToMag(zoomlvl);
1246
hscroll->setMag(newmag, pos_offset);
1267
QPoint cp = canvas->mapFromGlobal(glob_pos);
1268
QPoint sp = editor->mapFromGlobal(glob_pos);
1269
if(cp.x() >= 0 && cp.x() < canvas->width() && sp.y() >= 0 && sp.y() < editor->height())
1270
hscroll->setMag(newmag, cp.x());
1273
void Arranger::horizontalZoom(int mag, const QPoint& glob_pos)
1275
QPoint cp = canvas->mapFromGlobal(glob_pos);
1276
QPoint sp = editor->mapFromGlobal(glob_pos);
1277
if(cp.x() >= 0 && cp.x() < canvas->width() && sp.y() >= 0 && sp.y() < editor->height())
1278
hscroll->setMag(hscroll->mag() + mag, cp.x());
1249
1281
} // namespace MusEGui