⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 textedit.cpp

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.10平台上编译为嵌入式图形界面操作系统。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	setFontSize(variableFontSize,zoomOutLast);	zin->setEnabled(zinE);	zout->setEnabled(zoutE);    }}void TextEdit::clipboardChanged(){    pasteAction->setEnabled( !qApp->clipboard()->text().isEmpty() );}void TextEdit::linkChanged( const QString &linkfile ){    if ( doc ) {	DocLnk dl( linkfile );	if ( doc->linkFileKnown() && doc->linkFile() == linkfile ||	     doc->fileKnown() &&	     (doc->file() == linkfile || dl.isValid() && dl.file() == doc->file()) ) {	    if ( !QFile::exists(doc->file()) && !QFile::exists(doc->linkFile()) ) {		// deleted		fileRevert();	    } else {		if ( doc->name() != dl.name() )		    updateCaption(dl.name());		*doc = dl;	    }	}    }}void TextEdit::fileNew(){    save();    newFile(DocLnk());}void TextEdit::fileOpen(){        if ( !save() ) {       QMessageBox box( tr( "Out of space"),			tr( "<qt>Text Editor was unable to "			    "save your changes. "			    "Free some space and try again."			    "<br>Continue anyway?</qt>" ),                        QMessageBox::Critical,			QMessageBox::Yes|QMessageBox::Escape,			QMessageBox::No|QMessageBox::Default,                        QMessageBox::Cancel, this);        box.setButtonText(QMessageBox::Cancel, tr("Cleanup"));        switch(box.exec()){            case QMessageBox::Yes:                delete doc;                doc = 0;                break;            case QMessageBox::No:                return;                break;            case QMessageBox::Cancel:                ServiceRequest req( "CleanupWizard", "showCleanupWizard()");                req.send();                return;                break;        }    }#ifndef QTOPIA_PHONE    menu->hide();    editBar->hide();#endif    if (searchBar)	searchBar->hide();    editorStack->raiseWidget( fileSelector );    updateCaption();}void TextEdit::fileRevert(){#ifdef QTOPIA_PHONE    if( wasCreated ) doc->removeFiles();    else {        if( editor->edited() && saved ) {            FileManager fm;            fm.saveFile( *doc, backup );        }    }#endif    clear();#ifdef QTOPIA_PHONE    if( qCopActivated ) {        close();        canceled = TRUE;    } else fileOpen();#else    fileOpen();#endif}void TextEdit::editCut(){#ifndef QT_NO_CLIPBOARD    if( qApp->focusWidget() == editor )        editor->cut();    else if( qApp->focusWidget() == searchEdit )        searchEdit->cut();#endif}void TextEdit::editCopy(){#ifndef QT_NO_CLIPBOARD    if( qApp->focusWidget() == editor )        editor->copy();    else if( qApp->focusWidget() == searchEdit )        searchEdit->copy();#endif}void TextEdit::editPaste(){#ifndef QT_NO_CLIPBOARD    if( qApp->focusWidget() == editor )        editor->paste();    else if( qApp->focusWidget() == searchEdit )        searchEdit->paste();#endif}void TextEdit::editFind(bool s){    if ( !searchBar ) {	searchBar = new QToolBar(this);	addToolBar( searchBar,  tr("Search"), QMainWindow::Top, TRUE );	searchBar->setHorizontalStretchable( TRUE );	searchEdit = new QLineEdit( searchBar, "searchEdit" );	searchBar->setStretchableWidget( searchEdit );	connect( searchEdit, SIGNAL( textChanged(const QString&) ),		this, SLOT( search() ) );	connect( searchEdit, SIGNAL(returnPressed()), this, SLOT(searchNext()));#ifndef QTOPIA_PHONE	QAction *a = new QAction( tr( "Find Next" ), Resource::loadIconSet( "next" ), QString::null, 0, this, 0 );	connect( a, SIGNAL(activated()), this, SLOT(search()) );	a->setWhatsThis( tr("Find the next occurrence of the search text.") );	a->addTo( searchBar );#else	findTb = new QToolButton(Resource::loadIconSet( "next" ), tr( "Find Next" ), QString::null, 				    this, SLOT(search()), searchBar);#endif    }    if ( s ) {	searchBar->show();	searchVisible = TRUE;        searchEdit->setFocus();#ifdef QTOPIA_PHONE	if( !Global::mousePreferred() ) {	    if (!searchEdit->isModalEditing())		searchEdit->setModalEditing(TRUE);	}#endif    } else {	searchVisible = FALSE;#ifdef QTOPIA_PHONE	if( !Global::mousePreferred() ) {	    if (searchEdit->isModalEditing())		searchEdit->setModalEditing(FALSE);	}#endif	editor->setFocus();	searchBar->hide();#ifdef QTOPIA_PHONE	if( !Global::mousePreferred() ) {	    if (!editor->isModalEditing())		editor->setModalEditing(TRUE);	}#endif    }}void TextEdit::search(){    editor->find( searchEdit->text(), FALSE );}void TextEdit::searchNext(){#ifdef QTOPIA_PHONE    if (findTb)	findTb->setFocus();#endif}void TextEdit::findWrapped(){    Global::statusMessage( tr("Find: reached end") );}void TextEdit::findNotFound(){    Global::statusMessage( tr("Find: not found") );}void TextEdit::findFound(){    Global::statusMessage( "" );}void TextEdit::newFile( const DocLnk &f ){    clear();    doc = new DocLnk(f);    doc->setType("text/plain");    editorStack->raiseWidget( editor );    editor->setFocus();    editor->setEdited(FALSE);    setReadOnly(FALSE);    updateCaption();}void TextEdit::setDocument(const QString& f){#ifdef QTOPIA_PHONE    qCopActivated = TRUE;#endif    save();    DocLnk nf(f);    nf.setType("text/plain");    openFile(nf);    showEditTools();    // Show filename in caption    QString name;    if ( nf.linkFileKnown() && !nf.name().isEmpty() ) {	name = nf.name();    } else {	name = f;	int sep = name.findRev( '/' );	if ( sep > 0 )	    name = name.mid( sep+1 );    }    updateCaption( name );}void TextEdit::openFile( const DocLnk &f ){    clear();    FileManager fm;    QString txt;    QByteArray ba;    bool needsave = FALSE;    if ( fm.loadFile( f, ba ) ) {	txt = QString::fromUtf8(ba, ba.size());	if ( txt.utf8().length() != ba.size() ) {	    // not UTF8	    QTextCodec* codec = QTextCodec::codecForContent(ba.data(),ba.size());	    if ( codec ) {		txt = codec->toUnicode(ba);		needsave = TRUE;	    }	}    }    fileNew();    if ( doc )	delete doc;    doc = new DocLnk(f);#ifdef QTOPIA_PHONE    backup = txt;#endif    editor->setText(txt);    editor->setEdited(needsave);    updateCaption();}void TextEdit::showEditTools(){    if ( !doc )	close();    fileSelector->hide();#ifndef QTOPIA_PHONE    menu->show();    editBar->show();#endif    if ( searchBar && searchVisible )	searchBar->show();    updateCaption();}bool TextEdit::save(){    // case of nothing to save...    if ( !doc )	return true;    if ( !editor->edited() ) {        if( wasCreated ) doc->removeFiles();	delete doc;	doc = 0;	return true;    }    QString rt = editor->text();    if ( doc->name().isEmpty() )	doc->setName(calculateName(rt));	    FileManager fm;    if ( !fm.saveFile( *doc, rt ) ) {	return false;    }    delete doc;    doc = 0;    editor->setEdited( false );    return true;}QString TextEdit::calculateName(QString rt) {    QString pt = rt.simplifyWhiteSpace();    int i = pt.find( ' ' );    QString docname = pt;    if ( i > 0 )	docname = pt.left( i );    // remove "." at the beginning    while( docname.startsWith( "." ) )	docname = docname.mid( 1 );    docname.replace( QRegExp("/"), "_" );    // cut the length. filenames longer than that don't make sense and something goes wrong when they get too long.    if ( docname.length() > 40 )	docname = docname.left(40);    if ( docname.isEmpty() )	docname = tr("Empty Text");    return docname;}void TextEdit::fileName(){    if (doc->name().isEmpty())	doc->setName(calculateName(editor->text()));    //    // Document properties operations depend on the file being    // up-to-date.  Force a write before changing properties.    //    wasCreated = wasCreated || !doc->fileKnown();        FileManager fm;    if ( fm.saveFile( *doc, editor->text() ) ) {#ifdef QTOPIA_PHONE        saved = TRUE;#endif    } else return;    DocPropertiesDialog *lp = new DocPropertiesDialog(doc, this);    if (QPEApplication::execDialog(lp)) {	updateCaption(doc->name());    }    delete lp;}void TextEdit::clear(){    delete doc;    doc = 0;    editor->clear();#ifdef QTOPIA_PHONE    saved = FALSE;#endif    wasCreated = FALSE;}void TextEdit::updateCaption( const QString &name ){    if ( !doc )	setCaption( tr("Notes") );#ifndef QTOPIA_PHONE    else {	QString s = name;	if ( s.isNull() )	    s = doc->name();	if ( s.isEmpty() )	    s = tr( "Unnamed" );	setCaption( s + " - " + tr("Notes") );    }#endif}void TextEdit::accept(){    fileOpen();}	void TextEdit::message(const QCString& msg, const QByteArray& data){    if ( msg == "viewFile(QString)" || msg == "openFile(QString)" ) {        save();#ifdef QTOPIA_PHONE        qCopActivated = TRUE;#endif	QDataStream d(data,IO_ReadOnly);	QString filename;	d >> filename;	//	// .desktop files should _not_ be able to be edited easily,	// as they are generated by the server.  Force opening the	// file they refer to, rather than the .desktop file.	//	if (!filename.contains(".desktop")) {	    if (filename.stripWhiteSpace().isEmpty()){		newFile(DocLnk());	    }else{		DocLnk dc;		dc.setFile(filename);		dc.setType("text/plain");		openFile(dc);	    }	} else {	    openFile(DocLnk(filename));	}	showEditTools();	updateCaption( filename );	if ( msg == "viewFile(QString)" )	    setReadOnly(TRUE);	QPEApplication::setKeepRunning();    }}void TextEdit::setReadOnly(bool y){    editor->setReadOnly(y);    if ( y )	editor->setEdited(FALSE);}void TextEdit::closeEvent( QCloseEvent* e ){#ifdef QTOPIA_PHONE    if( searchVisible )        findAction->setOn( FALSE );    else {        if( editorStack->visibleWidget() == editor ) {             if( qCopActivated ) {                if( !canceled ) save();                e->accept();            } else fileOpen();        } else e->accept();    }#else    if( editorStack->visibleWidget() == editor ) fileOpen();    e->accept();#endif}#include "textedit.moc"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -