📄 segmentparameterbox.cpp
字号:
m_fadeOutLabel->setEnabled(false); m_fadeOutSpin->setEnabled(false); m_autoFadeLabel->hide(); m_autoFadeBox->hide(); m_fadeInLabel->hide(); m_fadeInSpin->hide(); m_fadeOutLabel->hide(); m_fadeOutSpin->hide(); m_autoFadeBox->setChecked(false); m_fadeInSpin->setValue(0); m_fadeOutSpin->setValue(0); }*/}void SegmentParameterBox::slotRepeatPressed(){ if (m_segments.size() == 0) return ; bool state = false; switch (m_repeatValue->state()) { case QButton::Off: state = true; break; case QButton::NoChange: case QButton::On: default: state = false; break; } // update the check box and all current Segments m_repeatValue->setChecked(state); addCommandToHistory(new SegmentCommandRepeat(m_segments, state)); // std::vector<Segment*>::iterator it; // for (it = m_segments.begin(); it != m_segments.end(); it++) // (*it)->setRepeating(state);}voidSegmentParameterBox::slotQuantizeSelected(int qLevel){ bool off = (qLevel == m_quantizeValue->count() - 1); SegmentChangeQuantizationCommand *command = new SegmentChangeQuantizationCommand (off ? 0 : m_standardQuantizations[qLevel]); std::vector<Segment*>::iterator it; for (it = m_segments.begin(); it != m_segments.end(); it++) { command->addSegment(*it); } addCommandToHistory(command);}voidSegmentParameterBox::slotTransposeTextChanged(const QString &text){ if (text.isEmpty() || m_segments.size() == 0) return ; int transposeValue = text.toInt(); // addCommandToHistory(new SegmentCommandChangeTransposeValue(m_segments, // transposeValue)); std::vector<Segment*>::iterator it; for (it = m_segments.begin(); it != m_segments.end(); it++) { (*it)->setTranspose(transposeValue); } emit documentModified();}voidSegmentParameterBox::slotTransposeSelected(int value){ slotTransposeTextChanged(m_transposeValue->text(value));}voidSegmentParameterBox::slotDelayTimeChanged(timeT delayValue){ // by convention and as a nasty hack, we use negative timeT here // to represent positive RealTime in ms if (delayValue > 0) { std::vector<Segment*>::iterator it; for (it = m_segments.begin(); it != m_segments.end(); it++) { (*it)->setDelay(delayValue); (*it)->setRealTimeDelay(RealTime::zeroTime); } } else if (delayValue < 0) { std::vector<Segment*>::iterator it; for (it = m_segments.begin(); it != m_segments.end(); it++) { (*it)->setDelay(0); int sec = ( -delayValue) / 1000; int nsec = (( -delayValue) - 1000 * sec) * 1000000; (*it)->setRealTimeDelay(RealTime(sec, nsec)); } } else { std::vector<Segment*>::iterator it; for (it = m_segments.begin(); it != m_segments.end(); it++) { (*it)->setDelay(0); (*it)->setRealTimeDelay(RealTime::zeroTime); } } emit documentModified();}voidSegmentParameterBox::slotDelayTextChanged(const QString &text){ if (text.isEmpty() || m_segments.size() == 0) return ; slotDelayTimeChanged( -(text.toInt()));}voidSegmentParameterBox::slotDelaySelected(int value){ if (value < int(m_delays.size())) { slotDelayTimeChanged(m_delays[value]); } else { slotDelayTimeChanged( -(m_realTimeDelays[value - m_delays.size()])); }}voidSegmentParameterBox::slotColourSelected(int value){ if (value != m_addColourPos) { unsigned int temp = 0; ColourTable::ColourList::const_iterator pos; for (pos = m_colourList.begin(); pos != m_colourList.end(); ++pos) { if (pos->second == value) { temp = pos->first; break; } } SegmentSelection segments; std::vector<Segment*>::iterator it; for (it = m_segments.begin(); it != m_segments.end(); ++it) { segments.insert(*it); } SegmentColourCommand *command = new SegmentColourCommand(segments, temp); addCommandToHistory(command); } else { ColourMap newMap = m_doc->getComposition().getSegmentColourMap(); QColor newColour; bool ok = false; QString newName = KLineEditDlg::getText(i18n("New Color Name"), i18n("Enter new name"), i18n("New"), &ok); if ((ok == true) && (!newName.isEmpty())) { KColorDialog box(this, "", true); int result = box.getColor(newColour); if (result == KColorDialog::Accepted) { Colour newRColour = GUIPalette::convertColour(newColour); newMap.addItem(newRColour, qstrtostr(newName)); SegmentColourMapCommand *command = new SegmentColourMapCommand(m_doc, newMap); addCommandToHistory(command); slotDocColoursChanged(); } } // Else we don't do anything as they either didn't give a name· // or didn't give a colour }}voidSegmentParameterBox::updateHighLow(){ // Key of C major and NoAccidental means any "black key" notes will be // written as sharps. Accidental accidental = Accidentals::NoAccidental; Rosegarden::Key key = Rosegarden::Key("C major"); Pitch highest(m_highestPlayable, accidental); Pitch lowest(m_lowestPlayable, accidental); KConfig *config = kapp->config(); config->setGroup(GeneralOptionsConfigGroup); int base = config->readNumEntry("midipitchoctave", -2); //!!! FIXME this code is broken, and needs to be fixed after the fashion of //the TPB, but I'm not bothering with that at this time, because they are //going to be hidden for 1.3 anyway// m_highButton->setText(QString("&High: %1%2").arg(highest.getNoteName(key)).arg(highest.getOctave(base)));// m_lowButton->setText(QString("&Low: %1%2").arg(lowest.getNoteName(key)).arg(lowest.getOctave(base)));}voidSegmentParameterBox::slotHighestPressed(){ RG_DEBUG << "SegmentParameterBox::slotHighestPressed()" << endl; PitchPickerDialog dialog(0, m_highestPlayable, i18n("Highest playable note")); std::vector<Segment*>::iterator it; if (dialog.exec() == QDialog::Accepted) { m_highestPlayable = dialog.getPitch(); updateHighLow(); for (it = m_segments.begin(); it != m_segments.end(); it++) { (*it)->setHighestPlayable(m_highestPlayable); } emit documentModified(); }}voidSegmentParameterBox::slotLowestPressed(){ RG_DEBUG << "SegmentParameterBox::slotLowestPressed()" << endl; PitchPickerDialog dialog(0, m_lowestPlayable, i18n("Lowest playable note")); std::vector<Segment*>::iterator it; if (dialog.exec() == QDialog::Accepted) { m_lowestPlayable = dialog.getPitch(); updateHighLow(); for (it = m_segments.begin(); it != m_segments.end(); it++) { (*it)->setLowestPlayable(m_lowestPlayable); } emit documentModified(); }}MultiViewCommandHistory*SegmentParameterBox::getCommandHistory(){ return m_doc->getCommandHistory();}voidSegmentParameterBox::addCommandToHistory(KCommand *command){ m_doc->getCommandHistory()->addCommand(command);}voidSegmentParameterBox::slotEditSegmentLabel(){ QString editLabel; if (m_segments.size() == 0) return ; else if (m_segments.size() == 1) editLabel = i18n("Modify Segment label"); else editLabel = i18n("Modify Segments label"); bool ok = false; // Remove the asterisk if we're using it // QString label = m_label->text(); if (label == "*") label = ""; QString newLabel = KLineEditDlg::getText(editLabel, i18n("Enter new label"), m_label->text(), &ok, this); if (ok) { SegmentSelection segments; std::vector<Segment*>::iterator it; for (it = m_segments.begin(); it != m_segments.end(); ++it) segments.insert(*it); SegmentLabelCommand *command = new SegmentLabelCommand(segments, newLabel); addCommandToHistory(command); // fix #1776915, maybe? update(); }}voidSegmentParameterBox::slotAudioFadeChanged(int value){ RG_DEBUG << "SegmentParameterBox::slotAudioFadeChanged - value = " << value << endl;/* if (m_segments.size() == 0) return ; bool state = false; if (value == QButton::On) state = true; std::vector<Segment*>::iterator it; for (it = m_segments.begin(); it != m_segments.end(); it++) { (*it)->setAutoFade(state); }*/}voidSegmentParameterBox::slotFadeInChanged(int value){ RG_DEBUG << "SegmentParameterBox::slotFadeInChanged - value = " << value << endl;/* if (m_segments.size() == 0) return ; if (value == 0 && m_fadeOutSpin->value() == 0) slotAudioFadeChanged(QButton::Off); else slotAudioFadeChanged(QButton::On); // Convert from ms // RealTime fadeInTime(value / 1000, (value % 1000) * 1000000); std::vector<Segment*>::iterator it; for (it = m_segments.begin(); it != m_segments.end(); it++) { (*it)->setFadeInTime(fadeInTime); } emit documentModified();*/}voidSegmentParameterBox::slotFadeOutChanged(int value){ RG_DEBUG << "SegmentParameterBox::slotFadeOutChanged - value = " << value << endl;/* if (m_segments.size() == 0) return ; if (value == 0 && m_fadeInSpin->value() == 0) slotAudioFadeChanged(QButton::Off); else slotAudioFadeChanged(QButton::On); // Convert from ms // RealTime fadeOutTime(value / 1000000, (value % 1000) * 10000000); std::vector<Segment*>::iterator it; for (it = m_segments.begin(); it != m_segments.end(); it++) { (*it)->setFadeOutTime(fadeOutTime); } emit documentModified();*/}voidSegmentParameterBox::showAdditionalControls(bool showThem){ //!!! disabled until after 1.3 /* m_highButton->setShown(showThem); m_lowButton->setShown(showThem); m_rangeLabel->setShown(showThem); */}QStringSegmentParameterBox::getPreviousBox(RosegardenParameterArea::Arrangement arrangement) const{ if (arrangement == RosegardenParameterArea::CLASSIC_STYLE) { return ""; } else { return i18n("Instrument"); }}}#include "SegmentParameterBox.moc"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -