17 if (command ==
"undo") {
18 return handleUndo(params, requestId);
19 }
else if (command ==
"redo") {
20 return handleRedo(params, requestId);
21 }
else if (command ==
"get_undo_stack") {
22 return handleGetUndoStack(params, requestId);
29QJsonObject HistoryHandler::handleUndo(
const QJsonObject ¶ms,
const QJsonValue &requestId)
37 QUndoStack *undoStack = scene->
undoStack();
43 if (!undoStack->canUndo()) {
45 result[
"success"] =
false;
46 result[
"message"] =
"Nothing to undo";
53 result[
"success"] =
true;
54 result[
"message"] =
"Undo operation completed";
55 result[
"can_undo"] = undoStack->canUndo();
56 result[
"can_redo"] = undoStack->canRedo();
57 result[
"undo_text"] = undoStack->undoText();
58 result[
"redo_text"] = undoStack->redoText();
61 },
"undo", requestId);
64QJsonObject HistoryHandler::handleRedo(
const QJsonObject ¶ms,
const QJsonValue &requestId)
72 QUndoStack *undoStack = scene->
undoStack();
78 if (!undoStack->canRedo()) {
80 result[
"success"] =
false;
81 result[
"message"] =
"Nothing to redo";
88 result[
"success"] =
true;
89 result[
"message"] =
"Redo operation completed";
90 result[
"can_undo"] = undoStack->canUndo();
91 result[
"can_redo"] = undoStack->canRedo();
92 result[
"undo_text"] = undoStack->undoText();
93 result[
"redo_text"] = undoStack->redoText();
96 },
"redo", requestId);
99QJsonObject HistoryHandler::handleGetUndoStack(
const QJsonObject ¶ms,
const QJsonValue &requestId)
107 QUndoStack *undoStack = scene->
undoStack();
114 result[
"can_undo"] = undoStack->canUndo();
115 result[
"can_redo"] = undoStack->canRedo();
116 result[
"undo_text"] = undoStack->undoText();
117 result[
"redo_text"] = undoStack->redoText();
118 result[
"undo_limit"] = undoStack->undoLimit();
119 result[
"undo_count"] = undoStack->count();
120 result[
"undo_index"] = undoStack->index();
123 },
"get undo stack info", requestId);
Main circuit editing scene with undo/redo and user interaction.
QJsonObject createSuccessResponse(const QJsonObject &result={}, const QJsonValue &requestId=QJsonValue()) const
QJsonObject tryCommand(Fn &&fn, const QString &action, const QJsonValue &requestId=QJsonValue())
Wraps fn in a try/catch, returning an error response on exception.
BaseHandler(MainWindow *mainWindow, const MCPValidator *validator)
QJsonObject createErrorResponse(const QString &error, const QJsonValue &requestId=QJsonValue(), int code=JsonRpcError::InternalError) const
QJsonObject handleCommand(const QString &command, const QJsonObject ¶ms, const QJsonValue &requestId) override
HistoryHandler(MainWindow *mainWindow, const MCPValidator *validator)
JSON Schema validator for MCP commands and responses using native json-schema-validator.
The top-level application window hosting the tab bar, menus, element palette, and editor.
Main circuit editing scene.
QUndoStack * undoStack()
Returns the scene's undo stack.
constexpr int SceneNotAvailable
No active circuit scene to operate on.
constexpr int MethodNotFound
The requested method does not exist or is unavailable.
constexpr int InternalError
Internal JSON-RPC error (last-resort).