-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBasicEdit.h
More file actions
124 lines (105 loc) · 3.66 KB
/
BasicEdit.h
File metadata and controls
124 lines (105 loc) · 3.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/** Copyright (C) 2006, Ian Paul Larsen.
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License along
** with this program; if not, write to the Free Software Foundation, Inc.,
** 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
**/
#ifndef __BASICEDIT_H
#define __BASICEDIT_H
#include <qglobal.h>
#include <QtWidgets/QApplication>
#include <QtWidgets/QPlainTextEdit>
#include <QtWidgets/QMainWindow>
#include <QKeyEvent>
#include <QList>
#include <QMimeData>
#include <QMimeDatabase>
#include "ViewWidgetIFace.h"
class BasicEdit : public QPlainTextEdit, public ViewWidgetIFace
{
Q_OBJECT
public:
BasicEdit(const QString &defaulttitle = QString());
~BasicEdit();
void saveFile(bool);
void findString(QString, bool, bool, bool);
void replaceString(QString, QString, bool, bool, bool, bool);
QString getCurrentWord();
void lineNumberAreaPaintEvent(QPaintEvent *event);
void lineNumberAreaMouseClickEvent(QMouseEvent *event);
void lineNumberAreaMouseWheelEvent(QWheelEvent *event);
int lineNumberAreaWidth();
QList<int> *breakPoints;
void updateBreakPointsList();
void setFont(QFont);
int runState; //0 - stop, 1-run, 2-debug
QString title;
QString windowtitle;
QString filename;
QString path;
QAction *action;
void setTitle(QString newTitle);
void dropEvent(QDropEvent *event);
void dragEnterEvent(QDragEnterEvent *event);
bool undoButton;
bool redoButton;
bool copyButton;
bool isBreakPoint();
public slots:
void saveProgram();
void saveAllStep(int);
void saveAsProgram();
void cursorMove();
void goToLine(int);
void seekLine(int);
void slotPrint();
void beautifyProgram();
void slotWhitespace(bool);
void slotWrap(bool);
void highlightCurrentLine();
int indentSelection();
void unindentSelection();
void clearBreakPoints();
void toggleBreakPoint();
void updateTitle();
void setEditorRunState(int);
void fileChangedOnDiskSlot(QString);
signals:
void changeStatusBar(QString);
void updateWindowTitle(BasicEdit*);
void addFileToRecentList(QString);
void updateEditorButtons();
void setCurrentEditorTab(BasicEdit*);
protected:
void keyPressEvent(QKeyEvent *);
void resizeEvent(QResizeEvent *event);
private:
const int STATECLEAR = -1;
const int STATEBREAKPOINT = 1;
int currentLine;
int startPos;
int linePos;
QWidget *lineNumberArea;
int rightClickBlockNumber;
int lastLineNumberAreaWidth = -1;
bool fileChangedOnDiskFlag; //used to mark this event during running a program
void handleFileChangedOnDisk();
private slots:
void updateLineNumberAreaWidth(int newBlockCount);
void updateLineNumberArea(const QRect &, int);
void slotUndoAvailable(bool);
void slotRedoAvailable(bool);
void slotCopyAvailable(bool);
void actionWasTriggered();
};
#endif