From 3565aad630864ecdbe53fdaa501ea708555b3c7c Mon Sep 17 00:00:00 2001 From: Unit 193 Date: Sun, 30 Apr 2023 18:30:36 -0400 Subject: New upstream version 3.4.4+dfsg. --- SQLiteStudio3/guiSQLiteStudio/sqleditor.h | 63 ++++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 13 deletions(-) (limited to 'SQLiteStudio3/guiSQLiteStudio/sqleditor.h') diff --git a/SQLiteStudio3/guiSQLiteStudio/sqleditor.h b/SQLiteStudio3/guiSQLiteStudio/sqleditor.h index ca79a1c..4af89c1 100644 --- a/SQLiteStudio3/guiSQLiteStudio/sqleditor.h +++ b/SQLiteStudio3/guiSQLiteStudio/sqleditor.h @@ -1,9 +1,9 @@ #ifndef SQLEDITOR_H #define SQLEDITOR_H +#include "common/strhash.h" #include "guiSQLiteStudio_global.h" #include "common/extactioncontainer.h" -#include "db/db.h" #include "sqlitesyntaxhighlighter.h" #include #include @@ -18,6 +18,8 @@ class SqlEditor; class SearchTextDialog; class SearchTextLocator; class LazyTrigger; +class Db; +class QTimer; #ifdef Q_OS_OSX # define COMPLETE_REQ_KEY Qt::META @@ -40,19 +42,20 @@ CFG_KEY_LIST(SqlEditor, QObject::tr("SQL editor input field"), CFG_KEY_ENTRY(FIND_PREV, QKeySequence::FindPrevious, QObject::tr("Find previous")) CFG_KEY_ENTRY(REPLACE, QKeySequence::Replace, QObject::tr("Replace in text")) CFG_KEY_ENTRY(DELETE_LINE, Qt::CTRL + Qt::Key_D, QObject::tr("Delete current line")) - CFG_KEY_ENTRY(COMPLETE, COMPLETE_REQ_KEY + Qt::Key_Space, QObject::tr("Request code assistant")) + CFG_KEY_ENTRY(COMPLETE, COMPLETE_REQ_KEY + Qt::Key_Space, QObject::tr("Request code assistant")) CFG_KEY_ENTRY(FORMAT_SQL, Qt::CTRL + Qt::Key_T, QObject::tr("Format contents")) CFG_KEY_ENTRY(MOVE_BLOCK_DOWN, Qt::ALT + Qt::Key_Down, QObject::tr("Move selected block of text one line down")) CFG_KEY_ENTRY(MOVE_BLOCK_UP, Qt::ALT + Qt::Key_Up, QObject::tr("Move selected block of text one line up")) CFG_KEY_ENTRY(COPY_BLOCK_DOWN, Qt::ALT + Qt::CTRL + Qt::Key_Down, QObject::tr("Copy selected block of text and paste it a line below")) CFG_KEY_ENTRY(COPY_BLOCK_UP, Qt::ALT + Qt::CTRL + Qt::Key_Up, QObject::tr("Copy selected block of text and paste it a line above")) CFG_KEY_ENTRY(TOGGLE_COMMENT, Qt::CTRL + Qt::Key_Slash, QObject::tr("Toggle comment")) + CFG_KEY_ENTRY(INCR_FONT_SIZE, Qt::CTRL + Qt::Key_Plus, QObject::tr("Increase font size", "sql editor")) + CFG_KEY_ENTRY(DECR_FONT_SIZE, Qt::CTRL + Qt::Key_Minus, QObject::tr("Decrease font size", "sql editor")) ) class GUI_API_EXPORT SqlEditor : public QPlainTextEdit, public ExtActionContainer { - Q_OBJECT - Q_ENUMS(Action) + Q_OBJECT public: enum Action @@ -78,13 +81,20 @@ class GUI_API_EXPORT SqlEditor : public QPlainTextEdit, public ExtActionContaine FIND_NEXT, FIND_PREV, REPLACE, - TOGGLE_COMMENT + TOGGLE_COMMENT, + WORD_WRAP, + INCR_FONT_SIZE, + DECR_FONT_SIZE }; + Q_ENUM(Action) enum ToolBar { }; + static void createStaticActions(); + static void staticInit(); + explicit SqlEditor(QWidget *parent = 0); ~SqlEditor(); @@ -102,9 +112,17 @@ class GUI_API_EXPORT SqlEditor : public QPlainTextEdit, public ExtActionContaine void saveSelection(); void restoreSelection(); QToolBar* getToolBar(int toolbar) const; - + void setCurrentQueryHighlighting(bool enabled); bool getVirtualSqlCompleteSemicolon() const; void setVirtualSqlCompleteSemicolon(bool value); + bool getHighlightingSyntax() const; + void setOpenSaveActionsEnabled(bool value); + + static QHash staticActions; + static bool wrapWords; + + bool getAlwaysEnforceErrorsChecking() const; + void setAlwaysEnforceErrorsChecking(bool newAlwaysEnforceErrorsChecking); protected: void setupDefShortcuts(); @@ -116,7 +134,9 @@ class GUI_API_EXPORT SqlEditor : public QPlainTextEdit, public ExtActionContaine void mouseMoveEvent(QMouseEvent* e); void mousePressEvent(QMouseEvent* e); void resizeEvent(QResizeEvent *e); - void changeEvent(QEvent*e); + void changeEvent(QEvent* e); + void showEvent(QShowEvent* event); + void dropEvent(QDropEvent* e); private: class LineNumberArea : public QWidget @@ -162,7 +182,6 @@ class GUI_API_EXPORT SqlEditor : public QPlainTextEdit, public ExtActionContaine */ void markErrorAt(int start, int end, bool limitedDamage = false); void deletePreviousChars(int length = 1); - void refreshValidObjects(); void checkForSyntaxErrors(); void checkForValidObjects(); void setObjectLinks(bool enabled); @@ -171,8 +190,9 @@ class GUI_API_EXPORT SqlEditor : public QPlainTextEdit, public ExtActionContaine void lineNumberAreaPaintEvent(QPaintEvent* event); int lineNumberAreaWidth(); void highlightParenthesis(QList& selections); + void highlightCurrentQuery(QList& selections); void highlightCurrentLine(QList& selections); - void highlightCurrentCursorContext(); + void highlightCurrentCursorContext(bool delayedCall = false); const TextBlockData::Parenthesis* matchParenthesis(QList parList, const TextBlockData::Parenthesis* thePar); void markMatchedParenthesis(int pos1, int pos2, QList& selections); void doBackspace(int repeats = 1); @@ -211,8 +231,7 @@ class GUI_API_EXPORT SqlEditor : public QPlainTextEdit, public ExtActionContaine bool deletionKeyPressed = false; LazyTrigger* queryParserTrigger = nullptr; Parser* queryParser = nullptr; - QHash objectsInNamedDb; - QMutex objectsInNamedDbMutex; + StrHash objectsInNamedDb; bool objectLinksEnabled = false; QList validDbObjects; QWidget* lineNumberArea = nullptr; @@ -224,6 +243,11 @@ class GUI_API_EXPORT SqlEditor : public QPlainTextEdit, public ExtActionContaine int storedSelectionStart = 0; int storedSelectionEnd = 0; bool richFeaturesEnabled = true; + bool alwaysEnforceErrorsChecking = false; + bool highlightingSyntax = true; + QBrush currentQueryBrush; + QTimer* currentQueryTimer = nullptr; + bool openSaveActionsEnabled = true; /** * @brief virtualSqlExpression @@ -245,12 +269,14 @@ class GUI_API_EXPORT SqlEditor : public QPlainTextEdit, public ExtActionContaine bool virtualSqlCompleteSemicolon = false; QString createTriggerTable; QString loadedFile; - QFuture objectsInNamedDbFuture; + QFutureWatcher>* objectsInNamedDbWatcher = nullptr; + void changeFontSize(int factor); static const int autoCompleterDelay = 300; static const int queryParserDelay = 500; private slots: + void highlightSyntax(); void customContextMenuRequested(const QPoint& pos); void updateUndoAction(bool enabled); void updateRedoAction(bool enabled); @@ -268,7 +294,8 @@ class GUI_API_EXPORT SqlEditor : public QPlainTextEdit, public ExtActionContaine void completerLeftPressed(); void completerRightPressed(); void parseContents(); - void scheduleQueryParser(bool force = false); + void scheduleQueryParserForSchemaRefresh(); + void scheduleQueryParser(bool force = false, bool skipCompleter = false); void updateLineNumberAreaWidth(); void updateLineNumberArea(const QRect&rect, int dy); void cursorMoved(); @@ -291,6 +318,16 @@ class GUI_API_EXPORT SqlEditor : public QPlainTextEdit, public ExtActionContaine void changeFont(const QVariant& font); void configModified(); void toggleComment(); + void wordWrappingChanged(const QVariant& value); + void currentCursorContextDelayedHighlight(); + void fontSizeChangeRequested(int delta); + void incrFontSize(); + void decrFontSize(); + void moveCursorTo(int pos); + + public slots: + void colorsConfigChanged(); + void refreshValidObjects(); signals: void errorsChecked(bool haveErrors); -- cgit v1.2.3