X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Ffile_picker_ctrl.cc;h=4bb6518efc2fe33a91ac26812a701a5fba9bd55e;hb=7a301e22de2a3c47a81ebc4c9f19b68131b482aa;hp=4cd843feb3755c710c08111416e9f9075206e2ab;hpb=6a11232620e0006f6a2b1e8d2b56e56d84229d5c;p=dcpomatic.git diff --git a/src/wx/file_picker_ctrl.cc b/src/wx/file_picker_ctrl.cc index 4cd843feb..4bb6518ef 100644 --- a/src/wx/file_picker_ctrl.cc +++ b/src/wx/file_picker_ctrl.cc @@ -18,21 +18,29 @@ */ + +#include "dcpomatic_button.h" #include "file_picker_ctrl.h" #include "wx_util.h" -#include -#include +#include +LIBDCP_DISABLE_WARNINGS #include +#include +#include +LIBDCP_ENABLE_WARNINGS #include + using namespace std; using namespace boost; -FilePickerCtrl::FilePickerCtrl (wxWindow* parent, wxString prompt, wxString wildcard, bool open) + +FilePickerCtrl::FilePickerCtrl (wxWindow* parent, wxString prompt, wxString wildcard, bool open, bool warn_overwrite) : wxPanel (parent) , _prompt (prompt) , _wildcard (wildcard) , _open (open) + , _warn_overwrite (warn_overwrite) { _sizer = new wxBoxSizer (wxHORIZONTAL); @@ -40,7 +48,7 @@ FilePickerCtrl::FilePickerCtrl (wxWindow* parent, wxString prompt, wxString wild wxSize size = dc.GetTextExtent (wxT ("This is the length of the file label it should be quite long")); size.SetHeight (-1); - _file = new wxButton (this, wxID_ANY, _("(None)"), wxDefaultPosition, size, wxBU_LEFT); + _file = new Button (this, _("(None)"), wxDefaultPosition, size, wxBU_LEFT); _sizer->Add (_file, 1, wxEXPAND, 0); SetSizerAndFit (_sizer); @@ -53,7 +61,7 @@ FilePickerCtrl::SetPath (wxString p) _path = p; if (!_path.IsEmpty ()) { - _file->SetLabel (std_to_wx (filesystem::path (wx_to_std (_path)).leaf().string())); + _file->SetLabel(std_to_wx(filesystem::path(wx_to_std(_path)).filename().string())); } else { _file->SetLabel (_("(None)")); } @@ -71,12 +79,15 @@ FilePickerCtrl::GetPath () const void FilePickerCtrl::browse_clicked () { - wxFileDialog* d = new wxFileDialog (this, _prompt, wxEmptyString, wxEmptyString, _wildcard, _open ? wxFD_OPEN : wxFD_SAVE | wxFD_OVERWRITE_PROMPT); - d->SetPath (_path); - if (d->ShowModal () == wxID_OK) { - SetPath (d->GetPath ()); + long style = _open ? wxFD_OPEN : wxFD_SAVE; + if (_warn_overwrite) { + style |= wxFD_OVERWRITE_PROMPT; + } + wxFileDialog dialog(this, _prompt, wxEmptyString, wxEmptyString, _wildcard, style); + dialog.SetPath(_path); + if (dialog.ShowModal() == wxID_OK) { + SetPath(dialog.GetPath()); } - d->Destroy (); } void