From: Carl Hetherington Date: Tue, 6 Oct 2015 11:38:20 +0000 (+0100) Subject: New FilePickerCtrl class. X-Git-Tag: v2.4.6~47 X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=c5bd05c290fd0163e27b2fc8d58c342b19f55930 New FilePickerCtrl class. --- diff --git a/src/wx/file_picker_ctrl.cc b/src/wx/file_picker_ctrl.cc new file mode 100644 index 000000000..4e2f97618 --- /dev/null +++ b/src/wx/file_picker_ctrl.cc @@ -0,0 +1,72 @@ +/* + Copyright (C) 2012-2015 Carl Hetherington + + This program 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, + 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. + +*/ + +#include "file_picker_ctrl.h" +#include "wx_util.h" +#include +#include +#include +#include + +using namespace std; +using namespace boost; + +FilePickerCtrl::FilePickerCtrl (wxWindow* parent, wxString prompt, wxString wildcard) + : wxPanel (parent) + , _prompt (prompt) + , _wildcard (wildcard) +{ + _sizer = new wxBoxSizer (wxHORIZONTAL); + + _file = new wxStaticText (this, wxID_ANY, wxT ("This is the length of the file label")); + _sizer->Add (_file, 1, wxEXPAND | wxALL, 6); + _browse = new wxButton (this, wxID_ANY, _("Browse...")); + _sizer->Add (_browse, 0); + + SetSizerAndFit (_sizer); + + _browse->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&FilePickerCtrl::browse_clicked, this)); +} + +void +FilePickerCtrl::SetPath (wxString p) +{ + _path = p; + + _file->SetLabel (std_to_wx (filesystem::path (wx_to_std (_path)).leaf().string())); + + wxCommandEvent ev (wxEVT_COMMAND_FILEPICKER_CHANGED, wxID_ANY); + GetEventHandler()->ProcessEvent (ev); +} + +wxString +FilePickerCtrl::GetPath () const +{ + return _path; +} + +void +FilePickerCtrl::browse_clicked () +{ + wxFileDialog* d = new wxFileDialog (this, _prompt, wxEmptyString, wxEmptyString, _wildcard); + if (d->ShowModal () == wxID_OK) { + SetPath (d->GetPath ()); + } + d->Destroy (); +} diff --git a/src/wx/file_picker_ctrl.h b/src/wx/file_picker_ctrl.h new file mode 100644 index 000000000..4c721af48 --- /dev/null +++ b/src/wx/file_picker_ctrl.h @@ -0,0 +1,39 @@ +/* + Copyright (C) 2012-2015 Carl Hetherington + + This program 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, + 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. + +*/ + +#include + +class FilePickerCtrl : public wxPanel +{ +public: + FilePickerCtrl (wxWindow* parent, wxString prompt, wxString wildcard); + + wxString GetPath () const; + void SetPath (wxString); + +private: + void browse_clicked (); + + wxStaticText* _file; + wxButton* _browse; + wxString _path; + wxSizer* _sizer; + wxString _prompt; + wxString _wildcard; +};