MidiMixerWindow::MidiMixerWindow(QWidget *parent, RosegardenDocument *document): MixerWindow(parent, document), m_tabFrame(0) { // Initial setup // setupTabs(); createAction("file_close", SLOT(slotClose())); createAction("play", SIGNAL(play())); createAction("stop", SIGNAL(stop())); createAction("playback_pointer_back_bar", SIGNAL(rewindPlayback())); createAction("playback_pointer_forward_bar", SIGNAL(fastForwardPlayback())); createAction("playback_pointer_start", SIGNAL(rewindPlaybackToBeginning())); createAction("playback_pointer_end", SIGNAL(fastForwardPlaybackToEnd())); createAction("record", SIGNAL(record())); createAction("panic", SIGNAL(panic())); createAction("midimix_help", SLOT(slotHelpRequested())); createAction("help_about_app", SLOT(slotHelpAbout())); createGUI("midimixer.rc"); setRewFFwdToAutoRepeat(); }
InterpretDialog::InterpretDialog(QWidget *parent) : QDialog(parent) { //setHelp("nv-interpret"); setModal(true); setWindowTitle(tr("Interpret")); QGridLayout *metagrid = new QGridLayout; setLayout(metagrid); QGroupBox *vbox = new QGroupBox(tr("Interpretations to apply"), this); QVBoxLayout *vboxLayout = new QVBoxLayout; metagrid->addWidget(vbox, 0, 0); m_applyTextDynamics = new QCheckBox (tr("Apply text dynamics (p, mf, ff etc)")); vboxLayout->addWidget(m_applyTextDynamics); m_applyHairpins = new QCheckBox (tr("Apply hairpin dynamics")); vboxLayout->addWidget(m_applyHairpins); m_stressBeats = new QCheckBox (tr("Stress beats")); vboxLayout->addWidget(m_stressBeats); m_articulate = new QCheckBox (tr("Articulate slurs, staccato, tenuto etc")); vboxLayout->addWidget(m_articulate); m_allInterpretations = new QCheckBox (tr("All available interpretations")); vboxLayout->addWidget(m_allInterpretations); vbox->setLayout(vboxLayout); QSettings settings; settings.beginGroup( NotationViewConfigGroup ); m_allInterpretations->setChecked ( qStrToBool( settings.value("interpretall", "true" ) ) ); m_applyTextDynamics->setChecked ( qStrToBool( settings.value("interprettextdynamics", "true" ) ) ); m_applyHairpins->setChecked ( qStrToBool( settings.value("interprethairpins", "true" ) ) ); m_stressBeats->setChecked ( qStrToBool( settings.value("interpretstressbeats", "true" ) ) ); m_articulate->setChecked ( qStrToBool( settings.value("interpretarticulate", "true" ) ) ); connect(m_allInterpretations, SIGNAL(clicked()), this, SLOT(slotAllBoxChanged())); slotAllBoxChanged(); QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Help); metagrid->addWidget(buttonBox, 1, 0); metagrid->setRowStretch(0, 10); connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); connect(buttonBox, SIGNAL(helpRequested()), this, SLOT(slotHelpRequested())); settings.endGroup(); }
PasteNotationDialog::PasteNotationDialog(QWidget *parent) : QDialog(parent), m_defaultType(getSavedPasteType()) { //setHelp("nv-paste-types"); setModal(true); setWindowTitle(tr("Paste")); QGridLayout *metagrid = new QGridLayout; setLayout(metagrid); QWidget *vbox = new QWidget(this); QVBoxLayout *vboxLayout = new QVBoxLayout; metagrid->addWidget(vbox, 0, 0); QGroupBox *pasteTypeGroup = new QGroupBox( tr("Paste type"), vbox ); QVBoxLayout *pasteTypeGroupLayout = new QVBoxLayout; vboxLayout->addWidget(pasteTypeGroup); PasteEventsCommand::PasteTypeMap pasteTypes = PasteEventsCommand::getPasteTypes(); for (PasteEventsCommand::PasteTypeMap::iterator i = pasteTypes.begin(); i != pasteTypes.end(); ++i) { QRadioButton *button = new QRadioButton(i->second, pasteTypeGroup); pasteTypeGroupLayout->addWidget(button); button->setChecked(m_defaultType == i->first); QObject::connect(button, SIGNAL(clicked()), this, SLOT(slotPasteTypeChanged())); m_pasteTypeButtons.push_back(button); } pasteTypeGroup->setLayout(pasteTypeGroupLayout); QGroupBox *setAsDefaultGroup = new QGroupBox( tr("Options"), vbox ); QVBoxLayout *setAsDefaultGroupLayout = new QVBoxLayout; vboxLayout->addWidget(setAsDefaultGroup); vbox->setLayout(vboxLayout); m_setAsDefaultButton = new QCheckBox (tr("Make this the default paste type"), setAsDefaultGroup); setAsDefaultGroupLayout->addWidget(m_setAsDefaultButton); m_setAsDefaultButton->setChecked(true); setAsDefaultGroup->setLayout(setAsDefaultGroupLayout); QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Help ); metagrid->addWidget(buttonBox, 1, 0); metagrid->setRowStretch(0, 10); connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); connect(buttonBox, SIGNAL(helpRequested()), this, SLOT(slotHelpRequested())); }
void ControlEditorDialog::setupActions() { createAction("file_close", SLOT(slotClose())); m_closeButton->setText(tr("Close")); connect(m_closeButton, SIGNAL(released()), this, SLOT(slotClose())); createAction("control_help", SLOT(slotHelpRequested())); createAction("help_about_app", SLOT(slotHelpAbout())); createGUI("controleditor.rc"); }
LyricEditDialog::LyricEditDialog(QWidget *parent, Segment *segment) : QDialog(parent), m_segment(segment), m_verseCount(0) { QSettings settings; settings.beginGroup(GeneralOptionsConfigGroup); bool Thorn = settings.value("use_thorn_style", true).toBool(); settings.endGroup(); setModal(true); setWindowTitle(tr("Edit Lyrics")); QGridLayout *metagrid = new QGridLayout; setLayout(metagrid); QWidget *vbox = new QWidget(this); QVBoxLayout *vboxLayout = new QVBoxLayout; metagrid->addWidget(vbox, 0, 0); QGroupBox *groupBox = new QGroupBox( tr("Lyrics for this segment"), vbox ); QVBoxLayout *groupBoxLayout = new QVBoxLayout; vboxLayout->addWidget(groupBox); vbox->setLayout(vboxLayout); QWidget *hbox = new QWidget(groupBox); QHBoxLayout *hboxLayout = new QHBoxLayout; groupBoxLayout->addWidget(hbox); hboxLayout->setSpacing(5); // new QLabel(tr("Verse:"), hbox); m_verseNumber = new QComboBox( hbox ); hboxLayout->addWidget(m_verseNumber); m_verseNumber->setEditable(false); connect(m_verseNumber, SIGNAL(activated(int)), this, SLOT(slotVerseNumberChanged(int))); m_verseAddButton = new QPushButton(tr("Add Verse"), hbox ); hboxLayout->addWidget(m_verseAddButton); connect(m_verseAddButton, SIGNAL(clicked()), this, SLOT(slotAddVerse())); m_verseRemoveButton = new QPushButton(tr("Remove Verse"), hbox ); hboxLayout->addWidget(m_verseRemoveButton); connect(m_verseRemoveButton, SIGNAL(clicked()), this, SLOT(slotRemoveVerse())); QFrame *f = new QFrame( hbox ); hboxLayout->addWidget(f); hbox->setLayout(hboxLayout); hboxLayout->setStretchFactor(f, 10); m_textEdit = new QTextEdit(groupBox); groupBoxLayout->addWidget(m_textEdit); if (Thorn) m_textEdit->setStyleSheet("background: white"); m_textEdit->setMinimumWidth(300); m_textEdit->setMinimumHeight(200); m_currentVerse = 0; unparse(); verseDialogRepopulate(); //&&& QTextEdit has a new API, and it's not clear what the analog of this // function should be. Since this setCursorPosition(0,0) looks like a very // default kind of thing, I'm going out on a limb and guessing that this is // probably now superfluous. I figure something like the cursor position in // the lyric editor being messed up is much easier to address if and when we // can see the problem, so this is a good candidate for outright removal, // flagged appropriately. (dmm) // // m_textEdit->setCursorPosition(0,0); m_textEdit->setFocus(); groupBox->setLayout(groupBoxLayout); QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Help); metagrid->addWidget(buttonBox, 1, 0); metagrid->setRowStretch(0, 10); connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); connect(buttonBox, SIGNAL(helpRequested()), this, SLOT(slotHelpRequested())); }
TempoDialog::TempoDialog(QWidget *parent, RosegardenDocument *doc, bool timeEditable): QDialog(parent), m_doc(doc), m_tempoTime(0) { setModal(true); setWindowTitle(tr("Insert Tempo Change")); setObjectName("MinorDialog"); QWidget* vbox = dynamic_cast<QWidget*>(this); QVBoxLayout *vboxLayout = new QVBoxLayout; vbox->setLayout(vboxLayout); // group box for tempo QGroupBox *frame = new QGroupBox(tr("Tempo"), vbox); frame->setContentsMargins(5, 5, 5, 5); QGridLayout *layout = new QGridLayout; layout->setSpacing(5); vboxLayout->addWidget(frame); // Set tempo layout->addWidget(new QLabel(tr("New tempo:"), frame), 0, 1); m_tempoValueSpinBox = new QDoubleSpinBox(frame); m_tempoValueSpinBox->setDecimals(3); m_tempoValueSpinBox->setMaximum(1000); m_tempoValueSpinBox->setMinimum(1); m_tempoValueSpinBox->setSingleStep(1); m_tempoValueSpinBox->setValue(120); // will set properly below layout->addWidget(m_tempoValueSpinBox, 0, 2); connect(m_tempoValueSpinBox, SIGNAL(valueChanged(double)), SLOT(slotTempoChanged(double))); m_tempoTap= new QPushButton(tr("Tap"), frame); layout->addWidget(m_tempoTap, 0, 3); connect(m_tempoTap, SIGNAL(clicked()), SLOT(slotTapClicked())); m_tempoConstant = new QRadioButton(tr("Tempo is fixed until the following tempo change"), frame); m_tempoRampToNext = new QRadioButton(tr("Tempo ramps to the following tempo"), frame); m_tempoRampToTarget = new QRadioButton(tr("Tempo ramps to:"), frame); // m_tempoTargetCheckBox = new QCheckBox(tr("Ramping to:"), frame); m_tempoTargetSpinBox = new QDoubleSpinBox(frame); m_tempoTargetSpinBox->setDecimals(3); m_tempoTargetSpinBox->setMaximum(1000); m_tempoTargetSpinBox->setMinimum(1); m_tempoTargetSpinBox->setSingleStep(1); m_tempoTargetSpinBox->setValue(120); // layout->addWidget(m_tempoTargetCheckBox, 1, 0, 0+1, 1- 1, AlignRight); // layout->addWidget(m_tempoTargetSpinBox, 1, 2); layout->addWidget(m_tempoConstant, 1, 1, 1, 2); layout->addWidget(m_tempoRampToNext, 2, 1, 1, 2); layout->addWidget(m_tempoRampToTarget, 3, 1); layout->addWidget(m_tempoTargetSpinBox, 3, 2); // connect(m_tempoTargetCheckBox, SIGNAL(clicked()), // SLOT(slotTargetCheckBoxClicked())); connect(m_tempoConstant, SIGNAL(clicked()), SLOT(slotTempoConstantClicked())); connect(m_tempoRampToNext, SIGNAL(clicked()), SLOT(slotTempoRampToNextClicked())); connect(m_tempoRampToTarget, SIGNAL(clicked()), SLOT(slotTempoRampToTargetClicked())); connect(m_tempoTargetSpinBox, SIGNAL(valueChanged(double)), SLOT(slotTargetChanged(double))); m_tempoBeatLabel = new QLabel(frame); layout->addWidget(m_tempoBeatLabel, 0, 4); m_tempoBeat = new QLabel(frame); layout->addWidget(m_tempoBeat, 0, 5); m_tempoBeatsPerMinute = new QLabel(frame); layout->addWidget(m_tempoBeatsPerMinute, 0, 6); frame->setLayout(layout); m_timeEditor = 0; if (timeEditable) { m_timeEditor = new TimeWidget (tr("Time of tempo change"), vbox, &m_doc->getComposition(), 0, true); vboxLayout->addWidget(m_timeEditor); } else { // group box for scope (area) QGroupBox *scopeGroup = new QGroupBox(tr("Scope"), vbox); vboxLayout->addWidget(scopeGroup); QVBoxLayout * scopeBoxLayout = new QVBoxLayout(scopeGroup); scopeBoxLayout->setSpacing(5); scopeBoxLayout->setMargin(5); QVBoxLayout * currentBoxLayout = scopeBoxLayout; QWidget * currentBox = scopeGroup; QLabel *child_15 = new QLabel(tr("The pointer is currently at "), currentBox); currentBoxLayout->addWidget(child_15); m_tempoTimeLabel = new QLabel(currentBox); currentBoxLayout->addWidget(m_tempoTimeLabel); m_tempoBarLabel = new QLabel(currentBox); currentBoxLayout->addWidget(m_tempoBarLabel); QLabel *spare = new QLabel(currentBox); currentBoxLayout->addWidget(spare); currentBox->setLayout(currentBoxLayout); currentBoxLayout->setStretchFactor(spare, 20); m_tempoStatusLabel = new QLabel(scopeGroup); scopeBoxLayout->addWidget(m_tempoStatusLabel); scopeGroup->setLayout(scopeBoxLayout); QWidget * changeWhereBox = scopeGroup; QVBoxLayout * changeWhereBoxLayout = scopeBoxLayout; spare = new QLabel(" ", changeWhereBox); changeWhereBoxLayout->addWidget(spare); QWidget *changeWhereVBox = new QWidget(changeWhereBox); QVBoxLayout *changeWhereVBoxLayout = new QVBoxLayout; changeWhereBoxLayout->addWidget(changeWhereVBox); changeWhereBox->setLayout(changeWhereBoxLayout); changeWhereBoxLayout->setStretchFactor(changeWhereVBox, 20); m_tempoChangeHere = new QRadioButton(tr("Apply this tempo from here onwards"), changeWhereVBox); changeWhereVBoxLayout->addWidget(m_tempoChangeHere); m_tempoChangeBefore = new QRadioButton(tr("Replace the last tempo change"), changeWhereVBox); changeWhereVBoxLayout->addWidget(m_tempoChangeBefore); m_tempoChangeBeforeAt = new QLabel(changeWhereVBox); changeWhereVBoxLayout->addWidget(m_tempoChangeBeforeAt); m_tempoChangeBeforeAt->hide(); m_tempoChangeStartOfBar = new QRadioButton(tr("Apply this tempo from the start of this bar"), changeWhereVBox); changeWhereVBoxLayout->addWidget(m_tempoChangeStartOfBar); m_tempoChangeGlobal = new QRadioButton(tr("Apply this tempo to the whole composition"), changeWhereVBox); changeWhereVBoxLayout->addWidget(m_tempoChangeGlobal); QWidget *optionHBox = new QWidget(changeWhereVBox); changeWhereVBoxLayout->addWidget(optionHBox); changeWhereVBox->setLayout(changeWhereVBoxLayout); QHBoxLayout *optionHBoxLayout = new QHBoxLayout; QLabel *child_6 = new QLabel(" ", optionHBox); optionHBoxLayout->addWidget(child_6); m_defaultBox = new QCheckBox(tr("Also make this the default tempo"), optionHBox); optionHBoxLayout->addWidget(m_defaultBox); spare = new QLabel(optionHBox); optionHBoxLayout->addWidget(spare); optionHBox->setLayout(optionHBoxLayout); optionHBoxLayout->setStretchFactor(spare, 20); connect(m_tempoChangeHere, SIGNAL(clicked()), SLOT(slotActionChanged())); connect(m_tempoChangeBefore, SIGNAL(clicked()), SLOT(slotActionChanged())); connect(m_tempoChangeStartOfBar, SIGNAL(clicked()), SLOT(slotActionChanged())); connect(m_tempoChangeGlobal, SIGNAL(clicked()), SLOT(slotActionChanged())); m_tempoChangeBefore->setChecked(true); // disable initially m_defaultBox->setEnabled(false); } QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Help); vboxLayout->addWidget(buttonBox); connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); connect(buttonBox, SIGNAL(helpRequested()), this, SLOT(slotHelpRequested())); populateTempo(); }