X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fdir_picker_ctrl.cc;h=34e54532e10f7bc60e3904603661abce093014aa;hb=fe851f2e6e57d3a8781ecc173089c19632c521e3;hp=b6558a881eee90169ba681cc9ff8757ff2a0b01a;hpb=32fc1ddb0ee004d18c36155ddcf4d9b3998a7061;p=dcpomatic.git diff --git a/src/wx/dir_picker_ctrl.cc b/src/wx/dir_picker_ctrl.cc index b6558a881..34e54532e 100644 --- a/src/wx/dir_picker_ctrl.cc +++ b/src/wx/dir_picker_ctrl.cc @@ -1,57 +1,78 @@ /* Copyright (C) 2012 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + DCP-o-matic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ -#include -#include -#include + +#include "dcpomatic_button.h" #include "dir_picker_ctrl.h" +#include "static_text.h" +#include "wx_ptr.h" #include "wx_util.h" +#include +LIBDCP_DISABLE_WARNINGS +#include +#include +#include +LIBDCP_ENABLE_WARNINGS +#include + using namespace std; using namespace boost; + DirPickerCtrl::DirPickerCtrl (wxWindow* parent) : wxPanel (parent) - , _parent (parent) { _sizer = new wxBoxSizer (wxHORIZONTAL); - _folder = new wxStaticText (this, wxID_ANY, wxT ("This is the length of the folder label")); - _sizer->Add (_folder, 1, wxEXPAND | wxALL, 6); - _browse = new wxButton (this, wxID_ANY, _("Browse...")); + _folder = new StaticText (this, wxT("")); + wxFont font = _folder->GetFont (); + font.SetStyle (wxFONTSTYLE_ITALIC); + _folder->SetFont (font); + _sizer->Add (_folder, 1, wxEXPAND | wxALL, DCPOMATIC_SIZER_GAP); + _browse = new Button (this, _("Browse...")); _sizer->Add (_browse, 0); - SetSizerAndFit (_sizer); + SetSizer (_sizer); - _browse->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (DirPickerCtrl::browse_clicked), 0, this); + _browse->Bind (wxEVT_BUTTON, boost::bind (&DirPickerCtrl::browse_clicked, this)); } void DirPickerCtrl::SetPath (wxString p) { _path = p; - + if (_path == wxStandardPaths::Get().GetDocumentsDir()) { _folder->SetLabel (_("My Documents")); } else { - _folder->SetLabel (std_to_wx (filesystem::path (wx_to_std (_path)).leaf().string())); + _folder->SetLabel (_path); } + + wxCommandEvent ev (wxEVT_DIRPICKER_CHANGED, wxID_ANY); + GetEventHandler()->ProcessEvent (ev); + + _sizer->Layout (); + SetMinSize (wxSize (max (400, _sizer->GetSize().GetWidth()), -1)); + + Changed (); } wxString @@ -61,10 +82,10 @@ DirPickerCtrl::GetPath () const } void -DirPickerCtrl::browse_clicked (wxCommandEvent &) +DirPickerCtrl::browse_clicked () { - wxDirDialog* d = new wxDirDialog (this); - d->ShowModal (); - SetPath (d->GetPath ()); - d->Destroy (); + auto d = make_wx(this); + if (d->ShowModal () == wxID_OK) { + SetPath (d->GetPath ()); + } }