⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 segmentparameterbox.cpp

📁 LINUX下的混音软件
💻 CPP
📖 第 1 页 / 共 3 页
字号:
voidSegmentParameterBox::useSegments(const SegmentSelection &segments){    m_segments.clear();    m_segments.resize(segments.size());    std::copy(segments.begin(), segments.end(), m_segments.begin());    populateBoxFromSegments();}voidSegmentParameterBox::slotDocColoursChanged(){    RG_DEBUG << "SegmentParameterBox::slotDocColoursChanged()" << endl;    m_colourValue->clear();    m_colourList.clear();    // Populate it from composition.m_segmentColourMap    ColourMap temp = m_doc->getComposition().getSegmentColourMap();    unsigned int i = 0;    for (RCMap::const_iterator it = temp.begin(); it != temp.end(); ++it) {        QString qtrunc(strtoqstr(it->second.second));        QPixmap colour(15, 15);        colour.fill(GUIPalette::convertColour(it->second.first));        if (qtrunc == "") {            m_colourValue->insertItem(colour, i18n("Default"), i);        } else {            // truncate name to 15 characters to avoid the combo forcing the            // whole kit and kaboodle too wide            if (qtrunc.length() > 15)                qtrunc = qtrunc.left(12) + "...";            m_colourValue->insertItem(colour, qtrunc, i);        }        m_colourList[it->first] = i; // maps colour number to menu index        ++i;    }    m_addColourPos = i;    m_colourValue->insertItem(i18n("Add New Color"), m_addColourPos);    m_colourValue->setCurrentItem(0);}void SegmentParameterBox::update(){    RG_DEBUG << "SegmentParameterBox::update()" << endl;    populateBoxFromSegments();}voidSegmentParameterBox::segmentRemoved(const Composition *composition,                                    Segment *segment){    if (composition == &m_doc->getComposition()) {        for (std::vector<Segment*>::iterator it =                    m_segments.begin(); it != m_segments.end(); ++it) {            if (*it == segment) {                m_segments.erase(it);                return ;            }        }    }}voidSegmentParameterBox::populateBoxFromSegments(){    std::vector<Segment*>::iterator it;    Tristate repeated = NotApplicable;    Tristate quantized = NotApplicable;    Tristate transposed = NotApplicable;    Tristate delayed = NotApplicable;    Tristate diffcolours = NotApplicable;    Tristate highlow = NotApplicable;    unsigned int myCol = 0;    unsigned int myHigh = 127;    unsigned int myLow = 0;    timeT qntzLevel = 0;    // At the moment we have no negative delay, so we use negative    // values to represent real-time delay in ms    timeT delayLevel = 0;    int transposeLevel = 0;    if (m_segments.size() == 0)        m_label->setText("");    else        m_label->setText(strtoqstr(m_segments[0]->getLabel()));    for (it = m_segments.begin(); it != m_segments.end(); it++) {        // ok, first thing is we know we have at least one segment        if (repeated == NotApplicable)            repeated = None;        if (quantized == NotApplicable)            quantized = None;        if (transposed == NotApplicable)            transposed = None;        if (delayed == NotApplicable)            delayed = None;        if (diffcolours == NotApplicable)            diffcolours = None;        if (highlow == NotApplicable)            highlow = None;        // Set label to "*" when multiple labels don't match        //        if (strtoqstr((*it)->getLabel()) != m_label->text())            m_label->setText("*");        // Are all, some or none of the Segments repeating?        if ((*it)->isRepeating()) {            if (it == m_segments.begin())                repeated = All;            else {                if (repeated == None)                    repeated = Some;            }        } else {            if (repeated == All)                repeated = Some;        }        // Quantization        //        if ((*it)->hasQuantization()) {            if (it == m_segments.begin()) {                quantized = All;                qntzLevel = (*it)->getQuantizer()->getUnit();            } else {                // If quantize levels don't match                if (quantized == None ||                        (quantized == All &&                         qntzLevel !=                         (*it)->getQuantizer()->getUnit()))                    quantized = Some;            }        } else {            if (quantized == All)                quantized = Some;        }        // Transpose        //        if ((*it)->getTranspose() != 0) {            if (it == m_segments.begin()) {                transposed = All;                transposeLevel = (*it)->getTranspose();            } else {                if (transposed == None ||                        (transposed == All &&                         transposeLevel != (*it)->getTranspose()))                    transposed = Some;            }        } else {            if (transposed == All)                transposed = Some;        }        // Delay        //        timeT myDelay = (*it)->getDelay();        if (myDelay == 0) {            myDelay = -((*it)->getRealTimeDelay().sec * 1000 +                        (*it)->getRealTimeDelay().msec());        }        if (myDelay != 0) {            if (it == m_segments.begin()) {                delayed = All;                delayLevel = myDelay;            } else {                if (delayed == None ||                        (delayed == All &&                         delayLevel != myDelay))                    delayed = Some;            }        } else {            if (delayed == All)                delayed = Some;        }        // Colour        if (it == m_segments.begin()) {            myCol = (*it)->getColourIndex();        } else {            if (myCol != (*it)->getColourIndex())                ;            diffcolours = All;        }        // Highest/Lowest playable        //        if (it == m_segments.begin()) {            myHigh = (*it)->getHighestPlayable();            myLow = (*it)->getLowestPlayable();        } else {            if (myHigh != (*it)->getHighestPlayable() ||                myLow != (*it)->getLowestPlayable()) {                highlow = All;            }        }    }    switch (repeated) {    case All:        m_repeatValue->setChecked(true);        break;    case Some:        m_repeatValue->setNoChange();        break;    case None:    case NotApplicable:    default:        m_repeatValue->setChecked(false);        break;    }    m_repeatValue->setEnabled(repeated != NotApplicable);    switch (quantized) {    case All: {            for (unsigned int i = 0;                    i < m_standardQuantizations.size(); ++i) {                if (m_standardQuantizations[i] == qntzLevel) {                    m_quantizeValue->setCurrentItem(i);                    break;                }            }        }        break;    case Some:        // Set the edit text to an unfeasible blank value meaning "Some"        //        m_quantizeValue->setCurrentItem( -1);        break;        // Assuming "Off" is always the last field    case None:    default:        m_quantizeValue->setCurrentItem(m_quantizeValue->count() - 1);        break;    }    m_quantizeValue->setEnabled(quantized != NotApplicable);    switch (transposed) {        // setCurrentItem works with QStrings        // 2nd arg of "true" means "add if necessary"    case All:        m_transposeValue->        setCurrentItem(QString("%1").arg(transposeLevel), true);        break;    case Some:        m_transposeValue->setCurrentItem(QString(""), true);        break;    case None:    default:        m_transposeValue->setCurrentItem("0");        break;    }    m_transposeValue->setEnabled(transposed != NotApplicable);    m_delayValue->blockSignals(true);    switch (delayed) {    case All:        if (delayLevel >= 0) {            timeT error = 0;            QString label = NotationStrings::makeNoteMenuLabel(delayLevel,                            true,                            error);            m_delayValue->setCurrentItem(label, true);        } else if (delayLevel < 0) {            m_delayValue->setCurrentItem(i18n("%1 ms").arg( -delayLevel),                                         true);        }        break;    case Some:        m_delayValue->setCurrentItem("", true);        break;    case None:    default:        m_delayValue->setCurrentItem(0);        break;    }    m_delayValue->setEnabled(delayed != NotApplicable);    m_delayValue->blockSignals(false);    switch (diffcolours) {    case None:        if (m_colourList.find(myCol) != m_colourList.end())            m_colourValue->setCurrentItem(m_colourList[myCol]);        else            m_colourValue->setCurrentItem(0);        break;    case All:    case NotApplicable:    default:        m_colourValue->setCurrentItem(0);        break;    }    m_colourValue->setEnabled(diffcolours != NotApplicable);    //!!! this is all borked up and useless; sort out after 1.3/*    switch (highlow) {    case All:        updateHighLow();        break;    case Some:    case None:    default:        m_highButton->setText(i18n("High: ---"));        m_lowButton->setText(i18n("Low: ----"));        highlow = NotApplicable;        break;    }    m_highButton->setEnabled(highlow != NotApplicable);    m_lowButton->setEnabled(highlow != NotApplicable);*/    // Enable or disable the fade in/out params/*    if (m_segments.size() == 1 &&            (*(m_segments.begin()))->getType() == Segment::Audio) {        m_autoFadeBox->blockSignals(true);        m_fadeInSpin->blockSignals(true);        m_fadeOutSpin->blockSignals(true);        ... !!! No, not setting up autofade widgets.  The implementation's too              incomplete to finish for this release.                       (Or for the next one after the one the previous comment referred to.)                       (Or for the one after the one after that.  Will we ever get those              working, or should Rich's final legacy simply be quietly disappeared?)                         m_fadeInLabel->show();                m_fadeInSpin->show();                m_fadeOutLabel->show();                m_fadeOutSpin->show();                 	instead:                m_fadeInLabel->hide();        m_fadeInSpin->hide();        m_fadeOutLabel->hide();        m_fadeOutSpin->hide();        m_autoFadeLabel->setEnabled(true);        m_autoFadeBox->setEnabled(true);        m_fadeInLabel->setEnabled(true);        m_fadeInSpin->setEnabled(true);        m_fadeOutLabel->setEnabled(true);        m_fadeOutSpin->setEnabled(true);        Segment *seg = *(m_segments.begin());        int fadeInTime = seg->getFadeInTime().sec * 1000 +                         seg->getFadeInTime().msec();        m_fadeInSpin->setValue(fadeInTime);        int fadeOutTime = seg->getFadeOutTime().sec * 1000 +                          seg->getFadeOutTime().msec();        m_fadeOutSpin->setValue(fadeOutTime);        m_autoFadeBox->setChecked(seg->isAutoFading());        m_autoFadeBox->blockSignals(false);        m_fadeInSpin->blockSignals(false);        m_fadeOutSpin->blockSignals(false);    } else {        m_autoFadeLabel->setEnabled(false);        m_autoFadeBox->setEnabled(false);        m_fadeInLabel->setEnabled(false);        m_fadeInSpin->setEnabled(false);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -