示例#1
0
void EditorCompletion::updateCompletionMap( Q3TextDocument *doc )
{
    bool strict = true;
    if ( doc != lastDoc )
	strict = false;
    lastDoc = doc;
    Q3TextParagraph *s = doc->firstParagraph();
    if ( !s->extraData() )
	s->setExtraData( new ParagData );
    while ( s ) {
	if ( s->length() == ( (ParagData*)s->extraData() )->lastLengthForCompletion ) {
	    s = s->next();
	    continue;
	}

	QChar c;
	QString buffer;
	for ( int i = 0; i < s->length(); ++i ) {
	    c = s->at( i )->c;
	    if ( c.isLetter() || c.isNumber() || c == '_' || c == '#' ) {
		buffer += c;
	    } else {
		addCompletionEntry( buffer, doc, strict );
		buffer = QString::null;
	    }
	}
	if ( !buffer.isEmpty() )
	    addCompletionEntry( buffer, doc, strict );

	( (ParagData*)s->extraData() )->lastLengthForCompletion = s->length();
	s = s->next();
    }
}
bool QCompletionEdit::qt_invoke( int _id, QUObject* _o )
{
    switch ( _id - staticMetaObject()->slotOffset() ) {
    case 0: setCompletionList((const QStringList&)*((const QStringList*)static_QUType_ptr.get(_o+1))); break;
    case 1: setAutoAdd((bool)static_QUType_bool.get(_o+1)); break;
    case 2: clear(); break;
    case 3: addCompletionEntry((const QString&)static_QUType_QString.get(_o+1)); break;
    case 4: removeCompletionEntry((const QString&)static_QUType_QString.get(_o+1)); break;
    case 5: setCaseSensitive((bool)static_QUType_bool.get(_o+1)); break;
    case 6: textDidChange((const QString&)static_QUType_QString.get(_o+1)); break;
    default:
	return QLineEdit::qt_invoke( _id, _o );
    }
    return TRUE;
}