summaryrefslogtreecommitdiffstats
path: root/interfaces/khexedit/clipboardinterface.h
diff options
context:
space:
mode:
Diffstat (limited to 'interfaces/khexedit/clipboardinterface.h')
-rw-r--r--interfaces/khexedit/clipboardinterface.h86
1 files changed, 86 insertions, 0 deletions
diff --git a/interfaces/khexedit/clipboardinterface.h b/interfaces/khexedit/clipboardinterface.h
new file mode 100644
index 000000000..9edab8521
--- /dev/null
+++ b/interfaces/khexedit/clipboardinterface.h
@@ -0,0 +1,86 @@
+/***************************************************************************
+ clipboardinterface.h - description
+ -------------------
+ begin : Sat Sep 13 2003
+ copyright : (C) 2003 by Friedrich W. H. Kossebau
+ email : Friedrich.W.H@Kossebau.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This library is free software; you can redistribute it and/or *
+ * modify it under the terms of the GNU Library General Public *
+ * License version 2 as published by the Free Software Foundation. *
+ * *
+ ***************************************************************************/
+
+
+#ifndef CLIPBOARDINTERFACE_H
+#define CLIPBOARDINTERFACE_H
+
+namespace KHE
+{
+
+/**
+ * @short A simple interface for interaction with the clipboard
+ *
+ * This interface enables the interaction with the clipboard. It relies on the
+ * possibilities of signal/slot so a class B that implements this interface
+ * should be derived from QObject. When connecting to a signal or a slot
+ * the class B has to be used, not the interface.
+ * <p>
+ * Example:
+ * \code
+ * KHE::ClipboardInterface *Clipboard = KHE::clipboardInterface( BytesEditWidget );
+ * if( Clipboard )
+ * {
+ *   // Yes, use BytesEditWidget, not Clipboard, because that's the QObject, indeed hacky...
+ *   connect( BytesEditWidget, SIGNAL(copyAvailable(bool)), this, SLOT(offerCopy(bool)) );
+ * }
+ * \endcode
+ *
+ * @author Friedrich W. H. Kossebau <Friedrich.W.H@Kossebau.de>
+ * @see createBytesEditWidget(), clipboardInterface()
+ * @since 3.2
+ */
+class ClipboardInterface
+{
+ public: // slots
+ /** tries to copy. If there is nothing to copy this call is a noop. */
+ virtual void copy() = 0;
+ /** tries to cut. If there is nothing to cut this call is a noop. */
+ virtual void cut() = 0;
+ /** tries to paste.
+ * If there is nothing to paste or paste is not possible this call is a noop.
+ * Use BytesEditInterface::isReadOnly() to find out if you can paste at all.
+ */
+ virtual void paste() = 0;
+
+ public: // signals
+ /** signal: tells whether copy is possible or not.
+ * Remember to use the created object, not the interface for connecting
+ * Use BytesEditInterface::isReadOnly() to find out if you can also cut
+ * As this function symbol serves as a signal, this is a noop. Don't use it
+ * for anything else.
+ */
+ virtual void copyAvailable( bool Really ) = 0;
+};
+
+
+/** tries to get the clipboard interface of t
+ * @return a pointer to the interface, otherwise 0
+ * @author Friedrich W. H. Kossebau <Friedrich.W.H@Kossebau.de>
+ * @since 3.2
+*/
+template<class T>
+ClipboardInterface *clipboardInterface( T *t )
+{
+ if( !t )
+ return 0;
+
+ return static_cast<ClipboardInterface*>( t->qt_cast("KHE::ClipboardInterface") );
+}
+
+}
+
+#endif