diff --git a/include/SFML/Window.hpp b/include/SFML/Window.hpp index b945da107..531b239f0 100644 --- a/include/SFML/Window.hpp +++ b/include/SFML/Window.hpp @@ -30,6 +30,7 @@ //////////////////////////////////////////////////////////// #include +#include #include #include #include diff --git a/include/SFML/Window/Clipboard.hpp b/include/SFML/Window/Clipboard.hpp new file mode 100644 index 000000000..696d8a0e0 --- /dev/null +++ b/include/SFML/Window/Clipboard.hpp @@ -0,0 +1,108 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2017 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_CLIPBOARD_HPP +#define SFML_CLIPBOARD_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Give access to the system clipboard +/// +//////////////////////////////////////////////////////////// +class SFML_WINDOW_API Clipboard +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Get the content of the clipboard as string data + /// + /// This function returns the content of the clipboard + /// as a string. If the clipboard does not contain string + /// it returns an empty sf::String object. + /// + /// \return Clipboard contents as sf::String object + /// + //////////////////////////////////////////////////////////// + static String getString(); + + //////////////////////////////////////////////////////////// + /// \brief Set the content of the clipboard as string data + /// + /// This function sets the content of the clipboard as a + /// string. + /// + /// \param text sf::String containing the data to be sent + /// to the clipboard + /// + //////////////////////////////////////////////////////////// + static void setString(const String& text); +}; + +} // namespace sf + + +#endif // SFML_CLIPBOARD_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Clipboard +/// \ingroup window +/// +/// sf::Clipboard provides an interface for getting and +/// setting the contents of the system clipboard. +/// +/// Usage example: +/// \code +/// // get the clipboard content as a string +/// sf::String string = sf::Clipboard::getString(); +/// +/// // or use it in the event loop +/// sf::Event event; +/// while(window.pollEvent(event)) +/// { +/// if(event.type == sf::Event::Closed) +/// window.close(); +/// if(event.type == sf::Event::KeyPressed) +/// { +/// // Using Ctrl + V to paste a string into SFML +/// if(event.key.control && event.key.code == sf::Keyboard::V) +/// string = sf::Clipboard::getString(); +/// } +/// } +/// +/// // set the clipboard to a string +/// sf::Clipboard::setString("Hello World!"); +/// \endcode +/// +/// \see sf::String, sf::Event +/// +//////////////////////////////////////////////////////////// diff --git a/src/SFML/Window/CMakeLists.txt b/src/SFML/Window/CMakeLists.txt index ee5499685..9a7da0a53 100644 --- a/src/SFML/Window/CMakeLists.txt +++ b/src/SFML/Window/CMakeLists.txt @@ -4,6 +4,9 @@ set(SRCROOT ${PROJECT_SOURCE_DIR}/src/SFML/Window) # all source files set(SRC + ${INCROOT}/Clipboard.hpp + ${SRCROOT}/Clipboard.cpp + ${SRCROOT}/ClipboardImpl.hpp ${SRCROOT}/Context.cpp ${INCROOT}/Context.hpp ${SRCROOT}/Cursor.cpp diff --git a/src/SFML/Window/Clipboard.cpp b/src/SFML/Window/Clipboard.cpp new file mode 100644 index 000000000..ee7b8456f --- /dev/null +++ b/src/SFML/Window/Clipboard.cpp @@ -0,0 +1,48 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2017 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +String Clipboard::getString() +{ + return priv::ClipboardImpl::getString(); +} + + +//////////////////////////////////////////////////////////// +void Clipboard::setString(const String& text) +{ + return priv::ClipboardImpl::setString(text); +} + +} // namespace sf diff --git a/src/SFML/Window/ClipboardImpl.hpp b/src/SFML/Window/ClipboardImpl.hpp new file mode 100644 index 000000000..4d9c91967 --- /dev/null +++ b/src/SFML/Window/ClipboardImpl.hpp @@ -0,0 +1,45 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2017 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_CLIPBOARDIMPL_HPP +#define SFML_CLIPBOARDIMPL_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + +#if defined(SFML_SYSTEM_WINDOWS) + #include +#elif defined(SFML_SYSTEM_LINUX) || defined(SFML_SYSTEM_FREEBSD) + #include +#elif defined(SFML_SYSTEM_MACOS) + #include +#elif defined(SFML_SYSTEM_IOS) + #include +#elif defined(SFML_SYSTEM_ANDROID) + #include +#endif + +#endif // SFML_CLIPBOARDIMPL_HPP