139 lines
2.9 KiB
C++
139 lines
2.9 KiB
C++
/**
|
|
* @author Edouard DUPIN
|
|
*
|
|
* @copyright 2011, Edouard DUPIN, all right reserved
|
|
*
|
|
* @license BSD v3 (see license file)
|
|
*/
|
|
|
|
#include <etk/types.h>
|
|
|
|
#include <ewol/debug.h>
|
|
#include <ewol/clipBoard.h>
|
|
#include <ewol/renderer/os/gui.h>
|
|
#include <ewol/renderer/os/eSystem.h>
|
|
|
|
#undef __class__
|
|
#define __class__ "ClipBoard"
|
|
|
|
|
|
/*
|
|
note: la copy dans le :
|
|
0 : copy standard
|
|
[1..9] : copy interne
|
|
10 : bouton du milieux
|
|
*/
|
|
//!< Local copy of the clipboards
|
|
static etk::UString mesCopy[ewol::clipBoard::clipboardCount];
|
|
|
|
|
|
static const char* clipboardDescriptionString[ewol::clipBoard::clipboardCount+1] = {
|
|
"clipboard0",
|
|
"clipboard1",
|
|
"clipboard2",
|
|
"clipboard3",
|
|
"clipboard4",
|
|
"clipboard5",
|
|
"clipboard6",
|
|
"clipboard7",
|
|
"clipboard8",
|
|
"clipboard9",
|
|
"clipboardStd",
|
|
"clipboardSelection",
|
|
"clipboardCount"
|
|
};
|
|
|
|
etk::CCout& ewol::clipBoard::operator <<(etk::CCout &os, const ewol::clipBoard::clipboardListe_te obj)
|
|
{
|
|
if (obj>=0 && obj <ewol::clipBoard::clipboardCount) {
|
|
os << clipboardDescriptionString[obj];
|
|
} else {
|
|
os << "[ERROR]";
|
|
}
|
|
return os;
|
|
}
|
|
|
|
|
|
void ewol::clipBoard::Init(void)
|
|
{
|
|
EWOL_INFO("Initialyse ClipBoards");
|
|
for(int32_t i=0; i<ewol::clipBoard::clipboardCount; i++) {
|
|
mesCopy[i].Clear();
|
|
}
|
|
}
|
|
|
|
|
|
void ewol::clipBoard::UnInit(void)
|
|
{
|
|
EWOL_INFO("Initialyse ClipBoards");
|
|
for(int32_t i=0; i<ewol::clipBoard::clipboardCount; i++) {
|
|
mesCopy[i].Clear();
|
|
}
|
|
}
|
|
|
|
|
|
void ewol::clipBoard::Set(ewol::clipBoard::clipboardListe_te clipboardID, etk::UString &data)
|
|
{
|
|
// check if ID is correct
|
|
if(0 == data.Size()) {
|
|
EWOL_INFO("request a copy of nothing");
|
|
return;
|
|
} else
|
|
|
|
if(clipboardID >= ewol::clipBoard::clipboardCount) {
|
|
EWOL_WARNING("request ClickBoard id error");
|
|
return;
|
|
}
|
|
|
|
ewol::clipBoard::SetSystem(clipboardID, data);
|
|
|
|
if( ewol::clipBoard::clipboardStd == clipboardID
|
|
|| ewol::clipBoard::clipboardSelection == clipboardID) {
|
|
guiInterface::ClipBoardSet(clipboardID);
|
|
}
|
|
}
|
|
|
|
|
|
void ewol::clipBoard::Request(ewol::clipBoard::clipboardListe_te clipboardID)
|
|
{
|
|
if(clipboardID >= ewol::clipBoard::clipboardCount) {
|
|
EWOL_WARNING("request ClickBoard id error");
|
|
return;
|
|
}
|
|
|
|
if( ewol::clipBoard::clipboardStd == clipboardID
|
|
|| ewol::clipBoard::clipboardSelection == clipboardID) {
|
|
guiInterface::ClipBoardGet(clipboardID);
|
|
} else {
|
|
// generate an event on the main thread ...
|
|
eSystem::ClipBoardArrive(clipboardID);
|
|
}
|
|
}
|
|
|
|
|
|
void ewol::clipBoard::SetSystem(ewol::clipBoard::clipboardListe_te clipboardID, etk::UString &data)
|
|
{
|
|
if(clipboardID >= ewol::clipBoard::clipboardCount) {
|
|
EWOL_WARNING("request ClickBoard id error");
|
|
return;
|
|
}
|
|
// Copy datas ...
|
|
mesCopy[clipboardID] = data;
|
|
}
|
|
|
|
|
|
etk::UString ewol::clipBoard::Get(ewol::clipBoard::clipboardListe_te clipboardID)
|
|
{
|
|
if(clipboardID >= ewol::clipBoard::clipboardCount) {
|
|
EWOL_WARNING("request ClickBoard id error");
|
|
return "";
|
|
}
|
|
// Copy datas ...
|
|
return mesCopy[clipboardID];
|
|
}
|
|
|
|
|
|
|
|
|
|
|