summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-05-09 15:14:08 +0100
committerCarl Hetherington <cth@carlh.net>2013-05-09 15:14:08 +0100
commit92cafb6fc686a041354da2eabde6bcb2f6846e1d (patch)
treecdc26dde96d8c9ed1e9c60056a404ca3df2dcfac
parentfd040c2bd27fde35424a384174ecb56c643764cd (diff)
parent6e5c4e570f26e05124ab0ef67e39c07bab9cb4d5 (diff)
Merge master.
-rw-r--r--ChangeLog22
-rw-r--r--dvdomatic_batch.desktop.in10
-rwxr-xr-xrun/dvdomatic_batch15
-rw-r--r--src/lib/job.cc28
-rw-r--r--src/lib/job.h4
-rw-r--r--src/lib/util.cc2
-rw-r--r--src/lib/util.h2
-rw-r--r--src/tools/dcpomatic.cc48
-rw-r--r--src/tools/wscript2
-rw-r--r--src/wx/job_manager_view.cc53
-rw-r--r--src/wx/job_manager_view.h9
-rw-r--r--src/wx/wx_util.cc40
-rw-r--r--src/wx/wx_util.h1
-rw-r--r--windows/installer.nsi.32.in4
-rw-r--r--windows/installer.nsi.64.in4
-rw-r--r--wscript10
16 files changed, 194 insertions, 60 deletions
diff --git a/ChangeLog b/ChangeLog
index 5d4d60c98..e75dd0621 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,25 @@
+2013-05-06 Carl Hetherington <cth@carlh.net>
+
+ * Fix resizing / redraw problems in audio viewer
+ on Windows.
+
+2013-05-06 Carl Hetherington <cth@carlh.net>
+
+ * Version 0.89 released.
+
+2013-05-04 Carl Hetherington <cth@carlh.net>
+
+ * Version 0.89beta1 released.
+
+2013-05-04 Carl Hetherington <cth@carlh.net>
+
+ * Very simple batch converter added (#127).
+
+ * Add preference for CPL issuer and creator (#122).
+
+ * Add preference for default format and DCP content
+ type (#133).
+
2013-04-28 Carl Hetherington <cth@carlh.net>
* Version 0.88 released.
diff --git a/dvdomatic_batch.desktop.in b/dvdomatic_batch.desktop.in
new file mode 100644
index 000000000..8150fe849
--- /dev/null
+++ b/dvdomatic_batch.desktop.in
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Encoding=UTF-8
+Version=1.0
+Type=Application
+Terminal=false
+Exec=@PREFIX@/bin/dvdomatic_batch
+Name=DVD-o-matic Batch Converter
+Icon=dvdomatic
+Comment=Batch DCP generator
+Categories=AudioVideo;Video
diff --git a/run/dvdomatic_batch b/run/dvdomatic_batch
new file mode 100755
index 000000000..7b6ef93ae
--- /dev/null
+++ b/run/dvdomatic_batch
@@ -0,0 +1,15 @@
+#!/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
diff --git a/src/lib/job.cc b/src/lib/job.cc
index 812380594..2e6385d62 100644
--- a/src/lib/job.cc
+++ b/src/lib/job.cc
@@ -26,6 +26,7 @@
#include <libdcp/exceptions.h>
#include "job.h"
#include "util.h"
+#include "cross.h"
#include "i18n.h"
@@ -153,6 +154,13 @@ Job::finished_cancelled () const
return _state == FINISHED_CANCELLED;
}
+bool
+Job::paused () const
+{
+ boost::mutex::scoped_lock lm (_state_mutex);
+ return _state == PAUSED;
+}
+
/** Set the state of this job.
* @param s New state.
*/
@@ -188,6 +196,10 @@ Job::set_progress (float p)
_progress_unknown = false;
_stack.back().normalised = p;
boost::this_thread::interruption_point ();
+
+ if (paused ()) {
+ dcpomatic_sleep (1);
+ }
}
/** @return fractional overall progress, or -1 if not known */
@@ -324,3 +336,19 @@ Job::cancel ()
_thread->interrupt ();
_thread->join ();
}
+
+void
+Job::pause ()
+{
+ if (running ()) {
+ set_state (PAUSED);
+ }
+}
+
+void
+Job::resume ()
+{
+ if (paused ()) {
+ set_state (RUNNING);
+ }
+}
diff --git a/src/lib/job.h b/src/lib/job.h
index 2119db2f3..40e90b73c 100644
--- a/src/lib/job.h
+++ b/src/lib/job.h
@@ -47,6 +47,8 @@ public:
virtual void run () = 0;
void start ();
+ void pause ();
+ void resume ();
void cancel ();
bool is_new () const;
@@ -55,6 +57,7 @@ public:
bool finished_ok () const;
bool finished_in_error () const;
bool finished_cancelled () const;
+ bool paused () const;
std::string error_summary () const;
std::string error_details () const;
@@ -79,6 +82,7 @@ protected:
enum State {
NEW, ///< the job hasn't been started yet
RUNNING, ///< the job is running
+ PAUSED, ///< the job has been paused
FINISHED_OK, ///< the job has finished successfully
FINISHED_ERROR, ///< the job has finished in error
FINISHED_CANCELLED ///< the job was cancelled
diff --git a/src/lib/util.cc b/src/lib/util.cc
index ec1fd47bd..6c8166143 100644
--- a/src/lib/util.cc
+++ b/src/lib/util.cc
@@ -280,7 +280,7 @@ mo_path ()
#endif
void
-dcpomatic_setup_i18n (string lang)
+dcpomatic_setup_gettext_i18n (string lang)
{
#ifdef DCPOMATIC_POSIX
lang += ".UTF8";
diff --git a/src/lib/util.h b/src/lib/util.h
index 0edfe2076..51ccbba99 100644
--- a/src/lib/util.h
+++ b/src/lib/util.h
@@ -56,7 +56,7 @@ extern void stacktrace (std::ostream &, int);
extern std::string dependency_version_summary ();
extern double seconds (struct timeval);
extern void dcpomatic_setup ();
-extern void dcpomatic_setup_i18n (std::string);
+extern void dcpomatic_setup_gettext_i18n (std::string);
extern std::vector<std::string> split_at_spaces_considering_quotes (std::string);
extern std::string md5_digest (boost::filesystem::path);
extern std::string md5_digest (void const *, int);
diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc
index 4312139f1..71c29072f 100644
--- a/src/tools/dcpomatic.cc
+++ b/src/tools/dcpomatic.cc
@@ -63,7 +63,6 @@ static std::string log_level;
static std::string film_to_load;
static std::string film_to_create;
static wxMenu* jobs_menu = 0;
-static wxLocale* locale = 0;
static void set_menu_sensitivity ();
@@ -226,7 +225,7 @@ public:
film_editor = new FilmEditor (film, panel);
film_viewer = new FilmViewer (film, panel);
- JobManagerView* job_manager_view = new JobManagerView (panel);
+ JobManagerView* job_manager_view = new JobManagerView (panel, static_cast<JobManagerView::Buttons> (0));
_top_sizer = new wxBoxSizer (wxHORIZONTAL);
_top_sizer->Add (film_editor, 0, wxALL, 6);
@@ -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 DCPOMATIC_WINDOWS
- locale->AddCatalogLookupPathPrefix (std_to_wx (mo_path().string()));
-#endif
-
- locale->AddCatalog (wxT ("libdcpomatic-wx"));
- locale->AddCatalog (wxT ("dcpomatic"));
-
- if (!locale->IsOk()) {
- f << "Locale is not ok.\n";
- delete locale;
- locale = new wxLocale (wxLANGUAGE_ENGLISH);
- language = wxLANGUAGE_ENGLISH;
- }
- }
-
- if (locale) {
- dcpomatic_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 ();
+ dcpomatic_setup_i18n ();
/* Set things up, including scalers / filters etc.
which will now be internationalised correctly.
diff --git a/src/tools/wscript b/src/tools/wscript
index 466f29031..cddd07b7d 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 ['dcpomatic', 'dcpomatic_server']:
+ for t in ['dcpomatic', 'dcpomatic_batch', 'dcpomatic_server']:
obj = bld(features = 'cxx cxxprogram')
obj.uselib = 'DCP CXML OPENJPEG AVFORMAT AVFILTER AVCODEC AVUTIL SWSCALE POSTPROC'
obj.includes = ['..']
diff --git a/src/wx/job_manager_view.cc b/src/wx/job_manager_view.cc
index c339d26bb..1594dfc91 100644
--- a/src/wx/job_manager_view.cc
+++ b/src/wx/job_manager_view.cc
@@ -34,15 +34,21 @@ using std::map;
using boost::shared_ptr;
/** Must be called in the GUI thread */
-JobManagerView::JobManagerView (wxWindow* parent)
+JobManagerView::JobManagerView (wxWindow* parent, Buttons buttons)
: wxScrolledWindow (parent)
+ , _buttons (buttons)
{
_panel = new wxPanel (this);
wxSizer* sizer = new wxBoxSizer (wxVERTICAL);
sizer->Add (_panel, 1, wxEXPAND);
SetSizer (sizer);
+
+ int N = 5;
+ if (buttons & PAUSE) {
+ ++N;
+ }
- _table = new wxFlexGridSizer (5, 6, 6);
+ _table = new wxFlexGridSizer (N, 6, 6);
_table->AddGrowableCol (1, 1);
_panel->SetSizer (_table);
@@ -78,22 +84,34 @@ JobManagerView::update ()
_table->Insert (index, m, 0, wxALIGN_CENTER_VERTICAL | wxALL, 6);
JobRecord r;
+ int n = 1;
r.finalised = false;
r.scroll_nudged = false;
r.gauge = new wxGauge (_panel, wxID_ANY, 100);
- _table->Insert (index + 1, r.gauge, 1, wxEXPAND | wxLEFT | wxRIGHT);
+ _table->Insert (index + n, r.gauge, 1, wxEXPAND | wxLEFT | wxRIGHT);
+ ++n;
r.message = new wxStaticText (_panel, wxID_ANY, std_to_wx (""));
- _table->Insert (index + 2, r.message, 1, wxALIGN_CENTER_VERTICAL | wxALL, 6);
+ _table->Insert (index + n, r.message, 1, wxALIGN_CENTER_VERTICAL | wxALL, 6);
+ ++n;
r.cancel = new wxButton (_panel, wxID_ANY, _("Cancel"));
r.cancel->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (JobManagerView::cancel_clicked), 0, this);
- _table->Insert (index + 3, r.cancel, 1, wxALIGN_CENTER_VERTICAL | wxALL, 6);
-
+ _table->Insert (index + n, r.cancel, 1, wxALIGN_CENTER_VERTICAL | wxALL, 6);
+ ++n;
+
+ if (_buttons & PAUSE) {
+ r.pause = new wxButton (_panel, wxID_ANY, _("Pause"));
+ r.pause->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (JobManagerView::pause_clicked), 0, this);
+ _table->Insert (index + n, r.pause, 1, wxALIGN_CENTER_VERTICAL | wxALL, 6);
+ ++n;
+ }
+
r.details = new wxButton (_panel, wxID_ANY, _("Details..."));
r.details->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (JobManagerView::details_clicked), 0, this);
r.details->Enable (false);
- _table->Insert (index + 4, r.details, 1, wxALIGN_CENTER_VERTICAL | wxALL, 6);
+ _table->Insert (index + n, r.details, 1, wxALIGN_CENTER_VERTICAL | wxALL, 6);
+ ++n;
_job_records[*i] = r;
@@ -143,6 +161,9 @@ JobManagerView::update ()
}
index += 5;
+ if (_buttons & PAUSE) {
+ ++index;
+ }
}
_table->Layout ();
@@ -174,3 +195,21 @@ JobManagerView::cancel_clicked (wxCommandEvent& ev)
}
}
}
+
+void
+JobManagerView::pause_clicked (wxCommandEvent& ev)
+{
+ wxObject* o = ev.GetEventObject ();
+ for (map<boost::shared_ptr<Job>, JobRecord>::iterator i = _job_records.begin(); i != _job_records.end(); ++i) {
+ if (i->second.pause == o) {
+ if (i->first->paused()) {
+ i->first->resume ();
+ i->second.pause->SetLabel (_("Pause"));
+ } else {
+ i->first->pause ();
+ i->second.pause->SetLabel (_("Resume"));
+ }
+ }
+ }
+}
+
diff --git a/src/wx/job_manager_view.h b/src/wx/job_manager_view.h
index 6343d78af..3d1ad30c0 100644
--- a/src/wx/job_manager_view.h
+++ b/src/wx/job_manager_view.h
@@ -33,13 +33,18 @@ class Job;
class JobManagerView : public wxScrolledWindow
{
public:
- JobManagerView (wxWindow *);
+ enum Buttons {
+ PAUSE = 0x1,
+ };
+
+ JobManagerView (wxWindow *, Buttons);
void update ();
private:
void periodic (wxTimerEvent &);
void cancel_clicked (wxCommandEvent &);
+ void pause_clicked (wxCommandEvent &);
void details_clicked (wxCommandEvent &);
boost::shared_ptr<wxTimer> _timer;
@@ -49,10 +54,12 @@ private:
wxGauge* gauge;
wxStaticText* message;
wxButton* cancel;
+ wxButton* pause;
wxButton* details;
bool finalised;
bool scroll_nudged;
};
std::map<boost::shared_ptr<Job>, JobRecord> _job_records;
+ Buttons _buttons;
};
diff --git a/src/wx/wx_util.cc b/src/wx/wx_util.cc
index e0d7d843f..5691d341a 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;
@@ -66,7 +68,7 @@ error_dialog (wxWindow* parent, wxString m)
bool
confirm_dialog (wxWindow* parent, wxString m)
{
- wxMessageDialog* d = new wxMessageDialog (parent, m, _("DVD-o-matic"), wxYES_NO | wxICON_QUESTION);
+ wxMessageDialog* d = new wxMessageDialog (parent, m, _("DCP-o-matic"), wxYES_NO | wxICON_QUESTION);
int const r = d->ShowModal ();
d->Destroy ();
return r == wxID_YES;
@@ -211,3 +213,39 @@ checked_set (wxRadioButton* widget, bool value)
widget->SetValue (value);
}
}
+
+void
+dcpomatic_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 DCPOMATIC_WINDOWS
+ locale->AddCatalogLookupPathPrefix (std_to_wx (mo_path().string()));
+#endif
+
+ locale->AddCatalog (wxT ("libdcpomatic-wx"));
+ locale->AddCatalog (wxT ("dcpomatic"));
+
+ if (!locale->IsOk()) {
+ delete locale;
+ locale = new wxLocale (wxLANGUAGE_ENGLISH);
+ language = wxLANGUAGE_ENGLISH;
+ }
+ }
+
+ if (locale) {
+ dcpomatic_setup_gettext_i18n (wx_to_std (locale->GetCanonicalName ()));
+ }
+}
diff --git a/src/wx/wx_util.h b/src/wx/wx_util.h
index b3ab706df..bff11647e 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 dcpomatic_setup_i18n ();
/** @class ThreadedStaticText
*
diff --git a/windows/installer.nsi.32.in b/windows/installer.nsi.32.in
index ba98929ce..a7867c618 100644
--- a/windows/installer.nsi.32.in
+++ b/windows/installer.nsi.32.in
@@ -84,6 +84,7 @@ File "%deps%/bin/cxml.dll"
File "%binaries%/src/wx/dcpomatic-wx.dll"
File "%binaries%/src/lib/dcpomatic.dll"
File "%binaries%/src/tools/dcpomatic.exe"
+File "%binaries%/src/tools/dcpomatic_batch.exe"
File "%binaries%/src/tools/dcpomatic_server_cli.exe"
File "%binaries%/src/tools/dcpomatic_server.exe"
@@ -112,11 +113,13 @@ File "%binaries%/src/wx/mo/sv_SE/libdcpomatic-wx.mo"
File "%binaries%/src/tools/mo/sv_SE/dcpomatic.mo"
CreateShortCut "$DESKTOP\DCP-o-matic.lnk" "$INSTDIR\bin\dcpomatic.exe" ""
+CreateShortCut "$DESKTOP\DCP-o-matic batch converter.lnk" "$INSTDIR\bin\dcpomatic_batch.exe" ""
CreateShortCut "$DESKTOP\DCP-o-matic encode server.lnk" "$INSTDIR\bin\dcpomatic_server.exe" ""
CreateDirectory "$SMPROGRAMS\DCP-o-matic"
CreateShortCut "$SMPROGRAMS\DCP-o-matic\Uninstall DCP-o-matic.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
CreateShortCut "$SMPROGRAMS\DCP-o-matic\DCP-o-matic.lnk" "$INSTDIR\bin\dcpomatic.exe" "" "$INSTDIR\bin\dcpomatic.exe" 0
+CreateShortCut "$SMPROGRAMS\DCP-o-matic\DCP-o-matic batch converter.lnk" "$INSTDIR\bin\dcpomatic.exe" "" "$INSTDIR\bin\dcpomatic_batch.exe" 0
CreateShortCut "$SMPROGRAMS\DCP-o-matic\DCP-o-matic encode server.lnk" "$INSTDIR\bin\dcpomatic_server.exe" "" "$INSTDIR\bin\dcpomatic_server.exe" 0
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\DCP-o-matic" "DisplayName" "DCP-o-matic (remove only)"
@@ -132,6 +135,7 @@ Section "Uninstall"
RMDir /r "$INSTDIR\*.*"
RMDir "$INSTDIR"
Delete "$DESKTOP\DCP-o-matic.lnk"
+Delete "$DESKTOP\DCP-o-matic batch converter.lnk"
Delete "$DESKTOP\DCP-o-matic encode server.lnk"
Delete "$SMPROGRAMS\DCP-o-matic\*.*"
RmDir "$SMPROGRAMS\DCP-o-matic"
diff --git a/windows/installer.nsi.64.in b/windows/installer.nsi.64.in
index 9a2e78f0e..34b7fe8f6 100644
--- a/windows/installer.nsi.64.in
+++ b/windows/installer.nsi.64.in
@@ -94,6 +94,7 @@ File "%deps%/bin/cxml.dll"
File "%binaries%/src/wx/dcpomatic-wx.dll"
File "%binaries%/src/lib/dcpomatic.dll"
File "%binaries%/src/tools/dcpomatic.exe"
+File "%binaries%/src/tools/dcpomatic_batch.exe"
File "%binaries%/src/tools/dcpomatic_server_cli.exe"
File "%binaries%/src/tools/dcpomatic_server.exe"
@@ -122,11 +123,13 @@ File "%binaries%/src/wx/mo/sv_SE/libdcpomatic-wx.mo"
File "%binaries%/src/tools/mo/sv_SE/dcpomatic.mo"
CreateShortCut "$DESKTOP\DCP-o-matic.lnk" "$INSTDIR\bin\dcpomatic.exe" ""
+CreateShortCut "$DESKTOP\DCP-o-matic batch converter.lnk" "$INSTDIR\bin\dcpomatic_batch.exe" ""
CreateShortCut "$DESKTOP\DCP-o-matic encode server.lnk" "$INSTDIR\bin\dcpomatic_server.exe" ""
CreateDirectory "$SMPROGRAMS\DCP-o-matic"
CreateShortCut "$SMPROGRAMS\DCP-o-matic\Uninstall DCP-o-matic.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
CreateShortCut "$SMPROGRAMS\DCP-o-matic\DCP-o-matic.lnk" "$INSTDIR\bin\dcpomatic.exe" "" "$INSTDIR\bin\dcpomatic.exe" 0
+CreateShortCut "$SMPROGRAMS\DCP-o-matic\DCP-o-matic batch converter.lnk" "$INSTDIR\bin\dcpomatic.exe" "" "$INSTDIR\bin\dcpomatic_batch.exe" 0
CreateShortCut "$SMPROGRAMS\DCP-o-matic\DCP-o-matic encode server.lnk" "$INSTDIR\bin\dcpomatic_server.exe" "" "$INSTDIR\bin\dcpomatic_server.exe" 0
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\DCP-o-matic" "DisplayName" "DCP-o-matic (remove only)"
@@ -142,6 +145,7 @@ Section "Uninstall"
RMDir /r "$INSTDIR\*.*"
RMDir "$INSTDIR"
Delete "$DESKTOP\DCP-o-matic.lnk"
+Delete "$DESKTOP\DCP-o-matic batch converter.lnk"
Delete "$DESKTOP\DCP-o-matic encode server.lnk"
Delete "$SMPROGRAMS\DCP-o-matic\*.*"
RmDir "$SMPROGRAMS\DCP-o-matic"
diff --git a/wscript b/wscript
index ebdfa2290..169e46257 100644
--- a/wscript
+++ b/wscript
@@ -55,7 +55,7 @@ def configure(conf):
conf.env.append_value('CXXFLAGS', '-O2')
if not conf.options.static:
- conf.check_cfg(package = 'libdcp', atleast_version = '0.45', args = '--cflags --libs', uselib_store = 'DCP', mandatory = True)
+ conf.check_cfg(package = 'libdcp', atleast_version = '0.49', args = '--cflags --libs', uselib_store = 'DCP', mandatory = True)
conf.check_cfg(package = 'libcxml', atleast_version = '0.01', args = '--cflags --libs', uselib_store = 'CXML', mandatory = True)
conf.check_cfg(package = 'libavformat', args = '--cflags --libs', uselib_store = 'AVFORMAT', mandatory = True)
conf.check_cfg(package = 'libavfilter', args = '--cflags --libs', uselib_store = 'AVFILTER', mandatory = True)
@@ -232,7 +232,13 @@ def build(bld):
obj.target = 'dcpomatic.desktop'
obj.dict = d
- bld.install_files('${PREFIX}/share/applications', 'dcpomatic.desktop')
+ obj = bld(features = 'subst')
+ obj.source = 'dcpomatic_batch.desktop.in'
+ obj.target = 'dcpomatic_batch.desktop'
+ obj.dict = d
+
+ bld.install_files('${PREFIX}/share/applications', ['dcpomatic.desktop', 'dcpomatic_batch.desktop'])
+
for r in ['22x22', '32x32', '48x48', '64x64', '128x128']:
bld.install_files('${PREFIX}/share/icons/hicolor/%s/apps' % r, 'icons/%s/dcpomatic.png' % r)