feat: 恢复代码高亮和命令行执行功能;

This commit is contained in:
寂静的羽夏 2025-03-11 21:56:44 +08:00
parent 80466531a2
commit b51af3cd71
20 changed files with 973 additions and 296 deletions

View File

@ -19,10 +19,6 @@
#include <QTextCursor>
#include <QTextDocumentFragment>
#define STDIN_FILENO 0 /* Standard input. */
#define STDOUT_FILENO 1 /* Standard output. */
#define STDERR_FILENO 2 /* Standard error output. */
QConsoleWidget::QConsoleWidget(QWidget *parent)
: WingCodeEdit(parent), mode_(Output) {
@ -93,14 +89,11 @@ void QConsoleWidget::handleReturnKey() {
if (!code.isEmpty())
history_.add(code);
// append the newline char and
// send signal / update iodevice
code += "\n";
if (iodevice_->isOpen())
iodevice_->consoleWidgetInput(code);
else {
emit consoleCommand(code);
}
emit consoleCommand(code);
}
void QConsoleWidget::handleTabKey() {
@ -446,9 +439,4 @@ QTextStream &inputMode(QTextStream &s) {
d->widget()->setMode(QConsoleWidget::Input);
return s;
}
QTextStream &outChannel(QTextStream &s) {
QConsoleIODevice *d = qobject_cast<QConsoleIODevice *>(s.device());
if (d)
d->setCurrentWriteChannel(STDOUT_FILENO);
return s;
}
QTextStream &outChannel(QTextStream &s) { return s; }

View File

@ -173,9 +173,13 @@ set(DIALOG_SRC
src/dialog/historydeldialog.ui
src/dialog/crashreport.h
src/dialog/crashreport.cpp
src/dialog/crashreport.ui)
src/dialog/crashreport.ui
src/dialog/showtextdialog.cpp
src/dialog/aboutsoftwaredialog.h)
set(CONTROL_SRC
src/control/codeedit.h
src/control/codeedit.cpp
src/control/editorview.h
src/control/editorview.cpp
src/control/toast.h
@ -275,7 +279,8 @@ set(CLASS_SRC
src/class/pluginsystem.h
src/class/pluginsystem.cpp
src/class/inspectqtloghelper.h
src/class/inspectqtloghelper.cpp)
src/class/inspectqtloghelper.cpp
src/class/codeinfotip.h)
set(INTERNAL_PLG_SRC
src/class/wingangelapi.h src/class/wingangelapi.cpp

BIN
images/viewtxt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@ -74,25 +74,25 @@
<context>
<name>AppManager</name>
<message>
<location filename="../../src/class/appmanager.cpp" line="73"/>
<location filename="../../src/class/appmanager.cpp" line="75"/>
<source>GenericCallNotFullySupported</source>
<translation>退</translation>
</message>
<message>
<location filename="../../src/class/appmanager.cpp" line="89"/>
<location filename="../../src/class/appmanager.cpp" line="95"/>
<source>SetupClang</source>
<translation> Clang </translation>
</message>
<message>
<location filename="../../src/class/appmanager.cpp" line="120"/>
<location filename="../../src/class/appmanager.cpp" line="126"/>
<source>OpeningFiles</source>
<translation></translation>
</message>
<message>
<location filename="../../src/class/appmanager.cpp" line="163"/>
<location filename="../../src/class/appmanager.cpp" line="173"/>
<location filename="../../src/class/appmanager.cpp" line="189"/>
<location filename="../../src/class/appmanager.cpp" line="205"/>
<location filename="../../src/class/appmanager.cpp" line="169"/>
<location filename="../../src/class/appmanager.cpp" line="179"/>
<location filename="../../src/class/appmanager.cpp" line="195"/>
<location filename="../../src/class/appmanager.cpp" line="211"/>
<source>AlreadyOpened</source>
<translation></translation>
</message>
@ -4361,32 +4361,32 @@
<context>
<name>ScriptingConsole</name>
<message>
<location filename="../../src/control/scriptingconsole.cpp" line="96"/>
<location filename="../../src/control/scriptingconsole.cpp" line="100"/>
<source>Scripting console for WingHexExplorer</source>
<translation></translation>
</message>
<message>
<location filename="../../src/control/scriptingconsole.cpp" line="99"/>
<location filename="../../src/control/scriptingconsole.cpp" line="102"/>
<source>&gt;&gt;&gt;&gt; Powered by AngelScript &lt;&lt;&lt;&lt;</source>
<translation>&gt;&gt;&gt;&gt; AngelScript &lt;&lt;&lt;&lt;</translation>
</message>
<message>
<location filename="../../src/control/scriptingconsole.cpp" line="58"/>
<location filename="../../src/control/scriptingconsole.cpp" line="61"/>
<source>[Info]</source>
<translation></translation>
</message>
<message>
<location filename="../../src/control/scriptingconsole.cpp" line="66"/>
<location filename="../../src/control/scriptingconsole.cpp" line="69"/>
<source>[Warn]</source>
<translation></translation>
</message>
<message>
<location filename="../../src/control/scriptingconsole.cpp" line="74"/>
<location filename="../../src/control/scriptingconsole.cpp" line="77"/>
<source>[Error]</source>
<translation></translation>
</message>
<message>
<location filename="../../src/control/scriptingconsole.cpp" line="174"/>
<location filename="../../src/control/scriptingconsole.cpp" line="177"/>
<source>[Console]</source>
<translation></translation>
</message>
@ -4404,401 +4404,401 @@
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="272"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="274"/>
<source>File</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="273"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="275"/>
<source>Edit</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="275"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="277"/>
<source>Debugger</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="277"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="279"/>
<source>Setting</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="278"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="280"/>
<source>About</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="294"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="296"/>
<source>InvalidSourceFile</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="303"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="305"/>
<source>Basic</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="304"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="306"/>
<source>New</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="307"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="309"/>
<source>OpenF</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="310"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="312"/>
<source>RecentFiles</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="314"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="316"/>
<source>Reload</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="319"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="321"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="323"/>
<source>Save</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="326"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="328"/>
<source>SaveAs</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="338"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="340"/>
<source>General</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="340"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="342"/>
<source>Undo</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="345"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="347"/>
<source>Redo</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="351"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="353"/>
<source>Cut</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="355"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="357"/>
<source>Copy</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="360"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="362"/>
<source>Paste</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="364"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="366"/>
<source>Delete</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="370"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="372"/>
<source>Lookup</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="371"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="373"/>
<source>Find</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="375"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="377"/>
<source>Replace</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="380"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="382"/>
<source>Goto</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="387"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="520"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="389"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="522"/>
<source>Format</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="388"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="390"/>
<source>CodeFormat</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="397"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="399"/>
<source>Window</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="400"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="515"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="402"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="517"/>
<source>Editor</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="404"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="406"/>
<source>Tools</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="409"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="411"/>
<source>Layout</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="410"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="412"/>
<source>Fullscreen</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="412"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="414"/>
<source>RestoreLayout</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="477"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="479"/>
<source>BreakPoint</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="479"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="481"/>
<source>ToggleBreakPoint</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="482"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="484"/>
<source>AddBreakPoint</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="513"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="515"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="518"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="520"/>
<source>ClangFormat</source>
<translation>Clang Format</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="553"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="555"/>
<source>Local</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="559"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="561"/>
<source>Global</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="562"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="564"/>
<source>Variables</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="573"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="575"/>
<source>ConsoleOutput</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="587"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="589"/>
<source>StackTrace</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="598"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="600"/>
<source>Symbol</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="684"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="929"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1107"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1143"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1163"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1191"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="686"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="926"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1104"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1140"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1160"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1188"/>
<source>Error</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="685"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="687"/>
<source>Too much opened files</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="709"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="711"/>
<source>ConfirmSave</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="745"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="747"/>
<source>ScriptSaveFailedClose</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="890"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="887"/>
<source>Debuging...</source>
<translation>...</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="893"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="890"/>
<source>Running...</source>
<translation>...</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1081"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1122"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1078"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1119"/>
<source>ChooseFile</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="929"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1107"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1163"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="926"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1104"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1160"/>
<source>FilePermission</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1141"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1138"/>
<source>ReloadSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1143"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1140"/>
<source>ReloadUnSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1180"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1177"/>
<source>ChooseSaveFile</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1161"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1189"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1158"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1186"/>
<source>SaveSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1191"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1188"/>
<source>SaveUnSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1267"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1264"/>
<source>FormatCodeFailed</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1316"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1334"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1313"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1331"/>
<source>CannotSave2RunScript</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="731"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1394"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="733"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1391"/>
<source>ScriptStillRunning</source>
<translation>退</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="245"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="247"/>
<source>ConfirmScriptSave</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="274"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="276"/>
<source>View</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="423"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="425"/>
<source>Debug</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="425"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="427"/>
<source>Run</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="431"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="433"/>
<source>RunWithDbg</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="438"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="440"/>
<source>Pause</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="442"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="444"/>
<source>Continue</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="449"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="451"/>
<source>Stop</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="454"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="456"/>
<source>Restart</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="458"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="460"/>
<source>StepInto</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="463"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="465"/>
<source>StepOver</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="468"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="470"/>
<source>StepOut</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="485"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="487"/>
<source>RemoveBreakPoint</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="526"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="528"/>
<source>Info</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="528"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="530"/>
<source>Software</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="531"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="533"/>
<source>Sponsor</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="534"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="536"/>
<source>Wiki</source>
<translation> Wiki</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="537"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="539"/>
<source>AboutQT</source>
<translation> QT</translation>
</message>
@ -4842,6 +4842,64 @@
<translation> Windows explorer.exe</translation>
</message>
</context>
<context>
<name>ShowTextDialog</name>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="62"/>
<source>TextBroswer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="93"/>
<source>TooHugeFile</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="110"/>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="111"/>
<source>View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="117"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="119"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="123"/>
<source>Find</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="127"/>
<source>Goto</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="132"/>
<source>Encoding</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="143"/>
<source>Display</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="151"/>
<source>CopyToClipBoard</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SkinManager</name>
<message>

View File

@ -74,25 +74,25 @@
<context>
<name>AppManager</name>
<message>
<location filename="../../src/class/appmanager.cpp" line="73"/>
<location filename="../../src/class/appmanager.cpp" line="75"/>
<source>GenericCallNotFullySupported</source>
<translation>調退</translation>
</message>
<message>
<location filename="../../src/class/appmanager.cpp" line="89"/>
<location filename="../../src/class/appmanager.cpp" line="95"/>
<source>SetupClang</source>
<translation> Clang </translation>
</message>
<message>
<location filename="../../src/class/appmanager.cpp" line="120"/>
<location filename="../../src/class/appmanager.cpp" line="126"/>
<source>OpeningFiles</source>
<translation></translation>
</message>
<message>
<location filename="../../src/class/appmanager.cpp" line="163"/>
<location filename="../../src/class/appmanager.cpp" line="173"/>
<location filename="../../src/class/appmanager.cpp" line="189"/>
<location filename="../../src/class/appmanager.cpp" line="205"/>
<location filename="../../src/class/appmanager.cpp" line="169"/>
<location filename="../../src/class/appmanager.cpp" line="179"/>
<location filename="../../src/class/appmanager.cpp" line="195"/>
<location filename="../../src/class/appmanager.cpp" line="211"/>
<source>AlreadyOpened</source>
<translation></translation>
</message>
@ -4361,32 +4361,32 @@
<context>
<name>ScriptingConsole</name>
<message>
<location filename="../../src/control/scriptingconsole.cpp" line="96"/>
<location filename="../../src/control/scriptingconsole.cpp" line="100"/>
<source>Scripting console for WingHexExplorer</source>
<translation></translation>
</message>
<message>
<location filename="../../src/control/scriptingconsole.cpp" line="99"/>
<location filename="../../src/control/scriptingconsole.cpp" line="102"/>
<source>&gt;&gt;&gt;&gt; Powered by AngelScript &lt;&lt;&lt;&lt;</source>
<translation>&gt;&gt;&gt;&gt; AngelScript &lt;&lt;&lt;&lt;</translation>
</message>
<message>
<location filename="../../src/control/scriptingconsole.cpp" line="58"/>
<location filename="../../src/control/scriptingconsole.cpp" line="61"/>
<source>[Info]</source>
<translation></translation>
</message>
<message>
<location filename="../../src/control/scriptingconsole.cpp" line="66"/>
<location filename="../../src/control/scriptingconsole.cpp" line="69"/>
<source>[Warn]</source>
<translation></translation>
</message>
<message>
<location filename="../../src/control/scriptingconsole.cpp" line="74"/>
<location filename="../../src/control/scriptingconsole.cpp" line="77"/>
<source>[Error]</source>
<translation></translation>
</message>
<message>
<location filename="../../src/control/scriptingconsole.cpp" line="174"/>
<location filename="../../src/control/scriptingconsole.cpp" line="177"/>
<source>[Console]</source>
<translation></translation>
</message>
@ -4404,401 +4404,401 @@
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="272"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="274"/>
<source>File</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="273"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="275"/>
<source>Edit</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="275"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="277"/>
<source>Debugger</source>
<translation>調</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="277"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="279"/>
<source>Setting</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="278"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="280"/>
<source>About</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="294"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="296"/>
<source>InvalidSourceFile</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="303"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="305"/>
<source>Basic</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="304"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="306"/>
<source>New</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="307"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="309"/>
<source>OpenF</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="310"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="312"/>
<source>RecentFiles</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="314"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="316"/>
<source>Reload</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="319"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="321"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="323"/>
<source>Save</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="326"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="328"/>
<source>SaveAs</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="338"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="340"/>
<source>General</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="340"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="342"/>
<source>Undo</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="345"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="347"/>
<source>Redo</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="351"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="353"/>
<source>Cut</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="355"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="357"/>
<source>Copy</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="360"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="362"/>
<source>Paste</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="364"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="366"/>
<source>Delete</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="370"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="372"/>
<source>Lookup</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="371"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="373"/>
<source>Find</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="375"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="377"/>
<source>Replace</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="380"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="382"/>
<source>Goto</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="387"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="520"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="389"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="522"/>
<source>Format</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="388"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="390"/>
<source>CodeFormat</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="397"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="399"/>
<source>Window</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="400"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="515"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="402"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="517"/>
<source>Editor</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="404"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="406"/>
<source>Tools</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="409"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="411"/>
<source>Layout</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="410"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="412"/>
<source>Fullscreen</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="412"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="414"/>
<source>RestoreLayout</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="477"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="479"/>
<source>BreakPoint</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="479"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="481"/>
<source>ToggleBreakPoint</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="482"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="484"/>
<source>AddBreakPoint</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="513"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="515"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="518"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="520"/>
<source>ClangFormat</source>
<translation>Clang Format</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="553"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="555"/>
<source>Local</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="559"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="561"/>
<source>Global</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="562"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="564"/>
<source>Variables</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="573"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="575"/>
<source>ConsoleOutput</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="587"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="589"/>
<source>StackTrace</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="598"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="600"/>
<source>Symbol</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="684"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="929"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1107"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1143"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1163"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1191"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="686"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="926"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1104"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1140"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1160"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1188"/>
<source>Error</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="685"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="687"/>
<source>Too much opened files</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="709"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="711"/>
<source>ConfirmSave</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="745"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="747"/>
<source>ScriptSaveFailedClose</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="890"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="887"/>
<source>Debuging...</source>
<translation>調...</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="893"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="890"/>
<source>Running...</source>
<translation>...</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1081"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1122"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1078"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1119"/>
<source>ChooseFile</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="929"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1107"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1163"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="926"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1104"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1160"/>
<source>FilePermission</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1141"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1138"/>
<source>ReloadSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1143"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1140"/>
<source>ReloadUnSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1180"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1177"/>
<source>ChooseSaveFile</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1161"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1189"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1158"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1186"/>
<source>SaveSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1191"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1188"/>
<source>SaveUnSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1267"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1264"/>
<source>FormatCodeFailed</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1316"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1334"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1313"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1331"/>
<source>CannotSave2RunScript</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="731"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1394"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="733"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="1391"/>
<source>ScriptStillRunning</source>
<translation>退</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="245"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="247"/>
<source>ConfirmScriptSave</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="274"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="276"/>
<source>View</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="423"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="425"/>
<source>Debug</source>
<translation>調</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="425"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="427"/>
<source>Run</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="431"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="433"/>
<source>RunWithDbg</source>
<translation>調</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="438"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="440"/>
<source>Pause</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="442"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="444"/>
<source>Continue</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="449"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="451"/>
<source>Stop</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="454"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="456"/>
<source>Restart</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="458"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="460"/>
<source>StepInto</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="463"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="465"/>
<source>StepOver</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="468"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="470"/>
<source>StepOut</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="485"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="487"/>
<source>RemoveBreakPoint</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="526"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="528"/>
<source>Info</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="528"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="530"/>
<source>Software</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="531"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="533"/>
<source>Sponsor</source>
<translation></translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="534"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="536"/>
<source>Wiki</source>
<translation> Wiki</translation>
</message>
<message>
<location filename="../../src/dialog/scriptingdialog.cpp" line="537"/>
<location filename="../../src/dialog/scriptingdialog.cpp" line="539"/>
<source>AboutQT</source>
<translation> QT</translation>
</message>
@ -4842,6 +4842,64 @@
<translation> Windows explorer.exe</translation>
</message>
</context>
<context>
<name>ShowTextDialog</name>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="62"/>
<source>TextBroswer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="93"/>
<source>TooHugeFile</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="110"/>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="111"/>
<source>View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="117"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="119"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="123"/>
<source>Find</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="127"/>
<source>Goto</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="132"/>
<source>Encoding</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="143"/>
<source>Display</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/dialog/showtextdialog.cpp" line="151"/>
<source>CopyToClipBoard</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SkinManager</name>
<message>

View File

@ -106,6 +106,7 @@
<file>images/unover.png</file>
<file>images/unsaved.png</file>
<file>images/update.png</file>
<file>images/viewtxt.png</file>
<file>images/wiki.png</file>
<file>images/win.png</file>
<file>images/workspace.png</file>
@ -151,5 +152,7 @@
<file>images/completion/CVunion.png</file>
<file>images/completion/classnew.png</file>
</qresource>
<qresource prefix="/WingScript/Angelscript"/>
<qresource prefix="/WingScript/Angelscript/syntax">
<file alias="angelscript.xml">src/angelscript.xml</file>
</qresource>
</RCC>

164
src/angelscript.xml Normal file
View File

@ -0,0 +1,164 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language>
<language name="AngelScript" section="Sources" version="19" kateversion="5.79" extensions="*.as;*.angelscript" indenter="cstyle" style="C++"
author="wingsummer" license="GPL" priority="99" >
<highlighting>
<list name="keywords">
<item>abstract</item>
<item>and</item>
<item>break</item>
<item>case</item>
<item>cast</item>
<item>catch</item>
<item>class</item>
<item>const</item>
<item>continue</item>
<item>default</item>
<item>delete</item>
<item>do</item>
<item>else</item>
<item>enum</item>
<item>explicit</item>
<item>external</item>
<item>false</item>
<item>final</item>
<item>float</item>
<item>for</item>
<item>from</item>
<item>funcdef</item>
<item>function</item>
<item>get</item>
<item>if</item>
<item>import</item>
<item>in</item>
<item>inout</item>
<item>interface</item>
<item>is</item>
<item>mixin</item>
<item>namespace</item>
<item>not</item>
<item>null</item>
<item>or</item>
<item>out</item>
<item>override</item>
<item>private</item>
<item>property</item>
<item>protected</item>
<item>return</item>
<item>set</item>
<item>shared</item>
<item>super</item>
<item>switch</item>
<item>this</item>
<item>true</item>
<item>try</item>
<item>typedef</item>
<item>while</item>
<item>xor</item>
</list>
<list name="types">
<item>void</item>
<item>bool</item>
<item>uint</item>
<item>uint8</item>
<item>uint16</item>
<item>uint32</item>
<item>uint64</item>
<item>int</item>
<item>double</item>
<item>int8</item>
<item>int16</item>
<item>int32</item>
<item>int64</item>
<item>auto</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<keyword attribute="Data Type" context="#stay" String="types" />
<Float attribute="Float" context="Float Suffixes"/>
<HlCOct attribute="Octal" context="#stay"/>
<HlCHex attribute="Hex" context="#stay"/>
<Int attribute="Decimal" context="Int Suffixes"/>
<HlCChar attribute="Char" context="#stay"/>
<StringDetect attribute="Text Block" context="TextBlock" String="&quot;&quot;&quot;"/>
<DetectChar attribute="String" context="String" char="&quot;"/>
<Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>
<Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
<DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="block1"/>
<DetectChar attribute="Symbol" context="#stay" char="}" endRegion="block1"/>
<RegExpr attribute="Data Type" context="#stay" String="\bauto(?=\s+\w+)"/>
<RegExpr attribute="Keyword" context="#stay" String="\b(?=\s+(?:class|interface|void)|(?=\s+(?:return|break))|(?:set|get)(?=\s*[;{])|(?=\s*::\s*\w+))"/>
<RegExpr attribute="Function" context="#stay" String="\b[_\w][_\w\d]*(?=[\s]*[(])" />
<DetectChar attribute="Symbol" context="Member" char="."/>
<AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/*&lt;=&gt;?[]|~^&#59;"/>
<DetectChar attribute="Macro" context="Macro" char="#"/>
</context>
<context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<AnyChar String="dDfFmM" attribute="Float" context="#pop"/>
</context>
<context name="Int Suffixes" attribute="Decimal" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<StringDetect attribute="Decimal" context="#pop" String="UL" insensitive="true"/>
<StringDetect attribute="Decimal" context="#pop" String="LU" insensitive="true"/>
<AnyChar attribute="Decimal" context="#pop" String="ULul"/>
</context>
<context attribute="String" lineEndContext="#pop" name="String">
<DetectChar context="StringEscapedChar" char="\" lookAhead="1"/>
<DetectChar attribute="String" context="#pop" char="&quot;"/>
</context>
<context attribute="String" lineEndContext="#pop" name="StringEscapedChar">
<HlCStringChar attribute="String Char" context="#pop"/>
<RegExpr attribute="String Char" context="#pop" String="\\u+[0-9a-fA-F]{4}"/>
<RegExpr attribute="Error" context="#pop" String="\\(u+[0-9a-fA-F]*|.)?"/>
</context>
<context attribute="Text Block" lineEndContext="#stay" name="TextBlock">
<DetectChar context="StringEscapedChar" char="\" lookAhead="1"/>
<StringDetect attribute="Text Block" context="#pop" String="&quot;&quot;&quot;"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Member" fallthrough="true" fallthroughContext="#pop">
<RegExpr attribute="Function" context="#pop" String="\b[_\w][_\w\d]*(?=[\s]*)" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
<IncludeRules context="##Comments"/>
</context>
<context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment"/>
<IncludeRules context="##Comments"/>
</context>
<context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<IncludeRules context="##Doxygen" />
<Detect2Chars attribute="Comment" context="#pop!Commentar 1" char="/" char1="/" />
<Detect2Chars attribute="Comment" context="#pop!Commentar 2" char="/" char1="*" beginRegion="BlockComment" />
</context>
<context attribute="Decimal" lineEndContext="#pop" name="Decimal"/>
<context attribute="Macro" lineEndContext="#pop" name="Macro">
<Detect2Chars attribute="Comment" context="LineComment" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="BlockComment" char="/" char1="*" beginRegion="Comment"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Keyword" defStyleNum="dsKeyword"/>
<itemData name="Function" defStyleNum="dsFunction"/>
<itemData name="Data Type" defStyleNum="dsDataType"/>
<itemData name="Decimal" defStyleNum="dsDecVal"/>
<itemData name="Octal" defStyleNum="dsBaseN"/>
<itemData name="Hex" defStyleNum="dsBaseN"/>
<itemData name="Float" defStyleNum="dsFloat"/>
<itemData name="Char" defStyleNum="dsChar"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Text Block" defStyleNum="dsString"/>
<itemData name="String Char" defStyleNum="dsSpecialChar"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Symbol" defStyleNum="dsOperator"/>
<itemData name="Macro" defStyleNum="dsPreprocessor"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="//" position="afterwhitespace"/>
<comment name="multiLine" start="/*" end="*/" region="BlockComment" />
</comments>
<keywords casesensitive="1" />
</general>
</language>

View File

@ -29,8 +29,8 @@ QString AngelObjString::stringToString(void *obj, asDebugger *dbg) {
Q_UNUSED(dbg);
// We know the received object is a string
QString *val = reinterpret_cast<QString *>(obj);
return *val;
QString val = *reinterpret_cast<QString *>(obj);
return val;
}
QString AngelObjString::arrayToString(void *obj, asDebugger *dbg) {

View File

@ -37,6 +37,8 @@
#include "utilities.h"
#include "wingmessagebox.h"
#include <KSyntaxHighlighting/Repository>
AppManager *AppManager::_instance = nullptr;
AppManager::AppManager(int &argc, char *argv[])
@ -81,6 +83,10 @@ AppManager::AppManager(int &argc, char *argv[])
SkinManager::instance();
// add angelscript highlight support
auto &repo = WingCodeEdit::syntaxRepo();
repo.addCustomSearchPath(QStringLiteral(":/WingScript/Angelscript"));
auto dontSplash = set.dontUseSplash();
SplashDialog *splash = nullptr;

View File

@ -36,15 +36,12 @@ AsCompletion::AsCompletion(asIScriptEngine *engine, WingCodeEdit *p)
: WingCompleter(p), parser(engine), _engine(engine) {
Q_ASSERT(engine);
// addTrigger(*DOT_TRIGGER);
// addTrigger(*DBL_COLON_TRIGGER);
// // unleash the power of call tips
// addTrigger(*LEFT_PARE_TRIGGER);
// // clear the tips
// addTrigger(*SEMI_COLON_TRIGGER);
// setTrigWordLen(3);
setTriggerList({*DOT_TRIGGER, *DBL_COLON_TRIGGER,
// unleash the power of call tips
*LEFT_PARE_TRIGGER,
// clear the tips
*SEMI_COLON_TRIGGER});
setTriggerAmount(3);
}
AsCompletion::~AsCompletion() {}

35
src/class/codeinfotip.h Normal file
View File

@ -0,0 +1,35 @@
/*==============================================================================
** Copyright (C) 2024-2027 WingSummer
**
** This program is free software: you can redistribute it and/or modify it under
** the terms of the GNU Affero General Public License as published by the Free
** Software Foundation, version 3.
**
** This program is distributed in the hope that it will be useful, but WITHOUT
** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
** FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
** details.
**
** You should have received a copy of the GNU Affero General Public License
** along with this program. If not, see <https://www.gnu.org/licenses/>.
** =============================================================================
*/
#ifndef CODEINFOTIP_H
#define CODEINFOTIP_H
#include <QString>
class CodeInfoTip {
public:
enum class Type { Class, Function, Enum, Variable };
public:
QString name;
Type type;
QString nameSpace;
QString args; // only function use
};
#endif // CODEINFOTIP_H

20
src/control/codeedit.cpp Normal file
View File

@ -0,0 +1,20 @@
/*==============================================================================
** Copyright (C) 2024-2027 WingSummer
**
** This program is free software: you can redistribute it and/or modify it under
** the terms of the GNU Affero General Public License as published by the Free
** Software Foundation, version 3.
**
** This program is distributed in the hope that it will be useful, but WITHOUT
** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
** FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
** details.
**
** You should have received a copy of the GNU Affero General Public License
** along with this program. If not, see <https://www.gnu.org/licenses/>.
** =============================================================================
*/
#include "codeedit.h"
CodeEdit::CodeEdit(QWidget *parent) : WingCodeEdit(parent) {}

35
src/control/codeedit.h Normal file
View File

@ -0,0 +1,35 @@
/*==============================================================================
** Copyright (C) 2024-2027 WingSummer
**
** This program is free software: you can redistribute it and/or modify it under
** the terms of the GNU Affero General Public License as published by the Free
** Software Foundation, version 3.
**
** This program is distributed in the hope that it will be useful, but WITHOUT
** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
** FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
** details.
**
** You should have received a copy of the GNU Affero General Public License
** along with this program. If not, see <https://www.gnu.org/licenses/>.
** =============================================================================
*/
#ifndef CODEEDIT_H
#define CODEEDIT_H
#include "WingCodeEdit/wingcodeedit.h"
class CodeEdit : public WingCodeEdit {
Q_OBJECT
public:
explicit CodeEdit(QWidget *parent = nullptr);
signals:
void contentModified(bool b);
private:
};
#endif // CODEEDIT_H

View File

@ -27,6 +27,7 @@
#include <QFile>
#include <QPixmap>
#include <KSyntaxHighlighting/Definition>
#include <KSyntaxHighlighting/Repository>
#include <KSyntaxHighlighting/Theme>
@ -42,7 +43,7 @@ ScriptEditor::ScriptEditor(QWidget *parent)
this->setFocusPolicy(Qt::StrongFocus);
this->setObjectName(QStringLiteral("ScriptEditor"));
m_editor = new WingCodeEdit(this);
m_editor = new CodeEdit(this);
m_editor->setAutoIndent(true);
m_editor->setMatchBraces(true);
m_editor->setShowLongLineEdge(true);
@ -64,6 +65,9 @@ ScriptEditor::ScriptEditor(QWidget *parent)
break;
}
m_editor->setSyntax(
m_editor->syntaxRepo().definitionForName("AngelScript"));
connect(m_editor, &WingCodeEdit::symbolMarkLineMarginClicked, this,
&ScriptEditor::onToggleMark);
@ -154,7 +158,7 @@ void ScriptEditor::processTitle() {
}
}
WingCodeEdit *ScriptEditor::editor() const { return m_editor; }
CodeEdit *ScriptEditor::editor() const { return m_editor; }
bool ScriptEditor::formatCode() {
bool ok;

View File

@ -19,7 +19,7 @@
#define SCRIPTEDITOR_H
#include "Qt-Advanced-Docking-System/src/DockWidget.h"
#include "wingcodeedit.h"
#include "control/codeedit.h"
class ScriptEditor : public ads::CDockWidget {
Q_OBJECT
@ -30,7 +30,7 @@ public:
QString fileName() const;
WingCodeEdit *editor() const;
CodeEdit *editor() const;
bool formatCode();
@ -49,7 +49,7 @@ private:
void processTitle();
private:
WingCodeEdit *m_editor = nullptr;
CodeEdit *m_editor = nullptr;
QString m_fileName;
};

View File

@ -20,13 +20,16 @@
#include "class/scriptconsolemachine.h"
#include "qregularexpression.h"
#include <KSyntaxHighlighting/Definition>
#include <KSyntaxHighlighting/Repository>
#include <QApplication>
#include <QColor>
#include <QKeyEvent>
#include <QTextObject>
ScriptingConsole::ScriptingConsole(QWidget *parent) : QConsoleWidget(parent) {
_warnCharFmt.setForeground(QColorConstants::Svg::gold);
setSyntax(syntaxRepo().definitionForName("AngelScript"));
}
ScriptingConsole::~ScriptingConsole() {}
@ -93,11 +96,11 @@ void ScriptingConsole::init() {
}
void ScriptingConsole::initOutput() {
_s << QStringLiteral(R"(""")") << Qt::endl;
write(tr("Scripting console for WingHexExplorer"));
_s << Qt::endl;
write(tr(">>>> Powered by AngelScript <<<<"));
_s << Qt::endl << Qt::endl;
_s << Qt::endl << QStringLiteral(R"(""")") << Qt::endl;
appendCommandPrompt();
setMode(Input);
}

View File

@ -71,7 +71,6 @@ private:
QMutex _queueLocker;
bool _waitforRead = false;
QTextCharFormat _warnCharFmt;
std::function<QString(void)> _getInputFn;
};

View File

@ -177,30 +177,32 @@ void ScriptingDialog::initConsole() {
}
}
const auto bpMark = QStringLiteral("bp");
const auto curSym = QStringLiteral("cur");
const auto hitCur = QStringLiteral("curbp");
// remove the last mark
if (!_lastCurLine.first.isEmpty() && _lastCurLine.second >= 0) {
// auto lastCur = QCodeEdit::managed(_lastCurLine.first);
// auto doc = lastCur->document();
// auto line = doc->line(_lastCurLine.second - 1);
// if (line.hasMark(curMark)) {
// line.removeMark(curMark);
// } else if (line.hasMark(curHitMark)) {
// line.removeMark(curHitMark);
// line.addMark(bpMark);
// }
auto lastCur = findEditorView(_lastCurLine.first);
auto e = lastCur->editor();
auto symID = e->symbolMark(_lastCurLine.second);
if (symID == curSym) {
e->removeSymbolMark(_lastCurLine.second);
} else if (symID == hitCur) {
e->addSymbolMark(_lastCurLine.second, bpMark);
}
}
auto editor = e->editor();
// add the new mark
// auto doc = editor->document();
// auto line = doc->line(lineNr - 1);
// if (line.hasMark(bpMark)) {
// line.removeMark(bpMark);
// line.addMark(curHitMark);
// } else {
// line.addMark(curMark);
// }
auto symID = editor->symbolMark(lineNr);
if (symID == bpMark) {
editor->addSymbolMark(lineNr, hitCur);
} else {
editor->addSymbolMark(lineNr, curSym);
}
// editor->ensureVisible(lineNr - 1);
@ -812,44 +814,39 @@ void ScriptingDialog::swapEditor(ScriptEditor *old, ScriptEditor *cur) {
}
if (old != nullptr) {
// auto editor = old->editor();
// editor->disconnect(SIGNAL(copyAvailable(bool)));
// editor->disconnect(SIGNAL(contentModified(bool)));
// editor->disconnect(SIGNAL(undoAvailable(bool)));
// editor->disconnect(SIGNAL(redoAvailable(bool)));
// editor->disconnect(SIGNAL(zoomed()));
auto editor = old->editor();
editor->disconnect(SIGNAL(copyAvailable(bool)));
editor->disconnect(SIGNAL(contentModified(bool)));
editor->disconnect(SIGNAL(undoAvailable(bool)));
editor->disconnect(SIGNAL(redoAvailable(bool)));
editor->disconnect(SIGNAL(copyAvailable(bool)));
}
// auto editor = cur->editor();
// m_Tbtneditors.value(ToolButtonIndex::UNDO_ACTION)
// ->setEnabled(editor->canUndo());
// m_Tbtneditors.value(ToolButtonIndex::REDO_ACTION)
// ->setEnabled(editor->canRedo());
// m_Tbtneditors.value(ToolButtonIndex::SAVE_ACTION)
// ->setEnabled(Utilities::fileCanWrite(editor->fileName()) &&
// editor->isContentModified());
// m_Tbtneditors.value(ToolButtonIndex::COPY_ACTION)
// ->setEnabled(editor->cursor().hasSelection());
auto editor = cur->editor();
m_Tbtneditors.value(ToolButtonIndex::UNDO_ACTION)
->setEnabled(editor->document()->isUndoAvailable());
m_Tbtneditors.value(ToolButtonIndex::REDO_ACTION)
->setEnabled(editor->document()->isRedoAvailable());
m_Tbtneditors.value(ToolButtonIndex::SAVE_ACTION)
->setEnabled(Utilities::fileCanWrite(cur->fileName()) &&
editor->document()->isModified());
m_Tbtneditors.value(ToolButtonIndex::COPY_ACTION)
->setEnabled(editor->textCursor().hasSelection());
// connect(editor, &QEditor::copyAvailable,
// m_Tbtneditors.value(ToolButtonIndex::COPY_ACTION),
// &QToolButton::setEnabled);
// connect(editor, &QEditor::contentModified, this, [=] {
// m_Tbtneditors.value(ToolButtonIndex::SAVE_ACTION)
// ->setEnabled(Utilities::fileCanWrite(editor->fileName()) &&
// editor->isContentModified());
// });
// connect(editor, &QEditor::undoAvailable,
// m_Tbtneditors.value(ToolButtonIndex::UNDO_ACTION),
// &QToolButton::setEnabled);
// connect(editor, &QEditor::redoAvailable,
// m_Tbtneditors.value(ToolButtonIndex::REDO_ACTION),
// &QToolButton::setEnabled);
// connect(editor, &QEditor::zoomed, this, [=] {
// Toast::toast(this, NAMEICONRES(QStringLiteral("scale")),
// QString::number(editor->scaleRate() * 100) +
// QStringLiteral("%"));
// });
connect(editor, &CodeEdit::copyAvailable,
m_Tbtneditors.value(ToolButtonIndex::COPY_ACTION),
&QToolButton::setEnabled);
connect(editor, &CodeEdit::contentModified, this, [=] {
m_Tbtneditors.value(ToolButtonIndex::SAVE_ACTION)
->setEnabled(Utilities::fileCanWrite(cur->fileName()) &&
editor->document()->isModified());
});
connect(editor, &CodeEdit::undoAvailable,
m_Tbtneditors.value(ToolButtonIndex::UNDO_ACTION),
&QToolButton::setEnabled);
connect(editor, &CodeEdit::redoAvailable,
m_Tbtneditors.value(ToolButtonIndex::REDO_ACTION),
&QToolButton::setEnabled);
m_curEditor = cur;
}

View File

@ -0,0 +1,170 @@
/*==============================================================================
** Copyright (C) 2024-2027 WingSummer
**
** This program is free software: you can redistribute it and/or modify it under
** the terms of the GNU Affero General Public License as published by the Free
** Software Foundation, version 3.
**
** This program is distributed in the hope that it will be useful, but WITHOUT
** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
** FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
** details.
**
** You should have received a copy of the GNU Affero General Public License
** along with this program. If not, see <https://www.gnu.org/licenses/>.
** =============================================================================
*/
#include "showtextdialog.h"
#include "class/qkeysequences.h"
#include "class/wingmessagebox.h"
#include "control/codeedit.h"
#include "control/toast.h"
#include "dialog/encodingdialog.h"
#include <QThread>
#include <QVBoxLayout>
constexpr auto EMPTY_FUNC = [] {};
ShowTextDialog::ShowTextDialog(QWidget *parent) : FramelessDialogBase(parent) {
this->setUpdatesEnabled(false);
// build up UI
buildUpRibbonBar();
auto cw = new QWidget(this);
cw->setSizePolicy(
QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
auto layout = new QVBoxLayout(cw);
layout->setContentsMargins(1, 0, 1, 0);
layout->setSpacing(0);
layout->addWidget(q_check_ptr(m_ribbon));
m_edit = new WingCodeEdit(this);
// auto editor = m_edit->editor();
// editor->setCodec(QStringLiteral("ASCII"));
// connect(editor, &QEditor::needLoading, this,
// [this]() { load(m_last.buffer, m_last.offset, m_last.size); });
m_edit->setReadOnly(true);
m_edit->setAcceptDrops(false);
m_edit->setUndoRedoEnabled(false);
// m_edit->createSimpleBasicContextMenu(true, true);
layout->addWidget(m_edit);
m_status = new QStatusBar(this);
layout->addWidget(m_status);
buildUpContent(cw);
// ok, preparing for starting...
this->setWindowTitle(tr("TextBroswer"));
this->setWindowIcon(ICONRES(QStringLiteral("viewtxt")));
this->setMinimumSize(800, 600);
this->setUpdatesEnabled(true);
}
ShowTextDialog::~ShowTextDialog() {}
void ShowTextDialog::load(QHexBuffer *buffer, const QString encoding,
qsizetype offset, qsizetype size) {
// auto editor = m_edit->editor();
// editor->blockSignals(true);
// editor->setCodec(encoding);
// load(buffer, offset, size);
// editor->blockSignals(false);
}
void ShowTextDialog::load(QHexBuffer *buffer, qsizetype offset,
qsizetype size) {
if (buffer == nullptr || offset < 0) {
return;
}
m_canceled = false;
if (size < 0) {
size = buffer->length();
}
if (size >= std::numeric_limits<decltype(size)>::max()) {
WingMessageBox::critical(this, this->windowTitle(), tr("TooHugeFile"));
return;
}
// auto editor = m_edit->editor();
// editor->setUpdatesEnabled(false);
// auto doc = editor->document();
// auto orign = offset;
// editor->setUpdatesEnabled(true);
// m_status->showMessage(editor->codecName());
}
void ShowTextDialog::buildUpRibbonBar() {
m_ribbon = new Ribbon(this);
m_ribbon->setAcceptDrops(false);
buildEditPage(m_ribbon->addTab(tr("Edit")));
buildViewPage(m_ribbon->addTab(tr("View")));
}
RibbonTabContent *ShowTextDialog::buildEditPage(RibbonTabContent *tab) {
auto shortcuts = QKeySequences::instance();
{
auto pannel = tab->addGroup(tr("General"));
auto a = addPannelAction(pannel, QStringLiteral("copy"), tr("Copy"),
&ShowTextDialog::on_copyfile);
setPannelActionToolTip(a, QKeySequence::Copy);
a = addPannelAction(pannel, QStringLiteral("find"), tr("Find"),
&ShowTextDialog::on_findfile);
setPannelActionToolTip(a, QKeySequence::Find);
a = addPannelAction(pannel, QStringLiteral("jmp"), tr("Goto"),
&ShowTextDialog::on_gotoline);
setPannelActionToolTip(a,
shortcuts.keySequence(QKeySequences::Key::GOTO));
addPannelAction(pannel, QStringLiteral("encoding"), tr("Encoding"),
&ShowTextDialog::on_encoding,
shortcuts.keySequence(QKeySequences::Key::ENCODING));
}
return tab;
}
RibbonTabContent *ShowTextDialog::buildViewPage(RibbonTabContent *tab) {
auto shortcuts = QKeySequences::instance();
auto pannel = tab->addGroup(tr("Display"));
return tab;
}
void ShowTextDialog::on_copyfile() {
// m_edit->editor()->copy();
Toast::toast(this, NAMEICONRES(QStringLiteral("copy")),
tr("CopyToClipBoard"));
}
void ShowTextDialog::on_findfile() {
// m_edit->editor()->find();
}
void ShowTextDialog::on_gotoline() {
// m_edit->editor()->gotoLine();
}
void ShowTextDialog::on_encoding() {
EncodingDialog d;
if (d.exec()) {
auto res = d.getResult();
// m_edit->editor()->setCodec(res);
}
}
void ShowTextDialog::on_cancel() { m_canceled = true; }

135
src/dialog/showtextdialog.h Normal file
View File

@ -0,0 +1,135 @@
/*==============================================================================
** Copyright (C) 2024-2027 WingSummer
**
** This program is free software: you can redistribute it and/or modify it under
** the terms of the GNU Affero General Public License as published by the Free
** Software Foundation, version 3.
**
** This program is distributed in the hope that it will be useful, but WITHOUT
** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
** FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
** details.
**
** You should have received a copy of the GNU Affero General Public License
** along with this program. If not, see <https://www.gnu.org/licenses/>.
** =============================================================================
*/
#ifndef SHOWTEXTDIALOG_H
#define SHOWTEXTDIALOG_H
#include "QHexView/document/buffer/qhexbuffer.h"
#include "QWingRibbon/ribbon.h"
#include "QWingRibbon/ribbonbuttongroup.h"
#include "QWingRibbon/ribbontabcontent.h"
#include "framelessdialogbase.h"
#include "utilities.h"
#include "WingCodeEdit/wingcodeedit.h"
#include <QShortcut>
#include <QStatusBar>
#include <QToolButton>
class ShowTextDialog : public FramelessDialogBase {
Q_OBJECT
public:
explicit ShowTextDialog(QWidget *parent = nullptr);
virtual ~ShowTextDialog();
public:
void load(QHexBuffer *buffer, const QString encoding, qsizetype offset = 0,
qsizetype size = -1);
void load(QHexBuffer *buffer, qsizetype offset = 0, qsizetype size = -1);
private:
void buildUpRibbonBar();
RibbonTabContent *buildEditPage(RibbonTabContent *tab);
RibbonTabContent *buildViewPage(RibbonTabContent *tab);
private:
template <typename Func>
inline QToolButton *
addPannelAction(RibbonButtonGroup *pannel, const QString &iconName,
const QString &title, Func &&slot,
const QKeySequence &shortcut = QKeySequence(),
QMenu *menu = nullptr) {
return addPannelAction(pannel, ICONRES(iconName), title, slot, shortcut,
menu);
}
template <typename Func>
inline QToolButton *
addPannelAction(RibbonButtonGroup *pannel, const QIcon &icon,
const QString &title, Func &&slot,
const QKeySequence &shortcut = QKeySequence(),
QMenu *menu = nullptr) {
Q_ASSERT(pannel);
auto a = new QToolButton(pannel);
a->setText(title);
a->setIcon(icon);
setPannelActionToolTip(a, shortcut);
if (!shortcut.isEmpty()) {
auto shortCut = new QShortcut(shortcut, this);
shortCut->setContext(Qt::WindowShortcut);
connect(shortCut, &QShortcut::activated, a, &QToolButton::click);
}
a->setMenu(menu);
if (menu) {
a->setPopupMode(QToolButton::InstantPopup);
}
connect(a, &QToolButton::clicked, this, slot);
pannel->addButton(a);
return a;
}
template <typename Func>
inline QAction *newAction(const QString &title, Func &&slot,
const QKeySequence &shortcut = QKeySequence()) {
auto a = new QAction;
a->setText(title);
a->setShortcutVisibleInContextMenu(true);
a->setShortcut(shortcut);
connect(a, &QAction::triggered, this, slot);
return a;
}
inline void
setPannelActionToolTip(QToolButton *action,
const QKeySequence &shortcut = QKeySequence()) {
Q_ASSERT(action);
auto title = action->text();
action->setToolTip(
shortcut.isEmpty()
? QStringLiteral("<p align=\"center\">%1</p>").arg(title)
: QStringLiteral(
"<p align=\"center\">%1</p><p align=\"center\">%2</p>")
.arg(title, shortcut.toString()));
}
private slots:
void on_copyfile();
void on_findfile();
void on_gotoline();
void on_encoding();
void on_cancel();
private:
Ribbon *m_ribbon = nullptr;
WingCodeEdit *m_edit = nullptr;
bool m_canceled = false;
QStatusBar *m_status = nullptr;
struct {
QHexBuffer *buffer = nullptr;
qsizetype offset = 0;
qsizetype size = -1;
} m_last;
};
#endif // SHOWTEXTDIALOG_H