--- /dev/null
+#!/bin/bash
+
+export LD_LIBRARY_PATH=build/src/lib:build/src/wx:build/src/asdcplib/src:$LD_LIBRARY_PATH
+if [ "$1" == "--debug" ]; then
+ shift
+ gdb --args build/src/tools/dvdomatic_batch "$*"
+elif [ "$1" == "--valgrind" ]; then
+ shift
+ valgrind --tool="memcheck" build/src/tools/dvdomatic_batch $*
+elif [ "$1" == "--i18n" ]; then
+ shift
+ LANGUAGE=fr_FR.UTF8 LANG=fr_FR.UTF8 build/src/tools/dvdomatic_batch "$*"
+else
+ build/src/tools/dvdomatic_batch
+fi
#endif
void
-dvdomatic_setup_i18n (string lang)
+dvdomatic_setup_gettext_i18n (string lang)
{
#ifdef DVDOMATIC_POSIX
lang += ".UTF8";
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);
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 ();
};
#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 ()
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.
--- /dev/null
+/*
+ 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)
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 = ['..']
--- /dev/null
+/*
+ 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);
+}
--- /dev/null
+/*
+ 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;
+};
sources = """
audio_dialog.cc
audio_plot.cc
+ batch_view.cc
config_dialog.cc
dci_metadata_dialog.cc
dir_picker_ctrl.cc
#include <wx/filepicker.h>
#include <wx/spinctrl.h>
#include "wx_util.h"
+#include "config.h"
+#include "util.h"
using namespace std;
using namespace boost;
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 ()));
+ }
+}
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
*