*/
+
#include "kdm_dialog.h"
#include "wx_util.h"
#include "screens_panel.h"
#include <wx/listctrl.h>
#include <iostream>
+
using std::string;
using std::exception;
using std::map;
using namespace boost::placeholders;
#endif
+
KDMDialog::KDMDialog (wxWindow* parent, shared_ptr<const Film> film)
: wxDialog (parent, wxID_ANY, _("Make KDMs"))
, _film (film)
{
/* Main sizers */
- wxBoxSizer* horizontal = new wxBoxSizer (wxHORIZONTAL);
- wxBoxSizer* left = new wxBoxSizer (wxVERTICAL);
- wxBoxSizer* right = new wxBoxSizer (wxVERTICAL);
+ auto horizontal = new wxBoxSizer (wxHORIZONTAL);
+ auto left = new wxBoxSizer (wxVERTICAL);
+ auto right = new wxBoxSizer (wxVERTICAL);
horizontal->Add (left, 1, wxEXPAND | wxRIGHT, DCPOMATIC_SIZER_X_GAP * 4);
horizontal->Add (right, 1, wxEXPAND);
subheading_font.SetWeight (wxFONTWEIGHT_BOLD);
/* Sub-heading: Screens */
- wxStaticText* h = new StaticText (this, _("Screens"));
+ auto h = new StaticText (this, _("Screens"));
h->SetFont (subheading_font);
left->Add (h, 0, wxBOTTOM, DCPOMATIC_SIZER_Y_GAP);
_screens = new ScreensPanel (this);
/* Make an overall sizer to get a nice border */
- wxBoxSizer* overall_sizer = new wxBoxSizer (wxVERTICAL);
+ auto overall_sizer = new wxBoxSizer (wxVERTICAL);
overall_sizer->Add (horizontal, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, DCPOMATIC_DIALOG_BORDER);
/* Bind */
overall_sizer->SetSizeHints (this);
}
+
void
KDMDialog::setup_sensitivity ()
{
_make->Enable (!_screens->screens().empty() && _timing->valid() && _cpl->has_selected());
}
+
bool
KDMDialog::confirm_overwrite (boost::filesystem::path path)
{
);
}
+
void
KDMDialog::make_clicked ()
{
- shared_ptr<const Film> film = _film.lock ();
+ auto film = _film.lock ();
DCPOMATIC_ASSERT (film);
list<KDMWithMetadataPtr> kdms;
}
for (auto i: _screens->screens()) {
- KDMWithMetadataPtr p = kdm_for_screen (film, _cpl->cpl(), i, _timing->from(), _timing->until(), _output->formulation(), !_output->forensic_mark_video(), for_audio);
+ auto p = kdm_for_screen (film, _cpl->cpl(), i, _timing->from(), _timing->until(), _output->formulation(), !_output->forensic_mark_video(), for_audio);
if (p) {
kdms.push_back (p);
}
return;
}
- pair<shared_ptr<Job>, int> result = _output->make (kdms, film->name(), bind (&KDMDialog::confirm_overwrite, this, _1));
+ auto result = _output->make (kdms, film->name(), bind (&KDMDialog::confirm_overwrite, this, _1));
if (result.first) {
JobManager::instance()->add (result.first);
}
/*
- Copyright (C) 2015-2018 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2015-2021 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
*/
+
#include "screens_panel.h"
#include "wx_util.h"
#include "cinema_dialog.h"
#include "lib/cinema.h"
#include "lib/screen.h"
+
using std::list;
using std::pair;
using std::cout;
using std::map;
using std::string;
using std::make_pair;
+using std::make_shared;
using std::shared_ptr;
using boost::optional;
using namespace dcpomatic;
+
ScreensPanel::ScreensPanel (wxWindow* parent)
: wxPanel (parent, wxID_ANY)
, _ignore_selection_change (false)
#endif
sizer->Add (_search, 0, wxBOTTOM, DCPOMATIC_SIZER_GAP);
- wxBoxSizer* targets = new wxBoxSizer (wxHORIZONTAL);
+ auto targets = new wxBoxSizer (wxHORIZONTAL);
_targets = new wxTreeCtrl (this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTR_HIDE_ROOT | wxTR_MULTIPLE | wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT);
targets->Add (_targets, 1, wxEXPAND | wxRIGHT, DCPOMATIC_SIZER_GAP);
add_cinemas ();
- wxBoxSizer* target_buttons = new wxBoxSizer (wxVERTICAL);
+ auto target_buttons = new wxBoxSizer (wxVERTICAL);
_add_cinema = new Button (this, _("Add Cinema..."));
target_buttons->Add (_add_cinema, 1, wxEXPAND | wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
SetSizer (sizer);
}
+
ScreensPanel::~ScreensPanel ()
{
_targets->Unbind (wxEVT_TREE_SEL_CHANGED, &ScreensPanel::selection_changed_shim, this);
}
+
void
ScreensPanel::setup_sensitivity ()
{
optional<wxTreeItemId>
ScreensPanel::add_cinema (shared_ptr<Cinema> c)
{
- string search = wx_to_std (_search->GetValue ());
+ auto search = wx_to_std (_search->GetValue ());
transform (search.begin(), search.end(), search.begin(), ::tolower);
if (!search.empty ()) {
- string name = c->name;
+ auto name = c->name;
transform (name.begin(), name.end(), name.begin(), ::tolower);
if (name.find (search) == string::npos) {
return optional<wxTreeItemId>();
}
}
- wxTreeItemId id = _targets->AppendItem(_root, std_to_wx(c->name));
+ auto id = _targets->AppendItem(_root, std_to_wx(c->name));
_cinemas[id] = c;
optional<wxTreeItemId>
ScreensPanel::add_screen (shared_ptr<Cinema> c, shared_ptr<Screen> s)
{
- CinemaMap::const_iterator i = _cinemas.begin();
+ auto i = _cinemas.begin();
while (i != _cinemas.end() && i->second != c) {
++i;
}
if (i == _cinemas.end()) {
- return optional<wxTreeItemId> ();
+ return {};
}
_screens[_targets->AppendItem (i->first, std_to_wx (s->name))] = s;
return i->first;
}
+
void
ScreensPanel::add_cinema_clicked ()
{
- CinemaDialog* d = new CinemaDialog (GetParent(), _("Add Cinema"));
+ auto d = new CinemaDialog (GetParent(), _("Add Cinema"));
if (d->ShowModal () == wxID_OK) {
- shared_ptr<Cinema> c (new Cinema (d->name(), d->emails(), d->notes(), d->utc_offset_hour(), d->utc_offset_minute()));
+ auto c = make_shared<Cinema>(d->name(), d->emails(), d->notes(), d->utc_offset_hour(), d->utc_offset_minute());
Config::instance()->add_cinema (c);
- optional<wxTreeItemId> id = add_cinema (c);
+ auto id = add_cinema (c);
if (id) {
_targets->Unselect ();
_targets->SelectItem (*id);
d->Destroy ();
}
+
void
ScreensPanel::edit_cinema_clicked ()
{
return;
}
- pair<wxTreeItemId, shared_ptr<Cinema> > c = *_selected_cinemas.begin();
+ auto c = *_selected_cinemas.begin();
- CinemaDialog* d = new CinemaDialog (
+ auto d = new CinemaDialog (
GetParent(), _("Edit cinema"), c.second->name, c.second->emails, c.second->notes, c.second->utc_offset_hour(), c.second->utc_offset_minute()
);
- if (d->ShowModal () == wxID_OK) {
+ if (d->ShowModal() == wxID_OK) {
c.second->name = d->name ();
c.second->emails = d->emails ();
c.second->notes = d->notes ();
d->Destroy ();
}
+
void
ScreensPanel::remove_cinema_clicked ()
{
}
}
- for (CinemaMap::iterator i = _selected_cinemas.begin(); i != _selected_cinemas.end(); ++i) {
- Config::instance()->remove_cinema (i->second);
- _targets->Delete (i->first);
+ for (auto const& i: _selected_cinemas) {
+ Config::instance()->remove_cinema (i.second);
+ _targets->Delete (i.first);
}
selection_changed ();
}
+
void
ScreensPanel::add_screen_clicked ()
{
return;
}
- shared_ptr<Cinema> c = _selected_cinemas.begin()->second;
+ auto c = _selected_cinemas.begin()->second;
- ScreenDialog* d = new ScreenDialog (GetParent(), _("Add Screen"));
+ auto d = new ScreenDialog (GetParent(), _("Add Screen"));
if (d->ShowModal () != wxID_OK) {
d->Destroy ();
return;
}
}
- shared_ptr<Screen> s (new Screen (d->name(), d->notes(), d->recipient(), d->trusted_devices()));
+ auto s = std::make_shared<Screen>(d->name(), d->notes(), d->recipient(), d->trusted_devices());
c->add_screen (s);
- optional<wxTreeItemId> id = add_screen (c, s);
+ auto id = add_screen (c, s);
if (id) {
_targets->Expand (id.get ());
}
d->Destroy ();
}
+
void
ScreensPanel::edit_screen_clicked ()
{
return;
}
- pair<wxTreeItemId, shared_ptr<Screen> > s = *_selected_screens.begin();
+ auto s = *_selected_screens.begin();
- ScreenDialog* d = new ScreenDialog (GetParent(), _("Edit screen"), s.second->name, s.second->notes, s.second->recipient, s.second->trusted_devices);
- if (d->ShowModal () != wxID_OK) {
+ auto d = new ScreenDialog (GetParent(), _("Edit screen"), s.second->name, s.second->notes, s.second->recipient, s.second->trusted_devices);
+ if (d->ShowModal() != wxID_OK) {
d->Destroy ();
return;
}
- shared_ptr<Cinema> c = s.second->cinema;
+ auto c = s.second->cinema;
for (auto i: c->screens ()) {
if (i != s.second && i->name == d->name()) {
error_dialog (
d->Destroy ();
}
+
void
ScreensPanel::remove_screen_clicked ()
{
}
}
- for (ScreenMap::iterator i = _selected_screens.begin(); i != _selected_screens.end(); ++i) {
- CinemaMap::iterator j = _cinemas.begin ();
+ for (auto const& i: _selected_screens) {
+ auto j = _cinemas.begin ();
while (j != _cinemas.end ()) {
- list<shared_ptr<Screen> > sc = j->second->screens ();
- if (find (sc.begin(), sc.end(), i->second) != sc.end ()) {
+ auto sc = j->second->screens ();
+ if (find (sc.begin(), sc.end(), i.second) != sc.end ()) {
break;
}
continue;
}
- j->second->remove_screen (i->second);
- _targets->Delete (i->first);
+ j->second->remove_screen (i.second);
+ _targets->Delete (i.first);
}
Config::instance()->changed (Config::CINEMAS);
}
-list<shared_ptr<Screen> >
+
+list<shared_ptr<Screen>>
ScreensPanel::screens () const
{
- list<shared_ptr<Screen> > s;
+ list<shared_ptr<Screen>> s;
- for (CinemaMap::const_iterator i = _selected_cinemas.begin(); i != _selected_cinemas.end(); ++i) {
- list<shared_ptr<Screen> > sc = i->second->screens ();
- for (list<shared_ptr<Screen> >::const_iterator j = sc.begin(); j != sc.end(); ++j) {
- s.push_back (*j);
+ for (auto const& i: _selected_cinemas) {
+ for (auto j: i.second->screens()) {
+ s.push_back (j);
}
}
- for (ScreenMap::const_iterator i = _selected_screens.begin(); i != _selected_screens.end(); ++i) {
- s.push_back (i->second);
+ for (auto const& i: _selected_screens) {
+ s.push_back (i.second);
}
s.sort ();
return s;
}
+
void
ScreensPanel::selection_changed_shim (wxTreeEvent &)
{
selection_changed ();
}
+
void
ScreensPanel::selection_changed ()
{
_selected_screens.clear ();
for (size_t i = 0; i < s.GetCount(); ++i) {
- CinemaMap::const_iterator j = _cinemas.find (s[i]);
+ auto j = _cinemas.find (s[i]);
if (j != _cinemas.end ()) {
_selected_cinemas[j->first] = j->second;
}
- ScreenMap::const_iterator k = _screens.find (s[i]);
+ auto k = _screens.find (s[i]);
if (k != _screens.end ()) {
_selected_screens[k->first] = k->second;
}
ScreensChanged ();
}
+
void
ScreensPanel::add_cinemas ()
{
}
}
+
void
ScreensPanel::search_changed ()
{
_ignore_selection_change = true;
- for (CinemaMap::const_iterator i = _selected_cinemas.begin(); i != _selected_cinemas.end(); ++i) {
+ for (auto const& i: _selected_cinemas) {
/* The wxTreeItemIds will now be different, so we must search by cinema */
- CinemaMap::const_iterator j = _cinemas.begin ();
- while (j != _cinemas.end() && j->second != i->second) {
+ auto j = _cinemas.begin ();
+ while (j != _cinemas.end() && j->second != i.second) {
++j;
}
- if (j != _cinemas.end ()) {
+ if (j != _cinemas.end()) {
_targets->SelectItem (j->first);
}
}
- for (ScreenMap::const_iterator i = _selected_screens.begin(); i != _selected_screens.end(); ++i) {
- ScreenMap::const_iterator j = _screens.begin ();
- while (j != _screens.end() && j->second != i->second) {
+ for (auto const& i: _selected_screens) {
+ auto j = _screens.begin ();
+ while (j != _screens.end() && j->second != i.second) {
++j;
}
- if (j != _screens.end ()) {
+ if (j != _screens.end()) {
_targets->SelectItem (j->first);
}
}