RedPanda-CPP/RedPandaIDE/editor.h

64 lines
1.6 KiB
C
Raw Normal View History

2021-04-06 23:10:57 +08:00
#ifndef EDITOR_H
#define EDITOR_H
#include <QObject>
#include <utils.h>
#include <QTabWidget>
#include <Qsci/qsciscintilla.h>
2021-04-09 17:48:25 +08:00
class Editor : public QsciScintilla
2021-04-06 23:10:57 +08:00
{
Q_OBJECT
public:
2021-04-09 17:48:25 +08:00
explicit Editor(QWidget *parent, const QString& filename,
const QByteArray& encoding,
2021-04-09 17:48:25 +08:00
bool inProject, bool isNew,QTabWidget* parentPageControl);
2021-04-06 23:10:57 +08:00
2021-04-07 22:44:08 +08:00
~Editor();
//tell the compiler to prohibit copy/moving editor objects ( we should only use pointers to the editor object)
Editor(const Editor&) = delete;
Editor(const Editor&&) = delete;
Editor& operator=(const Editor&) = delete;
Editor& operator=(const Editor&&) = delete;
const QByteArray& encodingOption() const;
void setEncodingOption(const QByteArray& encoding);
const QByteArray& fileEncoding() const;
2021-04-06 23:10:57 +08:00
const QString& filename();
bool inProject() const;
bool isNew() const;
void loadFile();
2021-04-07 21:13:15 +08:00
void saveFile(const QString& filename);
2021-04-09 10:08:05 +08:00
bool save(bool force=false, bool reparse=true);
bool saveAs();
2021-04-06 23:10:57 +08:00
2021-04-09 10:08:05 +08:00
QTabWidget* pageControl();
void updateCaption(const QString& newCaption=QString());
2021-04-06 23:10:57 +08:00
signals:
protected slots:
void onModificationChanged(bool status);
2021-04-11 13:55:31 +08:00
void onCursorPositionChanged(int line, int index);
void onLinesChanged();
2021-04-06 23:10:57 +08:00
private:
QByteArray mEncodingOption; // the encoding type set by the user
QByteArray mFileEncoding; // the real encoding of the file (auto detected)
2021-04-06 23:10:57 +08:00
QString mFilename;
QTabWidget* mParentPageControl;
bool mInProject;
bool mIsNew;
2021-04-09 17:48:25 +08:00
// QWidget interface
protected:
void wheelEvent(QWheelEvent *event) override;
2021-04-06 23:10:57 +08:00
};
#endif // EDITOR_H