2
JuffEd - An advanced text editor
3
Copyright 2007-2009 Mikhail Murzin
5
This program is free software; you can redistribute it and/or
6
modify it under the terms of the GNU General Public License
7
version 2 as published by the Free Software Foundation.
9
This program is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
GNU General Public License for more details.
14
You should have received a copy of the GNU General Public License
15
along with this program; if not, write to the Free Software
16
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19
#ifndef _JUFF_DOCUMENT_H_
20
#define _JUFF_DOCUMENT_H_
26
#include <QtCore/QString>
27
#include <QtCore/QDateTime>
28
#include <QtCore/QMutex>
29
#include <QtCore/QTimer>
34
class Document : public QObject {
36
friend class Juff::DocHandler;
38
Document(const QString&);
41
QString fileName() const;
44
virtual void init() {}
45
virtual bool isModified() const = 0;
46
virtual void setModified(bool) = 0;
47
virtual QWidget* widget() = 0;
49
virtual void setFileName(const QString& fileName);
50
virtual bool save(const QString&, const QString&, QString& err);
51
virtual void print() = 0;
52
virtual void reload() = 0;
54
// TODO : make the following methods pure virtual
55
virtual void undo() {}
56
virtual void redo() {}
58
virtual void copy() {}
59
virtual void paste() {}
61
virtual void find(const QString&, const DocFindFlags&) {}
62
virtual void replace(const QString&, const QString&, const DocFindFlags&) {}
64
virtual QString text() const { return ""; }
65
virtual QString text(int) const { return ""; }
66
virtual QString wordUnderCursor() const { return ""; }
67
virtual QString selectedText() const { return ""; }
68
virtual void getCursorPos(int&, int&) const {}
69
virtual void setCursorPos(int, int) {}
70
virtual void getSelection(int&, int&, int&, int&) const {}
71
virtual void setSelection(int, int, int, int) {}
72
virtual void insertText(const QString&) {}
73
virtual void removeSelectedText() {}
74
virtual void replaceSelectedText(const QString&) {}
75
virtual int curLine() const { return 0; }
76
virtual void gotoLine(int) {}
77
virtual int curScrollPos() const { return 0; }
78
virtual void setScrollPos(int) {}
79
virtual int lineCount() const { return 0; }
80
virtual QString charset() const { return ""; }
81
virtual void setCharset(const QString&, bool confirm = false) {}
83
virtual void applySettings() {}
86
* Do not reimplement this method anywhere but at NullDoc class!
88
virtual bool isNull() const;
90
virtual void updateActivated() {}
91
virtual void addContextMenuActions(const ActionList&) {}
95
void fileNameChanged(const QString& oldFileName);
96
void cursorPositionChanged(int, int);
97
void contextMenuCalled(int, int);
98
void linesCountChanged(int);
101
void checkLastModified();
105
QString guessCharset() const;
109
QDateTime lastModified_;
110
QTimer* modCheckTimer_;
111
QMutex checkingMutex_;