From: <ibr...@us...> - 2013-07-30 16:04:19
|
Revision: 4683 http://sourceforge.net/p/tora/code/4683 Author: ibre5041 Date: 2013-07-30 16:04:15 +0000 (Tue, 30 Jul 2013) Log Message: ----------- toToggleButton toPushButton renamed to toRotatingButton Modified Paths: -------------- branches/tora3/src/core/todockbar.cpp branches/tora3/src/core/todockbar.h branches/tora3/src/core/tomain.cpp branches/tora3/src/core/topushbutton.cpp branches/tora3/src/core/topushbutton.h branches/tora3/src/core/tosyntaxsetup.h branches/tora3/src/core/utils.h branches/tora3/src/editor/tohighlightedtext.cpp branches/tora3/src/editor/tohighlightedtext.h branches/tora3/src/editor/tohighlightedtexteditor.cpp branches/tora3/src/editor/tohighlightedtexteditor.h branches/tora3/src/parsing/tosyntaxanalyzer.cpp branches/tora3/src/parsing/tosyntaxanalyzer.h branches/tora3/src/parsing/tsqllexer.h Modified: branches/tora3/src/core/todockbar.cpp =================================================================== --- branches/tora3/src/core/todockbar.cpp 2013-07-30 02:58:14 UTC (rev 4682) +++ branches/tora3/src/core/todockbar.cpp 2013-07-30 16:04:15 UTC (rev 4683) @@ -49,7 +49,7 @@ toDockbarButton::toDockbarButton(const QIcon &icon, const QString &text, QWidget *parent) - : toPushButton(icon, text, parent) + : toRotatingButton(icon, text, parent) { } @@ -85,9 +85,9 @@ // Qt::Tool window that'll be dismissed after it looses focus. toDockbarButton *button = new toDockbarButton(let->icon(), let->name(), 0); if(Area == Qt::LeftToolBarArea) - button->setRotation(toPushButton::CounterClockwise); + button->setRotation(toRotatingButton::CounterClockwise); else if(Area == Qt::RightToolBarArea) - button->setRotation(toPushButton::Clockwise); + button->setRotation(toRotatingButton::Clockwise); button->setCheckable(true); addWidget(button); Modified: branches/tora3/src/core/todockbar.h =================================================================== --- branches/tora3/src/core/todockbar.h 2013-07-30 02:58:14 UTC (rev 4682) +++ branches/tora3/src/core/todockbar.h 2013-07-30 16:04:15 UTC (rev 4683) @@ -52,7 +52,7 @@ class toDocklet; -class toDockbarButton : public toPushButton +class toDockbarButton : public toRotatingButton { Q_OBJECT; Modified: branches/tora3/src/core/tomain.cpp =================================================================== --- branches/tora3/src/core/tomain.cpp 2013-07-30 02:58:14 UTC (rev 4682) +++ branches/tora3/src/core/tomain.cpp 2013-07-30 16:04:15 UTC (rev 4683) @@ -58,6 +58,7 @@ #include "core/toconfiguration.h" #include "core/toglobalevent.h" #include "ts_log/toostream.h" +#include "editor/tohighlightedtexteditor.h" #include "icons/connect.xpm" #include "icons/disconnect.xpm" @@ -71,9 +72,9 @@ #include "icons/stop.xpm" #include "icons/refresh.xpm" -#include <QComboBox> -#include <QStatusBar> -#include <QMenuBar> +#include <QtGui/QComboBox> +#include <QtGui/QStatusBar> +#include <QtGui/QMenuBar> toMain::toMain() @@ -481,15 +482,15 @@ SelectionLabel->setText("Sel: Normal"); #endif + statusBar()->addPermanentWidget(&toHighlighterTypeButtonSingle::Instance()); + RowLabel = new QLabel(statusBar()); - statusBar()->addPermanentWidget(RowLabel, 0); + statusBar()->addPermanentWidget(RowLabel); RowLabel->setMinimumWidth(60); - // RowLabel->hide(); ColumnLabel = new QLabel(statusBar()); - statusBar()->addPermanentWidget(ColumnLabel, 0); + statusBar()->addPermanentWidget(ColumnLabel); ColumnLabel->setMinimumWidth(60); - // ColumnLabel->hide(); QToolButton *dispStatus = new toPopupButton(statusBar()); dispStatus->setIcon(QPixmap(const_cast<const char**>(up_xpm))); @@ -554,41 +555,6 @@ rightDockbar->restoreState(toConfigurationSingle::Instance().rightDockbarState()); } -//void toMain::windowActivated(QMdiSubWindow *widget) -//{ -// if(widget) -// LastActiveWindow = widget; -// -// if (!toConfigurationSingle::Instance().changeConnection()) -// return ; -// -// if (!widget) -// return; -// -// toToolWidget *tool = dynamic_cast<toToolWidget *>(widget->widget()); -// -// if (tool) -// { -// try -// { -// toConnection &conn = tool->connection(); -// int pos = 0; -// foreach(toConnection * i, Connections) -// { -// if (&conn == i) -// { -// ConnectionSelection->setCurrentIndex(pos); -// changeConnection(); -// break; -// } -// pos++; -// } -// } -// TOCATCH -// } -//} - - void toMain::showFileMenu(void) { bool hascon = (ConnectionSelection->count() > 0); Modified: branches/tora3/src/core/topushbutton.cpp =================================================================== --- branches/tora3/src/core/topushbutton.cpp 2013-07-30 02:58:14 UTC (rev 4682) +++ branches/tora3/src/core/topushbutton.cpp 2013-07-30 16:04:15 UTC (rev 4683) @@ -56,21 +56,21 @@ static const int VERTICAL_MASK = 0x02; -toPushButton::toPushButton(QWidget *parent) +toRotatingButton::toRotatingButton(QWidget *parent) : QPushButton(parent), rotate(NoRotation) { } -toPushButton::toPushButton(const QString &text, QWidget *parent) +toRotatingButton::toRotatingButton(const QString &text, QWidget *parent) : QPushButton(text, parent), rotate(NoRotation) { } -toPushButton::toPushButton(const QIcon &icon, +toRotatingButton::toRotatingButton(const QIcon &icon, const QString &text, QWidget *parent) : QPushButton(icon, text, parent), @@ -79,7 +79,7 @@ } -void toPushButton::setRotation(Rotation rotation) +void toRotatingButton::setRotation(Rotation rotation) { if(rotate != rotation) { @@ -107,7 +107,7 @@ } -QSize toPushButton::sizeHint() const +QSize toRotatingButton::sizeHint() const { QSize size = QPushButton::sizeHint(); if(rotate & VERTICAL_MASK) @@ -117,13 +117,13 @@ } -QSize toPushButton::minimumSizeHint() const +QSize toRotatingButton::minimumSizeHint() const { return sizeHint(); } -QStyleOptionButton toPushButton::getStyleOption() +QStyleOptionButton toRotatingButton::getStyleOption() { QStyleOptionButton option; QPushButton::initStyleOption(&option); @@ -139,7 +139,7 @@ } -void toPushButton::paintEvent(QPaintEvent *) +void toRotatingButton::paintEvent(QPaintEvent *) { updateGeometry(); @@ -190,3 +190,26 @@ setObjectName(name); } + +toToggleButton::toToggleButton(QMetaEnum const& e, QWidget *parent, const char* name) + : QPushButton(parent) + , m_enum(e) + , m_idx(0) +{ + if(m_enum.keyCount() == 0) + throw QString("ctor toToggleButton - empty enum provided: %1").arg(m_enum.name()); + + setObjectName(name); + setFlat(true); + setText(m_enum.key(m_idx)); + + connect(this, SIGNAL(released()), this, SLOT(toggle())); +} + +void toToggleButton::toggle() +{ + int idx = ++m_idx < m_enum.keyCount() ? m_idx : m_idx=0; + setText(m_enum.key(idx)); + emit toggled(text()); + emit toggled(m_enum.value(idx)); +} Modified: branches/tora3/src/core/topushbutton.h =================================================================== --- branches/tora3/src/core/topushbutton.h 2013-07-30 02:58:14 UTC (rev 4682) +++ branches/tora3/src/core/topushbutton.h 2013-07-30 16:04:15 UTC (rev 4683) @@ -44,13 +44,14 @@ -#include <QPushButton> -#include <QToolButton> +#include <QtGui/QPushButton> +#include <QtGui/QToolButton> +#include <QtCore/QMetaEnum> class QToolBar; // a button that can be rotated. -class toPushButton : public QPushButton +class toRotatingButton : public QPushButton { Q_OBJECT; @@ -63,10 +64,10 @@ CounterClockwise = 270 }; - explicit toPushButton(QWidget *parent = 0); - explicit toPushButton(const QString &text, + explicit toRotatingButton(QWidget *parent = 0); + explicit toRotatingButton(const QString &text, QWidget *parent = 0); - explicit toPushButton(const QIcon &icon, + explicit toRotatingButton(const QIcon &icon, const QString &text, QWidget *parent = 0); @@ -115,4 +116,31 @@ toPopupButton(QWidget *parent, const char *name = 0); }; +/** + * This toggle button changes it's label each time its clicked + * It uses enum values as circular list of string labels + * See toHighlighterTypeButton as an example + */ +class toToggleButton : public QPushButton +{ + Q_OBJECT; +public: + toToggleButton(QMetaEnum const& e, QWidget *parent, const char* name = 0); + + /** + * Change buttons value(does not emit the toggled signal) + */ + void setValue(int); + void setValue(QString const&); + +private slots: + void toggle(); +signals: + void toggled(QString const&); + void toggled(int); +private: + QMetaEnum m_enum; + int m_idx; +}; + #endif Modified: branches/tora3/src/core/tosyntaxsetup.h =================================================================== --- branches/tora3/src/core/tosyntaxsetup.h 2013-07-30 02:58:14 UTC (rev 4682) +++ branches/tora3/src/core/tosyntaxsetup.h 2013-07-30 16:04:15 UTC (rev 4683) @@ -79,12 +79,12 @@ virtual void selectResultFont(void); virtual void changeUpper(bool val) { - Example->setKeywordUpper(val); + //TODO Example->setKeywordUpper(val); Example->update(); } virtual void changeHighlight(bool val) { - Example->setSyntaxColoring(val); + //TODO Example->setSyntaxColoring(val); Example->update(); } void openEditorShortcutsDialog(); Modified: branches/tora3/src/core/utils.h =================================================================== --- branches/tora3/src/core/utils.h 2013-07-30 02:58:14 UTC (rev 4682) +++ branches/tora3/src/core/utils.h 2013-07-30 16:04:15 UTC (rev 4683) @@ -188,6 +188,11 @@ #define QTRANS(x,y) (qApp?qApp->translate(x,y):QString::fromLatin1(y)) +// Source http://blog.qt.digia.com/blog/2008/10/09/coding-tip-pretty-printing-enum-values/ +// This macro translates enum value into human readable string (if registered using Q_ENUMS) +// Usage: QString txt = QLatin1String(ENUM_VALUE(toHighlightedTextEditor, HighlighterTypeEnum , enumValue)); +#define ENUM_NAME(o,e,v) (o::staticMetaObject.enumerator(o::staticMetaObject.indexOfEnumerator(#e)).valueToKey((v))) + namespace Utils { Modified: branches/tora3/src/editor/tohighlightedtext.cpp =================================================================== --- branches/tora3/src/editor/tohighlightedtext.cpp 2013-07-30 02:58:14 UTC (rev 4682) +++ branches/tora3/src/editor/tohighlightedtext.cpp 2013-07-30 16:04:15 UTC (rev 4683) @@ -49,12 +49,12 @@ setObjectName(name); } -void toHighlightedText::setKeywordUpper(bool value) -{ - qobject_cast<toHighlightedTextEditor*>(m_editor)->setKeywordUpper(value); -} +//void toHighlightedText::setKeywordUpper(bool value) +//{ +// qobject_cast<toHighlightedTextEditor*>(m_editor)->setKeywordUpper(value); +//} -void toHighlightedText::setSyntaxColoring(bool value) -{ - qobject_cast<toHighlightedTextEditor*>(m_editor)->setSyntaxColoring(value); -} +//void toHighlightedText::setSyntaxColoring(bool value) +//{ +// qobject_cast<toHighlightedTextEditor*>(m_editor)->setSyntaxColoring(value); +//} Modified: branches/tora3/src/editor/tohighlightedtext.h =================================================================== --- branches/tora3/src/editor/tohighlightedtext.h 2013-07-30 02:58:14 UTC (rev 4682) +++ branches/tora3/src/editor/tohighlightedtext.h 2013-07-30 16:04:15 UTC (rev 4683) @@ -55,8 +55,8 @@ toHighlightedTextEditor* editor() { return qobject_cast<toHighlightedTextEditor*>(m_editor); } // QsciScintilla wrapper - void setKeywordUpper(bool value); - void setSyntaxColoring(bool value); + //void setKeywordUpper(bool value); + //void setSyntaxColoring(bool value); // TODO/FIXME: move it to base //void setAnalyzer(toSyntaxAnalyzer &analyzer) { qobject_cast<toHighlightedTextEditor*>(m_editor)->setAnalyzer(analyzer); } @@ -65,7 +65,7 @@ //void updateSyntaxColor(toSyntaxAnalyzer::infoType t) { qobject_cast<toHighlightedTextEditor*>(m_editor)->updateSyntaxColor(t); } - void setCurrent(int current) { qobject_cast<toHighlightedTextEditor*>(m_editor)->setCurrent(current); } + void setCurrent(int current) { qobject_cast<toHighlightedTextEditor*>(m_editor)->setCurrentDebugLine(current); } void tableAtCursor(QString &owner, QString &table, bool highlight = false) { qobject_cast<toHighlightedTextEditor*>(m_editor)->tableAtCursor(owner, table, highlight); } }; Modified: branches/tora3/src/editor/tohighlightedtexteditor.cpp =================================================================== --- branches/tora3/src/editor/tohighlightedtexteditor.cpp 2013-07-30 02:58:14 UTC (rev 4682) +++ branches/tora3/src/editor/tohighlightedtexteditor.cpp 2013-07-30 16:04:15 UTC (rev 4683) @@ -46,9 +46,9 @@ #include <QListWidget> -//#include <Qsci/qsciapis.h> -//#include <Qsci/qsciabstractapis.h> -//#include <Qsci/qscilexersql.h> +#include <Qsci/qsciapis.h> +#include <Qsci/qsciabstractapis.h> +#include <Qsci/qscilexersql.h> // Default SQL lexer // static QsciLexerSQL sqlLexer; @@ -163,7 +163,7 @@ // Setup QsciScintilla stuff QsciScintilla::setFolding(QsciScintilla::BoxedFoldStyle); // enable syntax colouring if "Syntax highlighting" is on in editor preferences - setSyntaxColoring(toConfigurationSingle::Instance().highlight()); + //setSyntaxColoring(toConfigurationSingle::Instance().highlight()); // set the font setFont(Utils::toStringToFont(toConfigurationSingle::Instance().codeFont())); @@ -202,8 +202,8 @@ connect(this, SIGNAL(cursorPositionChanged(int, int)), this, SLOT(setStatusMessage(void ))); complAPI = new QsciAPIs(lexer); connect (this, SIGNAL(cursorPositionChanged(int, int)), this, SLOT(positionChanged(int, int))); - timer = new QTimer(this); - connect( timer, SIGNAL(timeout()), this, SLOT(autoCompleteFromAPIs()) ); + complTimer = new QTimer(this); + connect( complTimer, SIGNAL(timeout()), this, SLOT(autoCompleteFromAPIs()) ); popup = new toComplPopup(this); popup->hide(); connect(popup->list(), @@ -261,12 +261,12 @@ { if (col > 0 && this->text(row)[col - 1] == '.') { - timer->start(500); + complTimer->start(500); } else { - if (timer->isActive()) - timer->stop(); + if (complTimer->isActive()) + complTimer->stop(); } // FIXME: disabled due repainting issues // current line marker (margin arrow) @@ -284,7 +284,7 @@ void toHighlightedTextEditor::autoCompleteFromAPIs() { - timer->stop(); // it's a must to prevent infinite reopening + complTimer->stop(); // it's a must to prevent infinite reopening QListWidget *list = popup->list(); QString partial; @@ -337,57 +337,57 @@ } } -bool toHighlightedTextEditor::invalidToken(int line, int col) -{ - bool ident = true; - if (line < 0) - { - line = 0; - col = 0; - } - while (line < lines()) - { - QString cl = text(line); - while (col < int(cl.length())) - { - QChar c = cl[col]; - if (!Utils::toIsIdent(c)) - ident = false; - if (!ident && !c.isSpace()) - return c == '.'; - col++; - } - line++; - col = 0; - } - return false; -} +//bool toHighlightedTextEditor::invalidToken(int line, int col) +//{ +// bool ident = true; +// if (line < 0) +// { +// line = 0; +// col = 0; +// } +// while (line < lines()) +// { +// QString cl = text(line); +// while (col < int(cl.length())) +// { +// QChar c = cl[col]; +// if (!Utils::toIsIdent(c)) +// ident = false; +// if (!ident && !c.isSpace()) +// return c == '.'; +// col++; +// } +// line++; +// col = 0; +// } +// return false; +//} /** * Sets the syntax colouring flag. */ -void toHighlightedTextEditor::setSyntaxColoring(bool val) -{ - syntaxColoring = val; - if (syntaxColoring) - { - QsciScintilla::setLexer(lexer); - // updateSyntaxColor(toSyntaxAnalyzer::Default); - // updateSyntaxColor(toSyntaxAnalyzer::Comment); - // updateSyntaxColor(toSyntaxAnalyzer::Number); - // updateSyntaxColor(toSyntaxAnalyzer::Keyword); - // updateSyntaxColor(toSyntaxAnalyzer::String); - // updateSyntaxColor(toSyntaxAnalyzer::DefaultBg); - // updateSyntaxColor(toSyntaxAnalyzer::CurrentLineMarker); +//void toHighlightedTextEditor::setSyntaxColoring(bool val) +//{ +// syntaxColoring = val; +// if (syntaxColoring) +// { +// QsciScintilla::setLexer(lexer); +// // updateSyntaxColor(toSyntaxAnalyzer::Default); +// // updateSyntaxColor(toSyntaxAnalyzer::Comment); +// // updateSyntaxColor(toSyntaxAnalyzer::Number); +// // updateSyntaxColor(toSyntaxAnalyzer::Keyword); +// // updateSyntaxColor(toSyntaxAnalyzer::String); +// // updateSyntaxColor(toSyntaxAnalyzer::DefaultBg); +// // updateSyntaxColor(toSyntaxAnalyzer::CurrentLineMarker); +// +// update(); +// } +// else +// { +// QsciScintilla::setLexer(NULL); +// } +//} - update(); - } - else - { - QsciScintilla::setLexer(NULL); - } -} - /** * Sets the syntax colours for given type */ @@ -462,16 +462,17 @@ * @param lexer to use, * 0 if no syntax colouring */ -//void toHighlightedTextEditor::setLexer(QsciLexer *lexer) -//{ -// if (lexer != 0) -// { -// this->lexer = lexer; -// } -// lexer->setColor(DefaultAnalyzer.getColor(toSyntaxAnalyzer::Default), -1); -// // refresh scintilla lexer -// setSyntaxColoring(syntaxColoring); -//} +void toHighlightedTextEditor::setLexer(QsciLexer *lexer) +{ + if (lexer != 0) + { + this->lexer = lexer; + } + //lexer->setColor(DefaultAnalyzer.getColor(toSyntaxAnalyzer::Default), -1); + // refresh scintilla lexer + //setSyntaxColoring(syntaxColoring); + QsciScintilla::setLexer(lexer); +} void toHighlightedTextEditor::setFont (const QFont & font) { @@ -498,7 +499,7 @@ } } -void toHighlightedTextEditor::setCurrent(int current) +void toHighlightedTextEditor::setCurrentDebugLine(int current) { setCursorPosition (current, 0); markerDeleteAll(m_debugHandle); @@ -901,3 +902,19 @@ this->completeWithText(item->text()); popup->hide(); } + +toHighlighterTypeButton::toHighlighterTypeButton(QWidget *parent, const char *name) + : toToggleButton(toHighlightedTextEditor::staticMetaObject.enumerator(toHighlightedTextEditor::staticMetaObject.indexOfEnumerator("HighlighterTypeEnum")) + , parent + , name + ) +{ +} + +toHighlighterTypeButton::toHighlighterTypeButton() + : toToggleButton(toHighlightedTextEditor::staticMetaObject.enumerator(toHighlightedTextEditor::staticMetaObject.indexOfEnumerator("HighlighterTypeEnum")) + , NULL + ) +{ +} + Modified: branches/tora3/src/editor/tohighlightedtexteditor.h =================================================================== --- branches/tora3/src/editor/tohighlightedtexteditor.h 2013-07-30 02:58:14 UTC (rev 4682) +++ branches/tora3/src/editor/tohighlightedtexteditor.h 2013-07-30 16:04:15 UTC (rev 4683) @@ -43,13 +43,10 @@ #define TOHIGHLIGHTEDTEXTEDITOR_H #include "editor/tomarkedtext.h" -//#include "core/tosyntaxanalyzer.h" +//#include "parsing/tosyntaxanalyzer.h" +#include "core/topushbutton.h" #include "ts_log/ts_log_utils.h" -#include <Qsci/qscilexer.h> -#include <Qsci/qscilexersql.h> -#include <Qsci/qsciapis.h> - #include <QString> #include <QKeyEvent> #include <QTimer> @@ -59,18 +56,12 @@ class QListWidget; class QListWidgetItem; class QPainter; -class toSyntaxSetup; class toHighlightedTextEditor; class toComplPopup : public QWidget { Q_OBJECT; - -private: - toHighlightedTextEditor *Editor; - QListWidget *List; - public: toComplPopup(toHighlightedTextEditor* high); virtual ~toComplPopup(); @@ -85,7 +76,12 @@ protected: virtual void keyPressEvent(QKeyEvent * e); + +private: + toHighlightedTextEditor *Editor; + QListWidget *List; }; + /** * A simple editor which supports syntax highlighting. * @@ -94,57 +90,20 @@ * toHighlightedTextEditor. The rest of the API comes unchanged from toMarkedText * which is now derived from QScintilla. */ - class toHighlightedTextEditor : public toMarkedTextEditor { -private: Q_OBJECT; - - // Associated lexer (may be not used) - QsciLexer *lexer; // NOTE: this should be used in instead of toSyntaxAnalyzer - bool syntaxColoring; - /** Map of rows with errors and their error message. - */ - QMap<int, QString> Errors; - QsciAPIs* complAPI; - QTimer* timer; - - /*! List of default keywords/functions/whatever to use in - the code completion when the SQL parser doesn't find any - table/view structure to use. - See getCompletionList() */ - QStringList defaultCompletion; - -protected: - //! \brief A handler for debug - line highlighted - int m_debugHandle; - //! \brief A handler for debug - margin - int m_debugMarginHandle; - //! \brief A handler for code error - line highlighted - int m_errorHandle; - //! \brief A handler for code error - margin - int m_errorMarginHandle; - //! \brief A handler for current line highlighting - margin -// FIXME: disabled due repainting issues -// int m_currentLineMarginHandle; - //! \brief A handler for bookrmarks - line highlighted - int m_bookmarkHandle; - //! \brief A handler for bookrmarks - margin - int m_bookmarkMarginHandle; - //! \brief Bookrmarks handler list used for navigation (next/prev) - QList<int> m_bookmarks; - //! \brief A handler for static check observations - line highlighted - int m_staticHandle; - //! \brief A handler for static check observations - margin - int m_staticMarginHandle; - - toComplPopup* popup; - - virtual void keyPressEvent(QKeyEvent * e); - + Q_ENUMS(HighlighterTypeEnum); public: friend class toComplPopup; + enum HighlighterTypeEnum { + None, + Oracle, + Mysql, + Qt + }; + /** Create a new editor. * @param parent Parent of widget. * @param name Name of widget. @@ -161,21 +120,10 @@ */ virtual void openFilename(const QString &file); - /** - * Set the lexer to use. - * @param lexer to use, - * 0 if no syntax colouring - */ - //void setLexer(QsciLexer *lexer); + void setHighlighter(HighlighterTypeEnum lexer); + HighlighterTypeEnum getHighlighter(void); - /** - * Get the current lexer. - * @return lexer used or 0 if no syntax colouring. - */ - QsciLexer * getLexer(void) - { - return lexer; - } + void setLexer(QsciLexer *lexer); /** * Overriden to set font for lexer as well. @@ -183,26 +131,13 @@ */ void setFont (const QFont & font); -public: // ------------------ API used by TOra classes ---------------------- // NOTE: currently all stubs - /** Convert a linenumber after a change of the buffer to another linenumber. Can be - * used to convert a specific linenumber after receiving a @ref insertedLines call. - * @param line Line number. - * @param start Start of change. - * @param diff Lines added or removed. - * @return New linenumber or -1 if line doesn't exist anymore. - */ - static int convertLine(int line, int start, int diff) - { - return line; - } - /** Set current debug line. Will be indicated with a different background. Used from debug tool. * @param current Current line. */ - void setCurrent(int current); + void setCurrentDebugLine(int current); /** Returns true if the editor has any errors. */ @@ -223,12 +158,12 @@ * * @param val New value of keyword to upper flag. */ - void setKeywordUpper(bool val) {} + //void setKeywordUpper(bool val) {} /** * Sets the syntax colouring flag. */ - void setSyntaxColoring(bool val); + //void setSyntaxColoring(bool val); /** Get the tablename currently under the cursor. * @param owner Filled with owner or table or QString::null if no owner specified. @@ -238,25 +173,6 @@ void tableAtCursor(QString &owner, QString &table, bool highlight = false); //void updateSyntaxColor(toSyntaxAnalyzer::infoType t); - -protected: - /*! \brief Guess what should be used for code completion - in this time. - When SQL parser can decide the editor is in FOO.bar state - it will suggest "bar" related columns etc. - When SQL parser couldn't find any suggestion it will list - keywords/functions from templates/completion.api list. - \param partial a QString reference with starting char sequence - */ - QStringList getCompletionList(QString &partial); - - void completeWithText(QString itemText); - -private: - bool invalidToken(int line, int col); - - // ------------------ END OF API used by TOra classes ---------------------- - public slots: /** Go to next error. */ @@ -277,6 +193,78 @@ private slots: void setStatusMessage(void); + +private: + // Associated lexer (may be not used) + QsciLexer *lexer; // NOTE: this should be used in instead of toSyntaxAnalyzer + bool syntaxColoring; + /** Map of rows with errors and their error message. + */ + QMap<int, QString> Errors; + + /*! List of default keywords/functions/whatever to use in + the code completion when the SQL parser doesn't find any + table/view structure to use. + See getCompletionList() */ + QStringList defaultCompletion; + QsciAPIs* complAPI; // TODO this variable is never used + QTimer* complTimer; + +protected: + //! \brief A handler for debug - line highlighted + int m_debugHandle; + //! \brief A handler for debug - margin + int m_debugMarginHandle; + //! \brief A handler for code error - line highlighted + int m_errorHandle; + //! \brief A handler for code error - margin + int m_errorMarginHandle; + //! \brief A handler for current line highlighting - margin + // FIXME: disabled due repainting issues + // int m_currentLineMarginHandle; + //! \brief A handler for bookrmarks - line highlighted + int m_bookmarkHandle; + //! \brief A handler for bookrmarks - margin + int m_bookmarkMarginHandle; + //! \brief Bookrmarks handler list used for navigation (next/prev) + QList<int> m_bookmarks; + //! \brief A handler for static check observations - line highlighted + int m_staticHandle; + //! \brief A handler for static check observations - margin + int m_staticMarginHandle; + + toComplPopup* popup; + + /*! \brief Override QScintilla event handler to display code completion popup */ + virtual void keyPressEvent(QKeyEvent * e); + + /*! \brief Guess what should be used for code completion + in this time. + When SQL parser can decide the editor is in FOO.bar state + it will suggest "bar" related columns etc. + When SQL parser couldn't find any suggestion it will list + keywords/functions from templates/completion.api list. + \param partial a QString reference with starting char sequence + */ + QStringList getCompletionList(QString &partial); + + void completeWithText(QString itemText); }; +Q_DECLARE_METATYPE(toHighlightedTextEditor::HighlighterTypeEnum) + +/** + * Subclass toToggleButton and iterate over values of HighlighterTypeEnum + */ +class toHighlighterTypeButton : public toToggleButton +{ + Q_OBJECT; +public: + toHighlighterTypeButton(QWidget *parent, const char *name = 0); + toHighlighterTypeButton(); +}; + +// this one will be usually parented by QStatusBar +typedef Loki::SingletonHolder<toHighlighterTypeButton> toHighlighterTypeButtonSingle; + #endif Modified: branches/tora3/src/parsing/tosyntaxanalyzer.cpp =================================================================== --- branches/tora3/src/parsing/tosyntaxanalyzer.cpp 2013-07-30 02:58:14 UTC (rev 4682) +++ branches/tora3/src/parsing/tosyntaxanalyzer.cpp 2013-07-30 16:04:15 UTC (rev 4683) @@ -144,10 +144,13 @@ //QString qs = editor->convertTextS2Q(buf); delete[] buf; + toSyntaxAnalyzer::statementList retval; + return retval; } toSyntaxAnalyzer::statement toSyntaxAnalyzerOracle::getStatementAt(unsigned line, unsigned linePos) { - + toSyntaxAnalyzer::statement retval; + return retval; } Modified: branches/tora3/src/parsing/tosyntaxanalyzer.h =================================================================== --- branches/tora3/src/parsing/tosyntaxanalyzer.h 2013-07-30 02:58:14 UTC (rev 4682) +++ branches/tora3/src/parsing/tosyntaxanalyzer.h 2013-07-30 16:04:15 UTC (rev 4683) @@ -49,6 +49,7 @@ class toSyntaxAnalyzer : public QObject { Q_OBJECT; + Q_ENUMS(statementClass); friend class toHighlightedTextEditor; public: /** Indicates type of statement - DDL/DML or PLSQL block Modified: branches/tora3/src/parsing/tsqllexer.h =================================================================== --- branches/tora3/src/parsing/tsqllexer.h 2013-07-30 02:58:14 UTC (rev 4682) +++ branches/tora3/src/parsing/tsqllexer.h 2013-07-30 16:04:15 UTC (rev 4683) @@ -47,7 +47,7 @@ class TORA_EXPORT Token : public QObject // inherit from QObject for QPointer { Q_OBJECT; - + Q_ENUMS(TokenType); public: enum TokenType This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |