1// @file ScintillaDocument.h
2// Wrapper for Scintilla document object so it can be manipulated independently.
3// Copyright (c) 2011 Archaeopteryx Software, Inc. d/b/a Wingware
4
5#ifndef SCINTILLADOCUMENT_H
6#define SCINTILLADOCUMENT_H
7
8#include <QObject>
9
10class WatcherHelper;
11
12#ifndef EXPORT_IMPORT_API
13#ifdef WIN32
14#ifdef MAKING_LIBRARY
15#define EXPORT_IMPORT_API __declspec(dllexport)
16#else
17// Defining dllimport upsets moc
18#define EXPORT_IMPORT_API __declspec(dllimport)
19//#define EXPORT_IMPORT_API
20#endif
21#else
22#define EXPORT_IMPORT_API
23#endif
24#endif
25
26class EXPORT_IMPORT_API ScintillaDocument : public QObject
27{
28 Q_OBJECT
29
30 void *pdoc;
31 WatcherHelper *docWatcher;
32
33public:
34 explicit ScintillaDocument(QObject *parent = 0, void *pdoc_=0);
35 virtual ~ScintillaDocument();
36 void *pointer();
37
38 int line_from_position(int pos);
39 bool is_cr_lf(int pos);
40 bool delete_chars(int pos, int len);
41 int undo();
42 int redo();
43 bool can_undo();
44 bool can_redo();
45 void delete_undo_history();
46 bool set_undo_collection(bool collect_undo);
47 bool is_collecting_undo();
48 void begin_undo_action();
49 void end_undo_action();
50 void set_save_point();
51 bool is_save_point();
52 void set_read_only(bool read_only);
53 bool is_read_only();
54 void insert_string(int position, QByteArray &str);
55 QByteArray get_char_range(int position, int length);
56 char style_at(int position);
57 int line_start(int lineno);
58 int line_end(int lineno);
59 int line_end_position(int pos);
60 int length();
61 int lines_total();
62 void start_styling(int position);
63 bool set_style_for(int length, char style);
64 int get_end_styled();
65 void ensure_styled_to(int position);
66 void set_current_indicator(int indic);
67 void decoration_fill_range(int position, int value, int fillLength);
68 int decorations_value_at(int indic, int position);
69 int decorations_start(int indic, int position);
70 int decorations_end(int indic, int position);
71 int get_code_page();
72 void set_code_page(int code_page);
73 int get_eol_mode();
74 void set_eol_mode(int eol_mode);
75 int move_position_outside_char(int pos, int move_dir, bool check_line_end);
76
77 int get_character(int pos); // Calls GetCharacterAndWidth(pos, NULL)
78
79signals:
80 void modify_attempt();
81 void save_point(bool atSavePoint);
82 void modified(int position, int modification_type, const QByteArray &text, int length,
83 int linesAdded, int line, int foldLevelNow, int foldLevelPrev);
84 void style_needed(int pos);
85 void lexer_changed();
86 void error_occurred(int status);
87
88 friend class ::WatcherHelper;
89};
90
91#endif /* SCINTILLADOCUMENT_H */
92