fix: 修复在 Linux 下脚本引擎配置失效问题;修复在 Linux 下崩溃无法再次启动的问题;初步对词法分析尝试;

This commit is contained in:
寂静的羽夏 2024-10-20 21:42:48 +08:00
parent 31c896c9dc
commit ed118376d5
13 changed files with 193 additions and 140 deletions

@ -1 +1 @@
Subproject commit f2034769ce887367e97a5fbaced5b14aa8039fd3
Subproject commit d259eab41fd08fbde83cf1a7b01f4def6a09e895

2
3rdparty/qwindowkit vendored

@ -1 +1 @@
Subproject commit ae0cbbcad47ac5613358354d89176ea9574bed99
Subproject commit f93657fa82bdd37dba68ea962d5e9b2cf4fd4d60

View File

@ -10,10 +10,12 @@ set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(PROJECT_VERSION 1.0.0)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Network Concurrent
PrintSupport LinguistTools)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED
COMPONENTS Widgets Network Concurrent PrintSupport LinguistTools)
find_package(
QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Network Concurrent
PrintSupport Xml LinguistTools)
find_package(
Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Network Concurrent
PrintSupport Xml LinguistTools)
add_definitions(-DWINGHEX_VERSION="${PROJECT_VERSION}"
-DAPP_ORG="WingCloudStudio" -DAPP_NAME="${PROJECT_NAME}")
@ -466,6 +468,7 @@ if(WINGHEX_USE_FRAMELESS)
Qt${QT_VERSION_MAJOR}::PrintSupport
Qt${QT_VERSION_MAJOR}::GuiPrivate
Qt${QT_VERSION_MAJOR}::CorePrivate
Qt${QT_VERSION_MAJOR}::Xml
SingleApplication::SingleApplication
QWKCore
QWKWidgets
@ -484,6 +487,7 @@ else()
Qt${QT_VERSION_MAJOR}::PrintSupport
Qt${QT_VERSION_MAJOR}::GuiPrivate
Qt${QT_VERSION_MAJOR}::CorePrivate
Qt${QT_VERSION_MAJOR}::Xml
SingleApplication::SingleApplication
QHexView
QCodeEditor2

View File

@ -2323,6 +2323,27 @@ Do you want them to be saved?</source>
<source>Close Tab</source>
<translation></translation>
</message>
<message>
<location filename="../../src/class/asbuilder.cpp" line="140"/>
<source>Failed to open script file </source>
<translation></translation>
</message>
<message>
<location filename="../../src/class/asbuilder.cpp" line="408"/>
<location filename="../../src/class/asbuilder.cpp" line="458"/>
<source>Invalid file name for #include; it contains a line-break: </source>
<translation>#include </translation>
</message>
<message>
<location filename="../../src/class/asbuilder.cpp" line="476"/>
<source>Invalid file name for #include; it contains a line-break or unpaired symbol</source>
<translation>#include </translation>
</message>
<message>
<location filename="../../src/class/asbuilder.cpp" line="504"/>
<source>Invalid #pragma directive</source>
<translation>#pragma </translation>
</message>
</context>
<context>
<name>QPathEdit</name>
@ -4293,375 +4314,375 @@ Do you want them to be saved?</source>
<context>
<name>ScriptingDialog</name>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="95"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="96"/>
<source>ScriptEditor</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="176"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="177"/>
<source>ScriptPermissionDenied</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="222"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="223"/>
<source>File</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="223"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="224"/>
<source>Edit</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="225"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="226"/>
<source>Debugger</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="229"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="230"/>
<source>About</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="242"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="243"/>
<source>Basic</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="243"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="244"/>
<source>New</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="246"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="247"/>
<source>OpenF</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="249"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="250"/>
<source>RecentFiles</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="253"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="254"/>
<source>Reload</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="258"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="260"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="259"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="261"/>
<source>Save</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="265"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="266"/>
<source>SaveAs</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="277"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="278"/>
<source>General</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="279"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="280"/>
<source>Undo</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="284"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="285"/>
<source>Redo</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="290"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="291"/>
<source>Cut</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="294"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="295"/>
<source>Copy</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="299"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="300"/>
<source>Paste</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="303"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="304"/>
<source>Delete</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="309"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="310"/>
<source>Lookup</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="310"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="311"/>
<source>Find</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="314"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="315"/>
<source>Replace</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="319"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="320"/>
<source>Goto</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="331"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="332"/>
<source>Display</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="358"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="359"/>
<source>Scale</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="360"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="361"/>
<source>ResetScale</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="366"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="367"/>
<source>Window</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="369"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="457"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="370"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="458"/>
<source>Editor</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="373"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="374"/>
<source>Tools</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="378"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="379"/>
<source>Layout</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="379"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="380"/>
<source>Fullscreen</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="381"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="382"/>
<source>RestoreLayout</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="440"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="441"/>
<source>BreakPoint</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="442"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="443"/>
<source>ToggleBreakPoint</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="445"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="446"/>
<source>AddBreakPoint</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="455"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="456"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="491"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="492"/>
<source>Local</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="497"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="498"/>
<source>Global</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="500"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="501"/>
<source>Variables</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="513"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="514"/>
<source>BreakPoints</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="525"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="526"/>
<source>ConsoleOutput</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="539"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="540"/>
<source>StackTrace</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="553"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="554"/>
<source>Watch</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="642"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="852"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1016"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1052"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1067"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1092"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="643"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="853"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1017"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1057"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1072"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1097"/>
<source>Error</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="643"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="644"/>
<source>Too much opened files</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="991"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1031"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="992"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1032"/>
<source>ChooseFile</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="852"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1016"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1067"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="853"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1017"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1072"/>
<source>FilePermission</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1050"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1055"/>
<source>ReloadSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1052"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1057"/>
<source>ReloadUnSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1079"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1084"/>
<source>ChooseSaveFile</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1065"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1090"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1070"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1095"/>
<source>SaveSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1092"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1097"/>
<source>SaveUnSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1200"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1215"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1205"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1220"/>
<source>CannotSave2RunScript</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="675"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1275"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="676"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1280"/>
<source>ScriptStillRunning</source>
<translation>退</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="224"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="225"/>
<source>View</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="390"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="391"/>
<source>Debug</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="393"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="394"/>
<source>Run</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="398"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="399"/>
<source>RunWithDbg</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="404"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="405"/>
<source>Pause</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="409"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="410"/>
<source>Continue</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="414"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="415"/>
<source>Stop</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="418"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="419"/>
<source>Restart</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="423"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="424"/>
<source>StepInto</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="428"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="429"/>
<source>StepOver</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="432"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="433"/>
<source>StepOut</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="448"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="449"/>
<source>RemoveBreakPoint</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="464"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="465"/>
<source>Info</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="466"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="467"/>
<source>Software</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="469"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="470"/>
<source>Sponsor</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="472"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="473"/>
<source>Wiki</source>
<translation> Wiki</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="475"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="476"/>
<source>AboutQT</source>
<translation> QT</translation>
</message>
@ -4941,30 +4962,6 @@ Do you want them to be saved?</source>
<translation></translation>
</message>
</context>
<context>
<name>asBuilder</name>
<message>
<location filename="../../src/class/asbuilder.cpp" line="139"/>
<source>Failed to open script file </source>
<translation></translation>
</message>
<message>
<location filename="../../src/class/asbuilder.cpp" line="405"/>
<location filename="../../src/class/asbuilder.cpp" line="455"/>
<source>Invalid file name for #include; it contains a line-break: </source>
<translation>#include </translation>
</message>
<message>
<location filename="../../src/class/asbuilder.cpp" line="472"/>
<source>Invalid file name for #include; it contains a line-break or unpaired symbol</source>
<translation>#include </translation>
</message>
<message>
<location filename="../../src/class/asbuilder.cpp" line="499"/>
<source>Invalid #pragma directive</source>
<translation>#pragma </translation>
</message>
</context>
<context>
<name>asDebugger</name>
<message>

View File

@ -13,7 +13,7 @@
AppManager *AppManager::_instance = nullptr;
AppManager::AppManager(int &argc, char *argv[])
: SingleApplication(argc, argv) {
: SingleApplication(argc, argv, true) {
ASSERT_SINGLETON;
setApplicationName(APP_NAME);

View File

@ -3,10 +3,11 @@
#include <QDir>
#include <QFile>
#include <QFileInfo>
#include <QObject>
BEGIN_AS_NAMESPACE
asBuilder::asBuilder(QObject *parent) : QObject(parent) {
asBuilder::asBuilder() {
engine = nullptr;
module = nullptr;
@ -136,7 +137,8 @@ int asBuilder::LoadScriptSection(const QString &filename) {
if (!f.open(QFile::ReadOnly)) {
// Write a message to the engine's message callback
auto msg = tr("Failed to open script file ") + QStringLiteral("'") +
auto msg = QObject::tr("Failed to open script file ") +
QStringLiteral("'") +
QFileInfo(filename).absoluteFilePath() + QStringLiteral("'");
engine->WriteMessage(filename.toUtf8(), 0, 0, asMSGTYPE_ERROR,
msg.toUtf8());
@ -402,11 +404,12 @@ int asBuilder::ProcessScriptSection(const QByteArray &script, int length,
if (p >= 0) {
// TODO: Show the correct line number for the
// error
auto str = tr("Invalid file name for #include; "
"it contains a line-break: ") +
QStringLiteral("'") +
includefile.left(p) +
QStringLiteral("'");
auto str =
QObject::tr(
"Invalid file name for #include; "
"it contains a line-break: ") +
QStringLiteral("'") + includefile.left(p) +
QStringLiteral("'");
engine->WriteMessage(sectionname.toUtf8(), 0, 0,
asMSGTYPE_ERROR,
str.toUtf8());
@ -452,8 +455,9 @@ int asBuilder::ProcessScriptSection(const QByteArray &script, int length,
// TODO: Show the correct line number for
// the error
auto str =
tr("Invalid file name for #include; "
"it contains a line-break: ") +
QObject::tr(
"Invalid file name for #include; "
"it contains a line-break: ") +
QStringLiteral("'") +
includefile.left(p) +
QStringLiteral("'");
@ -469,9 +473,10 @@ int asBuilder::ProcessScriptSection(const QByteArray &script, int length,
OverwriteCode(start, pos - start);
}
} else {
auto str = tr("Invalid file name for #include; "
"it contains a line-break or "
"unpaired symbol");
auto str = QObject::tr(
"Invalid file name for #include; "
"it contains a line-break or "
"unpaired symbol");
engine->WriteMessage(sectionname.toUtf8(), 0, 0,
asMSGTYPE_ERROR,
str.toUtf8());
@ -496,7 +501,8 @@ int asBuilder::ProcessScriptSection(const QByteArray &script, int length,
// TODO: Report the correct line number
engine->WriteMessage(
sectionname.toUtf8(), 0, 0, asMSGTYPE_ERROR,
tr("Invalid #pragma directive").toUtf8());
QObject::tr("Invalid #pragma directive")
.toUtf8());
return r;
}

View File

@ -30,7 +30,6 @@
#endif
#include <QMap>
#include <QObject>
#include <QSet>
#include <QVector>
@ -57,10 +56,9 @@ typedef int (*PRAGMACALLBACK_t)(const QByteArray &pragmaText,
// Helper class for loading and pre-processing script files to
// support include directives and metadata declarations
class asBuilder : public QObject {
Q_OBJECT
class asBuilder {
public:
explicit asBuilder(QObject *parent = nullptr);
explicit asBuilder();
// Start a new module
int StartNewModule(asIScriptEngine *engine, const char *moduleName);

View File

@ -66,7 +66,7 @@ LanguageManager::LanguageManager() {
#else
if (p->country() == _defaultLocale.country() &&
#endif
p->language() == p->language() &&
p->language() == _defaultLocale.language() &&
p->script() == _defaultLocale.script()) {
found = true;
break;

View File

@ -1,5 +1,36 @@
#include "qasparser.h"
QAsParser::QAsParser(QObject *parent) : QObject(parent) {}
#include "AngelScript/sdk/angelscript/source/as_builder.h"
#include "AngelScript/sdk/angelscript/source/as_parser.h"
#include "codemodel/qcodemodel.h"
QAsParser::QAsParser(asIScriptEngine *engine) : asBuilder(), _engine(engine) {}
QAsParser::~QAsParser() {}
bool QAsParser::parse(const QString &filename) {
if (StartNewModule(_engine, "as_parser") != 0) {
return false;
}
auto ret = LoadScriptSection(filename);
if (ret != 0) {
return false;
}
ClearAll();
auto mod = dynamic_cast<asCModule *>(GetModule());
asCParser parser(mod->m_builder);
m_code.reset(new asCScriptCode);
m_code->SetCode("as_parser", modifiedScript.data(), true);
parser.ParseScript(m_code.get());
auto nodes = parser.GetScriptNode();
QCodeModel model;
return true;
}

View File

@ -1,13 +1,24 @@
#ifndef _QAS_PARSER_H_
#define _QAS_PARSER_H_
#include <QObject>
#include "class/asbuilder.h"
class QAsParser : public QObject {
Q_OBJECT
#include <QScopedPointer>
class asCScriptCode;
class QAsParser : protected asBuilder {
public:
explicit QAsParser(QObject *parent = nullptr);
explicit QAsParser(asIScriptEngine *engine);
virtual ~QAsParser();
public:
bool parse(const QString &filename);
private:
asIScriptEngine *_engine;
QScopedPointer<asCScriptCode> m_code;
};
#endif // !_QCPP_PARSER_H_

View File

@ -32,7 +32,7 @@ class QCM_EXPORT QCodeModel : public QAbstractItemModel {
public:
enum ExtraRoles { TypeRole = Qt::UserRole, VisibilityRole };
QCodeModel(QObject *p = 0);
QCodeModel(QObject *p = nullptr);
virtual ~QCodeModel();
QVariant data(const QModelIndex &index, int role) const;

View File

@ -5,6 +5,7 @@
#include "aboutsoftwaredialog.h"
#include "class/ascompletion.h"
#include "class/languagemanager.h"
#include "class/qasparser.h"
#include "class/qkeysequences.h"
#include "class/settingmanager.h"
#include "class/skinmanager.h"
@ -1033,6 +1034,10 @@ void ScriptingDialog::on_openfile() {
if (!filename.isEmpty()) {
m_lastusedpath = QFileInfo(filename).absoluteDir().absolutePath();
openFile(filename);
// TODO test
// QAsParser parser(m_consoleout->machine()->engine());
// parser.parse(filename);
}
RecentFileManager::RecentInfo info;

View File

@ -5,6 +5,7 @@ void RegisterColor(asIScriptEngine *engine) {
// Register the QColor type
int r = engine->RegisterObjectType("color", sizeof(QColor),
asOBJ_VALUE | asOBJ_POD |
asOBJ_APP_CLASS_ALLINTS |
asGetTypeTraits<QColor>());
Q_ASSERT(r >= 0);