diff options
Diffstat (limited to 'qt/ScintillaEditBase')
-rw-r--r-- | qt/ScintillaEditBase/PlatQt.cpp | 77 | ||||
-rw-r--r-- | qt/ScintillaEditBase/PlatQt.h | 8 | ||||
-rw-r--r-- | qt/ScintillaEditBase/ScintillaEditBase.cpp | 29 | ||||
-rw-r--r-- | qt/ScintillaEditBase/ScintillaEditBase.h | 9 | ||||
-rw-r--r-- | qt/ScintillaEditBase/ScintillaQt.cpp | 34 | ||||
-rw-r--r-- | qt/ScintillaEditBase/ScintillaQt.h | 17 |
6 files changed, 92 insertions, 82 deletions
diff --git a/qt/ScintillaEditBase/PlatQt.cpp b/qt/ScintillaEditBase/PlatQt.cpp index d5475f4bd..2d49dcb5c 100644 --- a/qt/ScintillaEditBase/PlatQt.cpp +++ b/qt/ScintillaEditBase/PlatQt.cpp @@ -14,7 +14,6 @@ #include "Scintilla.h" #include "UniConversion.h" #include "DBCS.h" -#include "FontQuality.h" #include <QApplication> #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) @@ -42,55 +41,57 @@ #include <QTextLine> #include <QLibrary> -namespace Scintilla { +using namespace Scintilla; + +namespace Scintilla::Internal { //---------------------------------------------------------------------- // Convert from a Scintilla characterSet value to a Qt codec name. -const char *CharacterSetID(int characterSet) +const char *CharacterSetID(CharacterSet characterSet) { switch (characterSet) { - //case SC_CHARSET_ANSI: + //case CharacterSet::Ansi: // return ""; - case SC_CHARSET_DEFAULT: + case CharacterSet::Default: return "ISO 8859-1"; - case SC_CHARSET_BALTIC: + case CharacterSet::Baltic: return "ISO 8859-13"; - case SC_CHARSET_CHINESEBIG5: + case CharacterSet::ChineseBig5: return "Big5"; - case SC_CHARSET_EASTEUROPE: + case CharacterSet::EastEurope: return "ISO 8859-2"; - case SC_CHARSET_GB2312: + case CharacterSet::GB2312: return "GB18030-0"; - case SC_CHARSET_GREEK: + case CharacterSet::Greek: return "ISO 8859-7"; - case SC_CHARSET_HANGUL: + case CharacterSet::Hangul: return "CP949"; - case SC_CHARSET_MAC: + case CharacterSet::Mac: return "Apple Roman"; //case SC_CHARSET_OEM: // return "ASCII"; - case SC_CHARSET_RUSSIAN: + case CharacterSet::Russian: return "KOI8-R"; - case SC_CHARSET_CYRILLIC: + case CharacterSet::Cyrillic: return "Windows-1251"; - case SC_CHARSET_SHIFTJIS: + case CharacterSet::ShiftJis: return "Shift-JIS"; //case SC_CHARSET_SYMBOL: // return ""; - case SC_CHARSET_TURKISH: + case CharacterSet::Turkish: return "ISO 8859-9"; //case SC_CHARSET_JOHAB: // return "CP1361"; - case SC_CHARSET_HEBREW: + case CharacterSet::Hebrew: return "ISO 8859-8"; - case SC_CHARSET_ARABIC: + case CharacterSet::Arabic: return "ISO 8859-6"; - case SC_CHARSET_VIETNAMESE: + case CharacterSet::Vietnamese: return "Windows-1258"; - case SC_CHARSET_THAI: + case CharacterSet::Thai: return "TIS-620"; - case SC_CHARSET_8859_15: + case CharacterSet::Iso8859_15: return "ISO 8859-15"; default: return "ISO 8859-1"; @@ -101,27 +102,27 @@ QString UnicodeFromText(QTextCodec *codec, std::string_view text) { return codec->toUnicode(text.data(), static_cast<int>(text.length())); } -static QFont::StyleStrategy ChooseStrategy(int eff) +static QFont::StyleStrategy ChooseStrategy(FontQuality eff) { switch (eff) { - case SC_EFF_QUALITY_DEFAULT: return QFont::PreferDefault; - case SC_EFF_QUALITY_NON_ANTIALIASED: return QFont::NoAntialias; - case SC_EFF_QUALITY_ANTIALIASED: return QFont::PreferAntialias; - case SC_EFF_QUALITY_LCD_OPTIMIZED: return QFont::PreferAntialias; + case FontQuality::QualityDefault: return QFont::PreferDefault; + case FontQuality::QualityNonAntialiased: return QFont::NoAntialias; + case FontQuality::QualityAntialiased: return QFont::PreferAntialias; + case FontQuality::QualityLcdOptimized: return QFont::PreferAntialias; default: return QFont::PreferDefault; } } class FontAndCharacterSet : public Font { public: - int characterSet = 0; + CharacterSet characterSet = CharacterSet::Ansi; QFont *pfont = nullptr; FontAndCharacterSet(const FontParameters &fp) { pfont = new QFont; pfont->setStyleStrategy(ChooseStrategy(fp.extraFontFlag)); pfont->setFamily(QString::fromUtf8(fp.faceName)); pfont->setPointSizeF(fp.size); - pfont->setBold(fp.weight > 500); + pfont->setBold(static_cast<int>(fp.weight) > 500); pfont->setItalic(fp.italic); characterSet = fp.characterSet; @@ -134,11 +135,11 @@ public: namespace { -const int SupportsQt[] = { - SC_SUPPORTS_LINE_DRAWS_FINAL, - SC_SUPPORTS_FRACTIONAL_STROKE_WIDTH, - SC_SUPPORTS_TRANSLUCENT_STROKE, - SC_SUPPORTS_PIXEL_MODIFICATION, +const Supports SupportsQt[] = { + Supports::LineDrawsFinal, + Supports::FractionalStrokeWidth, + Supports::TranslucentStroke, + Supports::PixelModification, }; const FontAndCharacterSet *AsFontAndCharacterSet(const Font *f) { @@ -216,9 +217,9 @@ void SurfaceImpl::Release() noexcept Clear(); } -int SurfaceImpl::Supports(int feature) noexcept +int SurfaceImpl::SupportsFeature(Supports feature) noexcept { - for (const int f : SupportsQt) { + for (const Supports f : SupportsQt) { if (f == feature) return 1; } @@ -781,7 +782,7 @@ QPainter *SurfaceImpl::GetPainter() return painter; } -std::unique_ptr<Surface> Surface::Allocate(int) +std::unique_ptr<Surface> Surface::Allocate(Technology) { return std::make_unique<SurfaceImpl>(); } @@ -942,7 +943,7 @@ public: void SetFont(const Font *font) override; void Create(Window &parent, int ctrlID, Point location, - int lineHeight, bool unicodeMode_, int technology) override; + int lineHeight, bool unicodeMode_, Technology technology) override; void SetAverageCharWidth(int width) override; void SetVisibleRows(int rows) override; int GetVisibleRows() const override; @@ -979,7 +980,7 @@ void ListBoxImpl::Create(Window &parent, Point location, int /*lineHeight*/, bool unicodeMode_, - int) + Technology) { unicodeMode = unicodeMode_; diff --git a/qt/ScintillaEditBase/PlatQt.h b/qt/ScintillaEditBase/PlatQt.h index 446e07ebb..02f3b0f7a 100644 --- a/qt/ScintillaEditBase/PlatQt.h +++ b/qt/ScintillaEditBase/PlatQt.h @@ -20,6 +20,8 @@ #include "Debugging.h" #include "Geometry.h" +#include "ScintillaTypes.h" +#include "ScintillaMessages.h" #include "Platform.h" #include <QUrl> @@ -27,9 +29,9 @@ #include <QPainter> #include <QHash> -namespace Scintilla { +namespace Scintilla::Internal { -const char *CharacterSetID(int characterSet); +const char *CharacterSetID(Scintilla::CharacterSet characterSet); inline QColor QColorFromColourRGBA(ColourRGBA ca) { @@ -89,7 +91,7 @@ public: void SetMode(SurfaceMode mode) override; void Release() noexcept override; - int Supports(int feature) noexcept override; + int SupportsFeature(Scintilla::Supports feature) noexcept override; bool Initialised() override; void PenColour(ColourRGBA fore); void PenColourWidth(ColourRGBA fore, XYPOSITION strokeWidth); diff --git a/qt/ScintillaEditBase/ScintillaEditBase.cpp b/qt/ScintillaEditBase/ScintillaEditBase.cpp index c94cd13f7..393910ba2 100644 --- a/qt/ScintillaEditBase/ScintillaEditBase.cpp +++ b/qt/ScintillaEditBase/ScintillaEditBase.cpp @@ -40,6 +40,7 @@ #endif // QT_VERSION >= 5.0.0 using namespace Scintilla; +using namespace Scintilla::Internal; ScintillaEditBase::ScintillaEditBase(QWidget *parent) : QAbstractScrollArea(parent), sqt(nullptr), preeditPos(-1), wheelDelta(0) @@ -59,10 +60,10 @@ ScintillaEditBase::ScintillaEditBase(QWidget *parent) setAttribute(Qt::WA_KeyCompression); setAttribute(Qt::WA_InputMethodEnabled); - sqt->vs.indicators[SC_INDICATOR_UNKNOWN] = Indicator(INDIC_HIDDEN, ColourRGBA(0, 0, 0xff)); - sqt->vs.indicators[SC_INDICATOR_INPUT] = Indicator(INDIC_DOTS, ColourRGBA(0, 0, 0xff)); - sqt->vs.indicators[SC_INDICATOR_CONVERTED] = Indicator(INDIC_COMPOSITIONTHICK, ColourRGBA(0, 0, 0xff)); - sqt->vs.indicators[SC_INDICATOR_TARGET] = Indicator(INDIC_STRAIGHTBOX, ColourRGBA(0, 0, 0xff)); + sqt->vs.indicators[SC_INDICATOR_UNKNOWN] = Indicator(IndicatorStyle::Hidden, ColourRGBA(0, 0, 0xff)); + sqt->vs.indicators[SC_INDICATOR_INPUT] = Indicator(IndicatorStyle::Dots, ColourRGBA(0, 0, 0xff)); + sqt->vs.indicators[SC_INDICATOR_CONVERTED] = Indicator(IndicatorStyle::CompositionThick, ColourRGBA(0, 0, 0xff)); + sqt->vs.indicators[SC_INDICATOR_TARGET] = Indicator(IndicatorStyle::StraightBox, ColourRGBA(0, 0, 0xff)); connect(sqt, SIGNAL(notifyParent(SCNotification)), this, SLOT(notifyParent(SCNotification))); @@ -100,7 +101,7 @@ sptr_t ScintillaEditBase::send( uptr_t wParam, sptr_t lParam) const { - return sqt->WndProc(iMessage, wParam, lParam); + return sqt->WndProc(static_cast<Message>(iMessage), wParam, lParam); } sptr_t ScintillaEditBase::sends( @@ -108,7 +109,7 @@ sptr_t ScintillaEditBase::sends( uptr_t wParam, const char *s) const { - return sqt->WndProc(iMessage, wParam, (sptr_t)s); + return sqt->WndProc(static_cast<Message>(iMessage), wParam, (sptr_t)s); } void ScintillaEditBase::scrollHorizontal(int value) @@ -179,9 +180,9 @@ void ScintillaEditBase::wheelEvent(QWheelEvent *event) // Zoom! We play with the font sizes in the styles. // Number of steps/line is ignored, we just care if sizing up or down if (wheelEventYDelta(event) > 0) { - sqt->KeyCommand(SCI_ZOOMIN); + sqt->KeyCommand(Message::ZoomIn); } else { - sqt->KeyCommand(SCI_ZOOMOUT); + sqt->KeyCommand(Message::ZoomOut); } } else { // Ignore wheel events when the scroll bars are disabled. @@ -257,7 +258,7 @@ void ScintillaEditBase::keyPressEvent(QKeyEvent *event) bool alt = QApplication::keyboardModifiers() & Qt::AltModifier; bool consumed = false; - bool added = sqt->KeyDownWithModifiers(key, + bool added = sqt->KeyDownWithModifiers(static_cast<Keys>(key), ScintillaQt::ModifierFlags(shift, ctrl, alt), &consumed) != 0; if (!consumed) @@ -278,7 +279,7 @@ void ScintillaEditBase::keyPressEvent(QKeyEvent *event) QString text = event->text(); if (input && !text.isEmpty() && text[0].isPrint()) { QByteArray utext = sqt->BytesForDocument(text); - sqt->InsertCharacter(std::string_view(utext.data(), utext.size()), EditModel::CharacterSource::directInput); + sqt->InsertCharacter(std::string_view(utext.data(), utext.size()), CharacterSource::DirectInput); } else { event->ignore(); } @@ -374,7 +375,7 @@ void ScintillaEditBase::mouseMoveEvent(QMouseEvent *event) bool alt = QApplication::keyboardModifiers() & Qt::AltModifier; #endif - const int modifiers = ScintillaQt::ModifierFlags(shift, ctrl, alt); + const KeyMod modifiers = ScintillaQt::ModifierFlags(shift, ctrl, alt); sqt->ButtonMoveWithModifiers(pos, time.elapsed(), modifiers); } @@ -568,7 +569,7 @@ void ScintillaEditBase::inputMethodEvent(QInputMethodEvent *event) const QString oneCharUTF16 = commitStr.mid(i, ucWidth); const QByteArray oneChar = sqt->BytesForDocument(oneCharUTF16); - sqt->InsertCharacter(std::string_view(oneChar.data(), oneChar.length()), EditModel::CharacterSource::directInput); + sqt->InsertCharacter(std::string_view(oneChar.data(), oneChar.length()), CharacterSource::DirectInput); i += ucWidth; } @@ -592,7 +593,7 @@ void ScintillaEditBase::inputMethodEvent(QInputMethodEvent *event) const QByteArray oneChar = sqt->BytesForDocument(oneCharUTF16); const int oneCharLen = oneChar.length(); - sqt->InsertCharacter(std::string_view(oneChar.data(), oneCharLen), EditModel::CharacterSource::tentativeInput); + sqt->InsertCharacter(std::string_view(oneChar.data(), oneCharLen), CharacterSource::TentativeInput); DrawImeIndicator(imeIndicator[i], oneCharLen); i += ucWidth; @@ -832,7 +833,7 @@ void ScintillaEditBase::event_command(uptr_t wParam, sptr_t lParam) emit command(wParam, lParam); } -int ScintillaEditBase::ModifiersOfKeyboard() const +KeyMod ScintillaEditBase::ModifiersOfKeyboard() const { const bool shift = QApplication::keyboardModifiers() & Qt::ShiftModifier; const bool ctrl = QApplication::keyboardModifiers() & Qt::ControlModifier; diff --git a/qt/ScintillaEditBase/ScintillaEditBase.h b/qt/ScintillaEditBase/ScintillaEditBase.h index a0375f13d..751b9d294 100644 --- a/qt/ScintillaEditBase/ScintillaEditBase.h +++ b/qt/ScintillaEditBase/ScintillaEditBase.h @@ -21,6 +21,9 @@ #include "Debugging.h" #include "Geometry.h" +#include "ScintillaTypes.h" +#include "ScintillaMessages.h" +#include "ScintillaStructures.h" #include "Platform.h" #include "Scintilla.h" @@ -28,7 +31,7 @@ #include <QMimeData> #include <QElapsedTimer> -namespace Scintilla { +namespace Scintilla::Internal { class ScintillaQt; class SurfaceImpl; @@ -146,7 +149,7 @@ protected: void scrollContentsBy(int, int) override {} private: - Scintilla::ScintillaQt *sqt; + Scintilla::Internal::ScintillaQt *sqt; QElapsedTimer time; @@ -158,7 +161,7 @@ private: static bool IsHangul(const QChar qchar); void MoveImeCarets(int offset); void DrawImeIndicator(int indicator, int len); - int ModifiersOfKeyboard() const; + Scintilla::KeyMod ModifiersOfKeyboard() const; }; #endif /* SCINTILLAEDITBASE_H */ diff --git a/qt/ScintillaEditBase/ScintillaQt.cpp b/qt/ScintillaEditBase/ScintillaQt.cpp index 710b7de9f..f90313554 100644 --- a/qt/ScintillaEditBase/ScintillaQt.cpp +++ b/qt/ScintillaEditBase/ScintillaQt.cpp @@ -23,7 +23,7 @@ #include <QTimer> using namespace Scintilla; - +using namespace Scintilla::Internal; ScintillaQt::ScintillaQt(QAbstractScrollArea *parent) : QObject(parent), scrollArea(parent), vMax(0), hMax(0), vPage(0), hPage(0), @@ -32,7 +32,7 @@ ScintillaQt::ScintillaQt(QAbstractScrollArea *parent) wMain = scrollArea->viewport(); - imeInteraction = IMEInteraction::internal; + imeInteraction = IMEInteraction::Inline; // On OS X drawing text into a pixmap moves it around 1 pixel to // the right compared to drawing it directly onto a window. @@ -385,7 +385,7 @@ void ScintillaQt::PasteFromMode(QClipboard::Mode clipboardMode_) selText.Copy(dest, pdoc->dbcsCodePage, CharacterSetOfDocument(), isRectangular, false); UndoGroup ug(pdoc); - ClearSelection(multiPasteMode == SC_MULTIPASTE_EACH); + ClearSelection(multiPasteMode == MultiPaste::Each); InsertPasteShape(selText.Data(), selText.Length(), isRectangular ? PasteShape::rectangular : (isLine ? PasteShape::line : PasteShape::stream)); EnsureCaretVisible(); @@ -432,7 +432,7 @@ void ScintillaQt::NotifyFocus(bool focus) Editor::NotifyFocus(focus); } -void ScintillaQt::NotifyParent(SCNotification scn) +void ScintillaQt::NotifyParent(NotificationData scn) { scn.nmhdr.hwndFrom = wMain.GetID(); scn.nmhdr.idFrom = GetCtrlID(); @@ -441,8 +441,8 @@ void ScintillaQt::NotifyParent(SCNotification scn) void ScintillaQt::NotifyURIDropped(const char *uri) { - SCNotification scn = {}; - scn.nmhdr.code = SCN_URIDROPPED; + NotificationData scn = {}; + scn.nmhdr.code = Notification::URIDropped; scn.text = uri; NotifyParent(scn); @@ -519,7 +519,7 @@ bool ScintillaQt::SetIdle(bool on) return ChangeIdle(on); } -int ScintillaQt::CharacterSetOfDocument() const +CharacterSet ScintillaQt::CharacterSetOfDocument() const { return vs.styles[STYLE_DEFAULT].characterSet; } @@ -689,7 +689,7 @@ public: void paintEvent(QPaintEvent *) override { if (pct->inCallTipMode) { - std::unique_ptr<Surface> surfaceWindow = Surface::Allocate(0); + std::unique_ptr<Surface> surfaceWindow = Surface::Allocate(Technology::Default); surfaceWindow->Init(this); surfaceWindow->SetMode(SurfaceMode(pct->codePage, false)); pct->PaintCT(surfaceWindow.get()); @@ -732,37 +732,37 @@ void ScintillaQt::AddToPopUp(const char *label, this, SLOT(execCommand(QAction *))); } -sptr_t ScintillaQt::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) +sptr_t ScintillaQt::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) { try { switch (iMessage) { - case SCI_SETIMEINTERACTION: + case Message::SetIMEInteraction: // Only inline IME supported on Qt break; - case SCI_GRABFOCUS: + case Message::GrabFocus: scrollArea->setFocus(Qt::OtherFocusReason); break; - case SCI_GETDIRECTFUNCTION: + case Message::GetDirectFunction: return reinterpret_cast<sptr_t>(DirectFunction); - case SCI_GETDIRECTPOINTER: + case Message::GetDirectPointer: return reinterpret_cast<sptr_t>(this); default: return ScintillaBase::WndProc(iMessage, wParam, lParam); } } catch (std::bad_alloc &) { - errorStatus = SC_STATUS_BADALLOC; + errorStatus = Status::BadAlloc; } catch (...) { - errorStatus = SC_STATUS_FAILURE; + errorStatus = Status::Failure; } return 0; } -sptr_t ScintillaQt::DefWndProc(unsigned int, uptr_t, sptr_t) +sptr_t ScintillaQt::DefWndProc(Message, uptr_t, sptr_t) { return 0; } @@ -770,7 +770,7 @@ sptr_t ScintillaQt::DefWndProc(unsigned int, uptr_t, sptr_t) sptr_t ScintillaQt::DirectFunction( sptr_t ptr, unsigned int iMessage, uptr_t wParam, sptr_t lParam) { - return reinterpret_cast<ScintillaQt *>(ptr)->WndProc(iMessage, wParam, lParam); + return reinterpret_cast<ScintillaQt *>(ptr)->WndProc(static_cast<Message>(iMessage), wParam, lParam); } // Additions to merge in Scientific Toolworks widget structure diff --git a/qt/ScintillaEditBase/ScintillaQt.h b/qt/ScintillaEditBase/ScintillaQt.h index adbf11efd..053e59cc8 100644 --- a/qt/ScintillaEditBase/ScintillaQt.h +++ b/qt/ScintillaEditBase/ScintillaQt.h @@ -29,6 +29,9 @@ #include <algorithm> #include <memory> +#include "ScintillaTypes.h" +#include "ScintillaMessages.h" +#include "ScintillaStructures.h" #include "Scintilla.h" #include "Debugging.h" #include "Geometry.h" @@ -71,7 +74,7 @@ class ScintillaEditBase; -namespace Scintilla { +namespace Scintilla::Internal { class ScintillaQt : public QObject, public ScintillaBase { Q_OBJECT @@ -86,14 +89,14 @@ signals: void horizontalRangeChanged(int max, int page); void verticalRangeChanged(int max, int page); - void notifyParent(SCNotification scn); + void notifyParent(Scintilla::NotificationData scn); void notifyChange(); // Clients can use this hook to add additional // formats (e.g. rich text) to the MIME data. void aboutToCopy(QMimeData *data); - void command(uptr_t wParam, sptr_t lParam); + void command(Scintilla::uptr_t wParam, Scintilla::sptr_t lParam); private slots: void onIdle(); @@ -122,7 +125,7 @@ private: void ClaimSelection() override; void NotifyChange() override; void NotifyFocus(bool focus) override; - void NotifyParent(SCNotification scn) override; + void NotifyParent(Scintilla::NotificationData scn) override; void NotifyURIDropped(const char *uri); int timers[static_cast<size_t>(TickReason::dwell)+1]; bool FineTickerRunning(TickReason reason) override; @@ -134,7 +137,7 @@ private: void SetMouseCapture(bool on) override; bool HaveMouseCapture() override; void StartDrag() override; - int CharacterSetOfDocument() const; + Scintilla::CharacterSet CharacterSetOfDocument() const; const char *CharacterSetIDOfDocument() const; QString StringFromDocument(const char *s) const; QByteArray BytesForDocument(const QString &text) const; @@ -143,8 +146,8 @@ private: void CreateCallTipWindow(PRectangle rc) override; void AddToPopUp(const char *label, int cmd = 0, bool enabled = true) override; - sptr_t WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) override; - sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) override; + sptr_t WndProc(Scintilla::Message iMessage, uptr_t wParam, sptr_t lParam) override; + sptr_t DefWndProc(Scintilla::Message iMessage, uptr_t wParam, sptr_t lParam) override; static sptr_t DirectFunction(sptr_t ptr, unsigned int iMessage, uptr_t wParam, sptr_t lParam); |