clipboard.cpp

This example shows you how to set and get data to/from the clipboard

00001 #include <gui/MessageBox.h>
00002 #include <gui/MessageQueue.h>
00003 #include <gui/Button.h>
00004 #include <gui/TextView.h>
00005 #include <gui/TopView.h>
00006 #include <gui/Exceptions.h>
00007 #include <gui/Window.h>
00008 #include <gui/StringView.h>
00009 #include <gui/ApplicationWindow.h>
00010 #include <gui/Application.h>
00011 #include <gui/Menu.h>
00012 #include <gui/StatusBar.h>
00013 #include <gui/CheckBox.h>
00014 #include <os/Clipboard.h>
00015 #include <iostream> 
00016 
00017 using namespace SkyGI;
00018 
00019 #define ID_ADD      10000
00020 
00021 class MyClipboard : public View
00022 {
00023 public:
00024         MyClipboard(Window *pParent, const Rect &rFrame, unsigned int nWindowLayoutFlags);
00025 
00026         void OnChange();
00027 
00028         TextView *pSource;
00029         TextView *pDestination;
00030 };
00031         
00032 MyClipboard::MyClipboard(Window *pParent, const Rect &rFrame, unsigned int nWindowLayoutFlags) : View(pParent, rFrame, nWindowLayoutFlags)
00033 {
00034         StringView *pStringView;
00035         
00036         pStringView = new StringView(this, Rect(), "Copy:", 0);
00037         pStringView->SetRect(Point(10, 10), pStringView->GetPreferredSize());
00038         
00039         pSource     = new TextView(this, Rect(10, 30, 200, 50), WINDOW_LAYOUT_FOLLOW_RIGHT , TEXTVIEW_FLAG_SINGLE_LINE);
00040         pSource->SetFocus();
00041 
00042         pStringView = new StringView(this, Rect(), "To:", 0);
00043         pStringView->SetRect(Point(10, 60), pStringView->GetPreferredSize());
00044 
00045         pDestination = new TextView(this, Rect(10, 80, 200, 100), WINDOW_LAYOUT_FOLLOW_RIGHT , TEXTVIEW_FLAG_SINGLE_LINE);
00046 
00047         pSource->Changed.Connect(this, &MyClipboard::OnChange);
00048 }
00049 
00050 void MyClipboard::OnChange()
00051 {
00052         Clipboard pClipboard;
00053         DataCollection pDataCollection;
00054 
00055         // Copy to clipboard
00056         pDataCollection.Add("text/plain", pSource->GetBuffer()[0].szText);
00057 
00058         pClipboard.Submit(pDataCollection);
00059 
00060         // Get from clipboard
00061         DataCollection *pDataCollection2 = pClipboard.Get();
00062         if (pDataCollection2)
00063         {
00064                 String cString;
00065 
00066                 if (pDataCollection2->Get("text/plain", cString) == true)
00067                         pDestination->Set(cString);
00068 
00069                 delete pDataCollection2;
00070         }
00071 
00072 }
00073 
00074 void ClipboardTest()
00075 {
00076         Rect r(Point(100, 100), Point(400, 440));
00077 
00078         ApplicationWindow* pApplicationWindow = new ApplicationWindow(r, "Clipboard", WINDOW_LAYOUT_NOTHING, APPLICATION_WINDOW_NO_VIEW);
00079         
00080         pApplicationWindow->GetTitleWindow()->SetFlags( (TitleWindowFlags)(pApplicationWindow->GetTitleWindow()->GetFlags() ));
00081         pApplicationWindow->AttachView(new MyClipboard(pApplicationWindow, pApplicationWindow->GetClientRect(), WINDOW_LAYOUT_NOTHING));
00082         pApplicationWindow->Show();
00083 }
00084 

Generated on Thu Dec 13 18:13:09 2007 for SkyGI by  doxygen 1.5.1-p1