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 · githubsud/sqlitebrowser Expand file tree/ Copy pathsqltextedit.cppMore file actions 164 lines (134 loc) · 6.04 KB / Copy pathsqltextedit.cppFile metadata and controls164 lines (134 loc) · 6.04 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 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 #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(); // Connect signals connect(this, SIGNAL(linesChanged()), this, SLOT(updateLineNumberAreaWidth())); } 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()->font(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 QFont defaultfont(PreferencesDialog::getSettingsValue("editor", "font").toString()); defaultfont.setStyleHint(QFont::TypeWriter); defaultfont.setPointSize(PreferencesDialog::getSettingsValue("editor", "fontsize").toInt()); sqlLexer->setColor(Qt::black, QsciLexerSQL::Default); sqlLexer->setFont(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); updateLineNumberAreaWidth(); // Highlight current line setCaretLineVisible(true); setCaretLineBackgroundColor(QColor(PreferencesDialog::getSettingsValue("syntaxhighlighter", "currentline_colour").toString())); // Set tab width setTabWidth(PreferencesDialog::getSettingsValue("editor", "tabsize").toInt()); // Check if error indicators are enabled and clear them if they just got disabled showErrorIndicators = PreferencesDialog::getSettingsValue("editor", "error_indicators").toBool(); if(!showErrorIndicators) clearErrorIndicators(); } void SqlTextEdit::clearErrorIndicators() { // Clear any error indicators from position (0,0) to the last column of the last line clearIndicatorRange(0, 0, lines(), lineLength(lines()), errorIndicatorNumber); } void SqlTextEdit::setErrorIndicator(int fromRow, int fromIndex, int toRow, int toIndex) { // Set error indicator for the specified range but only if they're enabled if(showErrorIndicators) fillIndicatorRange(fromRow, fromIndex, toRow, toIndex, errorIndicatorNumber); } |
| You are visitor 01402503 — 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. |