class jnc::EditBase

class EditBase: public QPlainTextEdit {
public:
    // properties

    QString
    fileName;

    bool
    isReadOnly;

    bool
    isLineNumberMarginEnabled;

    int
    lineNumberMarginWidth;

    bool
    isCurrentLineHighlightingEnabled;

    bool
    isSyntaxHighlightingEnabled;

    int
    tabWidth;

    // construction

    EditBase(QWidget* parent);
    ~EditBase();

    // methods

    QString
    fileName();

    void
    setFileName(const QString& fileName);

    void
    setReadOnly(bool isReadOnly);

    bool
    isLineNumberMarginEnabled();

    void
    enableLineNumberMargin(bool isEnabled);

    int
    lineNumberMarginWidth();

    bool
    isCurrentLineHighlightingEnabled();

    void
    enableCurrentLineHighlighting(bool isEnabled);

    bool
    isSyntaxHighlightingEnabled();

    void
    enableSyntaxHighlighting(bool isEnabled);

    int
    tabWidth();

    void
    setTabWidth(int width);

    const EditTheme*
    theme();

    void
    setTheme(const EditTheme* theme);

    void
    setTextCursorLineCol(
        int line,
        int col
    );

    void
    highlightLineTemp(
        int line,
        const QColor& backColor,
        const QColor& textColor = QColor::Invalid
    );
};