#ifndef VIVY_SCRIPT_DOCUMENT_VIEW_H
#define VIVY_SCRIPT_DOCUMENT_VIEW_H

#ifndef __cplusplus
#error "This is a C++ header"
#endif

#include "../Lib/Utils.hh"
#include "AbstractDocumentView.hh"
#include <QWidget>
#include <QString>
#include <memory>

namespace Vivy
{
class ScriptEditor;
class ScriptHighlighter;
class ScriptDocument;

class ScriptDocumentView final : public AbstractDocumentView {
    Q_OBJECT
    VIVY_UNMOVABLE_OBJECT(ScriptDocumentView)

public:
    explicit ScriptDocumentView(std::shared_ptr<ScriptDocument>, QWidget *parent = nullptr);

    void closeDocument() noexcept override;
    void openProperties() noexcept override;

    QString getDocumentTabName() const noexcept override;
    QString getDocumentTabToolTip() const noexcept override;
    QIcon getDocumentTabIcon() const noexcept override;
    AbstractDocument *getDocument() const noexcept override;

signals:
    void luaErrorFound(int, QString);

private:
    ScriptEditor *editor{ nullptr };
    ScriptHighlighter *syntax{ nullptr };
    std::shared_ptr<ScriptDocument> document{ nullptr };
    QString lastLuaErrorMsg{};
    int lastLuaErrorLine{ -1 };
};
}

#endif // VIVY_PROPERTY_DOCUMENT_VIEW_H