From: <ibr...@us...> - 2013-09-02 21:23:41
|
Revision: 4809 http://sourceforge.net/p/tora/code/4809 Author: ibre5041 Date: 2013-09-02 21:23:33 +0000 (Mon, 02 Sep 2013) Log Message: ----------- syntax color setup Modified Paths: -------------- trunk/tora/src/core/toconf.h trunk/tora/src/core/tomain.cpp trunk/tora/src/core/tosyntaxsetup.cpp trunk/tora/src/core/tosyntaxsetup.h trunk/tora/src/core/totool.cpp trunk/tora/src/parsing/tosyntaxanalyzer.cpp trunk/tora/src/parsing/tosyntaxanalyzer.h Modified: trunk/tora/src/core/toconf.h =================================================================== --- trunk/tora/src/core/toconf.h 2013-08-30 10:26:50 UTC (rev 4808) +++ trunk/tora/src/core/toconf.h 2013-09-02 21:23:33 UTC (rev 4809) @@ -69,7 +69,6 @@ #define DEFAULT_KEYWORD_UPPER false #define CONF_OBJECT_NAMES_UPPER "ObjectNamesUpper" #define DEFAULT_OBJECT_NAMES_UPPER false -#define CONF_COLOR "KeywordColor" #define CONF_CACHE_DIR "CacheDir" #define CONF_CACHE_DISK "CacheDiskUse" #define DEFAULT_CACHE_DISK true Modified: trunk/tora/src/core/tomain.cpp =================================================================== --- trunk/tora/src/core/tomain.cpp 2013-08-30 10:26:50 UTC (rev 4808) +++ trunk/tora/src/core/tomain.cpp 2013-09-02 21:23:33 UTC (rev 4809) @@ -1013,20 +1013,10 @@ if (!pTool) continue; -#ifdef TO_NO_ORACLE - // hide icon if tool doesn't support connection. this is to - // hide all of the oracle tools that don't make sense if - // compiled without it. - if(conn) - pTool->setActionVisible(*conn); - else - pTool->setActionVisible(false); -#else if (!enabled) pTool->enableAction(false); else pTool->enableAction(conn); -#endif } } catch(QString const& e) { TLOG(1, toDecorator, __HERE__) << " Ignored exception." << e << std::endl; Modified: trunk/tora/src/core/tosyntaxsetup.cpp =================================================================== --- trunk/tora/src/core/tosyntaxsetup.cpp 2013-08-30 10:26:50 UTC (rev 4808) +++ trunk/tora/src/core/tosyntaxsetup.cpp 2013-09-02 21:23:33 UTC (rev 4809) @@ -44,20 +44,25 @@ #include "core/totreewidget.h" #include "core/toconfiguration.h" #include "core/utils.h" +#include "parsing/tosyntaxanalyzer.h" +#include "editor/todebugtext.h" +#include <QtCore/QMetaEnum> #include <QtGui/QFontDialog> #include <QtGui/QColorDialog> toSyntaxSetup::toSyntaxSetup(QWidget *parent, const char *name, Qt::WFlags fl) : QWidget(parent) , toSettingTab("fonts.html") - //, Analyzer(toSyntaxAnalyzer::defaultAnalyzer()) { if (name) setObjectName(name); setupUi(this); + + Analyzer = new toSyntaxAnalyzerNL(Example->editor()); + KeywordUpper->setChecked(toConfigurationSingle::Instance().keywordUpper()); ObjectNamesUpper->setChecked(toConfigurationSingle::Instance().objectNamesUpper()); // TODO SyntaxHighlighting->setChecked(toConfigurationSingle::Instance().highlightType()); @@ -86,7 +91,7 @@ QFont font; if (str.isEmpty()) { - QWidget *wid = new toTreeWidget; + QWidget *wid = new toTreeWidget(this); font = qApp->font(wid); } else @@ -97,38 +102,16 @@ ResultExample->setFont(font); } - try + QMetaEnum const& e = toSyntaxAnalyzer::staticMetaObject.enumerator(toSyntaxAnalyzer::staticMetaObject.indexOfEnumerator("wordClass")); + for (int idx = 0; idx < e.keyCount(); idx++) { - //#define INIT_COL(c) { \ - // Colors[Analyzer.typeString(c)] = Analyzer.getColor(c); \ - // SyntaxComponent->addItem(tr(Analyzer.typeString(c).toAscii().constData())); \ - // } - // - // INIT_COL(toSyntaxAnalyzer::Default); - // INIT_COL(toSyntaxAnalyzer::Comment); - // INIT_COL(toSyntaxAnalyzer::Number); - // INIT_COL(toSyntaxAnalyzer::Keyword); - // INIT_COL(toSyntaxAnalyzer::String); - // INIT_COL(toSyntaxAnalyzer::DefaultBg); - // INIT_COL(toSyntaxAnalyzer::ErrorBg); - // INIT_COL(toSyntaxAnalyzer::DebugBg); - // INIT_COL(toSyntaxAnalyzer::CurrentLineMarker); - // INIT_COL(toSyntaxAnalyzer::StaticBg); + QString colorName = e.key(idx); + //Colors[colorName] = Analyzer->getColor((toSyntaxAnalyzer::wordClass)e.value(idx)); + SyntaxComponent->addItem(colorName); } - TOCATCH; - // - // Example->setAnalyzer(Analyzer); + // Example->setAnalyzer(Analyzer); Example->setReadOnly(true); -#ifdef TO_NO_ORACLE - Example->setText(QString::fromLatin1("create procedure CheckObvious\n" - "begin\n" - " set Quest = 'Great'; -- This variable doesn't exist\n" - " if Quest = 'Great' then\n" - " call Obvious(true);\n" - " end if;\n" - "end")); -#else Example->setText(QString::fromLatin1("create procedure CheckObvious as\n" "begin\n" " Quest:='Great'; -- This variable doesn't exist\n" @@ -140,7 +123,6 @@ " * multi line comment\n" " */\n" "end;")); -#endif Example->setCurrentDebugLine(4); QMap<int, QString> Errors; @@ -150,23 +132,24 @@ Current = NULL; } -// void toSyntaxAnalyzer::readColor(const QColor &def, infoType typ) { -// QString conf(CONF_COLOR ":"); -// conf += typeString(typ); -// QString res = toConfigurationSingle::Instance().globalConfig(conf, ""); +//void toSyntaxAnalyzer::readColor(const QColor &def, infoType typ) +//{ +//#define CONF_COLOR "KeywordColor" +// QString conf(CONF_COLOR ":"); +// conf += typeString(typ); +// QString res = toConfigurationSingle::Instance().globalConfig(conf, ""); // -// if (res.isEmpty()) -// Colors[typ] = def; -// else { -// int r, g, b; -// if (sscanf(res.toAscii().constData(), "%d,%d,%d", &r, &g, &b) != 3) -// throw qApp->translate("toSyntaxAnalyzer", "Wrong format of color in setings"); -// QColor col(r, g, b); -// Colors[typ] = col; -// } -// } +// if (res.isEmpty()) +// Colors[typ] = def; +// else { +// int r, g, b; +// if (sscanf(res.toAscii().constData(), "%d,%d,%d", &r, &g, &b) != 3) +// throw qApp->translate("toSyntaxAnalyzer", "Wrong format of color in setings"); +// QColor col(r, g, b); +// Colors[typ] = col; +// } +//} - void toSyntaxSetup::checkFixedWidth(const QFont &fnt) { QFontMetrics mtr(fnt); @@ -256,8 +239,8 @@ palette.setColor(QPalette::Background, col); ExampleColor->setPalette(palette); - // Example->analyzer().Colors[toSyntaxAnalyzer::typeString(coleng)] = col; - // Example->updateSyntaxColor(toSyntaxAnalyzer::typeString(coleng)); + // Example->analyzer().Colors[toSyntaxAnalyzer::typeString(coleng)] = col; + // Example->updateSyntaxColor(toSyntaxAnalyzer::typeString(coleng)); Example->update(); } } @@ -282,8 +265,9 @@ toConfigurationSingle::Instance().setAutoIndent(AutoIndent->isChecked()); toConfigurationSingle::Instance().setTabStop(TabStop->value()); toConfigurationSingle::Instance().setTabSpaces(TabSpaces->isChecked()); -// for (std::map<QString, QColor>::iterator i = Colors.begin();i != Colors.end();i++) { -// QString str(CONF_COLOR); + for (std::map<QString, QColor>::iterator i = Colors.begin(); i != Colors.end(); i++) + { +// QString str(CONF_COLOR); // str += ":"; // str += (*i).first; // QString res; @@ -292,19 +276,19 @@ // (*i).second.green(), // (*i).second.blue()); // toConfigurationSingle::Instance().globalSetConfig(str, res); -// } + } - // #define C2T(c) (Colors[Analyzer.typeString((c))]) - // toConfigurationSingle::Instance().setSyntaxDefault(C2T(toSyntaxAnalyzer::Default)); - // toConfigurationSingle::Instance().setSyntaxComment(C2T(toSyntaxAnalyzer::Comment)); - // toConfigurationSingle::Instance().setSyntaxNumber(C2T(toSyntaxAnalyzer::Number)); - // toConfigurationSingle::Instance().setSyntaxKeyword(C2T(toSyntaxAnalyzer::Keyword)); - // toConfigurationSingle::Instance().setSyntaxString(C2T(toSyntaxAnalyzer::String)); - // toConfigurationSingle::Instance().setSyntaxDefaultBg(C2T(toSyntaxAnalyzer::DefaultBg)); - // toConfigurationSingle::Instance().setSyntaxDebugBg(C2T(toSyntaxAnalyzer::DebugBg)); - // toConfigurationSingle::Instance().setSyntaxErrorBg(C2T(toSyntaxAnalyzer::ErrorBg)); - // toConfigurationSingle::Instance().setSyntaxCurrentLineMarker(C2T(toSyntaxAnalyzer::CurrentLineMarker)); - // toConfigurationSingle::Instance().setSyntaxStaticBg(C2T(toSyntaxAnalyzer::StaticBg)); +//#define C2T(c) (Colors[Analyzer.typeString((c))]) +// toConfigurationSingle::Instance().setSyntaxDefault(C2T(toSyntaxAnalyzer::Default)); +// toConfigurationSingle::Instance().setSyntaxComment(C2T(toSyntaxAnalyzer::Comment)); +// toConfigurationSingle::Instance().setSyntaxNumber(C2T(toSyntaxAnalyzer::Number)); +// toConfigurationSingle::Instance().setSyntaxKeyword(C2T(toSyntaxAnalyzer::Keyword)); +// toConfigurationSingle::Instance().setSyntaxString(C2T(toSyntaxAnalyzer::String)); +// toConfigurationSingle::Instance().setSyntaxDefaultBg(C2T(toSyntaxAnalyzer::DefaultBg)); +// toConfigurationSingle::Instance().setSyntaxDebugBg(C2T(toSyntaxAnalyzer::DebugBg)); +// toConfigurationSingle::Instance().setSyntaxErrorBg(C2T(toSyntaxAnalyzer::ErrorBg)); +// toConfigurationSingle::Instance().setSyntaxCurrentLineMarker(C2T(toSyntaxAnalyzer::CurrentLineMarker)); +// toConfigurationSingle::Instance().setSyntaxStaticBg(C2T(toSyntaxAnalyzer::StaticBg)); // // toSyntaxAnalyzer::defaultAnalyzer().updateSettings(); toConfigurationSingle::Instance().setExtensions(Extensions->text()); Modified: trunk/tora/src/core/tosyntaxsetup.h =================================================================== --- trunk/tora/src/core/tosyntaxsetup.h 2013-08-30 10:26:50 UTC (rev 4808) +++ trunk/tora/src/core/tosyntaxsetup.h 2013-09-02 21:23:33 UTC (rev 4809) @@ -52,6 +52,7 @@ class QFont; class QListWidgetItem; +class toSyntaxAnalyzer; class toSyntaxSetup : public QWidget , public Ui::toSyntaxSetupUI @@ -63,13 +64,13 @@ QString List; QListWidgetItem *Current; std::map<QString, QColor> Colors; - //toSyntaxAnalyzer Analyzer; + toSyntaxAnalyzer* Analyzer; QString color(); + void checkFixedWidth(const QFont &fnt); public: toSyntaxSetup(QWidget *parent = 0, const char *name = 0, Qt::WFlags fl = 0); virtual void saveSetting(void); - void checkFixedWidth(const QFont &fnt); public slots: virtual void changeLine(QListWidgetItem *); Modified: trunk/tora/src/core/totool.cpp =================================================================== --- trunk/tora/src/core/totool.cpp 2013-08-30 10:26:50 UTC (rev 4808) +++ trunk/tora/src/core/totool.cpp 2013-09-02 21:23:33 UTC (rev 4809) @@ -438,9 +438,7 @@ int priority = pTool->priority(); if (priority / 100 != lastPriorityPix / 100 && pixmap) { -#ifndef TO_NO_ORACLE toolbar->addSeparator(); -#endif lastPriorityPix = priority; } @@ -481,9 +479,7 @@ int priority = pTool->priority(); if (priority / 100 != lastPriorityMenu / 100 && menuName) { -#ifndef TO_NO_ORACLE menu->addSeparator(); -#endif lastPriorityMenu = priority; } Modified: trunk/tora/src/parsing/tosyntaxanalyzer.cpp =================================================================== --- trunk/tora/src/parsing/tosyntaxanalyzer.cpp 2013-08-30 10:26:50 UTC (rev 4808) +++ trunk/tora/src/parsing/tosyntaxanalyzer.cpp 2013-09-02 21:23:33 UTC (rev 4809) @@ -80,8 +80,26 @@ toSyntaxAnalyzer::toSyntaxAnalyzer(toHighlightedText *parent) : QObject(parent) -{} +{ +// Colors[Default] = toConfigurationSingle::Instance().syntaxDefault(); +// Colors[Comment] = toConfigurationSingle::Instance().syntaxComment(); +// Colors[Number] = toConfigurationSingle::Instance().syntaxNumber(); +// Colors[Keyword] = toConfigurationSingle::Instance().syntaxKeyword(); +// Colors[String] = toConfigurationSingle::Instance().syntaxString(); +// Colors[DefaultBg] = toConfigurationSingle::Instance().syntaxDefaultBg(); +// Colors[ErrorBg] = toConfigurationSingle::Instance().syntaxErrorBg(); +// Colors[DebugBg] = toConfigurationSingle::Instance().syntaxDebugBg(); +// Colors[CurrentLineMarker] = toConfigurationSingle::Instance().syntaxCurrentLineMarker(); +// Colors[StaticBg] = toConfigurationSingle::Instance().syntaxStaticBg(); +} +QColor toSyntaxAnalyzer::getColor(toSyntaxAnalyzer::wordClass type) const +{ + if (Colors.contains(type)) + return Colors[type]; + throw QString("Unknown color reference: %1").arg(type); +} + toSyntaxAnalyzer::~toSyntaxAnalyzer() { } Modified: trunk/tora/src/parsing/tosyntaxanalyzer.h =================================================================== --- trunk/tora/src/parsing/tosyntaxanalyzer.h 2013-08-30 10:26:50 UTC (rev 4808) +++ trunk/tora/src/parsing/tosyntaxanalyzer.h 2013-09-02 21:23:33 UTC (rev 4809) @@ -43,7 +43,10 @@ #define TOSYNTAX_ANALYZER_H #include <QtCore/QObject> +#include <QtGui/QColor> +#include <Qsci/qscilexersql.h> + class toHighlightedText; class QsciLexer; @@ -55,6 +58,7 @@ { Q_OBJECT; Q_ENUMS(statementClass); + Q_ENUMS(wordClass); friend class toHighlightedText; public: /** Indicates type of statement - DDL/DML or PLSQL block @@ -72,6 +76,77 @@ SQLPLUS // sqlplus command }; + //! This enum defines the meanings of the different styles used by the + //! SQL lexer. This enum is copied from QsciLexerSQL + enum wordClass { + //! The default. - not used at all - or used for whitespace only + Default = QsciLexerSQL::Default, + + //! A comment. + Comment = QsciLexerSQL::Comment, + + //! A line comment. + ////CommentLine = 2, - not used, see Comment + + //! A JavaDoc/Doxygen style comment. + ////CommentDoc = 3, - not used, see Comment + + //! A number. + Number = QsciLexerSQL::Number, + + //! A keyword. + Keyword = QsciLexerSQL::Keyword, + + //! A double-quoted string. + DoubleQuotedString = 6, + + //! A single-quoted string. + SingleQuotedString = QsciLexerSQL::SingleQuotedString, + + //! An SQL*Plus keyword. + PlusKeyword = 8, + + //! An SQL*Plus prompt. + PlusPrompt = 9, + + //! An operator. + Operator = QsciLexerSQL::Operator, + + //! An identifier + Identifier = QsciLexerSQL::Identifier, + + //! An SQL*Plus comment. + ////PlusComment = 13, - not used, see Comment + + //! A '#' line comment. + ////CommentLineHash = 15, - not used, see Comment + + //! A JavaDoc/Doxygen keyword. - not used, see Comment + ////CommentDocKeyword = 17, + + //! A JavaDoc/Doxygen keyword error. - not used, see Comment + ////CommentDocKeywordError = 18, + + //! A keyword defined in keyword set number 5. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + KeywordSet5 = 19, + + //! A keyword defined in keyword set number 6. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + ////KeywordSet6 = 20, + + //! A keyword defined in keyword set number 7. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + ////KeywordSet7 = 21, + + //! A keyword defined in keyword set number 8. The class must be + //! sub-classed and re-implement keywords() to make use of this style. + ////KeywordSet8 = 22, + + //! A quoted identifier. + QuotedIdentifier = 23 + }; + /* statements is represented only by lines range */ class statement { @@ -90,6 +165,8 @@ toSyntaxAnalyzer(toHighlightedText *parent); virtual ~toSyntaxAnalyzer(); + QColor getColor(wordClass type) const; + /* * this method should be "stateless" can be called from "both" threads */ @@ -100,6 +177,11 @@ virtual QsciLexer* createLexer(QObject *parent = 0) = 0; virtual void sanitizeStatement(statement&) = 0; +private: + /** Colors allocated for the different @ref wordClass values. + */ + QMap<wordClass, QColor> Colors; + }; /* This "analyzer" uses an empty line as statement delimiter */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |