Files
qelectrotech-source-mirror/sources/utils/qetsettings.h
T
ispyisail 2fb14c5bd0 Live mode: an AI assistant acts on the open project while the user watches
A new setting, Configurer QElectroTech > Général > "Autoriser un assistant
IA à agir sur le projet ouvert", off by default. Off, nothing changes:
no channel is opened. On, every start shows a warning first -- Continuer,
Pas pour cette session, or Désactiver -- and nothing can connect until
the user answers Continuer. It waits for any other start-up question to
be answered, so the two never stack.

Accepted, LiveServer opens a local socket only the user's account can
use, with a random name and token written to live-session.json in the
data folder for the qet MCP server, and removed when the channel closes.
One JSON request per line: status (project, folio on screen, selection,
last undo step, stored scripts), run_script and run_stored. Requests are
queued out of the socket handler before they run (the lesson of PR #861).

Each run is one undo step named "Assistant : <name>". The status bar
shows the mode and the assistant's last action with a ✓ or ✗ and the
time, and an Arrêter button that closes the channel for the session.
Unticking the setting closes it at once.

QetScripting::runSource() runs script text and, for a live run, returns
what qet.log() wrote, the error with its line and the undo step instead
of showing boxes; qet.showMessage() is logged rather than opening a box
nobody asked for.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 10:41:29 +13:00

68 lines
2.3 KiB
C++

/*
Copyright 2006-2026 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef QETSETTINGS_H
#define QETSETTINGS_H
#include <Qt>
#include <QColor>
#include <QStringList>
/**
*Interface to use QSettings in QElectroTech
*Prefer use this namespace instead of directly QSettings
*It's notably useful when some QSettings value are used in
*different part of QElectroTech source code
*/
namespace QetSettings
{
void setHdpiScaleFactorRoundingPolicy(const QString &policy_str);
void setHdpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy policy);
Qt::HighDpiScaleFactorRoundingPolicy hdpiScaleFactorRoundingPolicy(
Qt::HighDpiScaleFactorRoundingPolicy default_policy = Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
bool scriptingEnabled();
void setScriptingEnabled(bool enabled);
bool scriptingForcedByEnvironment();
bool liveAssistantEnabled();
void setLiveAssistantEnabled(bool enabled);
/**
@brief The sheet (folio) background the diagram editors draw.
Both halves are needed, not just the colour: with custom == false
the sheet follows the system ("Couleur systeme") and the views are
free to invert the lightness on a dark palette, while the very same
#ffffff with custom == true is an explicit "always white" that
must not be inverted. Storing only the colour would collapse the
two on the next start.
*/
struct SheetBackground
{
QColor color;
bool custom = false;
};
SheetBackground sheetBackground();
void setSheetBackground(const SheetBackground &background);
QStringList sheetBackgroundRecentColors();
void setSheetBackgroundRecentColors(const QStringList &colors);
}
#endif // QETSETTINGS_H