fix: 修复代码格式化支持导致的编辑器编辑缺陷;修复脚本字典类带来的缺陷;

This commit is contained in:
寂静的羽夏 2025-02-14 21:34:01 +08:00
parent 293cc69a24
commit a09caae797
18 changed files with 830 additions and 475 deletions

View File

@ -740,6 +740,10 @@ void QDocument::setLineEnding(LineEnding le) {
emit lineEndingChanged(le);
}
QString QDocument::lineEndingString() const {
return m_impl->m_lineEndingString;
}
/*!
\return the font used by ALL documents to render their content

View File

@ -120,6 +120,7 @@ public:
LineEnding lineEnding() const;
LineEnding originalLineEnding() const;
void setLineEnding(LineEnding le);
QString lineEndingString() const;
QDateTime lastModified() const;
void setLastModified(const QDateTime &d);

View File

@ -469,10 +469,7 @@ void QEditor::init(bool actions) {
a = new QAction(QIcon(":/qeditor/paste.png"), tr("&Paste"), this);
a->setObjectName("paste");
// aPaste->setEnabled(QApplication::clipboard()->text().count());
Q_SHORTCUT(a, "Ctrl+V", "Edit");
connect(QApplication::clipboard(), SIGNAL(dataChanged()), this,
SLOT(checkClipboard()));
connect(a, SIGNAL(triggered()), this, SLOT(paste()));

BIN
images/lockon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

View File

@ -2597,103 +2597,103 @@ Restart from the begining ?</source>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="430"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="934"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="1988"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="931"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="1985"/>
<source>&amp;Undo</source>
<translation>&amp;U</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="439"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="935"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="1998"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="932"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="1995"/>
<source>&amp;Redo</source>
<translation>&amp;R</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="452"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="937"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2014"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="934"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2011"/>
<source>Cu&amp;t</source>
<translation>&amp;T</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="461"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="938"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2025"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="935"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2022"/>
<source>&amp;Copy</source>
<translation>&amp;C</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="470"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="939"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2036"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="936"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2033"/>
<source>&amp;Paste</source>
<translation>&amp;P</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="485"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="941"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="482"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="938"/>
<source>&amp;Indent</source>
<translation>&amp;I</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="492"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="942"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="489"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="939"/>
<source>&amp;Unindent</source>
<translation>&amp;U</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="503"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="943"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="500"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="940"/>
<source>Co&amp;mment</source>
<translation>&amp;M</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="510"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="944"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="507"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="941"/>
<source>Unc&amp;omment</source>
<translation>&amp;O</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="521"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="946"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="518"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="943"/>
<source>&amp;Select all</source>
<translation>&amp;S</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="532"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="948"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2051"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="529"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="945"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2048"/>
<source>&amp;Find</source>
<translation>&amp;F</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="949"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2059"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="946"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2056"/>
<source>Fin&amp;d next</source>
<translation>&amp;D</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="539"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="950"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2067"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="536"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="947"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2064"/>
<source>&amp;Replace</source>
<translation>&amp;R</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="550"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="952"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2078"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="547"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="949"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2075"/>
<source>&amp;Goto line...</source>
<translation>&amp;G</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="684"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="681"/>
<source>Conflict!</source>
<translation></translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="685"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="682"/>
<source>%1
has been modified by another application.
Press &quot;Save&quot; to overwrite the file on disk
@ -2707,12 +2707,12 @@ Press &quot;Discard&quot; to ignore this warning.
</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="809"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="806"/>
<source>File changed</source>
<translation></translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="810"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="807"/>
<source>%1
has been modified by another application.
@ -2725,7 +2725,7 @@ Do you wish to keep up to date by reloading the file?</source>
</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2917"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2914"/>
<source>untitled</source>
<translation></translation>
</message>
@ -4798,421 +4798,421 @@ Do you wish to keep up to date by reloading the file?</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="195"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="199"/>
<source>ScriptPermissionDenied</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="296"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="300"/>
<source>File</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="297"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="301"/>
<source>Edit</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="299"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="303"/>
<source>Debugger</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="301"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="305"/>
<source>Setting</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="302"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="306"/>
<source>About</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="318"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="322"/>
<source>InvalidSourceFile</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="327"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="331"/>
<source>Basic</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="328"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="332"/>
<source>New</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="331"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="335"/>
<source>OpenF</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="334"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="338"/>
<source>RecentFiles</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="338"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="342"/>
<source>Reload</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="343"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="345"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="347"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="349"/>
<source>Save</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="350"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="354"/>
<source>SaveAs</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="362"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="366"/>
<source>General</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="364"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="368"/>
<source>Undo</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="369"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="373"/>
<source>Redo</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="375"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="379"/>
<source>Cut</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="379"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="383"/>
<source>Copy</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="384"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="388"/>
<source>Paste</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="388"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="392"/>
<source>Delete</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="394"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="398"/>
<source>Lookup</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="395"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="399"/>
<source>Find</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="399"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="403"/>
<source>Replace</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="404"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="408"/>
<source>Goto</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="411"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="580"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="415"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="584"/>
<source>Format</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="412"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="416"/>
<source>CodeFormat</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="422"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="426"/>
<source>Display</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="449"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="453"/>
<source>Scale</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="451"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="455"/>
<source>ResetScale</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="457"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="461"/>
<source>Window</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="460"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="575"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="464"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="579"/>
<source>Editor</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="464"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="468"/>
<source>Tools</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="469"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="473"/>
<source>Layout</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="470"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="474"/>
<source>Fullscreen</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="472"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="476"/>
<source>RestoreLayout</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="537"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="541"/>
<source>BreakPoint</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="539"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="543"/>
<source>ToggleBreakPoint</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="542"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="546"/>
<source>AddBreakPoint</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="573"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="577"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="578"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="582"/>
<source>ClangFormat</source>
<translation>Clang Format</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="613"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="617"/>
<source>Local</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="619"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="623"/>
<source>Global</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="622"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="626"/>
<source>Variables</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="633"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="637"/>
<source>ConsoleOutput</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="647"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="651"/>
<source>StackTrace</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="659"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="663"/>
<source>Symbol</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="745"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="993"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1181"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1217"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1237"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1265"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="749"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="997"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1191"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1227"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1247"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1275"/>
<source>Error</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="746"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="750"/>
<source>Too much opened files</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="770"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="774"/>
<source>ConfirmSave</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="799"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="803"/>
<source>ScriptSaveFailedClose</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="946"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="950"/>
<source>Debuging...</source>
<translation>...</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="949"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="953"/>
<source>Running...</source>
<translation>...</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1155"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1196"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1165"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1206"/>
<source>ChooseFile</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="993"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1181"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1237"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="997"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1191"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1247"/>
<source>FilePermission</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1215"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1225"/>
<source>ReloadSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1217"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1227"/>
<source>ReloadUnSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1254"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1264"/>
<source>ChooseSaveFile</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1235"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1263"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1245"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1273"/>
<source>SaveSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1265"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1275"/>
<source>SaveUnSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1341"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1351"/>
<source>FormatCodeFailed</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1391"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1407"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1401"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1417"/>
<source>CannotSave2RunScript</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="785"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1467"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="789"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1477"/>
<source>ScriptStillRunning</source>
<translation>退</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="269"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="273"/>
<source>ConfirmScriptSave</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="298"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="302"/>
<source>View</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="483"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="487"/>
<source>Debug</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="485"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="489"/>
<source>Run</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="491"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="495"/>
<source>RunWithDbg</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="498"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="502"/>
<source>Pause</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="502"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="506"/>
<source>Continue</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="509"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="513"/>
<source>Stop</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="514"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="518"/>
<source>Restart</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="518"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="522"/>
<source>StepInto</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="523"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="527"/>
<source>StepOver</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="528"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="532"/>
<source>StepOut</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="545"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="549"/>
<source>RemoveBreakPoint</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="586"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="590"/>
<source>Info</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="588"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="592"/>
<source>Software</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="591"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="595"/>
<source>Sponsor</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="594"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="598"/>
<source>Wiki</source>
<translation> Wiki</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="597"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="601"/>
<source>AboutQT</source>
<translation> QT</translation>
</message>
@ -5389,39 +5389,39 @@ Do you wish to keep up to date by reloading the file?</source>
<translation></translation>
</message>
<message>
<location filename="../../src/class/wingcstruct.cpp" line="891"/>
<location filename="../../src/class/wingcstruct.cpp" line="903"/>
<location filename="../../src/class/wingcstruct.cpp" line="916"/>
<location filename="../../src/class/wingcstruct.cpp" line="925"/>
<location filename="../../src/class/wingcstruct.cpp" line="937"/>
<location filename="../../src/class/wingcstruct.cpp" line="945"/>
<location filename="../../src/class/wingcstruct.cpp" line="952"/>
<location filename="../../src/class/wingcstruct.cpp" line="964"/>
<location filename="../../src/class/wingcstruct.cpp" line="976"/>
<location filename="../../src/class/wingcstruct.cpp" line="983"/>
<location filename="../../src/class/wingcstruct.cpp" line="995"/>
<location filename="../../src/class/wingcstruct.cpp" line="1007"/>
<location filename="../../src/class/wingcstruct.cpp" line="1032"/>
<location filename="../../src/class/wingcstruct.cpp" line="1052"/>
<location filename="../../src/class/wingcstruct.cpp" line="1072"/>
<location filename="../../src/class/wingcstruct.cpp" line="1093"/>
<location filename="../../src/class/wingcstruct.cpp" line="1105"/>
<location filename="../../src/class/wingcstruct.cpp" line="861"/>
<location filename="../../src/class/wingcstruct.cpp" line="873"/>
<location filename="../../src/class/wingcstruct.cpp" line="886"/>
<location filename="../../src/class/wingcstruct.cpp" line="895"/>
<location filename="../../src/class/wingcstruct.cpp" line="907"/>
<location filename="../../src/class/wingcstruct.cpp" line="915"/>
<location filename="../../src/class/wingcstruct.cpp" line="922"/>
<location filename="../../src/class/wingcstruct.cpp" line="934"/>
<location filename="../../src/class/wingcstruct.cpp" line="946"/>
<location filename="../../src/class/wingcstruct.cpp" line="953"/>
<location filename="../../src/class/wingcstruct.cpp" line="965"/>
<location filename="../../src/class/wingcstruct.cpp" line="977"/>
<location filename="../../src/class/wingcstruct.cpp" line="1002"/>
<location filename="../../src/class/wingcstruct.cpp" line="1022"/>
<location filename="../../src/class/wingcstruct.cpp" line="1042"/>
<location filename="../../src/class/wingcstruct.cpp" line="1063"/>
<location filename="../../src/class/wingcstruct.cpp" line="1075"/>
<source>InvalidParamsCount</source>
<translation></translation>
</message>
<message>
<location filename="../../src/class/wingcstruct.cpp" line="895"/>
<location filename="../../src/class/wingcstruct.cpp" line="907"/>
<location filename="../../src/class/wingcstruct.cpp" line="929"/>
<location filename="../../src/class/wingcstruct.cpp" line="956"/>
<location filename="../../src/class/wingcstruct.cpp" line="968"/>
<location filename="../../src/class/wingcstruct.cpp" line="987"/>
<location filename="../../src/class/wingcstruct.cpp" line="999"/>
<location filename="../../src/class/wingcstruct.cpp" line="1019"/>
<location filename="../../src/class/wingcstruct.cpp" line="1041"/>
<location filename="../../src/class/wingcstruct.cpp" line="1061"/>
<location filename="../../src/class/wingcstruct.cpp" line="865"/>
<location filename="../../src/class/wingcstruct.cpp" line="877"/>
<location filename="../../src/class/wingcstruct.cpp" line="899"/>
<location filename="../../src/class/wingcstruct.cpp" line="926"/>
<location filename="../../src/class/wingcstruct.cpp" line="938"/>
<location filename="../../src/class/wingcstruct.cpp" line="957"/>
<location filename="../../src/class/wingcstruct.cpp" line="969"/>
<location filename="../../src/class/wingcstruct.cpp" line="989"/>
<location filename="../../src/class/wingcstruct.cpp" line="1011"/>
<location filename="../../src/class/wingcstruct.cpp" line="1031"/>
<location filename="../../src/class/wingcstruct.cpp" line="1051"/>
<location filename="../../src/class/wingcstruct.cpp" line="1081"/>
<location filename="../../src/class/wingcstruct.cpp" line="1111"/>
<source>InvalidParam</source>
<translation></translation>
</message>

View File

@ -2597,103 +2597,103 @@ Restart from the begining ?</source>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="430"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="934"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="1988"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="931"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="1985"/>
<source>&amp;Undo</source>
<translation>&amp;U</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="439"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="935"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="1998"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="932"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="1995"/>
<source>&amp;Redo</source>
<translation>&amp;R</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="452"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="937"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2014"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="934"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2011"/>
<source>Cu&amp;t</source>
<translation>&amp;T</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="461"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="938"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2025"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="935"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2022"/>
<source>&amp;Copy</source>
<translation>&amp;C</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="470"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="939"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2036"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="936"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2033"/>
<source>&amp;Paste</source>
<translation>&amp;P</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="485"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="941"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="482"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="938"/>
<source>&amp;Indent</source>
<translation>&amp;I</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="492"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="942"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="489"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="939"/>
<source>&amp;Unindent</source>
<translation>&amp;U</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="503"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="943"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="500"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="940"/>
<source>Co&amp;mment</source>
<translation>&amp;M</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="510"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="944"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="507"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="941"/>
<source>Unc&amp;omment</source>
<translation>&amp;O</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="521"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="946"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="518"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="943"/>
<source>&amp;Select all</source>
<translation>&amp;S</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="532"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="948"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2051"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="529"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="945"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2048"/>
<source>&amp;Find</source>
<translation>&amp;F</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="949"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2059"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="946"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2056"/>
<source>Fin&amp;d next</source>
<translation>&amp;D</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="539"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="950"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2067"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="536"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="947"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2064"/>
<source>&amp;Replace</source>
<translation>&amp;R</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="550"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="952"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2078"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="547"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="949"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2075"/>
<source>&amp;Goto line...</source>
<translation>&amp;G</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="684"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="681"/>
<source>Conflict!</source>
<translation></translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="685"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="682"/>
<source>%1
has been modified by another application.
Press &quot;Save&quot; to overwrite the file on disk
@ -2707,12 +2707,12 @@ Press &quot;Discard&quot; to ignore this warning.
</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="809"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="806"/>
<source>File changed</source>
<translation></translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="810"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="807"/>
<source>%1
has been modified by another application.
@ -2725,7 +2725,7 @@ Do you wish to keep up to date by reloading the file?</source>
</translation>
</message>
<message>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2917"/>
<location filename="../../3rdparty/qcodeedit2/lib/qeditor.cpp" line="2914"/>
<source>untitled</source>
<translation></translation>
</message>
@ -4798,421 +4798,421 @@ Do you wish to keep up to date by reloading the file?</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="195"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="199"/>
<source>ScriptPermissionDenied</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="296"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="300"/>
<source>File</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="297"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="301"/>
<source>Edit</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="299"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="303"/>
<source>Debugger</source>
<translation>調</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="301"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="305"/>
<source>Setting</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="302"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="306"/>
<source>About</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="318"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="322"/>
<source>InvalidSourceFile</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="327"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="331"/>
<source>Basic</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="328"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="332"/>
<source>New</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="331"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="335"/>
<source>OpenF</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="334"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="338"/>
<source>RecentFiles</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="338"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="342"/>
<source>Reload</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="343"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="345"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="347"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="349"/>
<source>Save</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="350"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="354"/>
<source>SaveAs</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="362"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="366"/>
<source>General</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="364"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="368"/>
<source>Undo</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="369"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="373"/>
<source>Redo</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="375"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="379"/>
<source>Cut</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="379"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="383"/>
<source>Copy</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="384"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="388"/>
<source>Paste</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="388"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="392"/>
<source>Delete</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="394"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="398"/>
<source>Lookup</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="395"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="399"/>
<source>Find</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="399"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="403"/>
<source>Replace</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="404"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="408"/>
<source>Goto</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="411"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="580"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="415"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="584"/>
<source>Format</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="412"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="416"/>
<source>CodeFormat</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="422"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="426"/>
<source>Display</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="449"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="453"/>
<source>Scale</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="451"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="455"/>
<source>ResetScale</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="457"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="461"/>
<source>Window</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="460"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="575"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="464"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="579"/>
<source>Editor</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="464"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="468"/>
<source>Tools</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="469"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="473"/>
<source>Layout</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="470"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="474"/>
<source>Fullscreen</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="472"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="476"/>
<source>RestoreLayout</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="537"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="541"/>
<source>BreakPoint</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="539"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="543"/>
<source>ToggleBreakPoint</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="542"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="546"/>
<source>AddBreakPoint</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="573"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="577"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="578"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="582"/>
<source>ClangFormat</source>
<translation>Clang Format</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="613"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="617"/>
<source>Local</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="619"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="623"/>
<source>Global</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="622"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="626"/>
<source>Variables</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="633"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="637"/>
<source>ConsoleOutput</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="647"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="651"/>
<source>StackTrace</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="659"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="663"/>
<source>Symbol</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="745"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="993"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1181"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1217"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1237"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1265"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="749"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="997"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1191"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1227"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1247"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1275"/>
<source>Error</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="746"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="750"/>
<source>Too much opened files</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="770"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="774"/>
<source>ConfirmSave</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="799"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="803"/>
<source>ScriptSaveFailedClose</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="946"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="950"/>
<source>Debuging...</source>
<translation>調...</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="949"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="953"/>
<source>Running...</source>
<translation>...</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1155"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1196"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1165"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1206"/>
<source>ChooseFile</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="993"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1181"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1237"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="997"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1191"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1247"/>
<source>FilePermission</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1215"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1225"/>
<source>ReloadSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1217"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1227"/>
<source>ReloadUnSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1254"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1264"/>
<source>ChooseSaveFile</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1235"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1263"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1245"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1273"/>
<source>SaveSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1265"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1275"/>
<source>SaveUnSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1341"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1351"/>
<source>FormatCodeFailed</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1391"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1407"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1401"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1417"/>
<source>CannotSave2RunScript</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="785"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1467"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="789"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1477"/>
<source>ScriptStillRunning</source>
<translation>退</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="269"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="273"/>
<source>ConfirmScriptSave</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="298"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="302"/>
<source>View</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="483"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="487"/>
<source>Debug</source>
<translation>調</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="485"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="489"/>
<source>Run</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="491"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="495"/>
<source>RunWithDbg</source>
<translation>調</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="498"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="502"/>
<source>Pause</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="502"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="506"/>
<source>Continue</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="509"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="513"/>
<source>Stop</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="514"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="518"/>
<source>Restart</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="518"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="522"/>
<source>StepInto</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="523"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="527"/>
<source>StepOver</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="528"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="532"/>
<source>StepOut</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="545"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="549"/>
<source>RemoveBreakPoint</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="586"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="590"/>
<source>Info</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="588"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="592"/>
<source>Software</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="591"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="595"/>
<source>Sponsor</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="594"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="598"/>
<source>Wiki</source>
<translation> Wiki</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="597"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="601"/>
<source>AboutQT</source>
<translation> QT</translation>
</message>
@ -5389,39 +5389,39 @@ Do you wish to keep up to date by reloading the file?</source>
<translation></translation>
</message>
<message>
<location filename="../../src/class/wingcstruct.cpp" line="891"/>
<location filename="../../src/class/wingcstruct.cpp" line="903"/>
<location filename="../../src/class/wingcstruct.cpp" line="916"/>
<location filename="../../src/class/wingcstruct.cpp" line="925"/>
<location filename="../../src/class/wingcstruct.cpp" line="937"/>
<location filename="../../src/class/wingcstruct.cpp" line="945"/>
<location filename="../../src/class/wingcstruct.cpp" line="952"/>
<location filename="../../src/class/wingcstruct.cpp" line="964"/>
<location filename="../../src/class/wingcstruct.cpp" line="976"/>
<location filename="../../src/class/wingcstruct.cpp" line="983"/>
<location filename="../../src/class/wingcstruct.cpp" line="995"/>
<location filename="../../src/class/wingcstruct.cpp" line="1007"/>
<location filename="../../src/class/wingcstruct.cpp" line="1032"/>
<location filename="../../src/class/wingcstruct.cpp" line="1052"/>
<location filename="../../src/class/wingcstruct.cpp" line="1072"/>
<location filename="../../src/class/wingcstruct.cpp" line="1093"/>
<location filename="../../src/class/wingcstruct.cpp" line="1105"/>
<location filename="../../src/class/wingcstruct.cpp" line="861"/>
<location filename="../../src/class/wingcstruct.cpp" line="873"/>
<location filename="../../src/class/wingcstruct.cpp" line="886"/>
<location filename="../../src/class/wingcstruct.cpp" line="895"/>
<location filename="../../src/class/wingcstruct.cpp" line="907"/>
<location filename="../../src/class/wingcstruct.cpp" line="915"/>
<location filename="../../src/class/wingcstruct.cpp" line="922"/>
<location filename="../../src/class/wingcstruct.cpp" line="934"/>
<location filename="../../src/class/wingcstruct.cpp" line="946"/>
<location filename="../../src/class/wingcstruct.cpp" line="953"/>
<location filename="../../src/class/wingcstruct.cpp" line="965"/>
<location filename="../../src/class/wingcstruct.cpp" line="977"/>
<location filename="../../src/class/wingcstruct.cpp" line="1002"/>
<location filename="../../src/class/wingcstruct.cpp" line="1022"/>
<location filename="../../src/class/wingcstruct.cpp" line="1042"/>
<location filename="../../src/class/wingcstruct.cpp" line="1063"/>
<location filename="../../src/class/wingcstruct.cpp" line="1075"/>
<source>InvalidParamsCount</source>
<translation></translation>
</message>
<message>
<location filename="../../src/class/wingcstruct.cpp" line="895"/>
<location filename="../../src/class/wingcstruct.cpp" line="907"/>
<location filename="../../src/class/wingcstruct.cpp" line="929"/>
<location filename="../../src/class/wingcstruct.cpp" line="956"/>
<location filename="../../src/class/wingcstruct.cpp" line="968"/>
<location filename="../../src/class/wingcstruct.cpp" line="987"/>
<location filename="../../src/class/wingcstruct.cpp" line="999"/>
<location filename="../../src/class/wingcstruct.cpp" line="1019"/>
<location filename="../../src/class/wingcstruct.cpp" line="1041"/>
<location filename="../../src/class/wingcstruct.cpp" line="1061"/>
<location filename="../../src/class/wingcstruct.cpp" line="865"/>
<location filename="../../src/class/wingcstruct.cpp" line="877"/>
<location filename="../../src/class/wingcstruct.cpp" line="899"/>
<location filename="../../src/class/wingcstruct.cpp" line="926"/>
<location filename="../../src/class/wingcstruct.cpp" line="938"/>
<location filename="../../src/class/wingcstruct.cpp" line="957"/>
<location filename="../../src/class/wingcstruct.cpp" line="969"/>
<location filename="../../src/class/wingcstruct.cpp" line="989"/>
<location filename="../../src/class/wingcstruct.cpp" line="1011"/>
<location filename="../../src/class/wingcstruct.cpp" line="1031"/>
<location filename="../../src/class/wingcstruct.cpp" line="1051"/>
<location filename="../../src/class/wingcstruct.cpp" line="1081"/>
<location filename="../../src/class/wingcstruct.cpp" line="1111"/>
<source>InvalidParam</source>
<translation></translation>
</message>

View File

@ -45,6 +45,7 @@
<file>images/layout.png</file>
<file>images/layoutexport.png</file>
<file>images/lock.png</file>
<file>images/lockon.png</file>
<file>images/log.png</file>
<file>images/mAddr.png</file>
<file>images/mColInfo.png</file>

View File

@ -94,6 +94,8 @@ QString AngelObjString::dictionaryToString(void *obj, asDebugger *dbg) {
}
QString AngelObjString::colorToString(void *obj, asDebugger *dbg) {
Q_UNUSED(dbg);
auto color = reinterpret_cast<QColor *>(obj);
QString str;
QTextStream s(&str);

View File

@ -18,8 +18,9 @@
#include "diffutil.h"
QVector<DiffUtil::DiffEntry> DiffUtil::compareFiles(const QStringList &lines1,
const QStringList &lines2) {
return generateOrderedDiff(lines1, lines2);
const QStringList &lines2,
bool keepUnchanged) {
return generateOrderedDiff(lines1, lines2, keepUnchanged);
}
QVector<QVector<int>> DiffUtil::computeLCSMatrix(const QStringList &A,
@ -40,8 +41,9 @@ QVector<QVector<int>> DiffUtil::computeLCSMatrix(const QStringList &A,
return lcs;
}
QVector<DiffUtil::DiffEntry>
DiffUtil::generateOrderedDiff(const QStringList &A, const QStringList &B) {
QVector<DiffUtil::DiffEntry> DiffUtil::generateOrderedDiff(const QStringList &A,
const QStringList &B,
bool keepUnchanged) {
auto lcs = computeLCSMatrix(A, B);
auto i = A.size();
auto j = B.size();
@ -49,7 +51,9 @@ DiffUtil::generateOrderedDiff(const QStringList &A, const QStringList &B) {
while (i > 0 && j > 0) {
if (A[i - 1] == B[j - 1]) {
diffEntries.prepend({B[j - 1], DiffEntry::UNCHANGED, i, j});
if (keepUnchanged) {
diffEntries.prepend({B[j - 1], DiffEntry::UNCHANGED, i, j});
}
--i;
--j;
} else if (lcs[i - 1][j] >= lcs[i][j - 1]) {

View File

@ -33,7 +33,8 @@ public:
public:
static QVector<DiffEntry> compareFiles(const QStringList &lines1,
const QStringList &lines2);
const QStringList &lines2,
bool keepUnchanged);
private:
// LCS algorithm to find longest common subsequence of lines
@ -41,7 +42,8 @@ private:
const QStringList &B);
static QVector<DiffEntry> generateOrderedDiff(const QStringList &A,
const QStringList &B);
const QStringList &B,
bool keepUnchanged);
};
#endif // DIFFUTIL_H

View File

@ -681,47 +681,30 @@ CScriptDictionary *WingCStruct::convert2AsDictionary(const QVariantHash &hash) {
: QMetaType::Type(var.typeId());
#endif
switch (type) {
case QMetaType::Bool: {
auto v = var.toBool();
dic->Set(p->first, &v, asTYPEID_BOOL);
break;
}
case QMetaType::Bool:
case QMetaType::UChar:
case QMetaType::Char:
case QMetaType::Int:
case QMetaType::Long: {
auto v = var.toInt();
dic->Set(p->first, &v, asTYPEID_INT32);
case QMetaType::Long:
case QMetaType::LongLong:
case QMetaType::SChar:
case QMetaType::Short: {
auto v = var.toLongLong();
dic->Set(p->first, asINT64(v));
break;
}
case QMetaType::UInt:
case QMetaType::ULong: {
auto v = var.toUInt();
dic->Set(p->first, &v, asTYPEID_UINT32);
break;
}
case QMetaType::LongLong: {
auto v = var.toLongLong();
dic->Set(p->first, &v, asTYPEID_INT64);
break;
}
case QMetaType::ULong:
case QMetaType::UShort:
case QMetaType::ULongLong: {
auto v = var.toULongLong();
dic->Set(p->first, &v, asTYPEID_UINT64);
dic->Set(p->first, asQWORD(v));
break;
}
case QMetaType::Double:
case QMetaType::Float:
dic->Set(p->first, var.toDouble());
break;
case QMetaType::Short: {
auto v = var.value<short>();
dic->Set(p->first, &v, asTYPEID_INT16);
break;
}
case QMetaType::Char:
case QMetaType::SChar: {
auto v = var.value<char>();
dic->Set(p->first, &v, asTYPEID_INT8);
break;
}
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
case QMetaType::Char16: {
auto v = var.value<char16_t>();
@ -738,19 +721,6 @@ CScriptDictionary *WingCStruct::convert2AsDictionary(const QVariantHash &hash) {
break;
}
#endif
case QMetaType::UShort: {
auto v = var.value<unsigned short>();
dic->Set(p->first, &v, asTYPEID_UINT16);
break;
}
case QMetaType::UChar: {
auto v = var.value<unsigned char>();
dic->Set(p->first, &v, asTYPEID_UINT8);
break;
}
case QMetaType::Float:
dic->Set(p->first, var.toFloat());
break;
case QMetaType::QVariantList: {
// note: empty list is not allowed!
// If empty, it will be ignored

View File

@ -16,8 +16,10 @@
*/
#include "scripteditor.h"
#include "DockWidgetTab.h"
#include "qcodeeditwidget/qdocumentswaptextcommand.h"
#include "qeditor.h"
#include "utilities.h"
#ifdef Q_OS_LINUX
#include "utilities.h"
@ -110,6 +112,11 @@ bool ScriptEditor::reload() {
return e->load(e->fileName());
}
void ScriptEditor::setReadOnly(bool b) {
m_editor->editor()->setFlag(QEditor::ReadOnly, b);
this->tabWidget()->setIcon(b ? ICONRES("lockon") : QIcon());
}
void ScriptEditor::processTitle() {
auto e = m_editor->editor();
if (e->isContentModified()) {
@ -127,7 +134,7 @@ bool ScriptEditor::formatCode() {
auto fmtcodes = ClangFormatManager::instance().formatCode(e->text(), ok);
if (ok) {
auto doc = e->document();
doc->execute(new QDocumentSwapTextCommand(fmtcodes, doc));
doc->execute(new QDocumentSwapTextCommand(fmtcodes, doc, e));
return true;
}
return false;

View File

@ -44,6 +44,8 @@ public slots:
bool save(const QString &path = QString());
bool reload();
void setReadOnly(bool b);
private:
void processTitle();

View File

@ -156,6 +156,10 @@ void ScriptingDialog::initConsole() {
_needRestart = false;
startDebugScript(_DebugingScript);
} else {
auto view = findEditorView(_DebugingScript);
if (view) {
view->setReadOnly(false);
}
_DebugingScript.clear();
}
});
@ -1041,6 +1045,12 @@ void ScriptingDialog::startDebugScript(const QString &fileName) {
_DebugingScript = fileName;
PluginSystem::instance().scriptPragmaBegin();
auto view = findEditorView(fileName);
if (view) {
view->setReadOnly(true);
}
m_consoleout->machine()->executeScript(fileName, true);
updateRunDebugMode();

View File

@ -18,18 +18,17 @@
#include "qdocumentswaptextcommand.h"
#include "qdocument_p.h"
#include "qeditor.h"
QDocumentSwapTextCommand::QDocumentSwapTextCommand(const QString &text,
QDocument *doc,
QDocument *doc, QEditor *e,
QDocumentCommand *p)
: QDocumentCommand(Command::Custom, doc, p) {
auto textl = text.split('\n');
diffs = DiffUtil::compareFiles(doc->textLines(), textl);
auto r = std::find_if(
diffs.begin(), diffs.end(), [](const DiffUtil::DiffEntry &diff) {
return diff.changeType != DiffUtil::DiffEntry::UNCHANGED;
});
if (r == diffs.end()) {
: QDocumentCommand(Command::Custom, doc, p), _e(e) {
Q_ASSERT(e);
auto textl = text.split(doc->lineEndingString());
diffs = DiffUtil::compareFiles(doc->textLines(), textl, false);
if (diffs.isEmpty()) {
setObsolete(true);
return;
}
@ -47,9 +46,33 @@ QDocumentSwapTextCommand::QDocumentSwapTextCommand(const QString &text,
auto cursor = doc->editCursor();
setTargetCursor(cursor->handle());
_vBarValue = e->verticalScrollBar()->value();
_hBarValue = e->horizontalScrollBar()->value();
QVector<int> rmLineNrs;
QVector<int> addLineNrs;
for (auto &item : diffs) {
if (item.changeType == DiffUtil::DiffEntry::REMOVED) {
auto line = m_doc->line(item.lineNumberA - 1);
rmLineNrs.append(item.lineNumberA);
} else if (item.changeType == DiffUtil::DiffEntry::ADDED) {
auto line = m_doc->line(item.lineNumberB - 1);
addLineNrs.append(item.lineNumberB);
}
}
removeCommonElements(rmLineNrs, addLineNrs);
_rmRanges = getRange(rmLineNrs);
_addRanges = getRange(addLineNrs);
}
void QDocumentSwapTextCommand::undo() {
// breakpoints will be removed if the line handle is removed
auto mrkinfo = QLineMarksInfoCenter::instance();
auto marks = backupMarks();
mrkinfo->removeMarks(_e->fileName());
removeLines(0, m_doc->lineCount() - 1);
removeText(0, 0, header.length());
insertText(0, 0, oldheader);
@ -65,22 +88,130 @@ void QDocumentSwapTextCommand::undo() {
markUndone(line.handle());
}
}
// so reapply is nessary
undoApplyLineMarks(marks);
// reset the scrollbar
_e->verticalScrollBar()->setValue(_vBarValue);
_e->horizontalScrollBar()->setValue(_hBarValue);
}
void QDocumentSwapTextCommand::redo() {
// breakpoints will be removed if the line handle is removed
auto mrkinfo = QLineMarksInfoCenter::instance();
auto marks = backupMarks();
mrkinfo->removeMarks(_e->fileName());
removeLines(0, m_doc->lineCount() - 1);
removeText(0, 0, oldheader.length());
insertText(0, 0, header);
insertLines(0, _handles);
m_doc->impl()->emitContentsChange(0, _handles.count() + 1);
for (auto &item : diffs) {
if (item.changeType == DiffUtil::DiffEntry::REMOVED) {
auto line = m_doc->line(item.lineNumberA - 1);
markRedone(line.handle(), m_first);
} else if (item.changeType == DiffUtil::DiffEntry::ADDED) {
auto line = m_doc->line(item.lineNumberB - 1);
markRedone(line.handle(), m_first);
// so reapply is nessary
applyLineMarks(marks);
_e->verticalScrollBar()->setValue(_vBarValue);
_e->horizontalScrollBar()->setValue(_hBarValue);
}
QLineMarkList QDocumentSwapTextCommand::backupMarks() {
auto mrkinfo = QLineMarksInfoCenter::instance();
auto filename = _e->fileName();
return mrkinfo->marks(filename);
}
void QDocumentSwapTextCommand::applyLineMarks(const QLineMarkList &marks) {
auto mrkinfo = QLineMarksInfoCenter::instance();
for (auto &m : marks) {
int total = 0;
auto pend = _rmRanges.lowerBound(m.line);
for (auto p = _rmRanges.begin(); p != pend; ++p) {
total -= *p;
}
pend = _addRanges.lowerBound(m.line);
for (auto p = _addRanges.begin(); p != pend; ++p) {
total += *p;
}
auto mark = m;
mark.line += total;
mrkinfo->addLineMark(mark);
}
}
void QDocumentSwapTextCommand::undoApplyLineMarks(const QLineMarkList &marks) {
auto mrkinfo = QLineMarksInfoCenter::instance();
for (auto &m : marks) {
int total = 0;
auto pend = _rmRanges.lowerBound(m.line);
for (auto p = _rmRanges.begin(); p != pend; ++p) {
total += *p;
}
pend = _addRanges.lowerBound(m.line);
for (auto p = _addRanges.begin(); p != pend; ++p) {
total -= *p;
}
auto mark = m;
mark.line += total;
mrkinfo->addLineMark(mark);
}
}
void QDocumentSwapTextCommand::removeCommonElements(QVector<int> &vec1,
QVector<int> &vec2) {
int i = 0, j = 0;
// Two-pointer technique on sorted vectors
while (i < vec1.size() && j < vec2.size()) {
if (vec1[i] == vec2[j]) {
// If both elements are equal, remove them from both vectors
vec1.remove(i);
vec2.remove(j);
// No need to increment i and j since we removed elements
} else if (vec1[i] < vec2[j]) {
// If vec1[i] is smaller, move to the next element in vec1
++i;
} else {
// If vec2[j] is smaller, move to the next element in vec2
++j;
}
}
}
QDocumentSwapTextCommand::Ranges
QDocumentSwapTextCommand::getRange(const QVector<int> &vec) {
if (vec.isEmpty()) {
return {};
}
Ranges ranges;
auto start = vec.front();
auto end = start;
for (int i = 1; i < vec.size(); ++i) {
if (vec[i] == end + 1) {
// Continue the current range
end = vec[i];
} else {
// Finalize the current range
ranges.insert(start, end - start + 1);
// Start a new range
start = vec[i];
end = start;
}
}
ranges.insert(start, end - start + 1);
return ranges;
}

View File

@ -20,10 +20,16 @@
#include "class/diffutil.h"
#include "qdocumentcommand.h"
#include "qlinemarksinfocenter.h"
#include <QMap>
class QEditor;
class QDocumentSwapTextCommand : public QDocumentCommand {
public:
explicit QDocumentSwapTextCommand(const QString &text, QDocument *doc,
QEditor *e,
QDocumentCommand *p = nullptr);
// QUndoCommand interface
@ -31,11 +37,31 @@ public:
void undo();
void redo();
private:
using Ranges = QMap<int, int>;
private:
QLineMarkList backupMarks();
void applyLineMarks(const QLineMarkList &marks);
void undoApplyLineMarks(const QLineMarkList &marks);
void removeCommonElements(QVector<int> &vec1, QVector<int> &vec2);
Ranges getRange(const QVector<int> &vec);
private:
QString header, oldheader;
QList<QDocumentLineHandle *> _handles;
QList<QDocumentLineHandle *> _oldhandles;
QVector<DiffUtil::DiffEntry> diffs;
QEditor *_e;
int _vBarValue;
int _hBarValue;
Ranges _rmRanges;
Ranges _addRanges;
};
#endif // QDOCUMENTSWAPTEXTCOMMAND_H

View File

@ -323,6 +323,10 @@ void CScriptDictionary::Set(const dictKey_t &key, void *value, int typeId) {
it->second.Set(engine, value, typeId);
}
void CScriptDictionary::Set(const dictKey_t &key, const asQWORD &value) {
Set(key, const_cast<asQWORD *>(&value), asTYPEID_UINT64);
}
// This overloaded method is implemented so that all integer and
// unsigned integers types will be stored in the dictionary as int64
// through implicit conversions. This simplifies the management of the
@ -355,6 +359,10 @@ bool CScriptDictionary::Get(const dictKey_t &key, void *value,
return false;
}
bool CScriptDictionary::Get(const dictKey_t &key, asQWORD &value) const {
return Get(key, &value, asTYPEID_UINT64);
}
// Returns the type id of the stored value
int CScriptDictionary::GetTypeId(const dictKey_t &key) const {
dictMap_t::const_iterator it;
@ -477,6 +485,13 @@ void ScriptDictionarySetInt_Generic(asIScriptGeneric *gen) {
dict->Set(*key, *(asINT64 *)ref);
}
void ScriptDictionarySetUInt_Generic(asIScriptGeneric *gen) {
CScriptDictionary *dict = (CScriptDictionary *)gen->GetObject();
dictKey_t *key = *(dictKey_t **)gen->GetAddressOfArg(0);
void *ref = *(void **)gen->GetAddressOfArg(1);
dict->Set(*key, *(asQWORD *)ref);
}
void ScriptDictionarySetFlt_Generic(asIScriptGeneric *gen) {
CScriptDictionary *dict = (CScriptDictionary *)gen->GetObject();
dictKey_t *key = *(dictKey_t **)gen->GetAddressOfArg(0);
@ -500,6 +515,14 @@ void ScriptDictionaryGetInt_Generic(asIScriptGeneric *gen) {
dict->Get(*key, *(asINT64 *)ref);
}
void ScriptDictionaryGetUInt_Generic(asIScriptGeneric *gen) {
CScriptDictionary *dict = (CScriptDictionary *)gen->GetObject();
dictKey_t *key = *(dictKey_t **)gen->GetAddressOfArg(0);
void *ref = *(void **)gen->GetAddressOfArg(1);
*(bool *)gen->GetAddressOfReturnLocation() =
dict->Get(*key, *(asQWORD *)ref);
}
void ScriptDictionaryGetFlt_Generic(asIScriptGeneric *gen) {
CScriptDictionary *dict = (CScriptDictionary *)gen->GetObject();
dictKey_t *key = *(dictKey_t **)gen->GetAddressOfArg(0);
@ -662,6 +685,10 @@ void CScriptDictValue::Set(asIScriptEngine *engine, void *value, int typeId) {
}
}
void CScriptDictValue::Set(asIScriptEngine *engine, const asQWORD &value) {
Set(engine, const_cast<asQWORD *>(&value), asTYPEID_UINT64);
}
void CScriptDictValue::Set(asIScriptEngine *engine, CScriptDictValue &value) {
if (value.m_typeId & asTYPEID_OBJHANDLE)
Set(engine, (void *)&value.m_valueObj, value.m_typeId);
@ -761,7 +788,7 @@ bool CScriptDictValue::Get(asIScriptEngine *engine, void *value,
return false;
}
return true;
} else if (typeId == asTYPEID_INT64) {
} else if (typeId == asTYPEID_INT64 || typeId == asTYPEID_UINT64) {
if (m_typeId == asTYPEID_DOUBLE)
*(asINT64 *)value = asINT64(m_valueFlt);
else if (m_typeId == asTYPEID_BOOL) {
@ -837,6 +864,10 @@ bool CScriptDictValue::Get(asIScriptEngine *engine, void *value,
return false;
}
bool CScriptDictValue::Get(asIScriptEngine *engine, asQWORD &value) const {
return Get(engine, &value, asTYPEID_UINT64);
}
const void *CScriptDictValue::GetAddressOfValue() const {
if ((m_typeId & asTYPEID_MASK_OBJECT) && !(m_typeId & asTYPEID_OBJHANDLE)) {
// Return the address to the object directly
@ -902,6 +933,11 @@ static CScriptDictValue &CScriptDictValue_opAssign(asINT64 val,
return CScriptDictValue_opAssign(&val, asTYPEID_INT64, obj);
}
static CScriptDictValue &CScriptDictValue_opAssign(asQWORD val,
CScriptDictValue *obj) {
return CScriptDictValue_opAssign(&val, asTYPEID_UINT64, obj);
}
static void CScriptDictValue_opCast(void *ref, int typeId,
CScriptDictValue *obj) {
asIScriptContext *ctx = asGetActiveContext();
@ -917,6 +953,12 @@ static asINT64 CScriptDictValue_opConvInt(CScriptDictValue *obj) {
return value;
}
static asQWORD CScriptDictValue_opConvUInt(CScriptDictValue *obj) {
asQWORD value;
CScriptDictValue_opCast(&value, asTYPEID_UINT64, obj);
return value;
}
static double CScriptDictValue_opConvDouble(CScriptDictValue *obj) {
double value;
CScriptDictValue_opCast(&value, asTYPEID_DOUBLE, obj);
@ -940,6 +982,13 @@ static void CScriptDictValue_opConvInt_Generic(asIScriptGeneric *gen) {
*(asINT64 *)gen->GetAddressOfReturnLocation() = value;
}
static void CScriptDictValue_opConvUInt_Generic(asIScriptGeneric *gen) {
CScriptDictValue *self = (CScriptDictValue *)gen->GetObject();
asQWORD value;
self->Get(gen->GetEngine(), value);
*(asQWORD *)gen->GetAddressOfReturnLocation() = value;
}
static void CScriptDictValue_opCast_Generic(asIScriptGeneric *gen) {
CScriptDictValue *self = (CScriptDictValue *)gen->GetObject();
self->Get(gen->GetEngine(), gen->GetArgAddress(0), gen->GetArgTypeId(0));
@ -951,6 +1000,12 @@ static void CScriptDictValue_opAssign_int64_Generic(asIScriptGeneric *gen) {
&CScriptDictValue_opAssign((asINT64)gen->GetArgQWord(0), self);
}
static void CScriptDictValue_opAssign_uint64_Generic(asIScriptGeneric *gen) {
CScriptDictValue *self = (CScriptDictValue *)gen->GetObject();
*(CScriptDictValue **)gen->GetAddressOfReturnLocation() =
&CScriptDictValue_opAssign(gen->GetArgQWord(0), self);
}
static void CScriptDictValue_opAssign_double_Generic(asIScriptGeneric *gen) {
CScriptDictValue *self = (CScriptDictValue *)gen->GetObject();
*(CScriptDictValue **)gen->GetAddressOfReturnLocation() =
@ -1013,29 +1068,35 @@ void RegisterScriptDictionary_Native(asIScriptEngine *engine) {
r = engine->RegisterObjectType("dictionaryValue", sizeof(CScriptDictValue),
asOBJ_VALUE | asOBJ_ASHANDLE | asOBJ_GC |
asGetTypeTraits<CScriptDictValue>());
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
#else
r = engine->RegisterObjectType("dictionaryValue", sizeof(CScriptDictValue),
asOBJ_VALUE | asOBJ_ASHANDLE | asOBJ_GC |
asOBJ_APP_CLASS_CD);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
#endif
r = engine->RegisterObjectBehaviour(
"dictionaryValue", asBEHAVE_CONSTRUCT, "void f()",
asFUNCTION(CScriptDictValue_Construct), asCALL_CDECL_OBJLAST);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionaryValue", asBEHAVE_DESTRUCT, "void f()",
asFUNCTION(CScriptDictValue_Destruct), asCALL_CDECL_OBJLAST);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionaryValue", asBEHAVE_ENUMREFS, "void f(int&in)",
asMETHOD(CScriptDictValue, EnumReferences), asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionaryValue", asBEHAVE_RELEASEREFS, "void f(int&in)",
asMETHOD(CScriptDictValue, FreeValue), asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue",
"dictionaryValue &opAssign(const dictionaryValue &in)",
@ -1043,13 +1104,15 @@ void RegisterScriptDictionary_Native(asIScriptEngine *engine) {
(const CScriptDictValue &, CScriptDictValue *),
CScriptDictValue &),
asCALL_CDECL_OBJLAST);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue", "dictionaryValue &opHndlAssign(const ?&in)",
asFUNCTIONPR(CScriptDictValue_opAssign,
(void *, int, CScriptDictValue *), CScriptDictValue &),
asCALL_CDECL_OBJLAST);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue",
"dictionaryValue &opHndlAssign(const dictionaryValue &in)",
@ -1057,200 +1120,265 @@ void RegisterScriptDictionary_Native(asIScriptEngine *engine) {
(const CScriptDictValue &, CScriptDictValue *),
CScriptDictValue &),
asCALL_CDECL_OBJLAST);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue", "dictionaryValue &opAssign(const ?&in)",
asFUNCTIONPR(CScriptDictValue_opAssign,
(void *, int, CScriptDictValue *), CScriptDictValue &),
asCALL_CDECL_OBJLAST);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue", "dictionaryValue &opAssign(double)",
asFUNCTIONPR(CScriptDictValue_opAssign, (double, CScriptDictValue *),
CScriptDictValue &),
asCALL_CDECL_OBJLAST);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue", "dictionaryValue &opAssign(int64)",
asFUNCTIONPR(CScriptDictValue_opAssign, (asINT64, CScriptDictValue *),
CScriptDictValue &),
asCALL_CDECL_OBJLAST);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue", "dictionaryValue &opAssign(uint64)",
asFUNCTIONPR(CScriptDictValue_opAssign, (asQWORD, CScriptDictValue *),
CScriptDictValue &),
asCALL_CDECL_OBJLAST);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue", "void opCast(?&out)",
asFUNCTIONPR(CScriptDictValue_opCast, (void *, int, CScriptDictValue *),
void),
asCALL_CDECL_OBJLAST);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue", "void opConv(?&out)",
asFUNCTIONPR(CScriptDictValue_opCast, (void *, int, CScriptDictValue *),
void),
asCALL_CDECL_OBJLAST);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue", "int64 opConv()",
asFUNCTIONPR(CScriptDictValue_opConvInt, (CScriptDictValue *), asINT64),
asCALL_CDECL_OBJLAST);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod("dictionaryValue", "uint64 opConv()",
asFUNCTIONPR(CScriptDictValue_opConvUInt,
(CScriptDictValue *),
asQWORD),
asCALL_CDECL_OBJLAST);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod("dictionaryValue", "double opConv()",
asFUNCTIONPR(CScriptDictValue_opConvDouble,
(CScriptDictValue *), double),
asCALL_CDECL_OBJLAST);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectType("dictionary", sizeof(CScriptDictionary),
asOBJ_REF | asOBJ_GC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
// Use the generic interface to construct the object since we need the
// engine pointer, we could also have retrieved the engine pointer from the
// active context
r = engine->RegisterObjectBehaviour(
"dictionary", asBEHAVE_FACTORY, "dictionary@ f()",
asFUNCTION(ScriptDictionaryFactory_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionary", asBEHAVE_LIST_FACTORY,
"dictionary @f(int &in) {repeat {string, ?}}",
asFUNCTION(ScriptDictionaryListFactory_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionary", asBEHAVE_ADDREF, "void f()",
asMETHOD(CScriptDictionary, AddRef), asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionary", asBEHAVE_RELEASE, "void f()",
asMETHOD(CScriptDictionary, Release), asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "dictionary &opAssign(const dictionary &in)",
asMETHODPR(CScriptDictionary, operator=, (const CScriptDictionary &),
CScriptDictionary &),
asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "void set(const string &in, const ?&in)",
asMETHODPR(CScriptDictionary, Set, (const dictKey_t &, void *, int),
void),
asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "bool get(const string &in, ?&out) const",
asMETHODPR(CScriptDictionary, Get,
(const dictKey_t &, void *, int) const, bool),
asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "void set(const string &in, const int64&in)",
asMETHODPR(CScriptDictionary, Set, (const dictKey_t &, const asINT64 &),
void),
asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "void set(const string &in, const uint64&in)",
asMETHODPR(CScriptDictionary, Set, (const dictKey_t &, const asQWORD &),
void),
asCALL_THISCALL);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "bool get(const string &in, int64&out) const",
asMETHODPR(CScriptDictionary, Get, (const dictKey_t &, asINT64 &) const,
bool),
asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "bool get(const string &in, uint64&out) const",
asMETHODPR(CScriptDictionary, Get, (const dictKey_t &, asQWORD &) const,
bool),
asCALL_THISCALL);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "void set(const string &in, const double&in)",
asMETHODPR(CScriptDictionary, Set, (const dictKey_t &, const double &),
void),
asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "bool get(const string &in, double&out) const",
asMETHODPR(CScriptDictionary, Get, (const dictKey_t &, double &) const,
bool),
asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "bool exists(const string &in) const",
asMETHOD(CScriptDictionary, Exists), asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod("dictionary", "bool isEmpty() const",
asMETHOD(CScriptDictionary, IsEmpty),
asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod("dictionary", "uint getSize() const",
asMETHOD(CScriptDictionary, GetSize),
asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "bool delete(const string &in)",
asMETHOD(CScriptDictionary, Delete), asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod("dictionary", "void deleteAll()",
asMETHOD(CScriptDictionary, DeleteAll),
asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "array<string> @getKeys() const",
asMETHOD(CScriptDictionary, GetKeys), asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "dictionaryValue &opIndex(const string &in)",
asMETHODPR(CScriptDictionary, operator[], (const dictKey_t &),
CScriptDictValue *),
asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "const dictionaryValue &opIndex(const string &in) const",
asMETHODPR(CScriptDictionary, operator[], (const dictKey_t &) const,
const CScriptDictValue *),
asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
// Register GC behaviours
r = engine->RegisterObjectBehaviour(
"dictionary", asBEHAVE_GETREFCOUNT, "int f()",
asMETHOD(CScriptDictionary, GetRefCount), asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionary", asBEHAVE_SETGCFLAG, "void f()",
asMETHOD(CScriptDictionary, SetGCFlag), asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionary", asBEHAVE_GETGCFLAG, "bool f()",
asMETHOD(CScriptDictionary, GetGCFlag), asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionary", asBEHAVE_ENUMREFS, "void f(int&in)",
asMETHOD(CScriptDictionary, EnumReferences), asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionary", asBEHAVE_RELEASEREFS, "void f(int&in)",
asMETHOD(CScriptDictionary, ReleaseAllReferences), asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
#if AS_USE_STLNAMES == 1
// Same as isEmpty
r = engine->RegisterObjectMethod("dictionary", "bool empty() const",
asMETHOD(CScriptDictionary, IsEmpty),
asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
// Same as getSize
r = engine->RegisterObjectMethod("dictionary", "uint size() const",
asMETHOD(CScriptDictionary, GetSize),
asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
// Same as delete
r = engine->RegisterObjectMethod(
"dictionary", "void erase(const string &in)",
asMETHOD(CScriptDictionary, Delete), asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
// Same as deleteAll
r = engine->RegisterObjectMethod("dictionary", "void clear()",
asMETHOD(CScriptDictionary, DeleteAll),
asCALL_THISCALL);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
#endif
// Cache some things the dictionary will need at runtime
@ -1270,182 +1398,243 @@ void RegisterScriptDictionary_Generic(asIScriptEngine *engine) {
r = engine->RegisterObjectType("dictionaryValue", sizeof(CScriptDictValue),
asOBJ_VALUE | asOBJ_ASHANDLE | asOBJ_GC |
asGetTypeTraits<CScriptDictValue>());
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
#else
r = engine->RegisterObjectType("dictionaryValue", sizeof(CScriptDictValue),
asOBJ_VALUE | asOBJ_ASHANDLE | asOBJ_GC |
asOBJ_APP_CLASS_CD);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
#endif
r = engine->RegisterObjectBehaviour(
"dictionaryValue", asBEHAVE_CONSTRUCT, "void f()",
asFUNCTION(CScriptDictValue_Construct_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionaryValue", asBEHAVE_DESTRUCT, "void f()",
asFUNCTION(CScriptDictValue_Destruct_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionaryValue", asBEHAVE_ENUMREFS, "void f(int&in)",
asFUNCTION(CScriptDictValue_EnumReferences_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionaryValue", asBEHAVE_RELEASEREFS, "void f(int&in)",
asFUNCTION(CScriptDictValue_FreeValue_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue",
"dictionaryValue &opAssign(const dictionaryValue &in)",
asFUNCTION(CScriptDictValue_opCopyAssign_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue", "dictionaryValue &opHndlAssign(const ?&in)",
asFUNCTION(CScriptDictValue_opAssign_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue",
"dictionaryValue &opHndlAssign(const dictionaryValue &in)",
asFUNCTION(CScriptDictValue_opCopyAssign_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue", "dictionaryValue &opAssign(const ?&in)",
asFUNCTION(CScriptDictValue_opAssign_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue", "dictionaryValue &opAssign(double)",
asFUNCTION(CScriptDictValue_opAssign_double_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue", "dictionaryValue &opAssign(int64)",
asFUNCTION(CScriptDictValue_opAssign_int64_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue", "dictionaryValue &opAssign(uint64)",
asFUNCTION(CScriptDictValue_opAssign_uint64_Generic), asCALL_GENERIC);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue", "void opCast(?&out)",
asFUNCTION(CScriptDictValue_opCast_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue", "void opConv(?&out)",
asFUNCTION(CScriptDictValue_opCast_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue", "int64 opConv()",
asFUNCTION(CScriptDictValue_opConvInt_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue", "uint64 opConv()",
asFUNCTION(CScriptDictValue_opConvUInt_Generic), asCALL_GENERIC);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionaryValue", "double opConv()",
asFUNCTION(CScriptDictValue_opConvDouble_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectType("dictionary", sizeof(CScriptDictionary),
asOBJ_REF | asOBJ_GC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionary", asBEHAVE_FACTORY, "dictionary@ f()",
asFUNCTION(ScriptDictionaryFactory_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionary", asBEHAVE_LIST_FACTORY,
"dictionary @f(int &in) {repeat {string, ?}}",
asFUNCTION(ScriptDictionaryListFactory_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionary", asBEHAVE_ADDREF, "void f()",
asFUNCTION(ScriptDictionaryAddRef_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionary", asBEHAVE_RELEASE, "void f()",
asFUNCTION(ScriptDictionaryRelease_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "dictionary &opAssign(const dictionary &in)",
asFUNCTION(ScriptDictionaryAssign_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "void set(const string &in, const ?&in)",
asFUNCTION(ScriptDictionarySet_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "bool get(const string &in, ?&out) const",
asFUNCTION(ScriptDictionaryGet_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "void set(const string &in, const int64&in)",
asFUNCTION(ScriptDictionarySetInt_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "void set(const string &in, const uint64&in)",
asFUNCTION(ScriptDictionarySetUInt_Generic), asCALL_GENERIC);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "bool get(const string &in, int64&out) const",
asFUNCTION(ScriptDictionaryGetInt_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "bool get(const string &in, uint64&out) const",
asFUNCTION(ScriptDictionaryGetUInt_Generic), asCALL_GENERIC);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "void set(const string &in, const double&in)",
asFUNCTION(ScriptDictionarySetFlt_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "bool get(const string &in, double&out) const",
asFUNCTION(ScriptDictionaryGetFlt_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "bool exists(const string &in) const",
asFUNCTION(ScriptDictionaryExists_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "bool isEmpty() const",
asFUNCTION(ScriptDictionaryIsEmpty_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "uint getSize() const",
asFUNCTION(ScriptDictionaryGetSize_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "bool delete(const string &in)",
asFUNCTION(ScriptDictionaryDelete_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "void deleteAll()",
asFUNCTION(ScriptDictionaryDeleteAll_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "array<string> @getKeys() const",
asFUNCTION(CScriptDictionaryGetKeys_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "dictionaryValue &opIndex(const string &in)",
asFUNCTION(CScriptDictionary_opIndex_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectMethod(
"dictionary", "const dictionaryValue &opIndex(const string &in) const",
asFUNCTION(CScriptDictionary_opIndex_const_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
// Register GC behaviours
r = engine->RegisterObjectBehaviour(
"dictionary", asBEHAVE_GETREFCOUNT, "int f()",
asFUNCTION(ScriptDictionaryGetRefCount_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionary", asBEHAVE_SETGCFLAG, "void f()",
asFUNCTION(ScriptDictionarySetGCFlag_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionary", asBEHAVE_GETGCFLAG, "bool f()",
asFUNCTION(ScriptDictionaryGetGCFlag_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionary", asBEHAVE_ENUMREFS, "void f(int&in)",
asFUNCTION(ScriptDictionaryEnumReferences_Generic), asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
r = engine->RegisterObjectBehaviour(
"dictionary", asBEHAVE_RELEASEREFS, "void f(int&in)",
asFUNCTION(ScriptDictionaryReleaseAllReferences_Generic),
asCALL_GENERIC);
assert(r >= 0);
Q_ASSERT(r >= 0);
Q_UNUSED(r);
// Cache some things the dictionary will need at runtime
SDictionaryCache::Setup(engine);
@ -1501,6 +1690,10 @@ int CScriptDictionary::CIterator::GetTypeId() const {
return m_it->second.m_typeId;
}
bool CScriptDictionary::CIterator::GetValue(asQWORD &value) const {
return m_it->second.Get(m_dict.engine, &value, asTYPEID_UINT64);
}
bool CScriptDictionary::CIterator::GetValue(asINT64 &value) const {
return m_it->second.Get(m_dict.engine, &value, asTYPEID_INT64);
}

View File

@ -67,6 +67,7 @@ public:
// Replace the stored value
void Set(asIScriptEngine *engine, void *value, int typeId);
void Set(asIScriptEngine *engine, const asQWORD &value);
void Set(asIScriptEngine *engine, const asINT64 &value);
void Set(asIScriptEngine *engine, const double &value);
void Set(asIScriptEngine *engine, CScriptDictValue &value);
@ -74,6 +75,7 @@ public:
// Gets the stored value. Returns false if the value isn't compatible with
// the informed typeId
bool Get(asIScriptEngine *engine, void *value, int typeId) const;
bool Get(asIScriptEngine *engine, asQWORD &value) const;
bool Get(asIScriptEngine *engine, asINT64 &value) const;
bool Get(asIScriptEngine *engine, double &value) const;
@ -118,12 +120,14 @@ public:
// Sets a key/value pair
void Set(const dictKey_t &key, void *value, int typeId);
void Set(const dictKey_t &key, const asQWORD &value);
void Set(const dictKey_t &key, const asINT64 &value);
void Set(const dictKey_t &key, const double &value);
// Gets the stored value. Returns false if the value isn't compatible with
// the informed typeId
bool Get(const dictKey_t &key, void *value, int typeId) const;
bool Get(const dictKey_t &key, asQWORD &value) const;
bool Get(const dictKey_t &key, asINT64 &value) const;
bool Get(const dictKey_t &key, double &value) const;
@ -171,6 +175,7 @@ public:
// Accessors
const dictKey_t &GetKey() const;
int GetTypeId() const;
bool GetValue(asQWORD &value) const;
bool GetValue(asINT64 &value) const;
bool GetValue(double &value) const;
bool GetValue(void *value, int typeId) const;