bool TextEditComponent::input(InputConfig* config, Input input) { if(input.value == 0) { if(config->isMappedTo("left", input) || config->isMappedTo("right", input)) mCursorRepeatDir = 0; return false; } if(config->isMappedTo("b", input) && mFocused && !mEditing) { startEditing(); return true; } if(mEditing) { if(config->getDeviceId() == DEVICE_KEYBOARD && input.id == SDLK_RETURN) { if(isMultiline()) { textInput("\n"); }else{ stopEditing(); } return true; } if((config->getDeviceId() == DEVICE_KEYBOARD && input.id == SDLK_ESCAPE) || (config->getDeviceId() != DEVICE_KEYBOARD && config->isMappedTo("a", input))) { stopEditing(); return true; } if(config->isMappedTo("up", input)) { // TODO }else if(config->isMappedTo("down", input)) { // TODO }else if(config->isMappedTo("left", input) || config->isMappedTo("right", input)) { mCursorRepeatDir = config->isMappedTo("left", input) ? -1 : 1; mCursorRepeatTimer = -(CURSOR_REPEAT_START_DELAY - CURSOR_REPEAT_SPEED); moveCursor(mCursorRepeatDir); } //consume all input when editing text return true; } return false; }
EditableLabel::EditableLabel(QWidget *parent) : QLineEdit(parent) { getTextMargins(&originalMargins.left, &originalMargins.top, &originalMargins.right, &originalMargins.bottom); originalPalette = palette(); setFocusPolicy(Qt::NoFocus); stopEditing(); connect(this, SIGNAL(editingFinished()), SLOT(stopEditing())); }
void muhkuh_dirlistbox::OnTextEnter(wxCommandEvent &event) { wxString strPath; size_t sizItem; if( sizActiveItem>=0 ) { sizItem = sizActiveItem; strPath = m_ptTextCtrl->GetValue(); stopEditing(this); SetString(sizItem, strPath); } }
void TextFieldEditor::handleTextDomAreaActionPerformed(ActionEventDetails* const details) { stopEditing(); startEditing(); }
void TextFieldEditor::handleTextDomAreaFocusLost (FocusEventDetails* const details) { stopEditing(); }
bool TextEditComponent::input(InputConfig* config, Input input) { bool const cursor_left = (config->getDeviceId() != DEVICE_KEYBOARD && config->isMappedLike("left", input)) || (config->getDeviceId() == DEVICE_KEYBOARD && input.id == SDLK_LEFT); bool const cursor_right = (config->getDeviceId() != DEVICE_KEYBOARD && config->isMappedLike("right", input)) || (config->getDeviceId() == DEVICE_KEYBOARD && input.id == SDLK_RIGHT); if(input.value == 0) { if(cursor_left || cursor_right) mCursorRepeatDir = 0; return false; } if((config->isMappedTo("a", input) || (config->getDeviceId() == DEVICE_KEYBOARD && input.id == SDLK_RETURN)) && mFocused && !mEditing) { startEditing(); return true; } if(mEditing) { if(config->getDeviceId() == DEVICE_KEYBOARD && input.id == SDLK_RETURN) { if(isMultiline()) { textInput("\n"); }else{ stopEditing(); } return true; } if((config->getDeviceId() == DEVICE_KEYBOARD && input.id == SDLK_ESCAPE) || (config->getDeviceId() != DEVICE_KEYBOARD && config->isMappedTo("b", input))) { stopEditing(); return true; } if(config->getDeviceId() != DEVICE_KEYBOARD && config->isMappedLike("up", input)) { // TODO }else if(config->getDeviceId() != DEVICE_KEYBOARD && config->isMappedLike("down", input)) { // TODO }else if(cursor_left || cursor_right) { mCursorRepeatDir = cursor_left ? -1 : 1; mCursorRepeatTimer = -(CURSOR_REPEAT_START_DELAY - CURSOR_REPEAT_SPEED); moveCursor(mCursorRepeatDir); } else if(config->getDeviceId() == DEVICE_KEYBOARD) { switch(input.id) { case SDLK_HOME: setCursor(0); break; case SDLK_END: setCursor(std::string::npos); break; case SDLK_DELETE: if(mCursor < mText.length()) { // Fake as Backspace one char to the right moveCursor(1); textInput("\b"); } break; } } //consume all input when editing text return true; } return false; }
void FCPtrFieldEditor::handleTextFieldFocusLost (FocusEventDetails* const details) { stopEditing(); }
// My own version of the table's actions // In principle it does the same as QTable, but // deletes selected cells // closes application on ESCAPE bool MTable::eventFilter( QObject *o, QEvent *e ) { if ( !o || !e ) return QScrollView::eventFilter( o, e ); //QWidget *editorWidget = cellWidget( currentRow(), currentColumn() ); switch ( e->type() ) { case QEvent::KeyPress: if ( !isEditing() ) { QKeyEvent *ke = (QKeyEvent*)e; if ( ke->key() == Key_Escape ) { QApplication::sendEvent( parentWidget ( FALSE ) , e ); return TRUE; } if ( ke->key() == Key_Return || ke->key() == Key_Enter ) { if ( currentRow() >= numRows() - 1 ){ setUpdatesEnabled( false ); setNumRows( numRows() + 10 ); setUpdatesEnabled( true ); } activateNextCell(); ensureCellVisible ( currentRow(), currentColumn() ); return TRUE; } if ( ke->key() == Key_Delete ) { if (numSelections() > 0) { QTableSelection ts = selection( currentSelection() ); for ( int icol = ts.leftCol(); icol <= ts.rightCol(); icol++){ for ( int irow = ts.topRow(); irow <= ts.bottomRow(); irow++){ clearCell( irow, icol ); } } setCurrentCell ( ts.anchorRow(), ts.anchorCol() ); clearSelection ( TRUE ); } else { clearCell( currentRow(), currentColumn() ); } return TRUE; } if ( ke->key() == Key_C && ( ke->state() & ControlButton ) == ControlButton ) { QString cellText; itemCopy.clear(); if (numSelections() > 0) { QTableSelection ts; ts = selection( currentSelection() ); for ( int irow = ts.topRow(); irow <= ts.bottomRow(); irow++){ for ( int icol = ts.leftCol(); icol <= ts.rightCol(); icol++){ cellText = text( irow, icol ); if ( !cellText.isEmpty() ) itemCopy.push_back( cellText.latin1() ); else itemCopy.push_back( "" ); } } } else { cellText = text( currentRow(), currentColumn() ); if ( !cellText.isEmpty() ) itemCopy.push_back( cellText.latin1() ); else itemCopy.push_back( "" ); } return TRUE; } if ( ke->key() == Key_V && ( ke->state() & ControlButton ) == ControlButton ) { if ( numSelections() > 0 && itemCopy.size() > 0 ) { QTableSelection ts = selection( currentSelection() ); uint icount; for ( int irow = ts.topRow(); irow <= ts.bottomRow(); irow++){ for ( int icol = ts.leftCol(); icol <= ts.rightCol(); icol++){ //icount = (icol - ts.leftCol())*(ts.bottomRow() - ts.topRow()+1) + irow-ts.topRow(); icount = (irow - ts.topRow())*(ts.rightCol() - ts.leftCol()+1) + icol-ts.leftCol(); if ( icount < itemCopy.size() ) setText( irow, icol, (itemCopy[icount]).c_str() ); } } } else { if ( itemCopy.size() > 0 ) // there was not selection, copy first item only setText( currentRow(), currentColumn(), (itemCopy[0]).c_str() ); } return TRUE; } if ( ke->key() == Key_X && ( ke->state() & ControlButton ) == ControlButton ) { QString cellText; if (numSelections() > 0) { itemCopy.clear(); QTableSelection ts; ts = selection( currentSelection() ); for ( int irow = ts.topRow(); irow <= ts.bottomRow(); irow++){ for ( int icol = ts.leftCol(); icol <= ts.rightCol(); icol++){ cellText = text( irow, icol ); if ( !cellText.isEmpty() ) itemCopy.push_back( cellText.latin1() ); else itemCopy.push_back( "" ); clearCell( irow, icol ); } } setCurrentCell ( ts.anchorRow(), ts.anchorCol() ); clearSelection ( TRUE ); } else { cellText = text( currentRow(), currentColumn() ); if ( !cellText.isEmpty() ) itemCopy.push_back( cellText.latin1() ); else itemCopy.push_back( "" ); clearCell( currentRow(), currentColumn() ); } return TRUE; } if ( currentColumn() == 0 && ctype == ComboBox && ke->key() != Key_Left && ke->key() != Key_Right && ke->key() != Key_Up && ke->key() != Key_Down && ke->key() != Key_Control && ke->key() != Key_Alt && ke->key() != Key_Shift ) { //QApplication::beep (); keyPressEvent( (QKeyEvent*)e ); return true; } } else{ QKeyEvent *ke = (QKeyEvent*)e; if ( ke->key() == Key_Return || ke->key() == Key_Enter ) { stopEditing(); if ( currentRow() >= numRows() - 1 ){ setUpdatesEnabled( false ); setNumRows( numRows() + 10 ); setUpdatesEnabled( true ); } //else {stopEditing();} activateNextCell(); return true; } } break; default: break; } return QTable::eventFilter( o, e ) ; }