Interpreter::Interpreter(ConsoleWidget *console, VideoWidget *video) : m_mutexProg(QMutex::Recursive) { m_console = console; m_video = video; m_pc = 0; m_programming = false; m_localProgramRunning = false; m_rcount = 0; m_waiting = false; m_fastPoll = true; m_notified = false; m_pendingCommand = NONE; m_running = -1; // set to bogus value to force update m_chirp = NULL; m_renderer = new Renderer(m_video); connect(m_console, SIGNAL(textLine(QString)), this, SLOT(command(QString))); connect(m_console, SIGNAL(controlKey(Qt::Key)), this, SLOT(controlKey(Qt::Key))); connect(this, SIGNAL(textOut(QString, QColor)), m_console, SLOT(print(QString, QColor))); connect(this, SIGNAL(error(QString)), m_console, SLOT(error(QString))); connect(this, SIGNAL(enableConsole(bool)), m_console, SLOT(acceptInput(bool))); connect(this, SIGNAL(prompt(QString)), m_console, SLOT(prompt(QString))); connect(this, SIGNAL(videoInput(VideoWidget::InputMode)), m_video, SLOT(acceptInput(VideoWidget::InputMode))); connect(m_video, SIGNAL(selection(int,int,int,int)), this, SLOT(handleSelection(int,int,int,int))); m_run = true; start(); }
Interpreter::Interpreter(ConsoleWidget *console, VideoWidget *video, MonParameterDB *data, const QString &initScript) : m_mutexProg(QMutex::Recursive) { m_initScript = initScript; m_initScript.remove(QRegExp("^\\s+")); // remove initial whitespace m_console = console; m_video = video; m_pixymonParameters = data; m_pc = 0; m_programming = false; m_localProgramRunning = false; m_waiting = false; m_fastPoll = true; m_notified = false; m_running = -1; // set to bogus value to force update m_chirp = NULL; m_renderer = new Renderer(m_video, this); connect(m_console, SIGNAL(textLine(QString)), this, SLOT(command(QString))); connect(m_console, SIGNAL(controlKey(Qt::Key)), this, SLOT(controlKey(Qt::Key))); connect(this, SIGNAL(textOut(QString, QColor)), m_console, SLOT(print(QString, QColor))); connect(this, SIGNAL(error(QString)), m_console, SLOT(error(QString))); connect(this, SIGNAL(enableConsole(bool)), m_console, SLOT(acceptInput(bool))); connect(this, SIGNAL(prompt(QString)), m_console, SLOT(prompt(QString))); connect(this, SIGNAL(consoleCommand(QString)), m_console, SLOT(command(QString))); connect(this, SIGNAL(videoInput(VideoWidget::InputMode)), m_video, SLOT(acceptInput(VideoWidget::InputMode))); connect(m_video, SIGNAL(selection(int,int,int,int)), this, SLOT(handleSelection(int,int,int,int))); prompt(); m_run = true; }
void ConsoleWidget::keyPressEvent(QKeyEvent *event) { QString line; if (!isReadOnly()) { moveCursor(QTextCursor::End); if (event->key()==Qt::Key_Return) { QTextCursor cursor = textCursor(); line = cursor.block().text(); line.remove(0, m_prompt.size()); // get rid of prompt (assume it's just the first character) // propagate newline before we send text QPlainTextEdit::keyPressEvent(event); // send text emit textLine(line); return; } else if (event->key()==Qt::Key_Up) { emit controlKey(Qt::Key_Up); return; } else if (event->key()==Qt::Key_Down) { emit controlKey(Qt::Key_Down); return; } else if (event->key()==Qt::Key_Backspace) { QTextCursor cursor = textCursor(); line = cursor.block().text(); // don't propagate backspace if it means we're going to delete the prompt if (line.size()<=m_prompt.size()) return; } else if (event->matches(QKeySequence::Copy)) // break key emit controlKey(Qt::Key_Escape); else { // make sure when we're typing, there's a prompt QTextCursor cursor = textCursor(); line = cursor.block().text(); if (line.left(m_prompt.size())!=m_prompt) prompt(m_prompt); } } QPlainTextEdit::keyPressEvent(event); }
bool FrenchSocialNumber::isValid(const QString &number, const QString &key) const { // get control key int cKey = controlKey(number); if (cKey==-1) { return false; } return key==QString::number(cKey); }
/** Calculate the control key and - populate the control key line edit or - check the control key */ void FrenchSocialNumber::checkControlKey() { int cKey = controlKey(m_FullNumber); if (cKey==-1) { return; } if (ui->controlKey->text().isEmpty()) { ui->controlKey->setText(QString::number(cKey)); } else if (ui->controlKey->text() != QString::number(cKey)) { // TODO } }
/* Handler del teclado */ void int_09() { char scancode; char eoi = EOI; _read(KEYBOARD, &scancode, 1); // We check if the scancode is a char or a control key. int flag = scancode >= 0x02 && scancode <= 0x0d; flag = flag || (scancode >= 0x10 && scancode <= 0x1b); flag = flag || (scancode >= 0x1E && scancode <= 0x29); flag = flag || (scancode >= 0x2b && scancode <= 0x35); if (flag) pushC(scanCodeToChar(scancode)); //guarda un char en el stack else controlKey(scancode); // Envia el scancode al analizador de control keys. _write(PIC1, &eoi, 1); }
// Keyboard handler void int_09() { krn++; char scancode; scancode = _in(0x60); // We check if the scancode is a char or a control key. int flag = scancode >= 0x02 && scancode <= 0x0d; flag = flag || (scancode >= 0x10 && scancode <= 0x1b); flag = flag || (scancode >= 0x1E && scancode <= 0x29); flag = flag || (scancode >= 0x2b && scancode <= 0x35); if (flag) { char sc = scanCodeToChar(scancode); if(sc != 0 && sc != EOF) { pushC(sc); //guarda un char en el stack } } else { controlKey(scancode); // Envia el scancode al analizador de control keys. } kernel_buffer[0] = KILL; krn--; }
// Accept settings (OK button slot). void synthv1widget_control::accept (void) { if (m_pControls == NULL) return; #ifdef CONFIG_DEBUG_0 qDebug("synthv1widget_control::accept()"); #endif // Unmap the existing controller.... int iIndex = m_pControls->find_control(m_key); if (iIndex >= 0) m_pControls->remove_control(m_key); // Get new map settings... m_key = controlKey(); // Check if already mapped to someone else... iIndex = m_pControls->find_control(m_key); if (iIndex >= 0 && synthv1::ParamIndex(iIndex) != m_index) { if (QMessageBox::warning(this, QDialog::windowTitle(), tr("MIDI controller is already assigned.\n\n" "Do you want to replace the mapping?"), QMessageBox::Ok | QMessageBox::Cancel) == QMessageBox::Cancel) return; } // Unmap the existing controller.... if (iIndex >= 0) m_pControls->remove_control(m_key); // Reset controller flags all te way... unsigned int flags = 0; if (m_ui.ControlLogarithmicCheckBox->isEnabled() && m_ui.ControlLogarithmicCheckBox->isChecked()) flags |= synthv1_controls::Logarithmic; if (m_ui.ControlInvertCheckBox->isEnabled() && m_ui.ControlInvertCheckBox->isChecked()) flags |= synthv1_controls::Invert; if (m_ui.ControlHookCheckBox->isEnabled() && m_ui.ControlHookCheckBox->isChecked()) flags |= synthv1_controls::Hook; // Map the damn controller.... synthv1_controls::Data data; data.index = m_index; data.flags = flags; m_pControls->add_control(m_key, data); // Save controls... synthv1_config *pConfig = synthv1_config::getInstance(); if (pConfig) pConfig->saveControls(m_pControls); // Aint't dirty no more... m_iDirtyCount = 0; // Just go with dialog acceptance... QDialog::accept(); QDialog::close(); }
void ConsoleWidget::keyPressEvent(QKeyEvent *event) { QString line; if (!isReadOnly()) { m_timer.stop(); if (event->modifiers()==0 || event->modifiers()==Qt::ShiftModifier || event->matches(QKeySequence::Paste)) moveCursor(QTextCursor::End); QTextCursor cursor = textCursor(); if (event->key()==Qt::Key_Return) { line = cursor.block().text(); line.remove(0, m_prompt.size()); // get rid of prompt line.remove(QRegExp("^\\s+")); //remove leading whitespace line.remove(QRegExp("\\s+$")); //remove trailing whitespace // propagate newline before we send text QPlainTextEdit::keyPressEvent(event); m_timer.start(); if (line.size()==0) return; // add line to history if it's not the same as previous line if (m_history.size()==0 || line!=m_history.back()) m_history << line; // remove least recent line if we're up against the max history parameter if (m_history.size()==CW_MAXHIST+1) m_history.removeFirst(); m_histIndex = -1; // send text emit textLine(line); return; } else if (event->key()==Qt::Key_Up) { emit controlKey(Qt::Key_Up); handleHistory(false); return; } else if (event->key()==Qt::Key_Down) { emit controlKey(Qt::Key_Down); handleHistory(true); return; } else if (event->key()==Qt::Key_Backspace) { line = cursor.block().text(); // don't propagate backspace if it means we're going to delete the prompt if (line.size()<=m_prompt.size()) return; } else if (event->matches(QKeySequence::Copy)) // break key emit controlKey(Qt::Key_Escape); } QPlainTextEdit::keyPressEvent(event); }