void ActionEditor::setFormWindow(QDesignerFormWindowInterface *formWindow) { if (formWindow != 0 && formWindow->mainContainer() == 0) formWindow = 0; // we do NOT rely on this function to update the action editor if (m_formWindow == formWindow) return; if (m_formWindow != 0) { const ActionList actionList = m_formWindow->mainContainer()->findChildren<QAction*>(); foreach (QAction *action, actionList) disconnect(action, SIGNAL(changed()), this, SLOT(slotActionChanged())); } m_formWindow = formWindow; m_actionView->model()->clearActions(); m_actionEdit->setEnabled(false); #ifndef QT_NO_CLIPBOARD m_actionCopy->setEnabled(false); m_actionCut->setEnabled(false); #endif m_actionDelete->setEnabled(false); if (!formWindow || !formWindow->mainContainer()) { m_actionNew->setEnabled(false); m_filterWidget->setEnabled(false); return; } m_actionNew->setEnabled(true); m_filterWidget->setEnabled(true); const ActionList actionList = formWindow->mainContainer()->findChildren<QAction*>(); foreach (QAction *action, actionList) if (!action->isSeparator() && core()->metaDataBase()->item(action) != 0) { // Show unless it has a menu. However, listen for change on menu actions also as it might be removed if (!action->menu()) m_actionView->model()->addAction(action); connect(action, SIGNAL(changed()), this, SLOT(slotActionChanged())); } setFilter(m_filter); }
void ActionEditor::unmanageAction(QAction *action) { core()->metaDataBase()->remove(action); action->setParent(0); disconnect(action, SIGNAL(changed()), this, SLOT(slotActionChanged())); const int row = m_actionView->model()->findAction(action); if (row != -1) m_actionView->model()->remove(row); }
void ActionEditor::manageAction(QAction *action) { action->setParent(formWindow()->mainContainer()); core()->metaDataBase()->add(action); if (action->isSeparator() || action->menu() != 0) return; QDesignerPropertySheetExtension *sheet = qt_extension<QDesignerPropertySheetExtension*>(core()->extensionManager(), action); sheet->setChanged(sheet->indexOf(QLatin1String(objectNamePropertyC)), true); sheet->setChanged(sheet->indexOf(QLatin1String(textPropertyC)), true); refreshIconPropertyChanged(action, sheet); m_actionView->setCurrentIndex(m_actionView->model()->addAction(action)); connect(action, SIGNAL(changed()), this, SLOT(slotActionChanged())); }
KexiSmallToolButton::KexiSmallToolButton(QAction* action, QWidget* parent) : QToolButton(parent) , d(new Private) { d->action = action; init(); if (d->action) { connect(d->action, SIGNAL(changed()), this, SLOT(slotActionChanged())); update(d->action->text(), d->action->icon(), false); setEnabled(d->action->isEnabled()); setToolTip(d->action->toolTip()); setWhatsThis(d->action->whatsThis()); setCheckable(d->action->isCheckable()); if (d->action->menu()) { setPopupMode(QToolButton::MenuButtonPopup); setMenu(d->action->menu()); } else { connect(this, SIGNAL(toggled(bool)), this, SLOT(slotButtonToggled(bool))); connect(d->action, SIGNAL(toggled(bool)), this, SLOT(slotActionToggled(bool))); } }
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(); }