void LaunchyWidget::alternativesKeyPressEvent(QKeyEvent* event) { if (event->key() == Qt::Key_Escape) { showAlternatives(false); event->ignore(); this->input->setFocus(); } else if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter || event->key() == Qt::Key_Tab) { if (searchResults.count() > 0) { int row = alternatives->currentRow(); if (row > -1) { QString location = "History/" + input->text(); QStringList hist; hist << searchResults[row].lowName << searchResults[row].fullPath; gSettings->setValue(location, hist); if (row > 0) searchResults.move(row, 0); if (event->key() == Qt::Key_Tab) { doTab(); processKey(); } else { // Load up the inputData properly before running the command /* commented out until I find a fix for it breaking the history selection inputData.last().setTopResult(searchResults[0]); doTab(); inputData.parse(input->text()); inputData.erase(inputData.end() - 1);*/ updateOutputWidgets(); keyPressEvent(event); } } } } else if (event->key() == Qt::Key_Delete && (event->modifiers() & Qt::ShiftModifier) != 0) { int row = alternatives->currentRow(); if (row > -1) { if (searchResults[row].id == HASH_HISTORY) { // Delete selected history entry from the alternatives list history.removeAt(row); input->clear(); processKey(); alternativesRowChanged(alternatives->currentRow()); } else { // Demote the selected item down the alternatives list catalog->demoteItem(searchResults[row]); searchOnInput(); updateOutputWidgets(false); } showAlternatives(true, false); } } else if (event->key() == Qt::Key_Left || event->key() == Qt::Key_Right || event->text().length() > 0) { // Send text entry to the input control activateWindow(); input->setFocus(); event->ignore(); input->keyPressEvent(event); keyPressEvent(event); } alternatives->setFocus(); }
void LaunchyWidget::keyPressEvent(QKeyEvent* event) { #ifdef Q_WS_X11 // ignore hotkey if (event->modifiers() + event->key() == getHotkey()) { return; } #endif if (event->key() == Qt::Key_Escape) { if (alternatives->isVisible()) showAlternatives(false); else hideLaunchy(); } else if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) { doEnter(); } else if (event->key() == Qt::Key_Down || event->key() == Qt::Key_PageDown || event->key() == Qt::Key_Up || event->key() == Qt::Key_PageUp) { if (alternatives->isVisible()) { if (!alternatives->isActiveWindow()) { // Don't refactor the activateWindow outside the if, it won't work properly any other way! if (alternatives->currentRow() < 0 && alternatives->count() > 0) { alternatives->activateWindow(); alternatives->setCurrentRow(0); } else { alternatives->activateWindow(); qApp->sendEvent(alternatives, event); } } } else if (event->key() == Qt::Key_Down || event->key() == Qt::Key_PageDown) { // do a search and show the results, selecting the first one searchOnInput(); if (searchResults.count() > 0) { showAlternatives(); alternatives->activateWindow(); if (alternatives->count() > 0) alternatives->setCurrentRow(0); } } } else if ((event->key() == Qt::Key_Tab || event->key() == Qt::Key_Backspace) && event->modifiers() == Qt::ShiftModifier) { doBackTab(); processKey(); } else if (event->key() == Qt::Key_Tab) { doTab(); processKey(); } /* else if (event->key() == Qt::Key_Slash || event->key() == Qt::Key_Backslash) { if (inputData.count() > 0 && inputData.last().hasLabel(LABEL_FILE)) doTab(); processKey(); } */ else if (event->text().length() > 0) { // process any other key with character output event->ignore(); processKey(); } }
void CodeEditor::doCommand(uint32 cmd) { switch (cmd) { case CmdPrintFoo: { std::cerr << "Foo\n"; } break; case CmdSave: { save(); } break; case CmdReloadOpenDocument: { reload(); } break; case CmdLoadTest: { loadTest(); } break; case CmdMoveUpToBlank: { moveCursorUpToBlank(); } break; case CmdMoveDownToBlank: { moveCursorDownToBlank(); } break; case CmdMoveToDocumentBegin: { moveCursorToDocumentBegin(); } break; case CmdMoveToDocumentEnd: { moveCursorToDocumentEnd(); } break; case CmdMoveToLineBegin: { moveCursorToLineBegin(); } break; case CmdMoveToLineEnd: { moveCursorToLineEnd(); } break; case CmdSetMark: { setMark(); } break; case CmdSwapCursorAndMark: { swapCursorAndMark(); } break; case CmdMoveCursorToMark: { moveCursorToMark(); } break; case CmdToggleMarkVisibility: { toggleMarkVisibility(); } break; case CmdBackspace: { doBackspace(); } break; case CmdDelete: { doDelete(); } break; case CmdClearLine: { clearLine(mCurrentLine); } break; case CmdClearDocument: { clear(); } break; case CmdTab: { doTab(); } break; case CmdNewline: { addLine(); } break; case CmdOpenConfig: { loadConfig(); } break; case CmdOpenTheme: { loadCurrentTheme(); } break; case CmdLoadHelp: { loadReadMe(); } break; } }