ultimatepp/reference/DropFiles/main.cpp
cxl d5ed2ccd73 reference: DropFiles
git-svn-id: svn://ultimatepp.org/upp/trunk@7428 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2014-06-08 18:06:58 +00:00

63 lines
1.1 KiB
C++

#include <CtrlLib/CtrlLib.h>
using namespace Upp;
struct DndTest : public TopWindow {
virtual void Paint(Draw &w);
virtual void DragAndDrop(Point p, PasteClip& d);
virtual bool Key(dword key, int count);
virtual void LeftDrag(Point p, dword keyflags);
Vector<String> files;
DndTest();
};
void DndTest::Paint(Draw &w)
{
w.DrawRect(GetSize(), SColorPaper());
if(files.GetCount())
for(int i = 0; i < files.GetCount(); i++)
w.DrawText(2, 2 + i * Draw::GetStdFontCy(), files[i]);
else
w.DrawText(2, 2, "None");
}
void DndTest::DragAndDrop(Point p, PasteClip& d)
{
if(IsDragAndDropSource())
return;
if(AcceptFiles(d)) {
files = GetFiles(d);
Refresh();
}
}
bool DndTest::Key(dword key, int count)
{
if(key == K_CTRL_V) {
files = GetFiles(Ctrl::Clipboard());
Refresh();
return true;
}
return false;
}
void DndTest::LeftDrag(Point p, dword keyflags)
{
if(files.GetCount()) {
VectorMap<String, ClipData> data;
AppendFiles(data, files);
DoDragAndDrop(data, Null, DND_COPY);
}
}
DndTest::DndTest()
{
Title("I need files!");
}
GUI_APP_MAIN
{
DndTest().Run();
}