home *** CD-ROM | disk | FTP | other *** search
- /***************************************************************************
- 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
-