wiRedPanda
Logic Circuit Simulator
Loading...
Searching...
No Matches
ClipboardManager.h
Go to the documentation of this file.
1// Copyright 2015 - 2026, GIBIS-UNIFESP and the wiRedPanda contributors
2// SPDX-License-Identifier: GPL-3.0-or-later
3
7
8#pragma once
9
10#include <optional>
11
12#include <QCoreApplication>
13#include <QDataStream>
14#include <QList>
15#include <QPointF>
16#include <QVersionNumber>
17
18class QGraphicsItem;
19class QImage;
20class QMimeData;
21class QRectF;
22class QTransform;
23class Scene;
24
34{
35 Q_DECLARE_TR_FUNCTIONS(ClipboardManager)
36
37public:
38 explicit ClipboardManager(Scene *scene);
39
41 void copy();
42
44 void cut();
45
47 void paste();
48
51 void duplicate();
52
59 static bool canPaste(const QMimeData *mimeData);
60
62 void cloneDrag(const QPointF &mousePos);
63
67 static constexpr int kMaxDragImageDimension = 1024;
68
76 static QImage buildDragImage(Scene *scene, const QTransform &viewTransform, const QRectF &sourceRect);
77
78private:
80 static void serializeItems(const QList<QGraphicsItem *> &items, QDataStream &stream);
81
83 void serializeAndDelete(const QList<QGraphicsItem *> &items, QDataStream &stream);
84
88 QList<QGraphicsItem *> deserializeAndAdd(QDataStream &stream, const QVersionNumber &version,
89 std::optional<QPointF> fixedOffset = std::nullopt);
90
91 Scene *m_scene = nullptr;
92};
void paste()
Pastes items from the system clipboard into the scene.
static QImage buildDragImage(Scene *scene, const QTransform &viewTransform, const QRectF &sourceRect)
Renders sourceRect of scene, mapped through viewTransform, into a transparent-filled QImage bounded b...
void cut()
Cuts the currently selected items (copy + delete).
ClipboardManager(Scene *scene)
void cloneDrag(const QPointF &mousePos)
Initiates a clone-drag (Ctrl+drag) of the current selection.
static bool canPaste(const QMimeData *mimeData)
Returns whether mimeData carries circuit data paste() accepts.
void copy()
Copies the currently selected items to the system clipboard.
static constexpr int kMaxDragImageDimension
Main circuit editing scene.
Definition Scene.h:56