📄 editview.cpp
字号:
m_controlRulers->setCurrentPage(index); } else { PropertyControlRuler* controlRuler = makePropertyControlRuler(propertyName); addControlRuler(controlRuler); } if (!m_controlRulers->isVisible()) { m_controlRulers->show(); } updateBottomWidgetGeometry();}void EditView::slotShowVelocityControlRuler(){ showPropertyControlRuler(BaseProperties::VELOCITY); Segment &seg = getCurrentStaff()->getSegment(); seg.setViewFeatures(seg.getViewFeatures() | FeatureShowVelocity); getDocument()->slotDocumentModified();}void EditView::slotShowControllerEventsRuler(){ // int index = 0; // ControlRuler* existingRuler = findRuler(propertyName, index); // if (existingRuler) { // m_controlRulers->setCurrentPage(index); // } else { // ControllerEventsRuler* controlRuler = makeControllerEventRuler(); // addControlRuler(controlRuler); // } // if (!m_controlRulers->isVisible()) { // m_controlRulers->show(); // } // updateBottomWidgetGeometry();}void EditView::slotShowPropertyControlRuler(){ /* KDialogBase propChooserDialog(this, "propertychooserdialog", true, i18n("Select event property"), KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok); KListBox* propList = new KListBox(propChooserDialog.makeVBoxMainWidget()); new QListBoxRGProperty(propList, BaseProperties::VELOCITY.c_str()); int rc = propChooserDialog.exec(); if (rc == QDialog::Accepted) { // fix for KDE 3.0 //QListBoxRGProperty* item = dynamic_cast<QListBoxRGProperty*>(propList->selectedItem()); QListBoxRGProperty* item = dynamic_cast<QListBoxRGProperty*> (propList->item(propList->currentItem())); if (item) { PropertyName property = item->getPropertyName(); showPropertyControlRuler(property); } } */}voidEditView::slotInsertControlRulerItem(){ ControllerEventsRuler* ruler = dynamic_cast<ControllerEventsRuler*>(getCurrentControlRuler()); if (ruler) ruler->insertControllerEvent();}voidEditView::slotEraseControlRulerItem(){ ControllerEventsRuler* ruler = dynamic_cast<ControllerEventsRuler*>(getCurrentControlRuler()); if (ruler) ruler->eraseControllerEvent();}voidEditView::slotStartControlLineItem(){ ControllerEventsRuler* ruler = dynamic_cast<ControllerEventsRuler*>(getCurrentControlRuler()); if (ruler) ruler->startControlLine();}voidEditView::slotDrawPropertyLine(){ int index = 0; PropertyControlRuler* ruler = dynamic_cast<PropertyControlRuler*> (findRuler(BaseProperties::VELOCITY, index)); if (ruler) ruler->startPropertyLine();}voidEditView::slotSelectAllProperties(){ int index = 0; PropertyControlRuler* ruler = dynamic_cast<PropertyControlRuler*> (findRuler(BaseProperties::VELOCITY, index)); if (ruler) ruler->selectAllProperties();}voidEditView::slotClearControlRulerItem(){ ControllerEventsRuler* ruler = dynamic_cast<ControllerEventsRuler*>(getCurrentControlRuler()); if (ruler) ruler->clearControllerEvents();}voidEditView::slotHalfSpeed(){ if (!m_currentEventSelection) return ; KTmpStatusMsg msg(i18n("Halving speed..."), this); addCommandToHistory( new RescaleCommand(*m_currentEventSelection, m_currentEventSelection->getTotalDuration() * 2, false));}voidEditView::slotDoubleSpeed(){ if (!m_currentEventSelection) return ; KTmpStatusMsg msg(i18n("Doubling speed..."), this); addCommandToHistory( new RescaleCommand(*m_currentEventSelection, m_currentEventSelection->getTotalDuration() / 2, false));}voidEditView::slotRescale(){ if (!m_currentEventSelection) return ; RescaleDialog dialog (this, &getDocument()->getComposition(), m_currentEventSelection->getStartTime(), m_currentEventSelection->getEndTime() - m_currentEventSelection->getStartTime(), true, true); if (dialog.exec() == QDialog::Accepted) { KTmpStatusMsg msg(i18n("Rescaling..."), this); addCommandToHistory(new RescaleCommand (*m_currentEventSelection, dialog.getNewDuration(), dialog.shouldCloseGap())); }}void EditView::slotTranspose(){ if (!m_currentEventSelection) return ; m_config->setGroup(EditViewConfigGroup); int dialogDefault = m_config->readNumEntry("lasttransposition", 0); bool ok = false; int semitones = QInputDialog::getInteger (i18n("Transpose"), i18n("By number of semitones: "), dialogDefault, -127, 127, 1, &ok, this); if (!ok || semitones == 0) return; m_config->setGroup(EditViewConfigGroup); m_config->writeEntry("lasttransposition", semitones); KTmpStatusMsg msg(i18n("Transposing..."), this); addCommandToHistory(new TransposeCommand (semitones, *m_currentEventSelection));}void EditView::slotDiatonicTranspose(){ if (!m_currentEventSelection) return ; m_config->setGroup(EditViewConfigGroup); IntervalDialog intervalDialog(this); int ok = intervalDialog.exec(); //int dialogDefault = m_config->readNumEntry("lasttransposition", 0); int semitones = intervalDialog.getChromaticDistance(); int steps = intervalDialog.getDiatonicDistance(); if (!ok || (semitones == 0 && steps == 0)) return; m_config->setGroup(EditViewConfigGroup); KTmpStatusMsg msg(i18n("Transposing..."), this); if (intervalDialog.getChangeKey()) { std::cout << "Transposing changing keys is not currently supported on selections" << std::endl; } else { // Transpose within key //std::cout << "Transposing semitones, steps: " << semitones << ", " << steps << std::endl; addCommandToHistory(new TransposeCommand (semitones, steps, *m_currentEventSelection)); }}void EditView::slotTransposeUp(){ if (!m_currentEventSelection) return ; KTmpStatusMsg msg(i18n("Transposing up one semitone..."), this); addCommandToHistory(new TransposeCommand(1, *m_currentEventSelection));}void EditView::slotTransposeUpOctave(){ if (!m_currentEventSelection) return ; KTmpStatusMsg msg(i18n("Transposing up one octave..."), this); addCommandToHistory(new TransposeCommand(12, *m_currentEventSelection));}void EditView::slotTransposeDown(){ if (!m_currentEventSelection) return ; KTmpStatusMsg msg(i18n("Transposing down one semitone..."), this); addCommandToHistory(new TransposeCommand( -1, *m_currentEventSelection));}void EditView::slotTransposeDownOctave(){ if (!m_currentEventSelection) return ; KTmpStatusMsg msg(i18n("Transposing down one octave..."), this); addCommandToHistory(new TransposeCommand( -12, *m_currentEventSelection));}void EditView::slotInvert(){ if (!m_currentEventSelection) return ; int semitones = 0; KTmpStatusMsg msg(i18n("Inverting..."), this); addCommandToHistory(new InvertCommand (semitones, *m_currentEventSelection));}void EditView::slotRetrograde(){ if (!m_currentEventSelection) return ; int semitones = 0; KTmpStatusMsg msg(i18n("Retrograding..."), this); addCommandToHistory(new RetrogradeCommand (semitones, *m_currentEventSelection));}void EditView::slotRetrogradeInvert(){ if (!m_currentEventSelection) return ; int semitones = 0; KTmpStatusMsg msg(i18n("Retrograde inverting..."), this); addCommandToHistory(new RetrogradeInvertCommand (semitones, *m_currentEventSelection));}void EditView::slotJogLeft(){ if (!m_currentEventSelection) return ; KTmpStatusMsg msg(i18n("Jogging left..."), this); RG_DEBUG << "EditView::slotJogLeft" << endl; addCommandToHistory( new MoveCommand(*getCurrentSegment(), -Note(Note::Demisemiquaver).getDuration(), false, // don't use notation timings *m_currentEventSelection));}void EditView::slotJogRight(){ if (!m_currentEventSelection) return ; KTmpStatusMsg msg(i18n("Jogging right..."), this); RG_DEBUG << "EditView::slotJogRight" << endl; addCommandToHistory( new MoveCommand(*getCurrentSegment(), Note(Note::Demisemiquaver).getDuration(), false, // don't use notation timings *m_currentEventSelection));}voidEditView::slotFlipForwards(){ RG_DEBUG << "EditView::slotFlipForwards" << endl; ControlRuler* ruler = getCurrentControlRuler(); if (ruler) ruler->flipForwards();}voidEditView::slotFlipBackwards(){ RG_DEBUG << "EditView::slotFlipBackwards" << endl; ControlRuler* ruler = getCurrentControlRuler(); if (ruler) ruler->flipBackwards();}ControlRuler* EditView::getCurrentControlRuler(){ return dynamic_cast<ControlRuler*>(m_controlRulers->currentPage());}ControlRuler* EditView::findRuler(PropertyName propertyName, int &index){ for(index = 0; index < m_controlRulers->count(); ++index) { PropertyControlRuler* ruler = dynamic_cast<PropertyControlRuler*>(m_controlRulers->page(index)); if (ruler && ruler->getPropertyName() == propertyName) return ruler; } return 0;}ControlRuler* EditView::findRuler(const ControlParameter& controller, int &index){ for(index = 0; index < m_controlRulers->count(); ++index) { ControllerEventsRuler* ruler = dynamic_cast<ControllerEventsRuler*>(m_controlRulers->page(index)); if (ruler && *(ruler->getControlParameter()) == controller) return ruler; } return 0;}PropertyControlRuler* EditView::makePropertyControlRuler(PropertyName propertyName){ QCanvas* controlRulerCanvas = new QCanvas(this); QSize viewSize = getViewSize(); controlRulerCanvas->resize(viewSize.width(), ControlRuler::DefaultRulerHeight); // TODO - keep it in sync with main canvas size// QCanvas* controlRulerCanvas = ControlRulerCanvasRepository::getCanvas(getCurrentSegment(), propertyName,// getViewSize()); PropertyControlRuler* controlRuler = new PropertyControlRuler (propertyName, getCurrentStaff(), getHLayout(), this, controlRulerCanvas, m_controlRulers); controlRuler->setMainHorizontalScrollBar(m_canvasView->horizontalScrollBar()); return controlRuler;}ControllerEventsRuler* EditView::makeControllerEventRuler(const ControlParameter *controller){ QCanvas* controlRulerCanvas = new QCanvas(this); QSize viewSize = getViewSize(); controlRulerCanvas->resize(viewSize.width(), ControlRuler::DefaultRulerHeight); // TODO - keep it in sync with main canvas size// QCanvas* controlRulerCanvas = ControlRulerCanvasRepository::getCanvas(getCurrentSegment(), controller,// getViewSize()); ControllerEventsRuler* controlRuler = new ControllerEventsRuler (getCurrentSegment(), getHLayout(), this, controlRulerCanvas, m_controlRulers, controller); controlRuler->setMainHorizontalScrollBar(m_canvasView->horizontalScrollBar()); return controlRuler;}RosegardenCanvasView* EditView::getCanvasView(){ return m_canvasView;}}#include "EditView.moc"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -