bgfx/3rdparty/scintilla/qt/ScintillaEdit/ScintillaDocument.h
2015-06-08 17:07:35 -07:00

109 lines
3 KiB
C++

// ScintillaDocument.h
// Wrapper for Scintilla document object so it can be manipulated independently.
// Copyright (c) 2011 Archaeopteryx Software, Inc. d/b/a Wingware
#ifndef SCINTILLADOCUMENT_H
#define SCINTILLADOCUMENT_H
#include <QObject>
class WatcherHelper;
#ifdef SCI_NAMESPACE
namespace Scintilla {
#endif
#ifndef EXPORT_IMPORT_API
#ifdef WIN32
#ifdef MAKING_LIBRARY
#define EXPORT_IMPORT_API __declspec(dllexport)
#else
// Defining dllimport upsets moc
#define EXPORT_IMPORT_API __declspec(dllimport)
//#define EXPORT_IMPORT_API
#endif
#else
#define EXPORT_IMPORT_API
#endif
#endif
class EXPORT_IMPORT_API ScintillaDocument : public QObject
{
Q_OBJECT
void *pdoc;
WatcherHelper *docWatcher;
public:
explicit ScintillaDocument(QObject *parent = 0, void *pdoc_=0);
virtual ~ScintillaDocument();
void *pointer();
int line_from_position(int pos);
bool is_cr_lf(int pos);
bool delete_chars(int pos, int len);
int undo();
int redo();
bool can_undo();
bool can_redo();
void delete_undo_history();
bool set_undo_collection(bool collect_undo);
bool is_collecting_undo();
void begin_undo_action();
void end_undo_action();
void set_save_point();
bool is_save_point();
void set_read_only(bool read_only);
bool is_read_only();
void insert_string(int position, QByteArray &str);
QByteArray get_char_range(int position, int length);
char style_at(int position);
int line_start(int lineno);
int line_end(int lineno);
int line_end_position(int pos);
int length();
int lines_total();
void start_styling(int position, char flags);
bool set_style_for(int length, char style);
int get_end_styled();
void ensure_styled_to(int position);
void set_current_indicator(int indic);
void decoration_fill_range(int position, int value, int fillLength);
int decorations_value_at(int indic, int position);
int decorations_start(int indic, int position);
int decorations_end(int indic, int position);
int get_code_page();
void set_code_page(int code_page);
int get_eol_mode();
void set_eol_mode(int eol_mode);
int move_position_outside_char(int pos, int move_dir, bool check_line_end);
int get_character(int pos); // Calls GetCharacterAndWidth(pos, NULL)
private:
void emit_modify_attempt();
void emit_save_point(bool atSavePoint);
void emit_modified(int position, int modification_type, const QByteArray& text, int length,
int linesAdded, int line, int foldLevelNow, int foldLevelPrev);
void emit_style_needed(int pos);
void emit_lexer_changed();
void emit_error_occurred(int status);
signals:
void modify_attempt();
void save_point(bool atSavePoint);
void modified(int position, int modification_type, const QByteArray& text, int length,
int linesAdded, int line, int foldLevelNow, int foldLevelPrev);
void style_needed(int pos);
void lexer_changed();
void error_occurred(int status);
friend class ::WatcherHelper;
};
#ifdef SCI_NAMESPACE
}
#endif
#endif // SCINTILLADOCUMENT_H