ShortcutDialog::ShortcutDialog(const QKeySequence& cut) : _shortcut(cut) { QWidget *vBoxContainer = new QWidget(this); vBoxContainer->setLayout(new QVBoxLayout(vBoxContainer)); vBoxContainer->layout()->addWidget(widget = new KKeySequenceWidget(vBoxContainer)); vBoxContainer->layout()->addWidget(warning = new QLabel(vBoxContainer)); warning->hide(); widget->setKeySequence(cut); // To not check for conflicting shortcuts. The widget would use a message // box which brings down kwin. widget->setCheckForConflictsAgainst(KKeySequenceWidget::None); // It's a global shortcut so don't allow multikey shortcuts widget->setMultiKeyShortcutsAllowed(false); // Listen to changed shortcuts connect( widget, SIGNAL(keySequenceChanged(QKeySequence)), SLOT(keySequenceChanged(QKeySequence))); setMainWidget(vBoxContainer); widget->setFocus(); // make it a popup, so that it has the grab XSetWindowAttributes attrs; attrs.override_redirect = True; XChangeWindowAttributes(display(), winId(), CWOverrideRedirect, &attrs); setWindowFlags(Qt::Popup); }
//slot void ShortcutEditWidget::defaultToggled(bool checked) { if (m_isUpdating) { return; } m_isUpdating = true; if (checked) { // The default key sequence should be activated. We check first if this is // possible. if (m_customEditor->isKeySequenceAvailable(m_defaultKeySequence)) { // Clear the customs widget m_customEditor->clearKeySequence(); emit keySequenceChanged(m_defaultKeySequence); } else { // We tried to switch to the default key sequence and failed. Go // back. m_customRadio->setChecked(true); } } else { // The empty key sequence is always valid emit keySequenceChanged(QKeySequence()); } m_isUpdating = false; }
void RazorShortcutButton::setKeySequence(const QKeySequence &sequence) { Q_D(RazorShortcutButton); d->mSequence = QKeySequence(sequence); QString s = d->mSequence.toString(); if (s.isEmpty()) setText(tr("None")); else setText(s); emit keySequenceChanged(d->mSequence); emit keySequenceChanged(s); }
ShortcutEditWidget::ShortcutEditWidget(QWidget *viewport, const QKeySequence &defaultSeq, const QKeySequence &activeSeq, bool allowLetterShortcuts) : TabConnectedWidget(viewport), m_defaultKeySequence(defaultSeq), m_isUpdating(false) { QGridLayout *layout = new QGridLayout(this); m_defaultRadio = new QRadioButton(i18n("Default:"), this); m_defaultLabel = new QLabel(i18nc("No shortcut defined", "None"), this); QString defaultText = defaultSeq.toString(QKeySequence::NativeText); if (defaultText.isEmpty()) defaultText = i18nc("No shortcut defined", "None"); m_defaultLabel->setText(defaultText); m_customRadio = new QRadioButton(i18n("Custom:"), this); m_customEditor = new KKeySequenceWidget(this); m_customEditor->setModifierlessAllowed(allowLetterShortcuts); layout->addWidget(m_defaultRadio, 0, 0); layout->addWidget(m_defaultLabel, 0, 1); layout->addWidget(m_customRadio, 1, 0); layout->addWidget(m_customEditor, 1, 1); layout->setColumnStretch(2, 1); setKeySequence(activeSeq); connect(m_defaultRadio, SIGNAL(toggled(bool)), this, SLOT(defaultToggled(bool))); connect(m_customEditor, SIGNAL(keySequenceChanged(QKeySequence)), this, SLOT(setCustom(QKeySequence))); connect(m_customEditor, SIGNAL(stealShortcut(QKeySequence,KAction*)), this, SIGNAL(stealShortcut(QKeySequence,KAction*))); }
void Paste::createConfigurationInterface(KConfigDialog *parent) { m_snippetConfig = new SnippetConfig; connect(&cfg, SIGNAL(changed(ConfigData)), m_snippetConfig, SLOT(setData(ConfigData))); m_snippetConfig->setData(cfg); m_autoPasteConfig = new AutoPasteConfig; connect(&cfg, SIGNAL(changed(ConfigData)), m_autoPasteConfig, SLOT(setData(ConfigData))); m_autoPasteConfig->setData(cfg); parent->addPage(m_snippetConfig, i18n("Texts"), "accessories-text-editor"); parent->addPage(m_autoPasteConfig, i18n("Automatic Paste"), "edit-paste"); connect(parent, SIGNAL(applyClicked()), this, SLOT(configAccepted())); connect(parent, SIGNAL(okClicked()), this, SLOT(configAccepted())); connect(m_snippetConfig->textEdit, SIGNAL(textChanged()), parent, SLOT(settingsModified())); connect(m_snippetConfig->nameEdit, SIGNAL(userTextChanged(QString)), parent, SLOT(settingsModified())); connect(m_snippetConfig->list, SIGNAL(itemSelectionChanged()), parent, SLOT(settingsModified())); connect(m_snippetConfig->addMacroButton, SIGNAL(toggled(bool)), parent, SLOT(settingsModified())); connect(m_snippetConfig->addButton, SIGNAL(toggled(bool)), parent, SLOT(settingsModified())); connect(m_snippetConfig->removeButton, SIGNAL(toggled(bool)), parent, SLOT(settingsModified())); connect(m_autoPasteConfig->autoPasteCheckBox, SIGNAL(toggled(bool)), parent, SLOT(settingsModified())); connect(m_autoPasteConfig->addButton, SIGNAL(clicked()), parent, SLOT(settingsModified())); connect(m_autoPasteConfig->editButton, SIGNAL(clicked()), parent, SLOT(settingsModified())); connect(m_autoPasteConfig->removeButton, SIGNAL(clicked(bool)), parent, SLOT(settingsModified())); connect(m_autoPasteConfig->pasteKeyButton, SIGNAL(keySequenceChanged(QKeySequence)), parent, SLOT(settingsModified())); connect(m_autoPasteConfig->appsTreeView, SIGNAL(clicked(bool)), parent, SLOT(settingsModified())); }
ShortcutEditorWidget::ShortcutEditorWidget(const QString &action, const QString &shortcut, QWidget *parent) : QWidget(parent), m_action(action), m_sequenceEdit(new QKeySequenceEdit(this)), m_clearButton(new QToolButton(this)), m_restoreButton(new QToolButton(this)) { QHBoxLayout *layout = new QHBoxLayout(this); layout->setContentsMargins(0, 0, 0, 0); layout->addWidget(m_sequenceEdit); layout->addWidget(m_clearButton); layout->addWidget(m_restoreButton); m_sequenceEdit->setToolTip(tr("Shortcut")); m_sequenceEdit->setKeySequence(shortcut); m_clearButton->setToolTip(tr("Clear")); m_clearButton->setIcon(QIcon(":/icons/edit-clear-locationbar-rtl.png")); m_restoreButton->setToolTip(tr("Restore Default")); m_restoreButton->setIcon(QIcon(":/icons/edit-undo.png")); shortcutChanged(); setLayout(layout); setFocusPolicy(Qt::StrongFocus); connect(m_sequenceEdit, SIGNAL(keySequenceChanged(QKeySequence)), this, SLOT(shortcutChanged())); connect(m_clearButton, SIGNAL(clicked()), m_sequenceEdit, SLOT(clear())); connect(m_restoreButton, SIGNAL(clicked()), this, SIGNAL(restore())); }
ConfigureDialog::ConfigureDialog(QSettings *settings, QWidget *parent) : QDialog(parent), ui(new Ui::ConfigureDialog), mSettings(settings), mOldSettings(new RazorSettingsCache(settings)) { ui->setupUi(this); connect(ui->buttonBox->button(QDialogButtonBox::Reset), SIGNAL(clicked()), this, SLOT(resetSettings())); // Position ................................. ui->positionCbx->addItem(tr("Top edge of screen"), QVariant(ConfigureDialog::PositionTop)); ui->positionCbx->addItem(tr("Center of screen"), QVariant(ConfigureDialog::PositionCenter)); connect(ui->positionCbx, SIGNAL(currentIndexChanged(int)), this, SLOT(positionCbxChanged(int))); // Monitor .................................. QDesktopWidget *desktop = qApp->desktop(); ui->monitorCbx->addItem(tr("Monitor where the mouse"), QVariant(0)); int monCnt = desktop->screenCount(); for (int i=0; i<monCnt; ++i) { ui->monitorCbx->addItem(tr("Always on %1 monitor").arg(i+1), QVariant(i+1)); } ui->monitorCbx->setEnabled(monCnt > 1); connect(ui->monitorCbx, SIGNAL(currentIndexChanged(int)), this, SLOT(monitorCbxChanged(int))); // Shortcut ................................. connect(ui->shortcutEd, SIGNAL(keySequenceChanged(QString)), this, SLOT(shortcutChanged(QString))); settingsChanged(); }
void QtKeySequenceEdit::slotClearShortcut() { if (m_keySequence.isEmpty()) return; setKeySequence(QKeySequence()); emit keySequenceChanged(m_keySequence); }
void QtKeySequenceEdit::handleKeyEvent(QKeyEvent *e) { int nextKey = e->key(); if (nextKey == Qt::Key_Control || nextKey == Qt::Key_Shift || nextKey == Qt::Key_Meta || nextKey == Qt::Key_Alt || nextKey == Qt::Key_Super_L || nextKey == Qt::Key_AltGr) return; nextKey |= translateModifiers(e->modifiers(), e->text()); int k0 = m_keySequence[0]; int k1 = m_keySequence[1]; int k2 = m_keySequence[2]; int k3 = m_keySequence[3]; switch (m_num) { case 0: k0 = nextKey; k1 = 0; k2 = 0; k3 = 0; break; case 1: k1 = nextKey; k2 = 0; k3 = 0; break; case 2: k2 = nextKey; k3 = 0; break; case 3: k3 = nextKey; break; default: break; } ++m_num; if (m_num > 3) m_num = 0; m_keySequence = QKeySequence(k0, k1, k2, k3); m_lineEdit->setText(m_keySequence.toString(QKeySequence::NativeText)); e->accept(); emit keySequenceChanged(m_keySequence); }
ShortcutsSettingsPage::ShortcutsSettingsPage(const QHash<QString, ActionCollection *> &actionCollections, QWidget *parent) : SettingsPage(tr("Interface"), tr("Shortcuts"), parent), _shortcutsModel(new ShortcutsModel(actionCollections, this)), _shortcutsFilter(new ShortcutsFilter(this)) { ui.setupUi(this); _shortcutsFilter->setSourceModel(_shortcutsModel); ui.shortcutsView->setModel(_shortcutsFilter); ui.shortcutsView->expandAll(); ui.shortcutsView->resizeColumnToContents(0); ui.shortcutsView->sortByColumn(0, Qt::AscendingOrder); ui.keySequenceWidget->setModel(_shortcutsModel); connect(ui.keySequenceWidget, SIGNAL(keySequenceChanged(QKeySequence, QModelIndex)), SLOT(keySequenceChanged(QKeySequence, QModelIndex))); connect(ui.shortcutsView->selectionModel(), SIGNAL(currentChanged(QModelIndex, QModelIndex)), SLOT(setWidgetStates())); setWidgetStates(); connect(ui.useDefault, SIGNAL(clicked(bool)), SLOT(toggledCustomOrDefault())); connect(ui.useCustom, SIGNAL(clicked(bool)), SLOT(toggledCustomOrDefault())); connect(_shortcutsModel, SIGNAL(hasChanged(bool)), SLOT(setChangedState(bool))); // fugly, but directly setting it from the ctor doesn't seem to work QTimer::singleShot(0, ui.searchEdit, SLOT(setFocus())); }
void InputSelectionWidget::slotAttachKey() { AssignHotKey ahk(this, m_keySequence); if (ahk.exec() == QDialog::Accepted) { setKeySequence(QKeySequence(ahk.keySequence())); emit keySequenceChanged(m_keySequence); } }
/*! \brief Clears the current key sequence. */ void QKeySequenceEdit::clear() { Q_D(QKeySequenceEdit); d->resetState(); d->lineEdit->clear(); d->keySequence = QKeySequence(); d->keyNum = d->key[0] = d->key[1] = d->key[2] = d->key[3] = 0; d->prevKey = -1; emit keySequenceChanged(d->keySequence); }
void tst_QKeySequenceEdit::testSetters() { QKeySequenceEdit edit; QSignalSpy spy(&edit, SIGNAL(keySequenceChanged(QKeySequence))); QCOMPARE(edit.keySequence(), QKeySequence()); edit.setKeySequence(QKeySequence::New); QCOMPARE(edit.keySequence(), QKeySequence(QKeySequence::New)); edit.clear(); QCOMPARE(edit.keySequence(), QKeySequence()); QCOMPARE(spy.count(), 2); }
void KeySequenceWidget::stopRecording() { if (!keySequence().valid()) { keySequence() = backupSequence(); updateOutput(); } setDown(false); focusNextChild(); releaseKeyboard(); setStatus(Stopped); emit keySequenceChanged(); }
void ModeManager::objectAdded(QObject *obj) { IMode *mode = Aggregation::query<IMode>(obj); if (!mode) return; d->m_mainWindow->addContextObject(mode); // Count the number of modes with a higher priority int index = 0; foreach (const IMode *m, d->m_modes) if (m->priority() > mode->priority()) ++index; d->m_modes.insert(index, mode); d->m_modeStack->insertTab(index, mode->widget(), mode->icon(), mode->displayName()); d->m_modeStack->setTabEnabled(index, mode->isEnabled()); // Register mode shortcut ActionManager *am = d->m_mainWindow->actionManager(); const QString shortcutId = QLatin1String("QtCreator.Mode.") + mode->id(); QShortcut *shortcut = new QShortcut(d->m_mainWindow); shortcut->setWhatsThis(tr("Switch to <b>%1</b> mode").arg(mode->displayName())); Command *cmd = am->registerShortcut(shortcut, shortcutId, Context(Constants::C_GLOBAL)); d->m_modeShortcuts.insert(index, cmd); connect(cmd, SIGNAL(keySequenceChanged()), this, SLOT(updateModeToolTip())); for (int i = 0; i < d->m_modeShortcuts.size(); ++i) { Command *currentCmd = d->m_modeShortcuts.at(i); // we need this hack with currentlyHasDefaultSequence // because we call setDefaultShortcut multiple times on the same cmd // and still expect the current shortcut to change with it bool currentlyHasDefaultSequence = (currentCmd->keySequence() == currentCmd->defaultKeySequence()); #ifdef Q_WS_MAC currentCmd->setDefaultKeySequence(QKeySequence(QString("Meta+%1").arg(i+1))); #else currentCmd->setDefaultKeySequence(QKeySequence(QString("Ctrl+%1").arg(i+1))); #endif if (currentlyHasDefaultSequence) currentCmd->setKeySequence(currentCmd->defaultKeySequence()); } d->m_signalMapper->setMapping(shortcut, mode->id()); connect(shortcut, SIGNAL(activated()), d->m_signalMapper, SLOT(map())); connect(mode, SIGNAL(enabledStateChanged(bool)), this, SLOT(enabledStateChanged())); }
int QtKeySequenceEdit::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QWidget::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: keySequenceChanged((*reinterpret_cast< const QKeySequence(*)>(_a[1]))); break; case 1: setKeySequence((*reinterpret_cast< const QKeySequence(*)>(_a[1]))); break; case 2: slotClearShortcut(); break; default: ; } _id -= 3; } return _id; }
void ModeManager::objectAdded(QObject *obj) { IMode *mode = qobject_cast<IMode *>(obj); if (!mode) return; d->m_mainWindow->addContextObject(mode); // Count the number of modes with a higher priority int index = 0; foreach (const IMode *m, d->m_modes) if (m->priority() > mode->priority()) ++index; d->m_modes.insert(index, mode); d->m_modeStack->insertTab(index, mode->widget(), mode->icon(), mode->displayName()); d->m_modeStack->setTabEnabled(index, mode->isEnabled()); // Register mode shortcut const Id actionId = mode->id().withPrefix("QtCreator.Mode."); QAction *action = new QAction(tr("Switch to <b>%1</b> mode").arg(mode->displayName()), this); Command *cmd = ActionManager::registerAction(action, actionId); d->m_modeCommands.insert(index, cmd); connect(cmd, SIGNAL(keySequenceChanged()), m_instance, SLOT(updateModeToolTip())); for (int i = 0; i < d->m_modeCommands.size(); ++i) { Command *currentCmd = d->m_modeCommands.at(i); // we need this hack with currentlyHasDefaultSequence // because we call setDefaultShortcut multiple times on the same cmd // and still expect the current shortcut to change with it bool currentlyHasDefaultSequence = (currentCmd->keySequence() == currentCmd->defaultKeySequence()); currentCmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? QString::fromLatin1("Meta+%1").arg(i+1) : QString::fromLatin1("Ctrl+%1").arg(i+1))); if (currentlyHasDefaultSequence) currentCmd->setKeySequence(currentCmd->defaultKeySequence()); } Id id = mode->id(); connect(action, &QAction::triggered, [id] { m_instance->activateMode(id); ICore::raiseWindow(d->m_modeStack); }); connect(mode, SIGNAL(enabledStateChanged(bool)), m_instance, SLOT(enabledStateChanged())); }
//slot void ShortcutEditWidget::setCustom(const QKeySequence &seq) { if (m_isUpdating) return; // seq is a const reference to a private variable of KKeySequenceWidget. // Somewhere below we possible change that one. But we want to emit seq // whatever happens. So we make a copy. QKeySequence original = seq; m_isUpdating = true; // Check if the user typed in the default sequence into the custom field. // We do this by calling setKeySequence which will do the right thing. setKeySequence(original); emit keySequenceChanged(original); m_isUpdating = false; }
configwidget::configwidget(QWidget *parent) : QDialog(parent), m_ui(new Ui::configwidget) { m_ui->setupUi(this); conf = Config::instance(); m_ui->tabWidget->setCurrentIndex(0); loadSettings(); on_defDelay_valueChanged(conf->getDefDelay()); setVisibleDateTplEdit(conf->getDateTimeInFilename()); connect(m_ui->butSaveOpt, SIGNAL(clicked()), this, SLOT(saveSettings())); connect(m_ui->buttonBrowse, SIGNAL(clicked()), this, SLOT(selectDir())); connect(m_ui->butRestoreOpt, SIGNAL(clicked()), this, SLOT(restoreDefaults()) ); connect(m_ui->checkIncDate, SIGNAL(toggled(bool)), this, SLOT(setVisibleDateTplEdit(bool))); connect(m_ui->keyWidget, SIGNAL(keySequenceAccepted(QKeySequence)), this, SLOT(acceptShortcut(QKeySequence))); connect(m_ui->keyWidget, SIGNAL(keySequenceChanged(QKeySequence)), this, SLOT(changeShortcut(QKeySequence))); connect(m_ui->keyWidget, SIGNAL(keyNotSupported()), this, SLOT(keyNotSupported())); on_editDateTmeTpl_textEdited(conf->getDateTimeTpl()); m_ui->treeKeys->expandAll(); m_ui->treeKeys->header()->setResizeMode(QHeaderView::Stretch); // adding shortcut values in treewidget int action = 0; QTreeWidgetItemIterator iter(m_ui->treeKeys); while(*iter) { if ((*iter)->parent() != NULL) { (*iter)->setData(1, Qt::DisplayRole, conf->shortcuts()->getShortcut(action)); ++action; } ++iter; } // set false visibility to edit hokey controls m_ui->labUsedShortcut->setVisible(false); m_ui->keyWidget->setVisible(false); }
void QKeySequenceEdit::setKeySequence(const QKeySequence &keySequence) { Q_D(QKeySequenceEdit); d->resetState(); if (d->keySequence == keySequence) return; d->keySequence = keySequence; d->key[0] = d->key[1] = d->key[2] = d->key[3] = 0; d->keyNum = keySequence.count(); for (int i = 0; i < d->keyNum; ++i) d->key[i] = keySequence[i]; d->lineEdit->setText(keySequence.toString(QKeySequence::NativeText)); emit keySequenceChanged(keySequence); }
void KeySequenceWidget::doneRecording() { bool wasRecording = _isRecording; _isRecording = false; _keyButton->releaseKeyboard(); _keyButton->setDown(false); if (!wasRecording || _keySequence == _oldKeySequence) { // The sequence hasn't changed updateShortcutDisplay(); return; } if (!isKeySequenceAvailable(_keySequence)) { _keySequence = _oldKeySequence; } else if (wasRecording) { emit keySequenceChanged(_keySequence, _conflictingIndex); } updateShortcutDisplay(); }
void BasicTab::initConnections() { // general tab's components connect(_nameEdit, SIGNAL(textChanged(QString)), SLOT(slotChanged())); connect(_descriptionEdit, SIGNAL(textChanged(QString)), SLOT(slotChanged())); connect(_commentEdit, SIGNAL(textChanged(QString)), SLOT(slotChanged())); connect(_execEdit, SIGNAL(textChanged(QString)), SLOT(slotChanged())); connect(_execEdit, SIGNAL(urlSelected(KUrl)), SLOT(slotExecSelected())); connect(_launchCB, SIGNAL(clicked()), SLOT(launchcb_clicked())); connect(_systrayCB, SIGNAL(clicked()), SLOT(systraycb_clicked())); connect(_onlyShowInKdeCB, SIGNAL(clicked()), SLOT(onlyshowcb_clicked())); connect(_hiddenEntryCB, SIGNAL(clicked()), SLOT(hiddenentrycb_clicked())); connect(_iconButton, SIGNAL(iconChanged(QString)), SLOT(slotChanged())); // advanced tab's components connect(_pathEdit, SIGNAL(textChanged(QString)), SLOT(slotChanged())); connect(_terminalCB, SIGNAL(clicked()), SLOT(termcb_clicked())); connect(_terminalOptionsEdit, SIGNAL(textChanged(QString)), SLOT(slotChanged())); connect(_userCB, SIGNAL(clicked()), SLOT(uidcb_clicked())); connect(_userNameEdit, SIGNAL(textChanged(QString)), SLOT(slotChanged())); connect(_keyBindingEdit, SIGNAL(keySequenceChanged(QKeySequence)), this, SLOT(slotCapturedKeySequence(QKeySequence))); }
RazorMainMenuConfiguration::RazorMainMenuConfiguration(QSettings &settings, QWidget *parent) : QDialog(parent), ui(new Ui::RazorMainMenuConfiguration), mSettings(settings), mOldSettings(settings) { setAttribute(Qt::WA_DeleteOnClose); setObjectName("MainMenuConfigurationWindow"); ui->setupUi(this); connect(ui->buttons, SIGNAL(clicked(QAbstractButton*)), this, SLOT(dialogButtonsAction(QAbstractButton*))); connect(ui->showTextCB, SIGNAL(toggled(bool)), ui->textL, SLOT(setEnabled(bool))); connect(ui->showTextCB, SIGNAL(toggled(bool)), ui->textLE, SLOT(setEnabled(bool))); loadSettings(); connect(ui->showTextCB, SIGNAL(toggled(bool)), this, SLOT(showTextChanged(bool))); connect(ui->textLE, SIGNAL(textEdited(QString)), this, SLOT(textButtonChanged(QString))); connect(ui->chooseMenuFilePB, SIGNAL(clicked()), this, SLOT(chooseMenuFile())); connect(ui->shortcutEd, SIGNAL(keySequenceChanged(QString)), this, SLOT(shortcutChanged(QString))); }
ShortcutTriggerWidget::ShortcutTriggerWidget( KHotKeys::ShortcutTrigger *trigger, QWidget *parent ) : TriggerWidgetBase(trigger, parent) { shortcut_trigger_ui.setupUi(this); shortcut_trigger_ui.shortcut->setCheckForConflictsAgainst( // Don't know why that is necessary but it doesn't compile // without. KKeySequenceWidget::ShortcutTypes( KKeySequenceWidget::GlobalShortcuts | KKeySequenceWidget::StandardShortcuts )); connect( shortcut_trigger_ui.shortcut, SIGNAL(keySequenceChanged(QKeySequence)), _changedSignals, SLOT(map()) ); _changedSignals->setMapping(shortcut_trigger_ui.shortcut, "shortcut" ); // If the global shortcuts is changed outside of the dialog just copy the // new key sequencence. It doesn't matter if the user changed the sequence // here. connect( trigger, SIGNAL(globalShortcutChanged(QKeySequence)), this, SLOT(_k_globalShortcutChanged(QKeySequence)) ); }
BasicTab::BasicTab( QWidget *parent ) : KTabWidget(parent) { _menuFolderInfo = 0; _menuEntryInfo = 0; // general group QWidget *general_group = new QWidget(); QGridLayout *grid = new QGridLayout(general_group); grid->setMargin( KDialog::marginHint() ); grid->setSpacing( KDialog::spacingHint() ); general_group->setAcceptDrops(false); // setup line inputs _nameEdit = new KLineEdit(general_group); _nameEdit->setAcceptDrops(false); _descriptionEdit = new KLineSpellChecking(general_group); _descriptionEdit->setAcceptDrops(false); _commentEdit = new KLineSpellChecking(general_group); _commentEdit->setAcceptDrops(false); _execEdit = new KUrlRequester(general_group); _execEdit->lineEdit()->setAcceptDrops(false); _execEdit->setWhatsThis(i18n( "Following the command, you can have several place holders which will be replaced " "with the actual values when the actual program is run:\n" "%f - a single file name\n" "%F - a list of files; use for applications that can open several local files at once\n" "%u - a single URL\n" "%U - a list of URLs\n" "%d - the folder of the file to open\n" "%D - a list of folders\n" "%i - the icon\n" "%m - the mini-icon\n" "%c - the caption")); _launchCB = new QCheckBox(i18n("Enable &launch feedback"), general_group); _systrayCB = new QCheckBox(i18n("&Place in system tray"), general_group); _onlyShowInKdeCB = new QCheckBox( i18n( "Only show in KDE" ), general_group ); _hiddenEntryCB = new QCheckBox( i18n( "Hidden entry" ), general_group ); _hiddenEntryCB->hide(); // setup labels _nameLabel = new QLabel(i18n("&Name:"),general_group); _nameLabel->setBuddy(_nameEdit); _descriptionLabel = new QLabel(i18n("&Description:"),general_group); _descriptionLabel->setBuddy(_descriptionEdit); _commentLabel = new QLabel(i18n("&Comment:"),general_group); _commentLabel->setBuddy(_commentEdit); _execLabel = new QLabel(i18n("Co&mmand:"),general_group); _execLabel->setBuddy(_execEdit); grid->addWidget(_nameLabel, 0, 0); grid->addWidget(_descriptionLabel, 1, 0); grid->addWidget(_commentLabel, 2, 0); grid->addWidget(_execLabel, 3, 0); // connect line inputs connect(_nameEdit, SIGNAL(textChanged(QString)), SLOT(slotChanged())); connect(_descriptionEdit, SIGNAL(textChanged(QString)), SLOT(slotChanged())); connect(_commentEdit, SIGNAL(textChanged(QString)), SLOT(slotChanged())); connect(_execEdit, SIGNAL(textChanged(QString)), SLOT(slotChanged())); connect(_execEdit, SIGNAL(urlSelected(KUrl)), SLOT(slotExecSelected())); connect(_launchCB, SIGNAL(clicked()), SLOT(launchcb_clicked())); connect(_systrayCB, SIGNAL(clicked()), SLOT(systraycb_clicked())); connect(_onlyShowInKdeCB, SIGNAL(clicked()), SLOT(onlyshowcb_clicked()) ); connect( _hiddenEntryCB, SIGNAL(clicked()), SLOT(hiddenentrycb_clicked()) ); // add line inputs to the grid grid->addWidget(_nameEdit, 0, 1, 1, 1); grid->addWidget(_descriptionEdit, 1, 1, 1, 1); grid->addWidget(_commentEdit, 2, 1, 1, 2); grid->addWidget(_execEdit, 3, 1, 1, 2); grid->addWidget(_launchCB, 4, 0, 1, 3 ); grid->addWidget(_systrayCB, 5, 0, 1, 3 ); grid->addWidget(_onlyShowInKdeCB, 6, 0, 1, 3 ); grid->addWidget(_hiddenEntryCB, 7, 0, 1, 3 ); // setup icon button _iconButton = new KIconButton(general_group); _iconButton->setFixedSize(56,56); _iconButton->setIconSize(32); connect(_iconButton, SIGNAL(iconChanged(QString)), SLOT(slotChanged())); grid->addWidget(_iconButton, 0, 2, 2, 1); grid->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding), 8, 0, 1, 3); // add the general group to the main layout addTab(general_group, i18n("General")); QWidget *advanced = new QWidget(); QVBoxLayout *advancedLayout = new QVBoxLayout(advanced); // path group _path_group = new QGroupBox(this); QHBoxLayout *hboxLayout1 = new QHBoxLayout(_path_group); hboxLayout1->setSpacing(KDialog::spacingHint()); hboxLayout1->setMargin(KDialog::marginHint()); _pathLabel = new QLabel(i18n("&Work path:"), _path_group); hboxLayout1->addWidget(_pathLabel); _pathEdit = new KUrlRequester(_path_group); hboxLayout1->addWidget(_pathEdit); _pathEdit->setMode(KFile::Directory | KFile::LocalOnly); _pathEdit->lineEdit()->setAcceptDrops(false); _pathLabel->setBuddy(_pathEdit); connect(_pathEdit, SIGNAL(textChanged(QString)), SLOT(slotChanged())); advancedLayout->addWidget(_path_group); // terminal group _term_group = new QGroupBox(this); QVBoxLayout *vbox = new QVBoxLayout(_term_group); vbox->setMargin(KDialog::marginHint()); vbox->setSpacing(KDialog::spacingHint()); _terminalCB = new QCheckBox(i18n("Run in term&inal"), _term_group); connect(_terminalCB, SIGNAL(clicked()), SLOT(termcb_clicked())); vbox->addWidget(_terminalCB); QWidget *hbox = new QWidget(_term_group); QHBoxLayout *hboxLayout2 = new QHBoxLayout(hbox); hbox->setLayout(hboxLayout2); hboxLayout2->setSpacing(KDialog::spacingHint()); _termOptLabel = new QLabel(i18n("Terminal &options:"), hbox); hboxLayout2->addWidget(_termOptLabel); _termOptEdit = new KLineEdit(hbox); hboxLayout2->addWidget(_termOptEdit); _termOptEdit->setAcceptDrops(false); _termOptLabel->setBuddy(_termOptEdit); connect(_termOptEdit, SIGNAL(textChanged(QString)), SLOT(slotChanged())); vbox->addWidget(hbox); advancedLayout->addWidget(_term_group); _termOptEdit->setEnabled(false); // uid group _uid_group = new QGroupBox(this); vbox = new QVBoxLayout(_uid_group); vbox->setMargin(KDialog::marginHint()); vbox->setSpacing(KDialog::spacingHint()); _uidCB = new QCheckBox(i18n("&Run as a different user"), _uid_group); connect(_uidCB, SIGNAL(clicked()), SLOT(uidcb_clicked())); vbox->addWidget(_uidCB); hbox = new QWidget(_uid_group); QHBoxLayout *hboxLayout3 = new QHBoxLayout(hbox); hbox->setLayout(hboxLayout3); hboxLayout3->setSpacing(KDialog::spacingHint()); _uidLabel = new QLabel(i18n("&Username:"******"Current shortcut &key:"), general_group_keybind); l->setBuddy( _keyEdit ); keybindLayout->addWidget(l); connect( _keyEdit, SIGNAL(keySequenceChanged(QKeySequence)), this, SLOT(slotCapturedKeySequence(QKeySequence))); keybindLayout->addWidget(_keyEdit); advancedLayout->addWidget( general_group_keybind ); advancedLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding)); addTab(advanced, i18n("Advanced")); if (!KHotKeys::present()) general_group_keybind->hide(); slotDisableAction(); }
void InputSelectionWidget::slotDetachKey() { setKeySequence(QKeySequence()); emit keySequenceChanged(m_keySequence); }
VCXYPadProperties::VCXYPadProperties(VCXYPad* xypad, Doc* doc) : QDialog(xypad) , m_xypad(xypad) , m_doc(doc) { Q_ASSERT(doc != NULL); Q_ASSERT(xypad != NULL); setupUi(this); // IDs 0-15 are reserved for XYPad base controls m_lastAssignedID = 15; QAction* action = new QAction(this); action->setShortcut(QKeySequence(QKeySequence::Close)); connect(action, SIGNAL(triggered(bool)), this, SLOT(reject())); addAction(action); /******************************************************************** * General page ********************************************************************/ m_nameEdit->setText(m_xypad->caption()); if (m_xypad->invertedAppearance() == true) m_YInvertedRadio->setChecked(true); m_panInputWidget = new InputSelectionWidget(m_doc, this); m_panInputWidget->setTitle(tr("Pan / Horizontal Axis")); m_panInputWidget->setKeyInputVisibility(false); m_panInputWidget->setInputSource(m_xypad->inputSource(VCXYPad::panInputSourceId)); m_panInputWidget->setWidgetPage(m_xypad->page()); m_panInputWidget->emitOddValues(true); m_panInputWidget->show(); m_extInputLayout->addWidget(m_panInputWidget); connect(m_panInputWidget, SIGNAL(autoDetectToggled(bool)), this, SLOT(slotPanAutoDetectToggled(bool))); connect(m_panInputWidget, SIGNAL(inputValueChanged(quint32,quint32)), this, SLOT(slotPanInputValueChanged(quint32,quint32))); m_tiltInputWidget = new InputSelectionWidget(m_doc, this); m_tiltInputWidget->setTitle(tr("Tilt / Vertical Axis")); m_tiltInputWidget->setKeyInputVisibility(false); m_tiltInputWidget->setInputSource(m_xypad->inputSource(VCXYPad::tiltInputSourceId)); m_tiltInputWidget->setWidgetPage(m_xypad->page()); m_tiltInputWidget->emitOddValues(true); m_tiltInputWidget->show(); m_extInputLayout->addWidget(m_tiltInputWidget); connect(m_tiltInputWidget, SIGNAL(autoDetectToggled(bool)), this, SLOT(slotTiltAutoDetectToggled(bool))); connect(m_tiltInputWidget, SIGNAL(inputValueChanged(quint32,quint32)), this, SLOT(slotTiltInputValueChanged(quint32,quint32))); m_widthInputWidget = new InputSelectionWidget(m_doc, this); m_widthInputWidget->setTitle(tr("Width")); m_widthInputWidget->setKeyInputVisibility(false); m_widthInputWidget->setInputSource(m_xypad->inputSource(VCXYPad::widthInputSourceId)); m_widthInputWidget->setWidgetPage(m_xypad->page()); m_widthInputWidget->show(); m_sizeInputLayout->addWidget(m_widthInputWidget); m_heightInputWidget = new InputSelectionWidget(m_doc, this); m_heightInputWidget->setTitle(tr("Height")); m_heightInputWidget->setKeyInputVisibility(false); m_heightInputWidget->setInputSource(m_xypad->inputSource(VCXYPad::heightInputSourceId)); m_heightInputWidget->setWidgetPage(m_xypad->page()); m_heightInputWidget->show(); m_sizeInputLayout->addWidget(m_heightInputWidget); /******************************************************************** * Fixtures page ********************************************************************/ slotSelectionChanged(NULL); fillFixturesTree(); connect(m_percentageRadio, SIGNAL(clicked(bool)), this, SLOT(slotPercentageRadioChecked())); connect(m_degreesRadio, SIGNAL(clicked(bool)), this, SLOT(slotDegreesRadioChecked())); connect(m_dmxRadio, SIGNAL(clicked(bool)), this, SLOT(slotDMXRadioChecked())); /******************************************************************** * Presets page ********************************************************************/ m_presetInputWidget = new InputSelectionWidget(m_doc, this); m_presetInputWidget->setCustomFeedbackVisibility(true); m_presetInputWidget->setWidgetPage(m_xypad->page()); m_presetInputWidget->show(); m_presetInputLayout->addWidget(m_presetInputWidget); connect(m_presetInputWidget, SIGNAL(inputValueChanged(quint32,quint32)), this, SLOT(slotInputValueChanged(quint32,quint32))); connect(m_presetInputWidget, SIGNAL(keySequenceChanged(QKeySequence)), this, SLOT(slotKeySequenceChanged(QKeySequence))); connect(m_addPositionButton, SIGNAL(clicked(bool)), this, SLOT(slotAddPositionClicked())); connect(m_addEfxButton, SIGNAL(clicked(bool)), this, SLOT(slotAddEFXClicked())); connect(m_addSceneButton, SIGNAL(clicked(bool)), this, SLOT(slotAddSceneClicked())); connect(m_addFxGroupButton, SIGNAL(clicked(bool)), this, SLOT(slotAddFixtureGroupClicked())); connect(m_removePresetButton, SIGNAL(clicked()), this, SLOT(slotRemovePresetClicked())); connect(m_moveUpPresetButton, SIGNAL(clicked()), this, SLOT(slotMoveUpPresetClicked())); connect(m_moveDownPresetButton, SIGNAL(clicked()), this, SLOT(slotMoveDownPresetClicked())); connect(m_presetNameEdit, SIGNAL(textEdited(QString const&)), this, SLOT(slotPresetNameEdited(QString const&))); connect(m_presetsTree, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(slotPresetSelectionChanged())); m_xyArea = new VCXYPadArea(this); //m_xyArea->setFixedSize(140, 140); m_xyArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); m_xyArea->setMode(Doc::Operate); m_presetLayout->addWidget(m_xyArea); connect(m_xyArea, SIGNAL(positionChanged(QPointF)), this, SLOT(slotXYPadPositionChanged(QPointF))); foreach(const VCXYPadPreset *preset, m_xypad->presets()) { m_presetList.append(new VCXYPadPreset(*preset)); if (preset->m_id > m_lastAssignedID) m_lastAssignedID = preset->m_id; } updatePresetsTree(); QSettings settings; QVariant var = settings.value(SETTINGS_GEOMETRY); if (var.isValid() == true) restoreGeometry(var.toByteArray()); AppUtil::ensureWidgetIsVisible(this); m_doc->masterTimer()->registerDMXSource(this, "XYPadCfg"); }
//slot void KShortcutsEditorDelegate::itemActivated(QModelIndex index) { //As per our constructor our parent *is* a QTreeWidget QTreeWidget *view = static_cast<QTreeWidget *>(parent()); KShortcutsEditorItem *item = KShortcutsEditorPrivate::itemFromIndex(view, index); if (!item) { //that probably was a non-leaf (type() !=ActionItem) item return; } int column = index.column(); if (column == Name) { // If user click in the name column activate the (Global|Local)Primary // column if possible. if (!view->header()->isSectionHidden(LocalPrimary)) { column = LocalPrimary; } else if (!view->header()->isSectionHidden(GlobalPrimary)) { column = GlobalPrimary; } else { // do nothing. } index = index.sibling(index.row(), column); view->selectionModel()->select(index, QItemSelectionModel::SelectCurrent); } // Check if the models wants us to edit the item at index if (!index.data(ShowExtensionIndicatorRole).value<bool>()) { return; } if (!isExtended(index)) { //we only want maximum ONE extender open at any time. if (m_editingIndex.isValid()) { KShortcutsEditorItem *oldItem = KShortcutsEditorPrivate::itemFromIndex(view, m_editingIndex); Q_ASSERT(oldItem); //here we really expect nothing but a real KShortcutsEditorItem oldItem->setNameBold(false); contractItem(m_editingIndex); } m_editingIndex = index; QWidget *viewport = static_cast<QAbstractItemView *>(parent())->viewport(); if (column >= LocalPrimary && column <= GlobalAlternate) { ShortcutEditWidget *editor = new ShortcutEditWidget(viewport, index.data(DefaultShortcutRole).value<QKeySequence>(), index.data(ShortcutRole).value<QKeySequence>(), m_allowLetterShortcuts); if (column == GlobalPrimary) { QObject *action = index.data(ObjectRole).value<QObject *>(); editor->setAction(action); editor->setMultiKeyShortcutsAllowed(false); QString componentName = action->property("componentName").toString(); if (componentName.isEmpty()) { componentName = QCoreApplication::applicationName(); } editor->setComponentName(componentName); } m_editor = editor; // For global shortcuts check against the kde standard shortcuts if (column == GlobalPrimary || column == GlobalAlternate) { editor->setCheckForConflictsAgainst( KKeySequenceWidget::LocalShortcuts | KKeySequenceWidget::GlobalShortcuts | KKeySequenceWidget::StandardShortcuts); } editor->setCheckActionCollections(m_checkActionCollections); connect(m_editor, SIGNAL(keySequenceChanged(QKeySequence)), this, SLOT(keySequenceChanged(QKeySequence))); connect(m_editor, SIGNAL(stealShortcut(QKeySequence,QAction*)), this, SLOT(stealShortcut(QKeySequence,QAction*))); } else if (column == RockerGesture) {
TagPropWidget::TagPropWidget(QWidget* const parent) : QWidget(parent), d(new Private()) { QGridLayout* const grid = new QGridLayout(this); QLabel* const logo = new QLabel(this); logo->setPixmap(KIcon("tag-properties").pixmap(30,30)); d->topLabel = new QLabel(this); d->topLabel->setText(i18n("Tag Properties")); d->topLabel->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); d->topLabel->setWordWrap(false); KSeparator* const line = new KSeparator(Qt::Horizontal, this); // -------------------------------------------------------- QLabel* const titleLabel = new QLabel(this); titleLabel->setText(i18n("&Title:")); titleLabel->setMargin(KDialog::marginHint()); titleLabel->setIndent(KDialog::spacingHint()); d->titleEdit = new SearchTextBar(this, "TagEditDlgTitleEdit", i18n("Enter tag name here")); d->titleEdit->setCaseSensitive(false); titleLabel->setBuddy(d->titleEdit); QLabel* const tipLabel = new QLabel(this); tipLabel->setTextFormat(Qt::RichText); tipLabel->setWordWrap(true); tipLabel->setMargin(KDialog::marginHint()); tipLabel->setIndent(KDialog::spacingHint()); QLabel* const iconTextLabel = new QLabel(this); iconTextLabel->setText(i18n("&Icon:")); iconTextLabel->setMargin(KDialog::marginHint()); iconTextLabel->setIndent(KDialog::spacingHint()); d->iconButton = new QPushButton(this); d->iconButton->setFixedSize(40, 40); iconTextLabel->setBuddy(d->iconButton); d->resetIconButton = new QPushButton(KIcon("view-refresh"), i18n("Reset"), this); QLabel* const kscTextLabel = new QLabel(this); kscTextLabel->setText(i18n("&Shortcut:")); kscTextLabel->setMargin(KDialog::marginHint()); kscTextLabel->setIndent(KDialog::spacingHint()); d->keySeqWidget = new KKeySequenceWidget(this); kscTextLabel->setBuddy(d->keySeqWidget); d->keySeqWidget->setCheckActionCollections(TagsActionMngr::defaultManager()->actionCollections()); QLabel* const tipLabel2 = new QLabel(this); tipLabel2->setTextFormat(Qt::RichText); tipLabel2->setWordWrap(true); tipLabel2->setText(i18n("<p><b>Note:</b> <i>This shortcut can be used " "to assign or unassign tag to items.</i></p>")); tipLabel2->setMargin(KDialog::marginHint() ); tipLabel2->setIndent(KDialog::spacingHint()); d->saveButton = new QPushButton(i18n("Save")); d->discardButton = new QPushButton(i18n("Discard")); // -------------------------------------------------------- grid->addWidget(logo, 0, 0, 1, 1); grid->addWidget(d->topLabel, 0, 1, 1, 4); grid->addWidget(line, 1, 0, 1, 4); grid->addWidget(tipLabel, 2, 0, 1, 4); grid->addWidget(titleLabel, 3, 0, 1, 1); grid->addWidget(d->titleEdit, 3, 1, 1, 3); grid->addWidget(iconTextLabel, 4, 0, 1, 1); grid->addWidget(d->iconButton, 4, 1, 1, 1); grid->addWidget(d->resetIconButton, 4, 2, 1, 1); grid->addWidget(kscTextLabel, 5, 0, 1, 1); grid->addWidget(d->keySeqWidget, 5, 1, 1, 3); grid->addWidget(tipLabel2, 6, 0, 1, 4); grid->addWidget(d->saveButton, 7, 0, 1, 1); grid->addWidget(d->discardButton, 7, 1, 1, 1); grid->setRowStretch(8, 10); grid->setColumnStretch(3, 10); grid->setMargin(KDialog::marginHint()); grid->setVerticalSpacing(KDialog::spacingHint()); adjustSize(); connect(d->iconButton, SIGNAL(clicked()), this, SLOT(slotIconChanged())); connect(d->titleEdit, SIGNAL(textEdited(QString)), this, SLOT(slotDataChanged())); connect(d->resetIconButton, SIGNAL(clicked()), this,SLOT(slotIconResetClicked())); connect(d->keySeqWidget, SIGNAL(keySequenceChanged(QKeySequence)), this, SLOT(slotDataChanged())); connect(d->saveButton, SIGNAL(clicked()), this, SLOT(slotSaveChanges())); connect(d->discardButton, SIGNAL(clicked()), this, SLOT(slotDiscardChanges())); enableItems(TagPropWidget::DisabledAll); }
VCMatrixProperties::VCMatrixProperties(VCMatrix* matrix, Doc* doc) : QDialog(matrix) , m_doc(doc) { Q_ASSERT(matrix != NULL); Q_ASSERT(doc != NULL); setupUi(this); m_lastAssignedID = 0; /* Matrix text and function */ m_matrix = matrix; m_nameEdit->setText(m_matrix->caption()); slotSetFunction(m_matrix->function()); if (m_matrix->instantChanges()) m_instantCheck->setChecked(true); /* Matrix connections */ connect(m_attachFunction, SIGNAL(clicked()), this, SLOT(slotAttachFunction())); connect(m_detachFunction, SIGNAL(clicked()), this, SLOT(slotSetFunction())); /* Slider external input */ m_sliderInputSource = m_matrix->inputSource(); updateSliderInputSource(); connect(m_autoDetectInputButton, SIGNAL(toggled(bool)), this, SLOT(slotAutoDetectSliderInputToggled(bool))); connect(m_chooseInputButton, SIGNAL(clicked()), this, SLOT(slotChooseSliderInputClicked())); /* Visibility */ quint32 visibilityMask = m_matrix->visibilityMask(); if (visibilityMask & VCMatrix::ShowSlider) m_sliderCheck->setChecked(true); if (visibilityMask & VCMatrix::ShowLabel) m_labelCheck->setChecked(true); if (visibilityMask & VCMatrix::ShowStartColorButton) m_startColorButtonCheck->setChecked(true); if (visibilityMask & VCMatrix::ShowEndColorButton) m_endColorButtonCheck->setChecked(true); if (visibilityMask & VCMatrix::ShowPresetCombo) m_presetComboCheck->setChecked(true); /* Custom controls */ foreach(const VCMatrixControl *control, m_matrix->customControls()) { m_controls.append(new VCMatrixControl(*control)); if (control->m_id > m_lastAssignedID) m_lastAssignedID = control->m_id; } m_controlsTree->setSelectionMode(QAbstractItemView::SingleSelection); updateTree(); connect(m_controlsTree, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(slotTreeSelectionChanged())); connect(m_addStartColorButton, SIGNAL(clicked()), this, SLOT(slotAddStartColorClicked())); connect(m_addStartColorKnobsButton, SIGNAL(clicked()), this, SLOT(slotAddStartColorKnobsClicked())); connect(m_addEndColorButton, SIGNAL(clicked()), this, SLOT(slotAddEndColorClicked())); connect(m_addEndColorKnobsButton, SIGNAL(clicked()), this, SLOT(slotAddEndColorKnobsClicked())); connect(m_addEndColorResetButton, SIGNAL(clicked()), this, SLOT(slotAddEndColorResetClicked())); connect(m_addPresetButton, SIGNAL(clicked()), this, SLOT(slotAddAnimationClicked())); connect(m_addTextButton, SIGNAL(clicked()), this, SLOT(slotAddTextClicked())); connect(m_removeButton, SIGNAL(clicked()), this, SLOT(slotRemoveClicked())); m_presetInputWidget = new InputSelectionWidget(m_doc, this); m_presetInputWidget->setCustomFeedbackVisibility(true); m_presetInputWidget->setWidgetPage(m_matrix->page()); m_presetInputWidget->show(); m_presetInputLayout->addWidget(m_presetInputWidget); connect(m_presetInputWidget, SIGNAL(inputValueChanged(quint32,quint32)), this, SLOT(slotInputValueChanged(quint32,quint32))); connect(m_presetInputWidget, SIGNAL(keySequenceChanged(QKeySequence)), this, SLOT(slotKeySequenceChanged(QKeySequence))); }