From: <su...@us...> - 2012-11-26 15:32:12
|
Revision: 4551 http://tora.svn.sourceforge.net/tora/?rev=4551&view=rev Author: subik Date: 2012-11-26 15:31:57 +0000 (Mon, 26 Nov 2012) Log Message: ----------- finally working text Search and replace (still in progress) Modified Paths: -------------- branches/tora3/src/editor/toeditorbase.cpp branches/tora3/src/editor/tomarkedtexteditor.cpp branches/tora3/src/editor/tosearchreplace.cpp branches/tora3/src/editor/tosearchreplace.h Modified: branches/tora3/src/editor/toeditorbase.cpp =================================================================== --- branches/tora3/src/editor/toeditorbase.cpp 2012-11-26 14:31:28 UTC (rev 4550) +++ branches/tora3/src/editor/toeditorbase.cpp 2012-11-26 15:31:57 UTC (rev 4551) @@ -201,25 +201,17 @@ if (!m_search->isVisible()) { m_search->show(); + m_search->setReadOnly(m_editor->isReadOnly()); } return true; } -//bool toEditorBase::searchPrevious() -//{ -// return m_editor->searchPrevious(""); -//} - void toEditorBase::searchReplace() { m_search->setVisible(!m_search->isVisible()); + m_search->setReadOnly(m_editor->isReadOnly()); } -//void toEditorBase::searchReplaceAll() -//{ -// return m_editor->searchReplaceAll(""); -//} - void toEditorBase::editReadAll() { qDebug() << "toEditorBase::editReadAll() not implemented"; @@ -273,24 +265,6 @@ m_fsWatcher->removePaths(l); } -//void toEditorBase::focusInEvent (QFocusEvent *e) -//{ -// toEditWidget::receivedFocus(); -// QWidget::focusInEvent(e); -//// int curline, curcol; -//// getCursorPosition (&curline, &curcol); -//// toMainWidget()->setCoordinates(curline + 1, curcol + 1); -//// QsciScintilla::focusInEvent(e); -//// if (CursorTimerID < 0) -//// CursorTimerID = startTimer(500); -//} - -//void toEditorBase::focusOutEvent (QFocusEvent *e) -//{ -// toEditWidget::lostFocus(); -// QWidget::focusOutEvent(e); -//} - void toEditorBase::gotFocus() { qDebug() << "toEditorBase::gotFocus" << this; Modified: branches/tora3/src/editor/tomarkedtexteditor.cpp =================================================================== --- branches/tora3/src/editor/tomarkedtexteditor.cpp 2012-11-26 14:31:28 UTC (rev 4550) +++ branches/tora3/src/editor/tomarkedtexteditor.cpp 2012-11-26 15:31:57 UTC (rev 4551) @@ -519,12 +519,12 @@ getCursorPosition(&line, &index); - found = findFirst(m_searchText, - flags & Search::Regexp, - flags & Search::CaseSensitive, - flags & Search::WholeWords, + found = findFirst(searchText, + (bool)(flags & Search::Regexp), + (bool)(flags & Search::CaseSensitive), + (bool)(flags & Search::WholeWords), true, //bool wrap, - flags & Search::Forward, + (bool)(flags & Search::Forward), line, index, true //bool show = true @@ -543,6 +543,9 @@ // clear previously used marked text clearIndicatorRange(0, 0, lines(), lineLength(lines()-1), m_searchIndicator); + if (!found) + return found; + // set searching flags int searchFlags = 0; //QsciScintilla::SCFIND_WORDSTART; @@ -560,7 +563,6 @@ // set searching range SendScintilla(QsciScintilla::SCI_SETTARGETSTART, from); SendScintilla(QsciScintilla::SCI_SETTARGETEND, to); - qDebug() << "F FFF" << from << to; SendScintilla(QsciScintilla::SCI_SETSEARCHFLAGS, searchFlags); from = SendScintilla(QsciScintilla::SCI_SEARCHINTARGET, @@ -569,7 +571,6 @@ // SCI_SEARCHINTARGET returns -1 when it doesn't find anything if (from == -1) { - qDebug() << "FORM==-1" << from << to; break; } @@ -580,18 +581,17 @@ } // while } - if (found && searchText != replaceText) + if (!isReadOnly() && found && searchText != replaceText) { if (m_flags & Search::Replace) { - qDebug() << "REPL" << hasSelectedText() << selectedText(); - replace(replaceText); + this->replace(replaceText); } else if (m_flags & Search::ReplaceAll) { QsciScintilla::beginUndoAction(); while (findNext()) - replace(replaceText); + this->replace(replaceText); QsciScintilla::endUndoAction(); } } Modified: branches/tora3/src/editor/tosearchreplace.cpp =================================================================== --- branches/tora3/src/editor/tosearchreplace.cpp 2012-11-26 14:31:28 UTC (rev 4550) +++ branches/tora3/src/editor/tosearchreplace.cpp 2012-11-26 15:31:57 UTC (rev 4551) @@ -96,25 +96,13 @@ return ReplacementText->currentText(); } +void toSearchReplace::setReadOnly(bool ro) +{ + ReplacementText->setEnabled(!ro); + Replace->setEnabled(!ro); + ReplaceAll->setEnabled(!ro); +} -//Search::SearchMode toSearchReplace::searchMode() -//{ -// if (SearchMode->currentIndex() == 0) -// return Search::SearchPlaintext; -// else -// return Search::SearchRegexp; -//} -// -//bool toSearchReplace::wholeWords() -//{ -// return WholeWords->isChecked(); -//} -// -//bool toSearchReplace::caseSensitive() -//{ -// return MatchCase->isChecked(); -//} - Search::SearchFlags toSearchReplace::sharedFlags() { Search::SearchFlags f; Modified: branches/tora3/src/editor/tosearchreplace.h =================================================================== --- branches/tora3/src/editor/tosearchreplace.h 2012-11-26 14:31:28 UTC (rev 4550) +++ branches/tora3/src/editor/tosearchreplace.h 2012-11-26 15:31:57 UTC (rev 4551) @@ -66,11 +66,10 @@ QString searchText(); QString replaceText(); -// Search::SearchMode searchMode(); -// bool wholeWords(); -// bool caseSensitive(); + void setReadOnly(bool ro); + signals: void searchNext(Search::SearchFlags flags); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <su...@us...> - 2012-11-26 16:04:03
|
Revision: 4552 http://tora.svn.sourceforge.net/tora/?rev=4552&view=rev Author: subik Date: 2012-11-26 16:03:52 +0000 (Mon, 26 Nov 2012) Log Message: ----------- no more timers in editor Modified Paths: -------------- branches/tora3/src/editor/toeditorbase.cpp branches/tora3/src/editor/toeditorbase.h branches/tora3/src/editor/tomarkedtexteditor.cpp branches/tora3/src/editor/tomarkedtexteditor.h branches/tora3/src/editor/tosearchreplace.cpp branches/tora3/src/editor/tosearchreplace.h Modified: branches/tora3/src/editor/toeditorbase.cpp =================================================================== --- branches/tora3/src/editor/toeditorbase.cpp 2012-11-26 15:31:57 UTC (rev 4551) +++ branches/tora3/src/editor/toeditorbase.cpp 2012-11-26 16:03:52 UTC (rev 4552) @@ -86,9 +86,13 @@ connect(m_editor, SIGNAL(gotFocus()), this, SLOT(gotFocus())); connect(m_editor, SIGNAL(lostFocus()), this, SLOT(lostFocus())); + connect(m_editor, SIGNAL(cursorPositionChanged(int, int)), + this, SLOT(setCoordinates(int, int))); connect(m_search, SIGNAL(searchNext(Search::SearchFlags)), this, SLOT(handleSearching(Search::SearchFlags))); + connect(m_search, SIGNAL(windowClosed()), + this, SLOT(setEditorFocus())); } QString toEditorBase::editText() @@ -274,7 +278,7 @@ void toEditorBase::lostFocus() { qDebug() << "toEditorBase::lostFocus" << this; -// toEditWidget::lostFocus(); + toEditWidget::lostFocus(); } void toEditorBase::clear(void) @@ -311,3 +315,13 @@ if (!ret) qWarning() << "TODO/FIXME" << "toEditorBase::handleSearching return value"; } + +void toEditorBase::setCoordinates(int line, int column) +{ + toMainWidget()->setCoordinates(line + 1, column + 1); +} + +void toEditorBase::setEditorFocus() +{ + m_editor->setFocus(Qt::OtherFocusReason); +} Modified: branches/tora3/src/editor/toeditorbase.h =================================================================== --- branches/tora3/src/editor/toeditorbase.h 2012-11-26 15:31:57 UTC (rev 4551) +++ branches/tora3/src/editor/toeditorbase.h 2012-11-26 16:03:52 UTC (rev 4552) @@ -167,7 +167,10 @@ void setEditFlags(void); void handleSearching(Search::SearchFlags flags); + void setCoordinates(int line, int column); + void setEditorFocus(); + void gotFocus(); void lostFocus(); }; Modified: branches/tora3/src/editor/tomarkedtexteditor.cpp =================================================================== --- branches/tora3/src/editor/tomarkedtexteditor.cpp 2012-11-26 15:31:57 UTC (rev 4551) +++ branches/tora3/src/editor/tomarkedtexteditor.cpp 2012-11-26 16:03:52 UTC (rev 4552) @@ -94,26 +94,21 @@ setEolMode(QsciScintilla::EolUnix); #endif - QShortcut *searchReplaceShortcut = new QShortcut(QKeySequence::Find, parent, SLOT(searchReplace()), SLOT(searchReplace()), Qt::WidgetWithChildrenShortcut); + // it allows to use S&R in eg. error message output + QShortcut *searchReplaceShortcut = new QShortcut(QKeySequence::Find, parent, SLOT(searchReplace()), SLOT(searchReplace())); // search all occurrences // allow indicator painting *under* the text (but it makes editor slower a bit...) // It paints a colored box under the text for all occurrences of m_searchText. -// SendScintilla(QsciScintilla::SCI_SETTWOPHASEDRAW, 1); -// SendScintilla(QsciScintilla::SCI_INDICSETSTYLE, m_searchIndicator, QsciScintilla::INDIC_ROUNDBOX); indicatorDefine(QsciScintilla::RoundBoxIndicator, m_searchIndicator); // TODO/FIXME: make it configurable setIndicatorForegroundColor(Qt::red, m_searchIndicator); -// SendScintilla(QsciScintilla::SCI_INDICSETFORE, m_searchIndicator, QColor(255, 255, 10, 10)); //QColor(255, 230, 90, 100)); setIndicatorOutlineColor(Qt::black, m_searchIndicator); setIndicatorDrawUnder(true, m_searchIndicator); -// SendScintilla(QsciScintilla::SCI_INDICSETUNDER, m_searchIndicator, 1); // end of search all occurrences connect(this, SIGNAL(linesChanged()), this, SLOT(linesChanged())); - CursorTimerID = -1; - // sets default tab width setTabWidth(toConfigurationSingle::Instance().tabStop()); setIndentationsUseTabs(!toConfigurationSingle::Instance().tabSpaces()); @@ -171,35 +166,6 @@ } } -void toMarkedTextEditor::timerEvent(QTimerEvent *e) -{ - if (CursorTimerID == e->timerId()) - { - int curline, curcol; - getCursorPosition (&curline, &curcol); - toMainWidget()->setCoordinates(curline + 1, curcol + 1); - } - else - QsciScintilla::timerEvent(e); -} - -//void toMarkedTextEditor::focusOutEvent (QFocusEvent *e) -//{ -// if (Search) -// { -// Search = false; -// LastSearch = SearchString; -// Utils::toStatusMessage(QString::null); -// } -// if (CursorTimerID >= 0) -// { -// killTimer(CursorTimerID); -// CursorTimerID = -1; -// } -// QsciScintilla::focusOutEvent(e); -//} - - void toMarkedTextEditor::print(const QString &fname) { QsciPrinter printer; @@ -270,90 +236,6 @@ } } - - -//void toMarkedTextEditor::searchFound(int line, int col) -//{ -// setSelection (line, col + SearchString.length(), line, col); -// ensureCursorVisible(); -// Utils::toStatusMessage(tr("Incremental search") + QString::fromLatin1(":") + SearchString, false, false); -//} - -//void toMarkedTextEditor::incrementalSearch(Search::SearchDirection forward, bool next) -//{ -// int curline, curcol; -// getCursorPosition (&curline, &curcol); -// QString line; -// if (SearchFailed && next) -// { -// if (forward == Search::SearchForward) -// { -// curline = 0; -// curcol = 0; -// next = false; -// line = text(curline); -// } -// else -// { -// curline = lines() - 1; -// line = text(curline); -// curcol = line.length(); -// next = false; -// } -// SearchFailed = false; -// } -// else -// line = text(curline); -// if (forward == Search::SearchForward) -// { -// if (next) -// curcol++; -// if (curcol + SearchString.length() <= line.length()) -// { -// int pos = line.indexOf(SearchString, curcol, Qt::CaseInsensitive); -// if (pos >= 0) -// { -// searchFound(curline, pos); -// return ; -// } -// } -// for (curline++; curline < lines(); curline++) -// { -// int pos = text(curline).indexOf(SearchString, 0, Qt::CaseInsensitive); -// if (pos >= 0) -// { -// searchFound(curline, pos); -// return ; -// } -// } -// } -// else -// { -// if (next) -// curcol--; -// if (curcol >= 0) -// { -// int pos = line.lastIndexOf(SearchString, curcol, Qt::CaseInsensitive); -// if (pos >= 0) -// { -// searchFound(curline, pos); -// return ; -// } -// } -// for (curline--; curline >= 0; curline--) -// { -// int pos = text(curline).lastIndexOf(SearchString, -1, Qt::CaseInsensitive); -// if (pos >= 0) -// { -// searchFound(curline, pos); -// return ; -// } -// } -// } -// Utils::toStatusMessage(tr("Incremental search") + QString::fromLatin1(":") + SearchString + QString::fromLatin1(" (failed)"), false, false); -// SearchFailed = true; -//} - void toMarkedTextEditor::dropEvent(QDropEvent *e) { if(e->source() == this || e->source() == viewport()) @@ -616,8 +498,6 @@ int curline, curcol; getCursorPosition (&curline, &curcol); toMainWidget()->setCoordinates(curline + 1, curcol + 1); - if (CursorTimerID < 0) - CursorTimerID = startTimer(500); emit gotFocus(); } Modified: branches/tora3/src/editor/tomarkedtexteditor.h =================================================================== --- branches/tora3/src/editor/tomarkedtexteditor.h 2012-11-26 15:31:57 UTC (rev 4551) +++ branches/tora3/src/editor/tomarkedtexteditor.h 2012-11-26 16:03:52 UTC (rev 4552) @@ -156,7 +156,6 @@ protected: virtual void newLine(void); virtual void dropEvent(QDropEvent *); - virtual void timerEvent(QTimerEvent *); /** Reimplemented from QsciScintilla */ virtual void focusInEvent(QFocusEvent *e); @@ -191,8 +190,6 @@ void setXMLWrap(bool wrap); private: - int CursorTimerID; - QPoint DragStart; QString m_searchText; Modified: branches/tora3/src/editor/tosearchreplace.cpp =================================================================== --- branches/tora3/src/editor/tosearchreplace.cpp 2012-11-26 15:31:57 UTC (rev 4551) +++ branches/tora3/src/editor/tosearchreplace.cpp 2012-11-26 16:03:52 UTC (rev 4552) @@ -177,6 +177,12 @@ QWidget::showEvent(e); } +void toSearchReplace::closeEvent(QCloseEvent *e) +{ + emit windowClosed(); + QWidget::closeEvent(e); +} + void toSearchReplace::act_searchChanged(const QString & text) { bool ena = text > 0; Modified: branches/tora3/src/editor/tosearchreplace.h =================================================================== --- branches/tora3/src/editor/tosearchreplace.h 2012-11-26 15:31:57 UTC (rev 4551) +++ branches/tora3/src/editor/tosearchreplace.h 2012-11-26 16:03:52 UTC (rev 4552) @@ -72,9 +72,11 @@ signals: void searchNext(Search::SearchFlags flags); + void windowClosed(); protected: void showEvent(QShowEvent * e); + void closeEvent(QCloseEvent *e); private: Search::SearchFlags sharedFlags(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ibr...@us...> - 2013-02-15 18:21:23
|
Revision: 4570 http://tora.svn.sourceforge.net/tora/?rev=4570&view=rev Author: ibre5041 Date: 2013-02-15 18:21:10 +0000 (Fri, 15 Feb 2013) Log Message: ----------- Modified Paths: -------------- branches/tora3/src/editor/tomarkedtext.h branches/tora3/src/editor/tomarkedtexteditor.h Modified: branches/tora3/src/editor/tomarkedtext.h =================================================================== --- branches/tora3/src/editor/tomarkedtext.h 2013-02-15 18:10:59 UTC (rev 4569) +++ branches/tora3/src/editor/tomarkedtext.h 2013-02-15 18:21:10 UTC (rev 4570) @@ -48,7 +48,7 @@ class toMarkedText : public toEditorBase { - Q_OBJECT + Q_OBJECT; public: toMarkedText(QWidget *parent = 0, const char* name = 0); }; Modified: branches/tora3/src/editor/tomarkedtexteditor.h =================================================================== --- branches/tora3/src/editor/tomarkedtexteditor.h 2013-02-15 18:10:59 UTC (rev 4569) +++ branches/tora3/src/editor/tomarkedtexteditor.h 2013-02-15 18:21:10 UTC (rev 4570) @@ -73,8 +73,9 @@ { Q_OBJECT; +protected: typedef QsciScintilla super; -protected: + /** Reimplemented for internal reasons. */ virtual void mousePressEvent(QMouseEvent *e); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ibr...@us...> - 2013-02-17 23:37:36
|
Revision: 4578 http://tora.svn.sourceforge.net/tora/?rev=4578&view=rev Author: ibre5041 Date: 2013-02-17 23:37:29 +0000 (Sun, 17 Feb 2013) Log Message: ----------- Modified Paths: -------------- branches/tora3/src/editor/toeditorbase.cpp branches/tora3/src/editor/toeditorbase.h branches/tora3/src/editor/tohighlightedtext.h Modified: branches/tora3/src/editor/toeditorbase.cpp =================================================================== --- branches/tora3/src/editor/toeditorbase.cpp 2013-02-17 22:56:50 UTC (rev 4577) +++ branches/tora3/src/editor/toeditorbase.cpp 2013-02-17 23:37:29 UTC (rev 4578) @@ -38,8 +38,8 @@ * * END_COMMON_COPYRIGHT_HEADER */ +#include "editor/toeditorbase.h" #include "editor/tohighlightedtexteditor.h" -#include "editor/toeditorbase.h" #include "core/toeditmenu.h" #include "core/tomainwindow.h" Modified: branches/tora3/src/editor/toeditorbase.h =================================================================== --- branches/tora3/src/editor/toeditorbase.h 2013-02-17 22:56:50 UTC (rev 4577) +++ branches/tora3/src/editor/toeditorbase.h 2013-02-17 23:37:29 UTC (rev 4578) @@ -41,13 +41,11 @@ #ifndef TOEDITORBASE_H #define TOEDITORBASE_H -#include <QWidget> - #include "core/toeditwidget.h" #include "editor/tomarkedtexteditor.h" #include "editor/tosearchreplace.h" - +#include <QWidget> class toEditorBase : public QWidget, public toEditWidget { Q_OBJECT Modified: branches/tora3/src/editor/tohighlightedtext.h =================================================================== --- branches/tora3/src/editor/tohighlightedtext.h 2013-02-17 22:56:50 UTC (rev 4577) +++ branches/tora3/src/editor/tohighlightedtext.h 2013-02-17 23:37:29 UTC (rev 4578) @@ -48,7 +48,8 @@ class toHighlightedText : public toEditorBase { - Q_OBJECT + Q_OBJECT; + public: toHighlightedText(QWidget *parent = 0, const char* name = 0); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ibr...@us...> - 2013-03-18 17:33:34
|
Revision: 4588 http://sourceforge.net/p/tora/code/4588 Author: ibre5041 Date: 2013-03-18 17:33:30 +0000 (Mon, 18 Mar 2013) Log Message: ----------- Modified Paths: -------------- branches/tora3/src/editor/tocustomlexer.cpp branches/tora3/src/editor/tocustomlexer.h Modified: branches/tora3/src/editor/tocustomlexer.cpp =================================================================== --- branches/tora3/src/editor/tocustomlexer.cpp 2013-03-18 17:31:53 UTC (rev 4587) +++ branches/tora3/src/editor/tocustomlexer.cpp 2013-03-18 17:33:30 UTC (rev 4588) @@ -93,6 +93,10 @@ QColor(Qt::darkBlue), QColor("white"), mono); + declareStyle(Failure, + QColor(Qt::black), + QColor(Qt::red), + mono); } toCustomLexer::~toCustomLexer() @@ -171,6 +175,9 @@ case SQLLexer::Token::L_STRING: setStyling(len2, String); break; + case SQLLexer::Token::X_FAILURE: + setStyling(len2, Failure); + break; default: setStyling(len2, Default); } Modified: branches/tora3/src/editor/tocustomlexer.h =================================================================== --- branches/tora3/src/editor/tocustomlexer.h 2013-03-18 17:31:53 UTC (rev 4587) +++ branches/tora3/src/editor/tocustomlexer.h 2013-03-18 17:33:30 UTC (rev 4588) @@ -59,6 +59,7 @@ Reserved = 3, Builtin, String, + Failure, MaxStyle }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ibr...@us...> - 2013-04-02 12:03:36
|
Revision: 4604 http://sourceforge.net/p/tora/code/4604 Author: ibre5041 Date: 2013-04-02 12:03:33 +0000 (Tue, 02 Apr 2013) Log Message: ----------- Modified Paths: -------------- branches/tora3/src/editor/tocustomlexer.cpp branches/tora3/src/editor/tocustomlexer.h Modified: branches/tora3/src/editor/tocustomlexer.cpp =================================================================== --- branches/tora3/src/editor/tocustomlexer.cpp 2013-04-01 23:14:51 UTC (rev 4603) +++ branches/tora3/src/editor/tocustomlexer.cpp 2013-04-02 12:03:33 UTC (rev 4604) @@ -108,8 +108,8 @@ if(chars == NULL) throw QString("Buffer allocation error"); - thread = new QThread; - worker = new toCustomLexerPriv(); + thread = new QThread(this); + worker = new toCustomLexerPriv(NULL); worker->moveToThread(thread); //connect(worker, SIGNAL(error(QString)), this, SLOT(errorString(QString))); //connect(thread, SIGNAL(started()), worker, SLOT(process())); @@ -125,7 +125,7 @@ toCustomLexer::~toCustomLexer() { - thread->terminate(); + thread->quit(); qDebug() << __FUNCTION__; } @@ -304,14 +304,17 @@ { emit parsingStarted(); emit parsingRequested(); - for(int i = 0; i < editor()->lines(); ++i) - { - editor()->setMarginText(i, QString("AA"), OneLine); - } } void toCustomLexer::processed() { + Q_FOREACH(const StmtLineRange &r, worker->statements) + { + for(unsigned int i=r.first, j=1; i <= r.second; ++i, ++j) + { + editor()->setMarginText(i, QString::number(j), OneLine); + } + } emit parsingFinished(); schedule(); }; @@ -321,7 +324,8 @@ QTimer::singleShot(5000, this, SLOT(process())); } -toCustomLexerPriv::toCustomLexerPriv() +toCustomLexerPriv::toCustomLexerPriv(QObject *parent) + : QObject(parent) { } @@ -334,5 +338,23 @@ void toCustomLexerPriv::process() { ////styleText(0, editor()->text().length()-1); + statements.clear(); + unsigned start, end; + for(unsigned i = 1; i < 150; ++i) + { + if( i % 7 == 1) + { + start = i; + for(; i < 150; ++i) + { + if( i % 13 == 1) + { + end = i; + statements << StmtLineRange(start,end); + break; + } + } + } + } emit processed(); } Modified: branches/tora3/src/editor/tocustomlexer.h =================================================================== --- branches/tora3/src/editor/tocustomlexer.h 2013-04-01 23:14:51 UTC (rev 4603) +++ branches/tora3/src/editor/tocustomlexer.h 2013-04-02 12:03:33 UTC (rev 4604) @@ -50,6 +50,8 @@ class toCustomLexerPriv; +typedef QPair<unsigned, unsigned> StmtLineRange; + class toCustomLexer : public QsciLexerCustom { Q_OBJECT; @@ -61,7 +63,7 @@ Reserved = 3, Builtin, String, - OneLine, + OneLine, Failure, MaxStyle }; @@ -109,21 +111,21 @@ class toCustomLexerPriv: public QObject { Q_OBJECT; - + friend class toCustomLexer; signals: void finished(); void processed(); void error(QString err); public: - toCustomLexerPriv(); + toCustomLexerPriv(QObject *parent = 0); ~toCustomLexerPriv(); public slots: void process(); -private: - // add your variables here +protected: + QList<StmtLineRange> statements; }; #endif /* TOCUSTOMLEXER_H_ */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ibr...@us...> - 2013-07-31 19:41:41
|
Revision: 4685 http://sourceforge.net/p/tora/code/4685 Author: ibre5041 Date: 2013-07-31 19:41:34 +0000 (Wed, 31 Jul 2013) Log Message: ----------- g++ fix, segfault fix Modified Paths: -------------- branches/tora3/src/editor/tohighlightedtext.h branches/tora3/src/editor/tomarkededitor.h Modified: branches/tora3/src/editor/tohighlightedtext.h =================================================================== --- branches/tora3/src/editor/tohighlightedtext.h 2013-07-31 12:34:18 UTC (rev 4684) +++ branches/tora3/src/editor/tohighlightedtext.h 2013-07-31 19:41:34 UTC (rev 4685) @@ -264,6 +264,6 @@ }; // this one will be usually parented by QStatusBar -typedef Loki::SingletonHolder<toHighlighterTypeButton> toHighlighterTypeButtonSingle; +typedef Loki::SingletonHolder<toHighlighterTypeButton, Loki::CreateUsingNew, Loki::NoDestroy> toHighlighterTypeButtonSingle; #endif Modified: branches/tora3/src/editor/tomarkededitor.h =================================================================== --- branches/tora3/src/editor/tomarkededitor.h 2013-07-31 12:34:18 UTC (rev 4684) +++ branches/tora3/src/editor/tomarkededitor.h 2013-07-31 19:41:34 UTC (rev 4685) @@ -42,6 +42,7 @@ #define TOMARKEDEDITOR_H #include "editor/tobaseeditor.h" +#include "core/utils.h" class toMarkedEditor : public toBaseEditor { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ibr...@us...> - 2013-08-02 07:18:06
|
Revision: 4686 http://sourceforge.net/p/tora/code/4686 Author: ibre5041 Date: 2013-08-02 07:17:54 +0000 (Fri, 02 Aug 2013) Log Message: ----------- Renamed toCustomLexerPriv => toCustomLexerWorker Modified Paths: -------------- branches/tora3/src/editor/tocustomlexer.cpp branches/tora3/src/editor/tocustomlexer.h branches/tora3/src/editor/tohighlightedtext.cpp Modified: branches/tora3/src/editor/tocustomlexer.cpp =================================================================== --- branches/tora3/src/editor/tocustomlexer.cpp 2013-07-31 19:41:34 UTC (rev 4685) +++ branches/tora3/src/editor/tocustomlexer.cpp 2013-08-02 07:17:54 UTC (rev 4686) @@ -121,7 +121,7 @@ throw QString("Buffer allocation error"); thread = new QThread(this); - worker = new toCustomLexerPriv(NULL); + worker = new toCustomLexerWorker(NULL); worker->moveToThread(thread); //connect(worker, SIGNAL(error(QString)), this, SLOT(errorString(QString))); //connect(thread, SIGNAL(started()), worker, SLOT(process())); @@ -373,18 +373,18 @@ QTimer::singleShot(5000, this, SLOT(process())); } -toCustomLexerPriv::toCustomLexerPriv(QObject *parent) +toCustomLexerWorker::toCustomLexerWorker(QObject *parent) : QObject(parent) { } -toCustomLexerPriv::~toCustomLexerPriv() +toCustomLexerWorker::~toCustomLexerWorker() { } -void toCustomLexerPriv::process(const char*text, unsigned len) +void toCustomLexerWorker::process(const char*text, unsigned len) { try { Modified: branches/tora3/src/editor/tocustomlexer.h =================================================================== --- branches/tora3/src/editor/tocustomlexer.h 2013-07-31 19:41:34 UTC (rev 4685) +++ branches/tora3/src/editor/tocustomlexer.h 2013-08-02 07:17:54 UTC (rev 4686) @@ -48,7 +48,7 @@ class QsciStyle; -class toCustomLexerPriv; +class toCustomLexerWorker; typedef QPair<unsigned, unsigned> StmtLineRange; @@ -107,7 +107,7 @@ std::auto_ptr <SQLLexer::Lexer> lexer; QThread *thread; - toCustomLexerPriv *worker; + toCustomLexerWorker *worker; }; /* Utility class for @ref toCustomLexer @@ -116,7 +116,7 @@ * * NOTE: this class could by nested, but QT does not support it */ -class toCustomLexerPriv: public QObject { +class toCustomLexerWorker: public QObject { Q_OBJECT; friend class toCustomLexer; signals: @@ -125,8 +125,8 @@ void error(QString err); public: - toCustomLexerPriv(QObject *parent = 0); - ~toCustomLexerPriv(); + toCustomLexerWorker(QObject *parent = 0); + ~toCustomLexerWorker(); public slots: void process(const char*, unsigned int len); Modified: branches/tora3/src/editor/tohighlightedtext.cpp =================================================================== --- branches/tora3/src/editor/tohighlightedtext.cpp 2013-07-31 19:41:34 UTC (rev 4685) +++ branches/tora3/src/editor/tohighlightedtext.cpp 2013-08-02 07:17:54 UTC (rev 4686) @@ -50,12 +50,11 @@ #include <Qsci/qsciabstractapis.h> #include <Qsci/qscilexersql.h> -// Default SQL lexer -// static QsciLexerSQL sqlLexer; +// SQL lexer provided by QScintilla (used by HighlighterTypeEnum::QtSql) // this definition (via function) fixes the font screwing // in the GUI. It's strongly suggested to handle Qt stuff // *after* QApplication initialization. -QsciLexerSQL * sqlLexer() +static QsciLexerSQL * sqlLexer() { static QsciLexerSQL * _sqlLexer = NULL; if (!_sqlLexer) @@ -67,13 +66,13 @@ return _sqlLexer; } -//toCustomLexer * customLexer() -//{ -// static toCustomLexer * _customLexer = NULL; -// if (!_customLexer) -// _customLexer = new toCustomLexer(); -// return _customLexer; -//} +static toCustomLexer * customLexer() +{ + static toCustomLexer * _customLexer = NULL; + if (!_customLexer) + _customLexer = new toCustomLexer(); + return _customLexer; +} toComplPopup::toComplPopup(toHighlightedText* edit) : QWidget(edit, Qt::Popup) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ibr...@us...> - 2013-08-04 00:53:35
|
Revision: 4698 http://sourceforge.net/p/tora/code/4698 Author: ibre5041 Date: 2013-08-04 00:53:31 +0000 (Sun, 04 Aug 2013) Log Message: ----------- Segfault fix. Modified Paths: -------------- branches/tora3/src/editor/tohighlightedtext.cpp branches/tora3/src/editor/tomarkedtext.cpp Modified: branches/tora3/src/editor/tohighlightedtext.cpp =================================================================== --- branches/tora3/src/editor/tohighlightedtext.cpp 2013-08-03 23:08:36 UTC (rev 4697) +++ branches/tora3/src/editor/tohighlightedtext.cpp 2013-08-04 00:53:31 UTC (rev 4698) @@ -86,8 +86,6 @@ } } - setHighlighter(highlighterType); - // Setup QsciScintilla stuff QsciScintilla::setFolding(QsciScintilla::BoxedFoldStyle); // enable syntax coloring if "Syntax highlighting" is on in editor preferences @@ -152,6 +150,7 @@ this, SLOT(setHighlighter(int))); thread->start(); + setHighlighter(highlighterType); scheduleParsing(); } Modified: branches/tora3/src/editor/tomarkedtext.cpp =================================================================== --- branches/tora3/src/editor/tomarkedtext.cpp 2013-08-03 23:08:36 UTC (rev 4697) +++ branches/tora3/src/editor/tomarkedtext.cpp 2013-08-04 00:53:31 UTC (rev 4698) @@ -91,7 +91,7 @@ #endif // it allows to use S&R in eg. error message output - QShortcut *searchReplaceShortcut = new QShortcut(QKeySequence::Find, parent, SLOT(searchReplace()), SLOT(searchReplace())); + //QShortcut *searchReplaceShortcut = new QShortcut(QKeySequence::Find, parent, SLOT(searchReplace()), SLOT(searchReplace())); // search all occurrences // allow indicator painting *under* the text (but it makes editor slower a bit...) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ibr...@us...> - 2013-08-06 17:50:45
|
Revision: 4711 http://sourceforge.net/p/tora/code/4711 Author: ibre5041 Date: 2013-08-06 17:50:42 +0000 (Tue, 06 Aug 2013) Log Message: ----------- Do to parse text if focus was lost Modified Paths: -------------- branches/tora3/src/editor/tohighlightedtext.cpp branches/tora3/src/editor/tohighlightedtext.h Modified: branches/tora3/src/editor/tohighlightedtext.cpp =================================================================== --- branches/tora3/src/editor/tohighlightedtext.cpp 2013-08-06 13:51:25 UTC (rev 4710) +++ branches/tora3/src/editor/tohighlightedtext.cpp 2013-08-06 17:50:42 UTC (rev 4711) @@ -63,6 +63,9 @@ , m_bookmarkHandle(QsciScintilla::markerDefine(QsciScintilla::Background)) , defaultCompletion() , AnalyzerNL(NULL) + , m_parserTimer(new QTimer(this)) + , m_parserThread(new QThread(this)) + , m_haveFocus(true) { #if defined(Q_OS_WIN) mono = QFont("Courier New", 10); @@ -120,14 +123,17 @@ QsciScintilla::setMarginType(2, TextMarginRightJustified); QsciScintilla::setMarginWidth(2, QString::fromAscii("009")); - thread = new QThread(this); + m_parserTimer->setInterval(5000); // every 5s + m_parserTimer->setSingleShot(true); // repeat only if bg thread responded + m_parserThread->setObjectName("ParserThread"); m_worker = new toHighlightedTextWorker(NULL); - m_worker->moveToThread(thread); + m_worker->moveToThread(m_parserThread); + connect(m_parserTimer, SIGNAL(timeout()), this, SLOT(process())); connect(this, SIGNAL(parsingRequested(QString)), m_worker, SLOT(process(QString))); connect(m_worker, SIGNAL(processed()), this, SLOT(processed())); - connect(m_worker, SIGNAL(finished()), thread, SLOT(quit())); + connect(m_worker, SIGNAL(finished()), m_parserThread, SLOT(quit())); connect(m_worker, SIGNAL(finished()), m_worker, SLOT(deleteLater())); - connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater())); + connect(m_parserThread, SIGNAL(finished()), m_parserThread, SLOT(deleteLater())); // Connect signals&slots connect(this, SIGNAL(cursorPositionChanged(int, int)), this, SLOT(setStatusMessage(void ))); @@ -149,7 +155,7 @@ SIGNAL(toggled(int)), this, SLOT(setHighlighter(int))); - thread->start(); + m_parserThread->start(); setHighlighter(highlighterType); scheduleParsing(); } @@ -189,6 +195,8 @@ toHighlightedText::~toHighlightedText() { + m_parserThread->quit(); + m_parserThread->wait(); if (complAPI) //delete complAPI; if (popup) @@ -794,24 +802,35 @@ QTimer::singleShot(1000, this, SLOT(reportFocus())); #endif + m_haveFocus = true; toHighlighterTypeButtonSingle::Instance().setEnabled(true); toHighlighterTypeButtonSingle::Instance().setValue(highlighterType); qDebug() << ">>> toHighlightedText::focusInEvent" << this << " " << highlighterType; + scheduleParsing(); super::focusInEvent(e); } void toHighlightedText::focusOutEvent(QFocusEvent *e) { + m_haveFocus = false; toHighlighterTypeButtonSingle::Instance().setDisabled(true); toHighlighterTypeButtonSingle::Instance().setValue(None); + unScheduleParsing(); super::focusOutEvent(e); } void toHighlightedText::scheduleParsing() { - QTimer::singleShot(5000, this, SLOT(process())); + if(m_haveFocus && !m_parserTimer->isActive()) + m_parserTimer->start(); } +void toHighlightedText::unScheduleParsing() +{ + if(m_parserTimer->isActive()) + m_parserTimer->stop(); +} + void toHighlightedText::process() { //emit parsingStarted(); @@ -829,6 +848,9 @@ void toHighlightedText::processed() { + if(!m_haveFocus) // response was received after the focus was lost + return; + Style style = OneLine; unsigned lastLine = 0; Q_FOREACH(const toSyntaxAnalyzer::statement &r, m_worker->statements) @@ -867,7 +889,6 @@ toHighlightedTextWorker::~toHighlightedTextWorker() { - } void toHighlightedTextWorker::process(QString text) Modified: branches/tora3/src/editor/tohighlightedtext.h =================================================================== --- branches/tora3/src/editor/tohighlightedtext.h 2013-08-06 13:51:25 UTC (rev 4710) +++ branches/tora3/src/editor/tohighlightedtext.h 2013-08-06 17:50:42 UTC (rev 4711) @@ -188,7 +188,7 @@ virtual void focusOutEvent(QFocusEvent *e); void scheduleParsing(); - + void unScheduleParsing(); private: HighlighterTypeEnum highlighterType; @@ -204,8 +204,11 @@ QMap<int,QString> styleNames; QFont mono; // line numbers font - QThread *thread; + // toHighlightedTextWorker related variables + QTimer *m_parserTimer; + QThread *m_parserThread; toHighlightedTextWorker *m_worker; + bool m_haveFocus; // this flag handles situation when bg thread response is rececived after focus was lost //! \brief A handler for current line highlighting - margin // FIXME: disabled due repainting issues This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |