diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 11:50:49 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 11:50:49 +0000 |
commit | c853ffb5b2f75f5a889ed2e3ef89b818a736e87a (patch) | |
tree | 7d13a0883bb7936b84d6ecdd7bc332b41ed04bee /src/ui/clipboard.h | |
parent | Initial commit. (diff) | |
download | inkscape-c853ffb5b2f75f5a889ed2e3ef89b818a736e87a.tar.xz inkscape-c853ffb5b2f75f5a889ed2e3ef89b818a736e87a.zip |
Adding upstream version 1.3+ds.upstream/1.3+dsupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/ui/clipboard.h')
-rw-r--r-- | src/ui/clipboard.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/ui/clipboard.h b/src/ui/clipboard.h new file mode 100644 index 0000000..b2537ed --- /dev/null +++ b/src/ui/clipboard.h @@ -0,0 +1,80 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * @brief System-wide clipboard management - class declaration + *//* + * Authors: see git history + * Krzysztof KosiĆski <tweenk@o2.pl> + * Jon A. Cruz <jon@joncruz.org> + * + * + * Copyright (C) 2018 Authors + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#ifndef SEEN_INKSCAPE_CLIPBOARD_H +#define SEEN_INKSCAPE_CLIPBOARD_H + +#include <glibmm/ustring.h> +#include <vector> +#include <2geom/point.h> +#include <2geom/rect.h> + +// forward declarations +class SPDesktop; +class SPDocument; +namespace Inkscape { +class ObjectSet; +namespace XML { class Node; } +namespace LivePathEffect { class PathParam; } + +namespace UI { + +/** + * @brief System-wide clipboard manager + * + * ClipboardManager takes care of manipulating the system clipboard in response + * to user actions. It holds a complete SPDocument as the contents. This document + * is exported using output extensions when other applications request data. + * Copying to another instance of Inkscape is special-cased, because of the extra + * data required (i.e. style, size, Live Path Effects parameters, etc.) + */ + +class ClipboardManager { +public: + virtual void copy(ObjectSet *set) = 0; + virtual void copyPathParameter(Inkscape::LivePathEffect::PathParam *) = 0; + virtual void copySymbol(Inkscape::XML::Node* symbol, gchar const* style, SPDocument *source, Geom::Rect const &bbox) = 0; + virtual void insertSymbol(SPDesktop *desktop, Geom::Point const &shift_dt) = 0; + virtual bool paste(SPDesktop *desktop, bool in_place = false, bool on_page = false) = 0; + virtual bool pasteStyle(ObjectSet *set) = 0; + virtual bool pasteSize(ObjectSet *set, bool separately, bool apply_x, bool apply_y) = 0; + virtual bool pastePathEffect(ObjectSet *set) = 0; + virtual Glib::ustring getPathParameter(SPDesktop* desktop) = 0; + virtual Glib::ustring getShapeOrTextObjectId(SPDesktop *desktop) = 0; + virtual std::vector<Glib::ustring> getElementsOfType(SPDesktop *desktop, gchar const* type = "*", gint maxdepth = -1) = 0; + virtual Glib::ustring getFirstObjectID() = 0; + static ClipboardManager *get(); +protected: + ClipboardManager(); // singleton + virtual ~ClipboardManager(); +private: + ClipboardManager(const ClipboardManager &) = delete; ///< no copy + ClipboardManager &operator=(const ClipboardManager &) = delete; ///< no assign + + static ClipboardManager *_instance; +}; + +} // namespace IO +} // namespace Inkscape + +#endif +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : |