mirror of https://github.com/OpenMW/openmw.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.6 KiB
C++
73 lines
1.6 KiB
C++
#ifndef CSV_WORLD_SCRIPTERRORTABLE_H
|
|
#define CSV_WORLD_SCRIPTERRORTABLE_H
|
|
|
|
#include <QTableWidget>
|
|
|
|
#include <string>
|
|
|
|
#include <components/compiler/errorhandler.hpp>
|
|
#include <components/compiler/extensions.hpp>
|
|
|
|
#include "../../model/doc/messages.hpp"
|
|
#include "../../model/world/scriptcontext.hpp"
|
|
|
|
namespace Compiler
|
|
{
|
|
struct TokenLoc;
|
|
}
|
|
|
|
namespace CSMDoc
|
|
{
|
|
class Document;
|
|
}
|
|
|
|
namespace CSMPrefs
|
|
{
|
|
class Setting;
|
|
}
|
|
|
|
namespace CSVWorld
|
|
{
|
|
class ScriptErrorTable : public QTableWidget, private Compiler::ErrorHandler
|
|
{
|
|
Q_OBJECT
|
|
|
|
Compiler::Extensions mExtensions;
|
|
CSMWorld::ScriptContext mContext;
|
|
|
|
void report(const std::string& message, const Compiler::TokenLoc& loc, Type type) override;
|
|
///< Report error to the user.
|
|
|
|
void report(const std::string& message, Type type) override;
|
|
///< Report a file related error
|
|
|
|
void addMessage(const std::string& message, CSMDoc::Message::Severity severity, int line = -1, int column = -1);
|
|
|
|
void setWarningsMode(const std::string& value);
|
|
|
|
public:
|
|
ScriptErrorTable(const CSMDoc::Document& document, QWidget* parent = nullptr);
|
|
|
|
void update(const std::string& source);
|
|
|
|
void clear();
|
|
|
|
/// Clear local variable cache for \a script.
|
|
///
|
|
/// \return Were there any locals that needed clearing?
|
|
bool clearLocals(const std::string& script);
|
|
|
|
private slots:
|
|
|
|
void settingChanged(const CSMPrefs::Setting* setting);
|
|
|
|
void cellClicked(int row, int column);
|
|
|
|
signals:
|
|
|
|
void highlightError(int line, int column);
|
|
};
|
|
}
|
|
|
|
#endif
|