Diffstat (limited to 'core/apps/textedit/textedit.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | core/apps/textedit/textedit.cpp | 99 |
1 files changed, 54 insertions, 45 deletions
diff --git a/core/apps/textedit/textedit.cpp b/core/apps/textedit/textedit.cpp index 6804918..943fecd 100644 --- a/core/apps/textedit/textedit.cpp +++ b/core/apps/textedit/textedit.cpp @@ -14,48 +14,49 @@ ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ // changes added by L. J. Potter Sun 02-17-2002 21:31:31 #include "textedit.h" #include "fileBrowser.h" #include "fileSaver.h" #include "filePermissions.h" #include "fontDialog.h" #include <qpe/fontdatabase.h> #include <qpe/global.h> #include <qpe/fileselector.h> #include <qpe/applnk.h> #include <qpe/resource.h> #include <qpe/config.h> #include <qpe/qpeapplication.h> #include <qpe/qpemenubar.h> #include <qpe/qpetoolbar.h> +#include <qpe/qcopenvelope_qws.h> //#include <qpe/finddialog.h> #include <qstringlist.h> #include <qaction.h> #include <qcolordialog.h> #include <qfileinfo.h> #include <qlineedit.h> #include <qmessagebox.h> #include <qobjectlist.h> #include <qpopupmenu.h> #include <qspinbox.h> #include <qtoolbutton.h> #include <qwidgetstack.h> #include <qcheckbox.h> #include <qcombo.h> #include <unistd.h> #include <sys/stat.h> #include <stdlib.h> //getenv /* XPM */ static char * filesave_xpm[] = { "16 16 78 1", " c None", ". c #343434", @@ -217,48 +218,52 @@ void QpeEditor::find ( const QString &txt, bool caseSensitive, } } #else #error "Must make a QpeEditor that inherits QTextEdit" #endif static const int nfontsizes = 6; static const int fontsize[nfontsizes] = {8,10,12,14,18,24}; TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) : QMainWindow( parent, name, f ), bFromDocView( FALSE ) { doc = 0; edited=FALSE; edited1=FALSE; setToolBarsMovable( FALSE ); connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) ); + channel = new QCopChannel( "QPE/Application/textedit", this ); + connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), + this, SLOT(receive(const QCString&, const QByteArray&)) ); + setIcon( Resource::loadPixmap( "TextEditor" ) ); QPEToolBar *bar = new QPEToolBar( this ); bar->setHorizontalStretchable( TRUE ); menu = bar; QPEMenuBar *mb = new QPEMenuBar( bar ); QPopupMenu *file = new QPopupMenu( this ); QPopupMenu *edit = new QPopupMenu( this ); font = new QPopupMenu( this ); bar = new QPEToolBar( this ); editBar = bar; QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) ); a->addTo( bar ); a->addTo( file ); a = new QAction( tr( "Open" ), Resource::loadPixmap( "fileopen" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( fileOpen() ) ); a->addTo( bar ); a->addTo( file ); @@ -376,55 +381,55 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) editor = new QpeEditor( this ); setCentralWidget( editor ); editor->setFrameStyle( QFrame::Panel | QFrame::Sunken ); connect( editor, SIGNAL( textChanged() ), this, SLOT( editorChanged() ) ); // resize( 200, 300 ); // setFontSize(defsize,TRUE); FontDatabase fdb; QFont defaultFont=editor->font(); QFontInfo fontInfo(defaultFont); cfg.setGroup("Font"); QString family = cfg.readEntry("Family", fontInfo.family()); QString style = cfg.readEntry("Style", fdb.styleString(defaultFont)); int i_size = cfg.readNumEntry("Size", fontInfo.pointSize()/10); QString charSet = cfg.readEntry("CharSet", QFont::encodingName( fontInfo.charSet()) ); defaultFont = fdb.font(family,style,i_size,charSet); editor->setFont( defaultFont); wa->setOn(wrap); updateCaption(); - cfg.setGroup("View"); - if(cfg.readEntry("startNew","TRUE") == "TRUE") { - nStart->setOn(TRUE); - fileNew(); - } else { - fileOpen(); - } + cfg.setGroup("View"); + if(cfg.readEntry("startNew","TRUE") == "TRUE") { + nStart->setOn(TRUE); + fileNew(); + } else { + fileOpen(); + } viewSelection = cfg.readNumEntry( "FileView", 0 ); } void TextEdit::cleanUp() { // save(); Config cfg("TextEdit"); cfg.setGroup("View"); QFont f = editor->font(); cfg.writeEntry("FontSize",f.pointSize()); cfg.writeEntry("Bold",f.bold()); cfg.writeEntry("Italic",f.italic()); cfg.writeEntry("Wrap",editor->wordWrap() == QMultiLineEdit::WidgetWidth); cfg.writeEntry( "FileView", viewSelection ); } TextEdit::~TextEdit() { } void TextEdit::zoomIn() { setFontSize(editor->font().pointSize()+1,FALSE); @@ -464,59 +469,61 @@ void TextEdit::setFontSize(int sz, bool round_down_not_up) void TextEdit::setBold(bool y) { QFont f = editor->font(); f.setBold(y); editor->setFont(f); } void TextEdit::setItalic(bool y) { QFont f = editor->font(); f.setItalic(y); editor->setFont(f); } void TextEdit::setWordWrap(bool y) { bool state = editor->edited(); editor->setWordWrap(y ? QMultiLineEdit::WidgetWidth : QMultiLineEdit::NoWrap ); editor->setEdited( state ); } void TextEdit::fileNew() { - if( !bFromDocView ) { - saveAs(); - } +// if( !bFromDocView ) { +// saveAs(); +// } newFile(DocLnk()); } void TextEdit::fileOpen() { - browseForFiles=new fileBrowser(this,tr("Open File"),TRUE,0, "text/*"); // + browseForFiles = new fileBrowser(this,tr("Open File"),TRUE,0, "text/*"); // browseForFiles->setFileView( viewSelection ); browseForFiles->showMaximized(); +// if( result != -1 ) + if( browseForFiles->exec() != -1 ) { QString selFile = browseForFiles->selectedFileName; QStringList fileList = browseForFiles->fileList; qDebug(selFile); QStringList::ConstIterator f; QString fileTemp; for ( f = fileList.begin(); f != fileList.end(); f++ ) { fileTemp = *f; fileTemp.right( fileTemp.length()-5); QString fileName = fileTemp; if( fileName != "Unnamed" || fileName != "Empty Text" ) { currentFileName = fileName; qDebug("please open "+currentFileName); openFile(fileName ); } } viewSelection = browseForFiles->SelectionCombo->currentItem(); } delete browseForFiles; editor->setEdited( FALSE); edited1=FALSE; edited=FALSE; if(caption().left(1)=="*") setCaption(caption().right(caption().length()-1)); @@ -597,178 +604,175 @@ void TextEdit::findNext() void TextEdit::findClose() { searchVisible = FALSE; searchBar->hide(); Config cfg("TextEdit"); cfg.setGroup("View"); cfg.writeEntry("SearchBar","Closed"); cfg.write(); } void TextEdit::search() { editor->find( searchEdit->text(), FALSE, FALSE ); } void TextEdit::newFile( const DocLnk &f ) { DocLnk nf = f; nf.setType("text/plain"); clear(); setWState (WState_Reserved1 ); editor->setFocus(); doc = new DocLnk(nf); + currentFileName = "Unnamed"; qDebug("newFile "+currentFileName); - updateCaption(currentFileName); + updateCaption( currentFileName); +// editor->setEdited( FALSE); } void TextEdit::openFile( const QString &f ) { - bFromDocView = TRUE; +// bFromDocView = TRUE; DocLnk nf; nf.setType("text/plain"); nf.setFile(f); currentFileName=f; QFileInfo fi( currentFileName); nf.setName(fi.baseName()); qDebug("openFile string"+currentFileName); openFile(nf); showEditTools(); - // Show filename in caption + // Show filename in caption QString name = f; int sep = name.findRev( '/' ); if ( sep > 0 ) - name = name.mid( sep+1 ); + name = name.mid( sep+1 ); updateCaption( name ); } void TextEdit::openFile( const DocLnk &f ) { // clear(); - bFromDocView = TRUE; +// bFromDocView = TRUE; FileManager fm; QString txt; currentFileName=f.name(); qDebug("openFile doclnk " + currentFileName); if ( !fm.loadFile( f, txt ) ) { - // ####### could be a new file + // ####### could be a new file qDebug( "Cannot open file" ); - - //return; } - - fileNew(); +// fileNew(); if ( doc ) - delete doc; + delete doc; doc = new DocLnk(f); editor->setText(txt); editor->setEdited( FALSE); edited1=FALSE; edited=FALSE; - qDebug("openFile doclnk "+currentFileName); doc->setName(currentFileName); updateCaption(); } void TextEdit::showEditTools() { // if ( !doc ) // close(); // clear(); menu->show(); editBar->show(); if ( searchVisible ) searchBar->show(); // updateCaption(); setWState (WState_Reserved1 ); } /*! unprompted save */ bool TextEdit::save() { QString file = doc->file(); - qDebug(file); + qDebug("saver file "+file); QString name= doc->name(); - qDebug(name); + qDebug("File named "+name); QString rt = editor->text(); if( !rt.isEmpty() ) { if(name.isEmpty()) { saveAs(); } else { currentFileName= name ; qDebug("saveFile "+currentFileName); struct stat buf; mode_t mode; stat(file.latin1(), &buf); mode = buf.st_mode; doc->setName( name); FileManager fm; if ( !fm.saveFile( *doc, rt ) ) { return false; } editor->setEdited( FALSE); edited1=FALSE; edited=FALSE; if(caption().left(1)=="*") setCaption(caption().right(caption().length()-1)); chmod( file.latin1(), mode); } return true; } return false; } /*! prompted save */ bool TextEdit::saveAs() { // qDebug("saveAsFile "+currentFileName); - - // case of nothing to save... /// there's always something to save -// if ( !doc )//|| !bFromDocView) -// { -// qDebug("no doc"); -// return true; -// } + // case of nothing to save... + if ( !doc )//|| !bFromDocView) + { + qDebug("no doc"); + return true; + } if ( !editor->edited() ) { delete doc; doc = 0; return true; } QString rt = editor->text(); qDebug(currentFileName); - if( currentFileName.isEmpty() || currentFileName == tr("Unnamed")) { + if( currentFileName.isEmpty() || currentFileName == tr("Unnamed") || currentFileName == tr("Text Editor")) { qDebug("do silly TT filename thing"); if ( doc->name().isEmpty() ) { 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("Unnamed"); doc->setName(docname); currentFileName=docname; } } fileSaveDlg=new fileSaver(this,tr("Save File As?"),TRUE, 0, currentFileName); qDebug("wanna save filename "+currentFileName); @@ -793,104 +797,101 @@ bool TextEdit::saveAs() FileManager fm; if ( !fm.saveFile( *doc, rt ) ) { return false; } if( fileSaveDlg->filePermCheck->isChecked() ) { filePermissions *filePerm; filePerm = new filePermissions(this, tr("Permissions"),true,0,(const QString &)fileNm); filePerm->exec(); if( filePerm) delete filePerm; } } } editor->setEdited(TRUE); edited1=FALSE; edited=TRUE; if(caption().left(1)=="*") setCaption(caption().right(caption().length()-1)); if(fileSaveDlg) delete fileSaveDlg; return true; -} +} //end saveAs void TextEdit::clear() { delete doc; doc = 0; editor->clear(); } void TextEdit::updateCaption( const QString &name ) { if ( !doc ) setCaption( tr("Text Editor") ); else { QString s = name; if ( s.isNull() ) s = doc->name(); if ( s.isEmpty() ) { s = tr( "Unnamed" ); currentFileName=s; } - + if(s.left(1) == "/") + s = s.right(s.length()-1); setCaption( s + " - " + tr("Text Editor") ); } } void TextEdit::setDocument(const QString& fileref) { bFromDocView = TRUE; - qDebug("setDocument "+fileref); - bFromDocView = TRUE; if(fileref.find(".desktop",0,TRUE) == -1) { - openFile(fileref); + openFile(fileref); } else { - openFile(DocLnk(fileref)); + qDebug("is desktop file"); + openFile(DocLnk(fileref)); } editor->setEdited(TRUE); edited1=FALSE; edited=TRUE; doSearchBar(); } void TextEdit::closeEvent( QCloseEvent *e ) { bFromDocView = FALSE; e->accept(); } void TextEdit::accept() { - QString file = doc->file(); - if (file.find("_.txt",0,TRUE) ==-1) - save(); - else { - QFile(file).remove(); - } + //if(caption() !="Unnamed") + if(edited1) + saveAs(); exit(0); } void TextEdit::changeFont() { FontDatabase fdb; QFont defaultFont=editor->font(); QFontInfo fontInfo(defaultFont); Config cfg("TextEdit"); cfg.setGroup("Font"); QString family = cfg.readEntry("Family", fontInfo.family()); QString style = cfg.readEntry("Style", fdb.styleString(defaultFont)); int i_size = cfg.readNumEntry("Size", fontInfo.pointSize()/10); QString charSet = cfg.readEntry("CharSet", QFont::encodingName( fontInfo.charSet()) ); defaultFont = fdb.font(family,style,i_size,charSet); FontDialog *fontDlg; fontDlg=new FontDialog(this,tr("FontDialog"),TRUE); fontDlg->exec(); QFont myFont=fontDlg->selectedFont; editor->setFont( myFont); @@ -913,24 +914,32 @@ void TextEdit::editDelete() break; }; } void TextEdit::changeStartConfig( bool b ) { Config cfg("TextEdit"); cfg.setGroup("View"); if(b) { qDebug("bool"); cfg.writeEntry("startNew","TRUE"); } else { cfg.writeEntry("startNew","FALSE"); } update(); } void TextEdit::editorChanged() { if(editor->edited() && edited && !edited1) { setCaption( "*"+caption()); edited1=TRUE; } edited=TRUE; } + +void TextEdit::receive(const QCString&msg, const QByteArray&) { + qDebug("QCop "+msg); + if ( msg == "setDocument(QString)" ) { + qDebug("bugger all"); + } + +} |