1/*
2 SPDX-FileCopyrightText: 2008 Paul Giannaros <paul@giannaros.org>
3 SPDX-FileCopyrightText: 2008 Christoph Cullmann <cullmann@kde.org>
4
5 SPDX-License-Identifier: LGPL-2.0-or-later
6*/
7
8#ifndef KATE_SCRIPT_VIEW_H
9#define KATE_SCRIPT_VIEW_H
10
11#include <QJSValue>
12#include <QObject>
13
14#include <ktexteditor_export.h>
15
16#include <ktexteditor/cursor.h>
17#include <ktexteditor/range.h>
18
19namespace KTextEditor
20{
21class ViewPrivate;
22}
23class QJSEngine;
24/**
25 * Thinish wrapping around KTextEditor::ViewPrivate, exposing the methods we want exposed
26 * and adding some helper methods.
27 *
28 * setView _must_ be called before using any other method. This is not checked
29 * for the sake of speed.
30 */
31class KTEXTEDITOR_EXPORT KateScriptView : public QObject
32{
33 /// Properties are accessible with a nicer syntax from JavaScript
34 Q_OBJECT
35
36public:
37 explicit KateScriptView(QJSEngine *, QObject *parent = nullptr);
38 void setView(KTextEditor::ViewPrivate *view);
39 KTextEditor::ViewPrivate *view();
40
41 Q_INVOKABLE void copy();
42 Q_INVOKABLE void cut();
43 Q_INVOKABLE void paste();
44
45 Q_INVOKABLE QJSValue cursorPosition();
46 Q_INVOKABLE QJSValue cursorPositions();
47
48 /**
49 * Set the cursor position in the view.
50 * @since 4.4
51 */
52 Q_INVOKABLE void setCursorPosition(int line, int column);
53 Q_INVOKABLE void setCursorPosition(const QJSValue &cursor);
54 Q_INVOKABLE void setCursorPositions(const QJSValue &cursors);
55
56 Q_INVOKABLE QJSValue virtualCursorPosition();
57 Q_INVOKABLE void setVirtualCursorPosition(int line, int column);
58 Q_INVOKABLE void setVirtualCursorPosition(const QJSValue &cursor);
59
60 Q_INVOKABLE QString selectedText();
61 Q_INVOKABLE bool hasSelection();
62 Q_INVOKABLE QJSValue selection();
63 Q_INVOKABLE QJSValue selections();
64 Q_INVOKABLE void setSelection(const QJSValue &range);
65 Q_INVOKABLE void setSelections(const QJSValue &ranges);
66 Q_INVOKABLE void removeSelectedText();
67 Q_INVOKABLE void selectAll();
68 Q_INVOKABLE void clearSelection();
69
70 Q_INVOKABLE void setBlockSelection(bool on);
71 Q_INVOKABLE bool blockSelection();
72
73 Q_INVOKABLE void align(const QJSValue &range);
74 Q_INVOKABLE void alignOn(const QJSValue &jsrange, const QJSValue &pattern = QJSValue(QStringLiteral("")));
75
76 Q_INVOKABLE QJSValue searchText(const QJSValue &range, const QString &pattern, bool backwards = false);
77
78 Q_INVOKABLE QJSValue executeCommand(const QString &command, const QString &args = QString(), const QJSValue &jsrange = QJSValue());
79
80private:
81 KTextEditor::ViewPrivate *m_view;
82 QJSEngine *m_engine;
83};
84
85#endif
86

source code of ktexteditor/src/script/katescriptview.h