diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-10-06 12:38:20 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-10-09 13:44:52 +0100 |
| commit | c5bd05c290fd0163e27b2fc8d58c342b19f55930 (patch) | |
| tree | 8fce89a8ef84e75a32843d8ec3208e0c6d25a362 /src | |
| parent | 47ba29c99df5afa93ce70ad2240c5d1b69dd1094 (diff) | |
New FilePickerCtrl class.
Diffstat (limited to 'src')
| -rw-r--r-- | src/wx/file_picker_ctrl.cc | 72 | ||||
| -rw-r--r-- | src/wx/file_picker_ctrl.h | 39 |
2 files changed, 111 insertions, 0 deletions
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 <cth@carlh.net> + + 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 <wx/wx.h> +#include <wx/stdpaths.h> +#include <wx/filepicker.h> +#include <boost/filesystem.hpp> + +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 <cth@carlh.net> + + 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 <wx/wx.h> + +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; +}; |
