GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — sqlitebrowser/src/sqltextedit.cpp at master · feng2010java/sqlitebrowser Expand file tree/ Copy pathsqltextedit.cppMore file actions 144 lines (118 loc) · 5.28 KB / Copy pathsqltextedit.cppFile metadata and controls144 lines (118 loc) · 5.28 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 #include "sqltextedit.h" #include "PreferencesDialog.h" #include "SqlUiLexer.h" #include <QFile> #include <QDropEvent> #include <QUrl> #include <QMimeData> #include <cmath> SqlUiLexer* SqlTextEdit::sqlLexer = 0; SqlTextEdit::SqlTextEdit(QWidget* parent) : QsciScintilla(parent) { // Create lexer object if not done yet if(sqlLexer == 0) sqlLexer = new SqlUiLexer(this); // Set the lexer setLexer(sqlLexer); // Enable auto completion setAutoCompletionThreshold(3); setAutoCompletionCaseSensitivity(false); setAutoCompletionShowSingle(true); setAutoCompletionSource(QsciScintilla::AcsAPIs); // Set icons for auto completion registerImage(SqlUiLexer::ApiCompleterIconIdKeyword, QImage(":/icons/keyword")); registerImage(SqlUiLexer::ApiCompleterIconIdFunction, QImage(":/icons/function")); registerImage(SqlUiLexer::ApiCompleterIconIdTable, QImage(":/icons/table")); registerImage(SqlUiLexer::ApiCompleterIconIdColumn, QImage(":/icons/field")); // Enable UTF8 setUtf8(true); // Enable brace matching setBraceMatching(QsciScintilla::SloppyBraceMatch); // Enable auto indentation setAutoIndent(true); // Enable folding setFolding(QsciScintilla::BoxedTreeFoldStyle); // Create error indicator errorIndicatorNumber = indicatorDefine(QsciScintilla::SquiggleIndicator); setIndicatorForegroundColor(Qt::red, errorIndicatorNumber); // Do rest of initialisation reloadSettings(); } SqlTextEdit::~SqlTextEdit() { } void SqlTextEdit::updateLineNumberAreaWidth() { // Calculate number of digits of the current number of lines int digits = std::floor(std::log10(lines())) + 1; // Calculate the width of this number if it was all zeros (this is because a 1 might require less space than a 0 and this could // cause some flickering depending on the font) and set the new margin width. QFont font = lexer()->defaultFont(QsciLexerSQL::Default); setMarginWidth(0, QFontMetrics(font).width(QString("0").repeated(digits)) + 5); } void SqlTextEdit::dropEvent(QDropEvent* e) { QList<QUrl> urls = e->mimeData()->urls(); if(urls.isEmpty()) return QsciScintilla::dropEvent(e); QString file = urls.first().toLocalFile(); if(!QFile::exists(file)) return; QFile f(file); f.open(QIODevice::ReadOnly); setText(f.readAll()); f.close(); } void SqlTextEdit::setupSyntaxHighlightingFormat(const QString& settings_name, int style) { sqlLexer->setColor(QColor(PreferencesDialog::getSettingsValue("syntaxhighlighter", settings_name + "_colour").toString()), style); QFont font(PreferencesDialog::getSettingsValue("editor", "font").toString()); font.setPointSize(PreferencesDialog::getSettingsValue("editor", "fontsize").toInt()); font.setBold(PreferencesDialog::getSettingsValue("syntaxhighlighter", settings_name + "_bold").toBool()); font.setItalic(PreferencesDialog::getSettingsValue("syntaxhighlighter", settings_name + "_italic").toBool()); font.setUnderline(PreferencesDialog::getSettingsValue("syntaxhighlighter", settings_name + "_underline").toBool()); sqlLexer->setFont(font, style); } void SqlTextEdit::reloadKeywords() { // Set lexer again to reload the updated keywords list setLexer(lexer()); } void SqlTextEdit::reloadSettings() { // Set syntax highlighting settings sqlLexer->setDefaultColor(Qt::black); QFont defaultfont(PreferencesDialog::getSettingsValue("editor", "font").toString()); defaultfont.setStyleHint(QFont::TypeWriter); defaultfont.setPointSize(PreferencesDialog::getSettingsValue("editor", "fontsize").toInt()); sqlLexer->setDefaultFont(defaultfont); setupSyntaxHighlightingFormat("comment", QsciLexerSQL::Comment); setupSyntaxHighlightingFormat("comment", QsciLexerSQL::CommentLine); setupSyntaxHighlightingFormat("comment", QsciLexerSQL::CommentDoc); setupSyntaxHighlightingFormat("keyword", QsciLexerSQL::Keyword); setupSyntaxHighlightingFormat("table", QsciLexerSQL::KeywordSet6); setupSyntaxHighlightingFormat("function", QsciLexerSQL::KeywordSet7); setupSyntaxHighlightingFormat("string", QsciLexerSQL::DoubleQuotedString); setupSyntaxHighlightingFormat("string", QsciLexerSQL::SingleQuotedString); setupSyntaxHighlightingFormat("identifier", QsciLexerSQL::Identifier); setupSyntaxHighlightingFormat("identifier", QsciLexerSQL::QuotedIdentifier); // Set font QFont font(PreferencesDialog::getSettingsValue("editor", "font").toString()); font.setStyleHint(QFont::TypeWriter); font.setPointSize(PreferencesDialog::getSettingsValue("editor", "fontsize").toInt()); setFont(font); // Show line numbers QFont marginsfont(QFont(PreferencesDialog::getSettingsValue("editor", "font").toString())); marginsfont.setPointSize(font.pointSize()); setMarginsFont(marginsfont); setMarginLineNumbers(0, true); setMarginsBackgroundColor(Qt::lightGray); connect(this, SIGNAL(linesChanged()), this, SLOT(updateLineNumberAreaWidth())); updateLineNumberAreaWidth(); // Highlight current line setCaretLineVisible(true); setCaretLineBackgroundColor(QColor(PreferencesDialog::getSettingsValue("syntaxhighlighter", "currentline_colour").toString())); // Set tab width setTabWidth(PreferencesDialog::getSettingsValue("editor", "tabsize").toInt()); } |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |