summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-05-04 18:47:33 +0100
committerCarl Hetherington <cth@carlh.net>2013-05-04 18:47:33 +0100
commit0c5590dd0e3f367064a6e4d52835a609adf11a06 (patch)
tree798a0e2cdf155c72710dcfb185106ecc3e46db41 /src
parent1738f2e7336734190bed7e94ce3d691d4a9c9e4c (diff)
Batch converter stub.
Diffstat (limited to 'src')
-rw-r--r--src/lib/util.cc2
-rw-r--r--src/lib/util.h2
-rw-r--r--src/tools/dvdomatic.cc46
-rw-r--r--src/tools/dvdomatic_batch.cc168
-rw-r--r--src/tools/wscript2
-rw-r--r--src/wx/batch_view.cc33
-rw-r--r--src/wx/batch_view.h30
-rw-r--r--src/wx/wscript1
-rw-r--r--src/wx/wx_util.cc38
-rw-r--r--src/wx/wx_util.h1
10 files changed, 275 insertions, 48 deletions
diff --git a/src/lib/util.cc b/src/lib/util.cc
index 859aa6de7..be078a95f 100644
--- a/src/lib/util.cc
+++ b/src/lib/util.cc
@@ -274,7 +274,7 @@ mo_path ()
#endif
void
-dvdomatic_setup_i18n (string lang)
+dvdomatic_setup_gettext_i18n (string lang)
{
#ifdef DVDOMATIC_POSIX
lang += ".UTF8";
diff --git a/src/lib/util.h b/src/lib/util.h
index 99670110e..d0c350a56 100644
--- a/src/lib/util.h
+++ b/src/lib/util.h
@@ -55,7 +55,7 @@ extern void stacktrace (std::ostream &, int);
extern std::string dependency_version_summary ();
extern double seconds (struct timeval);
extern void dvdomatic_setup ();
-extern void dvdomatic_setup_i18n (std::string);
+extern void dvdomatic_setup_gettext_i18n (std::string);
extern std::vector<std::string> split_at_spaces_considering_quotes (std::string);
extern std::string md5_digest (std::string);
extern std::string md5_digest (void const *, int);
diff --git a/src/tools/dvdomatic.cc b/src/tools/dvdomatic.cc
index b161ac7e3..2740a0965 100644
--- a/src/tools/dvdomatic.cc
+++ b/src/tools/dvdomatic.cc
@@ -62,7 +62,6 @@ static shared_ptr<Film> film;
static std::string log_level;
static std::string film_to_load;
static wxMenu* jobs_menu = 0;
-static wxLocale* locale = 0;
static void set_menu_sensitivity ();
@@ -463,49 +462,6 @@ static const wxCmdLineEntryDesc command_line_description[] = {
};
#endif
-void
-setup_i18n ()
-{
- int language = wxLANGUAGE_DEFAULT;
-
- ofstream f ("c:/users/carl hetherington/foo", std::ios::app);
- f << "Hello.\n";
-
- boost::optional<string> config_lang = Config::instance()->language ();
- if (config_lang && !config_lang->empty ()) {
- f << "Configured language " << config_lang.get() << "\n";
- wxLanguageInfo const * li = wxLocale::FindLanguageInfo (std_to_wx (config_lang.get ()));
- f << "LanguageInfo " << li << "\n";
- if (li) {
- language = li->Language;
- f << "language=" << language << " cf " << wxLANGUAGE_DEFAULT << " " << wxLANGUAGE_ENGLISH << "\n";
- }
- }
-
- if (wxLocale::IsAvailable (language)) {
- f << "Language is available.\n";
- locale = new wxLocale (language, wxLOCALE_LOAD_DEFAULT);
-
-#ifdef DVDOMATIC_WINDOWS
- locale->AddCatalogLookupPathPrefix (std_to_wx (mo_path().string()));
-#endif
-
- locale->AddCatalog (wxT ("libdvdomatic-wx"));
- locale->AddCatalog (wxT ("dvdomatic"));
-
- if (!locale->IsOk()) {
- f << "Locale is not ok.\n";
- delete locale;
- locale = new wxLocale (wxLANGUAGE_ENGLISH);
- language = wxLANGUAGE_ENGLISH;
- }
- }
-
- if (locale) {
- dvdomatic_setup_i18n (wx_to_std (locale->GetCanonicalName ()));
- }
-}
-
class App : public wxApp
{
bool OnInit ()
@@ -526,7 +482,7 @@ class App : public wxApp
hasn't yet been called and there aren't any scalers, filters etc.
set up yet.
*/
- setup_i18n ();
+ dvdomatic_setup_i18n ();
/* Set things up, including scalers / filters etc.
which will now be internationalised correctly.
diff --git a/src/tools/dvdomatic_batch.cc b/src/tools/dvdomatic_batch.cc
new file mode 100644
index 000000000..102f29408
--- /dev/null
+++ b/src/tools/dvdomatic_batch.cc
@@ -0,0 +1,168 @@
+/*
+ Copyright (C) 2013 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/aboutdlg.h>
+#include <wx/wx.h>
+#include "lib/version.h"
+#include "lib/compose.hpp"
+#include "lib/config.h"
+#include "lib/util.h"
+#include "wx/wx_util.h"
+#include "wx/wx_ui_signaller.h"
+#include "wx/batch_view.h"
+
+enum {
+ ID_file_quit = 1,
+ ID_help_about
+};
+
+void
+setup_menu (wxMenuBar* m)
+{
+ wxMenu* file = new wxMenu;
+ file->Append (ID_file_quit, _("&Quit"));
+
+ wxMenu* help = new wxMenu;
+ help->Append (ID_help_about, _("About"));
+
+ m->Append (file, _("&File"));
+ m->Append (help, _("&Help"));
+}
+
+class Frame : public wxFrame
+{
+public:
+ Frame (wxString const & title)
+ : wxFrame (NULL, -1, title)
+ {
+ wxMenuBar* bar = new wxMenuBar;
+ setup_menu (bar);
+ SetMenuBar (bar);
+
+ Connect (ID_file_quit, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::file_quit));
+ Connect (ID_help_about, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::help_about));
+
+ wxPanel* panel = new wxPanel (this);
+ wxSizer* s = new wxBoxSizer (wxHORIZONTAL);
+ s->Add (panel, 1, wxEXPAND);
+ SetSizer (s);
+
+ wxSizer* sizer = new wxBoxSizer (wxVERTICAL);
+
+ BatchView* batch_view = new BatchView (panel);
+ sizer->Add (batch_view, 1, wxALL | wxEXPAND, 6);
+
+ wxSizer* buttons = new wxBoxSizer (wxHORIZONTAL);
+ wxButton* add = new wxButton (panel, wxID_ANY, _("Add Film..."));
+ buttons->Add (add, 1, wxALL, 6);
+ wxButton* start = new wxButton (panel, wxID_ANY, _("Start..."));
+ buttons->Add (start, 1, wxALL, 6);
+
+ sizer->Add (buttons, 0, wxALL, 6);
+
+ panel->SetSizer (sizer);
+ }
+
+private:
+ void file_quit (wxCommandEvent &)
+ {
+ Close (true);
+ }
+
+ void help_about (wxCommandEvent &)
+ {
+ wxAboutDialogInfo info;
+ info.SetName (_("DVD-o-matic Batch Converter"));
+ if (strcmp (dvdomatic_git_commit, "release") == 0) {
+ info.SetVersion (std_to_wx (String::compose ("version %1", dvdomatic_version)));
+ } else {
+ info.SetVersion (std_to_wx (String::compose ("version %1 git %2", dvdomatic_version, dvdomatic_git_commit)));
+ }
+ info.SetDescription (_("Free, open-source DCP generation from almost anything."));
+ info.SetCopyright (_("(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"));
+
+ wxArrayString authors;
+ authors.Add (wxT ("Carl Hetherington"));
+ authors.Add (wxT ("Terrence Meiczinger"));
+ authors.Add (wxT ("Paul Davis"));
+ authors.Add (wxT ("Ole Laursen"));
+ info.SetDevelopers (authors);
+
+ wxArrayString translators;
+ translators.Add (wxT ("Olivier Perriere"));
+ translators.Add (wxT ("Lilian Lefranc"));
+ translators.Add (wxT ("Thierry Journet"));
+ translators.Add (wxT ("Massimiliano Broggi"));
+ translators.Add (wxT ("Manuel AC"));
+ translators.Add (wxT ("Adam Klotblixt"));
+ info.SetTranslators (translators);
+
+ info.SetWebSite (wxT ("http://carlh.net/software/dvdomatic"));
+ wxAboutBox (info);
+ }
+};
+
+class App : public wxApp
+{
+ bool OnInit ()
+ {
+ if (!wxApp::OnInit()) {
+ return false;
+ }
+
+#ifdef DVDOMATIC_POSIX
+ unsetenv ("UBUNTU_MENUPROXY");
+#endif
+
+ /* Enable i18n; this will create a Config object
+ to look for a force-configured language. This Config
+ object will be wrong, however, because dvdomatic_setup
+ hasn't yet been called and there aren't any scalers, filters etc.
+ set up yet.
+ */
+ dvdomatic_setup_i18n ();
+
+ /* Set things up, including scalers / filters etc.
+ which will now be internationalised correctly.
+ */
+ dvdomatic_setup ();
+
+ /* Force the configuration to be re-loaded correctly next
+ time it is needed.
+ */
+ Config::drop ();
+
+ Frame* f = new Frame (_("DVD-o-matic Batch Converter"));
+ SetTopWindow (f);
+ f->Maximize ();
+ f->Show ();
+
+ ui_signaller = new wxUISignaller (this);
+ this->Connect (-1, wxEVT_IDLE, wxIdleEventHandler (App::idle));
+
+ return true;
+ }
+
+ void idle (wxIdleEvent &)
+ {
+ ui_signaller->ui_idle ();
+ }
+};
+
+IMPLEMENT_APP (App)
diff --git a/src/tools/wscript b/src/tools/wscript
index 9f0f52152..f36f0abef 100644
--- a/src/tools/wscript
+++ b/src/tools/wscript
@@ -13,7 +13,7 @@ def build(bld):
obj.target = t
if not bld.env.DISABLE_GUI:
- for t in ['dvdomatic', 'servomatic_gui']:
+ for t in ['dvdomatic', 'dvdomatic_batch', 'servomatic_gui']:
obj = bld(features = 'cxx cxxprogram')
obj.uselib = 'DCP OPENJPEG AVFORMAT AVFILTER AVCODEC AVUTIL SWSCALE POSTPROC'
obj.includes = ['..']
diff --git a/src/wx/batch_view.cc b/src/wx/batch_view.cc
new file mode 100644
index 000000000..bfe30d8fb
--- /dev/null
+++ b/src/wx/batch_view.cc
@@ -0,0 +1,33 @@
+/*
+ Copyright (C) 2013 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 "batch_view.h"
+
+BatchView::BatchView (wxWindow* parent)
+ : wxScrolledWindow (parent)
+{
+ _panel = new wxPanel (this);
+ wxSizer* sizer = new wxBoxSizer (wxVERTICAL);
+ sizer->Add (_panel, 1, wxEXPAND);
+ SetSizer (sizer);
+
+ _table = new wxFlexGridSizer (5, 6, 6);
+ _table->AddGrowableCol (1, 1);
+ _panel->SetSizer (_table);
+}
diff --git a/src/wx/batch_view.h b/src/wx/batch_view.h
new file mode 100644
index 000000000..6316ac745
--- /dev/null
+++ b/src/wx/batch_view.h
@@ -0,0 +1,30 @@
+/*
+ Copyright (C) 2013 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 BatchView : public wxScrolledWindow
+{
+public:
+ BatchView (wxWindow *);
+
+private:
+ wxPanel* _panel;
+ wxFlexGridSizer* _table;
+};
diff --git a/src/wx/wscript b/src/wx/wscript
index 42bb8ca88..f1c3d1a6a 100644
--- a/src/wx/wscript
+++ b/src/wx/wscript
@@ -6,6 +6,7 @@ import i18n
sources = """
audio_dialog.cc
audio_plot.cc
+ batch_view.cc
config_dialog.cc
dci_metadata_dialog.cc
dir_picker_ctrl.cc
diff --git a/src/wx/wx_util.cc b/src/wx/wx_util.cc
index 77f5da293..1a7b73faf 100644
--- a/src/wx/wx_util.cc
+++ b/src/wx/wx_util.cc
@@ -25,6 +25,8 @@
#include <wx/filepicker.h>
#include <wx/spinctrl.h>
#include "wx_util.h"
+#include "config.h"
+#include "util.h"
using namespace std;
using namespace boost;
@@ -211,3 +213,39 @@ checked_set (wxRadioButton* widget, bool value)
widget->SetValue (value);
}
}
+
+void
+dvdomatic_setup_i18n ()
+{
+ int language = wxLANGUAGE_DEFAULT;
+
+ boost::optional<string> config_lang = Config::instance()->language ();
+ if (config_lang && !config_lang->empty ()) {
+ wxLanguageInfo const * li = wxLocale::FindLanguageInfo (std_to_wx (config_lang.get ()));
+ if (li) {
+ language = li->Language;
+ }
+ }
+
+ wxLocale* locale = 0;
+ if (wxLocale::IsAvailable (language)) {
+ locale = new wxLocale (language, wxLOCALE_LOAD_DEFAULT);
+
+#ifdef DVDOMATIC_WINDOWS
+ locale->AddCatalogLookupPathPrefix (std_to_wx (mo_path().string()));
+#endif
+
+ locale->AddCatalog (wxT ("libdvdomatic-wx"));
+ locale->AddCatalog (wxT ("dvdomatic"));
+
+ if (!locale->IsOk()) {
+ delete locale;
+ locale = new wxLocale (wxLANGUAGE_ENGLISH);
+ language = wxLANGUAGE_ENGLISH;
+ }
+ }
+
+ if (locale) {
+ dvdomatic_setup_gettext_i18n (wx_to_std (locale->GetCanonicalName ()));
+ }
+}
diff --git a/src/wx/wx_util.h b/src/wx/wx_util.h
index b3ab706df..00a625e1c 100644
--- a/src/wx/wx_util.h
+++ b/src/wx/wx_util.h
@@ -36,6 +36,7 @@ extern wxStaticText* add_label_to_sizer (wxSizer *, wxWindow *, wxString, int pr
extern wxStaticText* add_label_to_grid_bag_sizer (wxGridBagSizer *, wxWindow *, wxString, wxGBPosition, wxGBSpan span = wxDefaultSpan);
extern std::string wx_to_std (wxString);
extern wxString std_to_wx (std::string);
+extern void dvdomatic_setup_i18n ();
/** @class ThreadedStaticText
*