Assistant house style: rewrite qet-assistant.json when the style changes

qet.setHouseStyle() only saved the setting, so an assistant reading
qet-assistant.json saw the old text until QElectroTech restarted.
AssistantInfo::refresh() writes the file again, but only in a
QElectroTech that writes it at all: a headless --run would otherwise
replace the open QElectroTech's live channel with its own empty one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ispyisail
2026-10-05 18:35:38 +13:00
parent 44dfb9d8d5
commit 36d574179b
3 changed files with 20 additions and 3 deletions
+15 -3
View File
@@ -36,6 +36,7 @@
namespace {
QJsonObject s_live; ///< empty while live mode is closed
bool s_running = true;
bool s_watching = false; ///< this QElectroTech writes the file (an editor opened)
}
namespace AssistantInfo {
@@ -54,14 +55,25 @@ QString path()
*/
void watch()
{
static bool watching = false;
if (watching) return;
watching = true;
if (s_watching) return;
s_watching = true;
QObject::connect(&ScriptLibrary::instance(), &ScriptLibrary::changed, &write);
QObject::connect(qApp, &QCoreApplication::aboutToQuit, &markStopped);
write();
}
/**
@brief refresh
Write the file again after a setting it carries changed, but only in a
QElectroTech that writes it at all: a headless --run never opened an
editor, and writing from it would replace the open QElectroTech's live
channel with its own empty one.
*/
void refresh()
{
if (s_watching) write();
}
void write()
{
QJsonArray scripts, refused;
+1
View File
@@ -43,6 +43,7 @@ namespace AssistantInfo
QString path();
void watch();
void write();
void refresh();
void setLive(const QJsonObject &live);
void markStopped();
}
+4
View File
@@ -45,6 +45,7 @@
#include "../conductorrouter.h"
#include "../qetgraphicsitem/diagramimageitem.h"
#include "../utils/qetsettings.h"
#include "assistantinfo.h"
// See diagrameventaddpdf.h: a missing QtPdf module (or Qt < 6.4) is not
// fatal at build time, so addPdfPage() is always declared -- a script
@@ -4224,6 +4225,9 @@ QString QetScriptApi::houseStyle() const
bool QetScriptApi::setHouseStyle(const QString &text)
{
QetSettings::setHouseStyle(text);
//qet-assistant.json carries it: an assistant reading the file
//now must see the new text, not the one from the last start
AssistantInfo::refresh();
return true;
}