00001 00032 #include "linden_common.h" 00033 00034 #include "llclipboard.h" 00035 00036 #include "llerror.h" 00037 #include "llmath.h" 00038 #include "llstring.h" 00039 #include "llview.h" 00040 #include "llwindow.h" 00041 00042 // Global singleton 00043 LLClipboard gClipboard; 00044 00045 00046 LLClipboard::LLClipboard() 00047 { 00048 } 00049 00050 00051 LLClipboard::~LLClipboard() 00052 { 00053 } 00054 00055 00056 void LLClipboard::copyFromSubstring(const LLWString &src, S32 pos, S32 len, const LLUUID& source_id ) 00057 { 00058 mSourceID = source_id; 00059 mString = src.substr(pos, len); 00060 LLView::getWindow()->copyTextToClipboard( mString ); 00061 } 00062 00063 00064 LLWString LLClipboard::getPasteWString( LLUUID* source_id ) 00065 { 00066 if( mSourceID.notNull() ) 00067 { 00068 LLWString temp_string; 00069 LLView::getWindow()->pasteTextFromClipboard(temp_string); 00070 00071 if( temp_string != mString ) 00072 { 00073 mSourceID.setNull(); 00074 mString = temp_string; 00075 } 00076 } 00077 else 00078 { 00079 LLView::getWindow()->pasteTextFromClipboard(mString); 00080 } 00081 00082 if( source_id ) 00083 { 00084 *source_id = mSourceID; 00085 } 00086 00087 return mString; 00088 } 00089 00090 00091 BOOL LLClipboard::canPasteString() 00092 { 00093 return LLView::getWindow()->isClipboardTextAvailable(); 00094 }