Missing files, and try to improve the new film more on Windows.
authorCarl Hetherington <cth@carlh.net>
Thu, 26 Jul 2012 16:08:46 +0000 (17:08 +0100)
committerCarl Hetherington <cth@carlh.net>
Thu, 26 Jul 2012 16:08:46 +0000 (17:08 +0100)
src/wx/dir_picker_ctrl.cc [new file with mode: 0644]
src/wx/dir_picker_ctrl.h [new file with mode: 0644]
src/wx/new_film_dialog.cc
src/wx/new_film_dialog.h [new file with mode: 0644]
src/wx/server_dialog.cc [new file with mode: 0644]
src/wx/server_dialog.h [new file with mode: 0644]
src/wx/wscript

diff --git a/src/wx/dir_picker_ctrl.cc b/src/wx/dir_picker_ctrl.cc
new file mode 100644 (file)
index 0000000..4cd7c3d
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+    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 ();
+}
diff --git a/src/wx/dir_picker_ctrl.h b/src/wx/dir_picker_ctrl.h
new file mode 100644 (file)
index 0000000..df7b25f
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+    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;
+};
+
index 93d0f3b194c05a6ecb14331863c4a6e8c993ae3e..cc48c422a697bd9c99fc52a02e3279bd2443be94 100644 (file)
 */
 
 #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;
@@ -28,6 +32,8 @@ NewFilmDialog::NewFilmDialog (wxWindow* parent)
        : 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);
@@ -37,7 +43,12 @@ NewFilmDialog::NewFilmDialog (wxWindow* parent)
        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);
@@ -45,7 +56,6 @@ NewFilmDialog::NewFilmDialog (wxWindow* parent)
                overall_sizer->Add (buttons, wxSizerFlags().Expand().DoubleBorder());
        }
 
-       SetSizer (overall_sizer);
        overall_sizer->Layout ();
        overall_sizer->SetSizeHints (this);
 }
diff --git a/src/wx/new_film_dialog.h b/src/wx/new_film_dialog.h
new file mode 100644 (file)
index 0000000..3d1253e
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+    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 
+};
diff --git a/src/wx/server_dialog.cc b/src/wx/server_dialog.cc
new file mode 100644 (file)
index 0000000..0ae34b1
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+    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;
+}
+
diff --git a/src/wx/server_dialog.h b/src/wx/server_dialog.h
new file mode 100644 (file)
index 0000000..05630c3
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+    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;
+};
index 258e4df8729dbd3dc319ea8ee9cc940dc460ce91..f59dbe983a3eb1289da0e9098f15db695e5b73e6 100644 (file)
@@ -20,6 +20,7 @@ def build(bld):
                  dcp_range_dialog.cc
                  server_dialog.cc
                  new_film_dialog.cc
+                 dir_picker_ctrl.cc
                  """
 
 #                 alignment.cc