--- /dev/null
+/*
+ Copyright (C) 2012 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>
+#include <wx/stdpaths.h>
+#include <boost/filesystem.hpp>
+#include "dir_picker_ctrl.h"
+#include "wx_util.h"
+
+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..."));
+ _sizer->Add (_browse, 0);
+
+ SetSizerAndFit (_sizer);
+
+ _browse->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (DirPickerCtrl::browse_clicked), 0, this);
+
+ /* Do this after the fit so that our folder label stays long */
+ SetPath (wxStandardPaths::Get().GetDocumentsDir());
+}
+
+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()));
+ }
+}
+
+wxString
+DirPickerCtrl::GetPath () const
+{
+ return _path;
+}
+
+void
+DirPickerCtrl::browse_clicked (wxCommandEvent &)
+{
+ wxDirDialog* d = new wxDirDialog (this);
+ d->ShowModal ();
+ SetPath (d->GetPath ());
+ d->Destroy ();
+}
--- /dev/null
+/*
+ Copyright (C) 2012 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 DirPickerCtrl : public wxPanel
+{
+public:
+ DirPickerCtrl (wxWindow *);
+
+ wxString GetPath () const;
+ void SetPath (wxString);
+
+private:
+ void browse_clicked (wxCommandEvent &);
+
+ wxWindow* _parent;
+ wxStaticText* _folder;
+ wxButton* _browse;
+ wxString _path;
+ wxSizer* _sizer;
+};
+
*/
#include <boost/filesystem.hpp>
+#include <wx/stdpaths.h>
#include "new_film_dialog.h"
+#ifdef __WXMSW__
+#include "dir_picker_ctrl.h"
+#endif
#include "wx_util.h"
using namespace std;
: wxDialog (parent, wxID_ANY, wxString (_("New Film")))
{
wxBoxSizer* overall_sizer = new wxBoxSizer (wxVERTICAL);
+ SetSizer (overall_sizer);
+
wxFlexGridSizer* table = new wxFlexGridSizer (2, 6, 6);
table->AddGrowableCol (1, 1);
overall_sizer->Add (table, 1, wxEXPAND | wxALL, 6);
table->Add (_name, 1, wxEXPAND);
add_label_to_sizer (table, this, "Create in folder");
+#ifdef __WXMSW__
+ _folder = new DirPickerCtrl (this);
+#else
_folder = new wxDirPickerCtrl (this, wxDD_DIR_MUST_EXIST);
+#endif
+ _folder->SetPath (wxStandardPaths::Get().GetDocumentsDir());
table->Add (_folder, 1, wxEXPAND);
wxSizer* buttons = CreateSeparatedButtonSizer (wxOK | wxCANCEL);
overall_sizer->Add (buttons, wxSizerFlags().Expand().DoubleBorder());
}
- SetSizer (overall_sizer);
overall_sizer->Layout ();
overall_sizer->SetSizeHints (this);
}
--- /dev/null
+/*
+ Copyright (C) 2012 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>
+#include <wx/filepicker.h>
+
+class DirPickerCtrl;
+
+class NewFilmDialog : public wxDialog
+{
+public:
+ NewFilmDialog (wxWindow *);
+
+ std::string get_path () const;
+
+private:
+ wxTextCtrl* _name;
+#ifdef __WXMSW__
+ DirPickerCtrl* _folder;
+#else
+ wxDirPickerCtrl* _folder;
+#endif
+};
--- /dev/null
+/*
+ Copyright (C) 2012 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 "lib/server.h"
+#include "server_dialog.h"
+#include "wx_util.h"
+
+ServerDialog::ServerDialog (wxWindow* parent, Server* server)
+ : wxDialog (parent, wxID_ANY, wxString (_("Server")))
+{
+ if (server) {
+ _server = server;
+ } else {
+ _server = new Server ("localhost", 1);
+ }
+
+ wxFlexGridSizer* table = new wxFlexGridSizer (2, 4, 4);
+ table->AddGrowableCol (1, 1);
+
+ add_label_to_sizer (table, this, "Host name or IP address");
+ _host = new wxTextCtrl (this, wxID_ANY);
+ table->Add (_host, 1, wxEXPAND);
+
+ add_label_to_sizer (table, this, "Threads to use");
+ _threads = new wxSpinCtrl (this, wxID_ANY);
+ table->Add (_threads, 1, wxEXPAND);
+
+ _host->Connect (wxID_ANY, wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler (ServerDialog::host_changed), 0, this);
+ _threads->SetRange (0, 256);
+ _threads->Connect (wxID_ANY, wxEVT_COMMAND_SPINCTRL_UPDATED, wxCommandEventHandler (ServerDialog::threads_changed), 0, this);
+
+ _host->SetValue (std_to_wx (_server->host_name ()));
+ _threads->SetValue (_server->threads ());
+
+ wxBoxSizer* overall_sizer = new wxBoxSizer (wxVERTICAL);
+ overall_sizer->Add (table, 1, wxEXPAND);
+
+ wxSizer* buttons = CreateSeparatedButtonSizer (wxOK);
+ if (buttons) {
+ overall_sizer->Add (buttons, wxSizerFlags().Expand().DoubleBorder());
+ }
+
+ SetSizer (overall_sizer);
+ overall_sizer->Layout ();
+ overall_sizer->SetSizeHints (this);
+}
+
+void
+ServerDialog::host_changed (wxCommandEvent &)
+{
+ _server->set_host_name (wx_to_std (_host->GetValue ()));
+}
+
+void
+ServerDialog::threads_changed (wxCommandEvent &)
+{
+ _server->set_threads (_threads->GetValue ());
+}
+
+Server *
+ServerDialog::server () const
+{
+ return _server;
+}
+
--- /dev/null
+/*
+ Copyright (C) 2012 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>
+#include <wx/spinctrl.h>
+
+class Server;
+
+class ServerDialog : public wxDialog
+{
+public:
+ ServerDialog (wxWindow *, Server *);
+
+ Server* server () const;
+
+private:
+ void host_changed (wxCommandEvent &);
+ void threads_changed (wxCommandEvent &);
+
+ Server* _server;
+ wxTextCtrl* _host;
+ wxSpinCtrl* _threads;
+};
dcp_range_dialog.cc
server_dialog.cc
new_film_dialog.cc
+ dir_picker_ctrl.cc
"""
# alignment.cc