- wxLayoutConstraints *c;
-
- // Top-left listbox
- c = new wxLayoutConstraints;
- c->left.SameAs(this, wxLeft);
- c->top.SameAs(this, wxTop);
- c->right.PercentOf(this, wxRight, 50);
- c->height.PercentOf(this, wxHeight, 30);
- m_ctrlFile->SetConstraints(c);
-
- // Top-right listbox
- c = new wxLayoutConstraints;
- c->left.SameAs (m_ctrlFile, wxRight);
- c->top.SameAs (this, wxTop);
- c->right.SameAs (this, wxRight);
- c->height.PercentOf(this, wxHeight, 30);
- m_ctrlText->SetConstraints(c);
-
- // Lower text control
- c = new wxLayoutConstraints;
- c->left.SameAs (this, wxLeft);
- c->right.SameAs (this, wxRight);
- c->height.PercentOf(this, wxHeight, 50);
- c->top.SameAs(m_ctrlText, wxBottom);
- m_ctrlLog->SetConstraints(c);
-
- SetAutoLayout(TRUE);
+ m_ctrlDir->Connect
+ (
+ wxID_ANY,
+ wxEVT_COMMAND_TREE_BEGIN_DRAG,
+ wxTreeEventHandler(DnDFrame::OnBeginDrag),
+ NULL,
+ this
+ );
+
+#if wxUSE_LOG
+ m_ctrlLog->SetDropTarget(new URLDropTarget);
+#endif // wxUSE_LOG
+#endif // wxUSE_DRAG_AND_DROP
+
+ wxBoxSizer *sizer_top = new wxBoxSizer( wxHORIZONTAL );
+ sizer_top->Add(m_ctrlFile, 1, wxEXPAND );
+ sizer_top->Add(m_ctrlText, 1, wxEXPAND );
+
+ wxBoxSizer *sizerDirCtrl = new wxBoxSizer(wxVERTICAL);
+ sizerDirCtrl->Add(new wxStaticText(this, wxID_ANY, "Drag files from here"),
+ wxSizerFlags().Centre().Border());
+ sizerDirCtrl->Add(m_ctrlDir, wxSizerFlags(1).Expand());
+ sizer_top->Add(sizerDirCtrl, 1, wxEXPAND );
+
+ // make all columns of reasonable minimal size
+ for ( unsigned n = 0; n < sizer_top->GetChildren().size(); n++ )
+ sizer_top->SetItemMinSize(n, 200, 300);
+
+ wxBoxSizer *sizer = new wxBoxSizer( wxVERTICAL );
+ sizer->Add(sizer_top, 1, wxEXPAND );
+#if wxUSE_LOG
+ sizer->Add(m_ctrlLog, 2, wxEXPAND);
+ sizer->SetItemMinSize(m_ctrlLog, 450, 200);
+#endif // wxUSE_LOG
+ sizer->AddSpacer(50);
+
+ // copy data by default but allow moving it as well
+ m_moveByDefault = false;
+ m_moveAllow = true;
+ menu_bar->Check(Menu_DragMoveAllow, true);
+
+ // set the correct size and show the frame
+ SetSizerAndFit(sizer);
+ Show();