aboutsummaryrefslogtreecommitdiffhomepage
path: root/qt/ScintillaEditBase/ScintillaEditBase.h
diff options
context:
space:
mode:
Diffstat (limited to 'qt/ScintillaEditBase/ScintillaEditBase.h')
-rw-r--r--qt/ScintillaEditBase/ScintillaEditBase.h151
1 files changed, 151 insertions, 0 deletions
diff --git a/qt/ScintillaEditBase/ScintillaEditBase.h b/qt/ScintillaEditBase/ScintillaEditBase.h
new file mode 100644
index 000000000..0f625eba3
--- /dev/null
+++ b/qt/ScintillaEditBase/ScintillaEditBase.h
@@ -0,0 +1,151 @@
+//
+// Copyright (c) 1990-2011, Scientific Toolworks, Inc.
+//
+// The License.txt file describes the conditions under which this software may be distributed.
+//
+// Author: Jason Haslam
+//
+// Additions Copyright (c) 2011 Archaeopteryx Software, Inc. d/b/a Wingware
+// ScintillaWidget.h - Qt widget that wraps ScintillaQt and provides events and scrolling
+
+
+#ifndef SCINTILLAEDITBASE_H
+#define SCINTILLAEDITBASE_H
+
+#include "Platform.h"
+#include "Scintilla.h"
+
+#include <QAbstractScrollArea>
+#include <QMimeData>
+#include <QTime>
+
+#ifdef SCI_NAMESPACE
+namespace Scintilla {
+#endif
+
+class ScintillaQt;
+class SurfaceImpl;
+struct SCNotification;
+
+#ifdef WIN32
+#ifdef MAKING_LIBRARY
+#define EXPORT_IMPORT_API __declspec(dllexport)
+#else
+// Defining dllimport upsets moc
+#define EXPORT_IMPORT_API __declspec(dllimport)
+//#define EXPORT_IMPORT_API
+#endif
+#else
+#define EXPORT_IMPORT_API
+#endif
+
+class EXPORT_IMPORT_API ScintillaEditBase : public QAbstractScrollArea {
+ Q_OBJECT
+
+public:
+ ScintillaEditBase(QWidget *parent = 0);
+ virtual ~ScintillaEditBase();
+
+ virtual sptr_t send(
+ unsigned int iMessage,
+ uptr_t wParam = 0,
+ sptr_t lParam = 0) const;
+
+ virtual sptr_t sends(
+ unsigned int iMessage,
+ uptr_t wParam = 0,
+ const char *s = 0) const;
+
+public slots:
+ // Scroll events coming from GUI to be sent to Scintilla.
+ void scrollHorizontal(int value);
+ void scrollVertical(int value);
+
+ // Emit Scintilla notifications as signals.
+ void notifyParent(SCNotification scn);
+ void event_command(uptr_t wParam, sptr_t lParam);
+
+signals:
+ void horizontalScrolled(int value);
+ void verticalScrolled(int value);
+ void horizontalRangeChanged(int max, int page);
+ void verticalRangeChanged(int max, int page);
+ void notifyChange();
+ void linesAdded(int linesAdded);
+
+ // Clients can use this hook to add additional
+ // formats (e.g. rich text) to the MIME data.
+ void aboutToCopy(QMimeData *data);
+
+ // Scintilla Notifications
+ void styleNeeded(int position);
+ void charAdded(int ch);
+ void savePointChanged(bool dirty);
+ void modifyAttemptReadOnly();
+ void key(int key);
+ void doubleClick(int position, int line);
+ void updateUi();
+ void modified(int type, int position, int length, int linesAdded,
+ const QByteArray &text, int line, int foldNow, int foldPrev);
+ void macroRecord(int message, uptr_t wParam, sptr_t lParam);
+ void marginClicked(int position, int modifiers, int margin);
+ void textAreaClicked(int line, int modifiers);
+ void needShown(int position, int length);
+ void painted();
+ void userListSelection(); // Wants some args.
+ void uriDropped(); // Wants some args.
+ void dwellStart(int x, int y);
+ void dwellEnd(int x, int y);
+ void zoom(int zoom);
+ void hotSpotClick(int position, int modifiers);
+ void hotSpotDoubleClick(int position, int modifiers);
+ void callTipClick();
+ void autoCompleteSelection(int position, const QString &text);
+
+ // Base notifications for compatibility with other Scintilla implementations
+ void notify(SCNotification *pscn);
+ void command(uptr_t wParam, sptr_t lParam);
+
+ // GUI event notifications needed under Qt
+ void buttonPressed(QMouseEvent *event);
+ void buttonReleased(QMouseEvent *event);
+ void keyPressed(QKeyEvent *event);
+ void resized();
+
+protected:
+ virtual bool event(QEvent *event);
+ virtual void paintEvent(QPaintEvent *event);
+ virtual void wheelEvent(QWheelEvent *event);
+ virtual void focusInEvent(QFocusEvent *event);
+ virtual void focusOutEvent(QFocusEvent *event);
+ virtual void resizeEvent(QResizeEvent *event);
+ virtual void keyPressEvent(QKeyEvent *event);
+ virtual void mousePressEvent(QMouseEvent *event);
+ virtual void mouseReleaseEvent(QMouseEvent *event);
+ virtual void mouseDoubleClickEvent(QMouseEvent *event);
+ virtual void mouseMoveEvent(QMouseEvent *event);
+ virtual void contextMenuEvent(QContextMenuEvent *event);
+ virtual void dragEnterEvent(QDragEnterEvent *event);
+ virtual void dragLeaveEvent(QDragLeaveEvent *event);
+ virtual void dragMoveEvent(QDragMoveEvent *event);
+ virtual void dropEvent(QDropEvent *event);
+ virtual void inputMethodEvent(QInputMethodEvent *event);
+ virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const;
+ virtual void scrollContentsBy(int, int) {}
+
+private:
+ ScintillaQt *sqt;
+
+ QTime time;
+
+ int preeditPos;
+ QString preeditString;
+
+ int wheelDelta;
+};
+
+#ifdef SCI_NAMESPACE
+}
+#endif
+
+#endif /* SCINTILLAEDITBASE_H */