Temporary fix for command output to console widget.

* partially revert #3193 - printing the terminal escape sequences directly to text widget causes more issues than the tab problem it tried to fix
* move the conversation to html from command task to the console widget
* add hack converting tab to multiple spaces
This commit is contained in:
Karliss 2023-11-11 16:34:47 +02:00 committed by karliss
parent fe85af2560
commit 7256fbb00e
4 changed files with 9 additions and 13 deletions

View File

@ -2,8 +2,7 @@
#include "CommandTask.h"
#include "TempConfig.h"
CommandTask::CommandTask(const QString &cmd, ColorMode colorMode, bool outFormatHtml)
: cmd(cmd), colorMode(colorMode), outFormatHtml(outFormatHtml)
CommandTask::CommandTask(const QString &cmd, ColorMode colorMode) : cmd(cmd), colorMode(colorMode)
{
}
@ -12,8 +11,5 @@ void CommandTask::runTask()
TempConfig tempConfig;
tempConfig.set("scr.color", colorMode);
auto res = Core()->cmdTask(cmd);
if (outFormatHtml) {
res = CutterCore::ansiEscapeToHtml(res);
}
emit finished(res);
}

View File

@ -17,8 +17,7 @@ public:
MODE_16M = COLOR_MODE_16M
};
CommandTask(const QString &cmd, ColorMode colorMode = ColorMode::DISABLED,
bool outFormatHtml = false);
CommandTask(const QString &cmd, ColorMode colorMode = ColorMode::DISABLED);
QString getTitle() override { return tr("Running Command"); }
@ -31,7 +30,6 @@ protected:
private:
QString cmd;
ColorMode colorMode;
bool outFormatHtml;
};
#endif // COMMANDTASK_H

View File

@ -4451,11 +4451,13 @@ bool CutterCore::setColor(const QString &key, const QString &color)
QString CutterCore::ansiEscapeToHtml(const QString &text)
{
int len;
char *html = rz_cons_html_filter(text.toUtf8().constData(), &len);
QString r = text;
r.replace("\t", " ");
char *html = rz_cons_html_filter(r.toUtf8().constData(), &len);
if (!html) {
return {};
}
QString r = QString::fromUtf8(html, len);
r = QString::fromUtf8(html, len);
rz_mem_free(html);
return r;
}

View File

@ -228,11 +228,11 @@ void ConsoleWidget::executeCommand(const QString &command)
addOutput(cmd_line);
RVA oldOffset = Core()->getOffset();
commandTask = QSharedPointer<CommandTask>(
new CommandTask(command, CommandTask::ColorMode::MODE_256, false));
commandTask =
QSharedPointer<CommandTask>(new CommandTask(command, CommandTask::ColorMode::MODE_16M));
connect(commandTask.data(), &CommandTask::finished, this,
[this, cmd_line, command, oldOffset](const QString &result) {
ui->outputTextEdit->appendPlainText(result);
ui->outputTextEdit->appendHtml(CutterCore::ansiEscapeToHtml(result));
scrollOutputToEnd();
historyAdd(command);
commandTask.clear();