VMProtect/third-party/scintilla/ScintillaQt.h

145 lines
3.9 KiB
C++

//
// 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
// ScintillaQt.h - Qt specific subclass of ScintillaBase
#ifndef SCINTILLAQT_H
#define SCINTILLAQT_H
#include "Scintilla.h"
#include "Platform.h"
#include "ILexer.h"
#include "SplitVector.h"
#include "Partitioning.h"
#include "RunStyles.h"
#include "ContractionState.h"
#include "CellBuffer.h"
#include "CallTip.h"
#include "KeyMap.h"
#include "Indicator.h"
#include "XPM.h"
#include "LineMarker.h"
#include "Style.h"
#include "AutoComplete.h"
#include "ViewStyle.h"
#include "CharClassify.h"
#include "Decoration.h"
#include "CaseFolder.h"
#include "Document.h"
#include "Selection.h"
#include "PositionCache.h"
#include "Editor.h"
#include "ScintillaBase.h"
#include "CaseConvert.h"
#ifdef SCI_LEXER
#include "SciLexer.h"
#include "PropSetSimple.h"
#endif
#ifdef SCI_NAMESPACE
namespace Scintilla {
#endif
class ScintillaQt : public QObject, public ScintillaBase {
Q_OBJECT
public:
ScintillaQt(QAbstractScrollArea *parent);
virtual ~ScintillaQt();
signals:
void horizontalScrolled(int value);
void verticalScrolled(int value);
void horizontalRangeChanged(int max, int page);
void verticalRangeChanged(int max, int page);
void notifyParent(SCNotification 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);
private slots:
void tick();
void onIdle();
void execCommand(QAction *action);
void SelectionChanged();
private:
virtual void Initialise();
virtual void Finalise();
virtual bool DragThreshold(Point ptStart, Point ptNow);
virtual bool ValidCodePage(int codePage) const;
private:
virtual void ScrollText(int linesToMove);
virtual void SetVerticalScrollPos();
virtual void SetHorizontalScrollPos();
virtual bool ModifyScrollBars(int nMax, int nPage);
virtual void ReconfigureScrollBars();
void CopyToModeClipboard(const SelectionText &selectedText, QClipboard::Mode clipboardMode_);
virtual void Copy();
virtual void CopyToClipboard(const SelectionText &selectedText);
void PasteFromMode(QClipboard::Mode clipboardMode_);
virtual void Paste();
virtual void ClaimSelection();
virtual void NotifyChange();
virtual void NotifyFocus(bool focus);
virtual void NotifyParent(SCNotification scn);
virtual void SetTicking(bool on);
virtual bool SetIdle(bool on);
virtual void SetMouseCapture(bool on);
virtual bool HaveMouseCapture();
virtual void StartDrag();
int CharacterSetOfDocument() const;
const char *CharacterSetIDOfDocument() const;
QString StringFromDocument(const char *s) const;
QByteArray BytesForDocument(const QString &text) const;
virtual CaseFolder *CaseFolderForEncoding();
virtual std::string CaseMapString(const std::string &s, int caseMapping);
virtual void CreateCallTipWindow(PRectangle rc);
virtual void AddToPopUp(const char *label, int cmd = 0, bool enabled = true);
virtual sptr_t WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam);
virtual sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam);
static sptr_t DirectFunction(ScintillaQt *sciThis,
unsigned int iMessage, uptr_t wParam, sptr_t lParam);
protected:
void PartialPaint(const PRectangle &rect);
void DragEnter(const Point &point);
void DragMove(const Point &point);
void DragLeave();
void Drop(const Point &point, const QMimeData *data, bool move);
private:
QAbstractScrollArea *scrollArea;
int vMax, hMax; // Scroll bar maximums.
int vPage, hPage; // Scroll bar page sizes.
bool haveMouseCapture;
bool dragWasDropped;
int rectangularSelectionModifier;
friend class ScintillaEditBase;
};
#ifdef SCI_NAMESPACE
}
#endif
#endif // SCINTILLAQT_H