#include "wx/update_dialog.h"
#include "wx/player_config_dialog.h"
#include "wx/verify_dcp_dialog.h"
-#include "wx/controls.h"
+#include "wx/standard_controls.h"
+#include "wx/swaroop_controls.h"
#include "lib/cross.h"
#include "lib/config.h"
#include "lib/util.h"
#include "lib/monitor_checker.h"
#include "lib/lock_file_checker.h"
#include "lib/ffmpeg_content.h"
+#include "lib/dcpomatic_log.h"
#include <dcp/dcp.h>
#include <dcp/raw_convert.h>
#include <dcp/exceptions.h>
using std::exception;
using std::vector;
using boost::shared_ptr;
+using boost::weak_ptr;
using boost::scoped_array;
using boost::optional;
using boost::dynamic_pointer_cast;
, _view_full_screen (0)
, _view_dual_screen (0)
{
- /* XXX */
dcpomatic_log.reset (new NullLog());
- cout << "here's the log " << dcpomatic_log.get() << "\n";
#if defined(DCPOMATIC_WINDOWS)
maybe_open_console ();
_overall_panel = new wxPanel (this, wxID_ANY);
_viewer.reset (new FilmViewer (_overall_panel));
- _controls = new Controls (_overall_panel, _viewer, false);
+#ifdef DCPOMATIC_VARIANT_SWAROOP
+ SwaroopControls* sc = new SwaroopControls (_overall_panel, _viewer);
+ _controls = sc;
+ sc->ResetFilm.connect (bind(&DOMFrame::reset_film_weak, this, _1));
+#else
+ _controls = new StandardControls (_overall_panel, _viewer, false);
+#endif
_viewer->set_dcp_decode_reduction (Config::instance()->decode_reduction ());
_viewer->PlaybackPermitted.connect (bind(&DOMFrame::playback_permitted, this));
_viewer->Started.connect (bind(&DOMFrame::playback_started, this, _1));
_viewer->Seeked.connect (bind(&DOMFrame::playback_seeked, this, _1));
_viewer->Stopped.connect (bind(&DOMFrame::playback_stopped, this, _1));
-#ifdef DCPOMATIC_VARIANT_SWAROOP
- _viewer->PositionChanged.connect (bind(&DOMFrame::position_changed, this));
-#endif
_info = new PlayerInformation (_overall_panel, _viewer);
setup_main_sizer (Config::instance()->player_mode());
#ifdef __WXOSX__
setup_screen ();
#ifdef DCPOMATIC_VARIANT_SWAROOP
- if (
- boost::filesystem::is_regular_file(Config::path("position")) &&
- boost::filesystem::is_regular_file(Config::path("spl.xml"))) {
-
- shared_ptr<Film> film (new Film(boost::optional<boost::filesystem::path>()));
- film->read_metadata (Config::path("spl.xml"));
- reset_film (film);
- FILE* f = fopen_boost (Config::path("position"), "r");
- if (f) {
- char buffer[64];
- fscanf (f, "%63s", buffer);
- _viewer->seek (DCPTime(atoi(buffer)), true);
- _viewer->start ();
- fclose (f);
- }
- }
-
+ sc->check_restart ();
#endif
}
- void position_changed ()
- {
- if (!_viewer->playing() || _viewer->position().get() % DCPTime::HZ) {
- return;
- }
-
- FILE* f = fopen_boost (Config::path("position"), "w");
- if (f) {
- string const p = dcp::raw_convert<string> (_viewer->position().get());
- fwrite (p.c_str(), p.length(), 1, f);
- fclose (f);
- }
- }
-
#ifdef DCPOMATIC_VARIANT_SWAROOP
void monitor_checker_state_changed ()
{
reset_film ();
try {
shared_ptr<DCPContent> dcp (new DCPContent(dir));
- _film->examine_and_add_content (dcp);
+ _film->examine_and_add_content (dcp, true);
bool const ok = display_progress (_("DCP-o-matic Player"), _("Loading content"));
if (!ok || !report_errors_from_last_job(this)) {
return;
return optional<dcp::EncryptedKDM>();
}
+ void reset_film_weak (weak_ptr<Film> weak_film)
+ {
+ shared_ptr<Film> film = weak_film.lock ();
+ if (film) {
+ reset_film (film);
+ }
+ }
+
void reset_film (shared_ptr<Film> film = shared_ptr<Film>(new Film(optional<boost::filesystem::path>())))
{
_film = film;
_viewer->set_film (_film);
+ _controls->set_film (_film);
_film->Change.connect (bind(&DOMFrame::film_changed, this, _1, _2));
+ _info->triggered_update ();
}
void film_changed (ChangeType type, Film::Property property)
return;
}
- _film->write_metadata (Config::path("spl.xml"));
-
if (_viewer->playing ()) {
_viewer->stop ();
}
void setup_screen ()
{
_controls->Show (_mode != Config::PLAYER_MODE_FULL);
- _controls->show_extended_player_controls (_mode == Config::PLAYER_MODE_DUAL);
_info->Show (_mode != Config::PLAYER_MODE_FULL);
_overall_panel->SetBackgroundColour (_mode == Config::PLAYER_MODE_FULL ? wxColour(0, 0, 0) : wxNullColour);
ShowFullScreen (_mode == Config::PLAYER_MODE_FULL);
static const wxCmdLineEntryDesc command_line_description[] = {
{ wxCMD_LINE_PARAM, 0, 0, "DCP to load or create", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
+ { wxCMD_LINE_OPTION, "c", "config", "Directory containing config.xml", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
{ wxCMD_LINE_NONE, "", "", "", wxCmdLineParamType (0), 0 }
};
_dcp_to_load = wx_to_std (parser.GetParam (0));
}
+ wxString config;
+ if (parser.Found("c", &config)) {
+ Config::override_path = wx_to_std (config);
+ }
+
return true;
}