Diffstat (limited to 'core/apps/textedit/textedit.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | core/apps/textedit/textedit.cpp | 130 |
1 files changed, 31 insertions, 99 deletions
diff --git a/core/apps/textedit/textedit.cpp b/core/apps/textedit/textedit.cpp index f571511..b81f3b4 100644 --- a/core/apps/textedit/textedit.cpp +++ b/core/apps/textedit/textedit.cpp @@ -10,195 +10,97 @@ ** packaging of this file. ** **********************************************************************/ // changes added by L. J. Potter Sun 02-17-2002 21:31:31 #include "textedit.h" #include "filePermissions.h" #include <opie/ofileselector.h> #include <opie/ofiledialog.h> #include <opie/ofontselector.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 <qpoint.h> #include <qtextstream.h> #include <qdatetime.h> #include <qclipboard.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 <qlayout.h> #include <qapplication.h> #include <qtimer.h> #include <qdir.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", -"+ c #A0A0A0", -"@ c #565656", -"# c #9E9E9E", -"$ c #525252", -"% c #929292", -"& c #676767", -"* c #848484", -"= c #666666", -"- c #D8D8D8", -"; c #FFFFFF", -"> c #DBDBDB", -", c #636363", -"' c #989898", -") c #2D2D2D", -"! c #909090", -"~ c #AEAEAE", -"{ c #EAEAEA", -"] c #575757", -"^ c #585858", -"/ c #8A8A8A", -"( c #828282", -"_ c #6F6F6F", -": c #C9C9C9", -"< c #050505", -"[ c #292929", -"} c #777777", -"| c #616161", -"1 c #3A3A3A", -"2 c #BEBEBE", -"3 c #2C2C2C", -"4 c #7C7C7C", -"5 c #F6F6F6", -"6 c #FCFCFC", -"7 c #6B6B6B", -"8 c #959595", -"9 c #4F4F4F", -"0 c #808080", -"a c #767676", -"b c #818181", -"c c #B8B8B8", -"d c #FBFBFB", -"e c #F9F9F9", -"f c #CCCCCC", -"g c #030303", -"h c #737373", -"i c #7A7A7A", -"j c #7E7E7E", -"k c #6A6A6A", -"l c #FAFAFA", -"m c #505050", -"n c #9D9D9D", -"o c #333333", -"p c #7B7B7B", -"q c #787878", -"r c #696969", -"s c #494949", -"t c #555555", -"u c #949494", -"v c #E6E6E6", -"w c #424242", -"x c #515151", -"y c #535353", -"z c #3E3E3E", -"A c #D4D4D4", -"B c #0C0C0C", -"C c #353535", -"D c #474747", -"E c #ECECEC", -"F c #919191", -"G c #7D7D7D", -"H c #000000", -"I c #404040", -"J c #858585", -"K c #323232", -"L c #D0D0D0", -"M c #1C1C1C", -" ...+ ", -" @#$%&..+ ", -" .*=-;;>,..+ ", -" ')!~;;;;;;{]..", -" ^/(-;;;;;;;_:<", -" [}|;;;;;;;{12$", -" #34-55;;;;678$+", -" 90ab=c;dd;e1fg ", -" [ahij((kbl0mn$ ", -" op^q^^7r&]s/$+ ", -"@btu;vbwxy]zAB ", -"CzDEvEv;;DssF$ ", -"G.H{E{E{IxsJ$+ ", -" +...vEKxzLM ", -" +...z]n$ ", -" +... "}; - +#include "resource.h" #if QT_VERSION < 300 class QpeEditor : public QMultiLineEdit { public: QpeEditor( QWidget *parent, const char * name = 0 ) : QMultiLineEdit( parent, name ) { clearTableFlags(); setTableFlags( Tbl_vScrollBar | Tbl_autoHScrollBar ); } void find( const QString &txt, bool caseSensitive, bool backwards ); protected: bool markIt; int line1, line2, col1, col2; void mousePressEvent( QMouseEvent * ); void mouseReleaseEvent( QMouseEvent * ); //public slots: /* signals: void notFound(); void searchWrapped(); */ private: }; void QpeEditor::mousePressEvent( QMouseEvent *e ) { switch(e->button()) { case RightButton: { //rediculous workaround for qt popup menu //and the hold right click mechanism this->setSelection( line1, col1, line2, col2); QMultiLineEdit::mousePressEvent( e ); markIt = false; } break; default: { if(!markIt) { int line, col; this->getCursorPosition(&line, &col); line1=line2=line; @@ -308,96 +210,101 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) a->addTo( bar ); a->addTo( file ); a = new QAction( tr( "Save" ), QPixmap(( const char** ) filesave_xpm ) , QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( save() ) ); file->insertSeparator(); a->addTo( bar ); a->addTo( file ); a = new QAction( tr( "Save As" ), QPixmap(( const char** ) filesave_xpm ) , QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( saveAs() ) ); a->addTo( file ); a = new QAction( tr( "Cut" ), Resource::loadPixmap( "cut" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) ); a->addTo( editBar ); a->addTo( edit ); a = new QAction( tr( "Copy" ), Resource::loadPixmap( "copy" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( editCopy() ) ); a->addTo( editBar ); a->addTo( edit ); a = new QAction( tr( "Paste" ), Resource::loadPixmap( "paste" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) ); a->addTo( editBar ); a->addTo( edit ); #ifndef QT_NO_CLIPBOARD a = new QAction( tr( "Insert Time and Date" ), Resource::loadPixmap( "paste" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( editPasteTimeDate() ) ); a->addTo( edit ); #endif a = new QAction( tr( "Find..." ), Resource::loadPixmap( "find" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( editFind() ) ); edit->insertSeparator(); a->addTo( bar ); a->addTo( edit ); + a = new QAction( tr( "Goto Line..." ), Resource::loadPixmap( "find" ), + QString::null, 0, this, 0 ); + connect( a, SIGNAL( activated() ), this, SLOT( gotoLine() ) ); + a->addTo( edit ); + zin = new QAction( tr("Zoom in"), QString::null, 0, this, 0 ); connect( zin, SIGNAL( activated() ), this, SLOT( zoomIn() ) ); zin->addTo( font ); zout = new QAction( tr("Zoom out"), QString::null, 0, this, 0 ); connect( zout, SIGNAL( activated() ), this, SLOT( zoomOut() ) ); zout->addTo( font ); font->insertSeparator(); font->insertItem(tr("Font"), this, SLOT(changeFont()) ); font->insertSeparator(); font->insertItem(tr("Advanced Features"), advancedMenu); QAction *wa = new QAction( tr("Wrap lines"), QString::null, 0, this, 0 ); connect( wa, SIGNAL( toggled(bool) ), this, SLOT( setWordWrap(bool) ) ); wa->setToggleAction(true); wa->addTo( advancedMenu); nStart = new QAction( tr("Start with new file"), QString::null, 0, this, 0 ); connect( nStart, SIGNAL( toggled(bool) ), this, SLOT( changeStartConfig(bool) ) ); nStart->setToggleAction(true); nStart->addTo( advancedMenu ); nStart->setEnabled(false); nAdvanced = new QAction( tr("Prompt on Exit"), QString::null, 0, this, 0 ); connect( nAdvanced, SIGNAL( toggled(bool) ), this, SLOT( doPrompt(bool) ) ); nAdvanced->setToggleAction(true); nAdvanced->addTo( advancedMenu ); desktopAction = new QAction( tr("Always open linked file"), QString::null, 0, this, 0 ); connect( desktopAction, SIGNAL( toggled(bool) ), this, SLOT( doDesktop(bool) ) ); desktopAction->setToggleAction(true); desktopAction->addTo( advancedMenu); filePermAction = new QAction( tr("File Permissions"), QString::null, 0, this, 0 ); connect( filePermAction, SIGNAL( toggled(bool) ), @@ -1215,48 +1122,73 @@ int TextEdit::savePrompt() return 0; } void TextEdit::timerCrank() { if(featureAutoSave && edited1) { if(currentFileName.isEmpty()) { currentFileName = QDir::homeDirPath()+"/textedit.tmp"; saveAs(); } else { // qDebug("autosave"); save(); } setTimer(); } } void TextEdit::doTimer(bool b) { Config cfg("TextEdit"); cfg.setGroup ( "View" ); cfg.writeEntry ( "autosave", b); featureAutoSave = b; nAutoSave->setOn(b); if(b) { // qDebug("doTimer true"); setTimer(); } // else // qDebug("doTimer false"); } void TextEdit::setTimer() { if(featureAutoSave) { // qDebug("setting autosave"); QTimer *timer = new QTimer(this ); connect( timer, SIGNAL(timeout()), this, SLOT(timerCrank()) ); timer->start( 300000, true); //5 minutes } } + +void TextEdit::gotoLine() { + + QWidget *d = QApplication::desktop(); + gotoEdit = new QLineEdit( 0, "Goto line"); + + gotoEdit->move( (d->width()/2) - ( gotoEdit->width()/2) , (d->height()/2) - (gotoEdit->height()/2)); + gotoEdit->setFrame(true); + gotoEdit->show(); + connect (gotoEdit,SIGNAL(returnPressed()), this, SLOT(doGoto())); +} + +void TextEdit::doGoto() { + QString number = gotoEdit->text(); + gotoEdit->hide(); + if(gotoEdit) delete gotoEdit; + bool ok; + int lineNumber = number.toInt(&ok, 10); + if(editor->numLines() < lineNumber) + QMessageBox::message(tr("Text Edit"),tr("Not enough lines")); + else + { + editor->setCursorPosition(lineNumber, 0, false); + } +} |